diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 000000000..cd045b657 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 5d74236aaebc889d9fa36e12b4787061 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/FAQ/index.html b/FAQ/index.html new file mode 100644 index 000000000..739ab80ef --- /dev/null +++ b/FAQ/index.html @@ -0,0 +1,1463 @@ + + + + + + + + + + FAQ — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

FAQ

+

Below is a list of commonly asked questions with answers sourced from the +Clear Linux* OS team and Clear Linux community forums.

+ +
+

General

+
+

What is Clear Linux OS?

+

Clear Linux OS is an open source, rolling release Linux distribution optimized for +performance and security. See the about page +for more information.

+
+

+
+
+
+

Why another Linux distribution?

+

The Clear Linux OS team felt that performance was left on the table with Linux software. +Clear Linux OS takes a holistic approach to improve performance across the stack. We +also wanted to take more modern approaches with OS updates and tooling.

+
+

+
+
+
+

Is it a derivative of another Linux distribution?

+

No. Clear Linux OS is a new Linux distribution. It is not a fork and does not have a +parent Linux distribution.

+
+

+
+
+
+

Can others copy improvements from Clear Linux OS?

+

Yes, we absolutely love open source reuse and upstreaming improvements.

+
+

+
+
+
+

How often does it update?

+

The Clear Linux OS team puts out multiple releases a week, often releasing two or more +times a day. This rolling release approach allows Clear Linux OS to remain agile to +upstream changes and security patches.

+
+

+
+
+
+

Is telemetry required?

+

The telemetry solution provided by Clear Linux OS is entirely optional and customizable. +It is disabled by default. If you do choose to enable telemetry, the data +helps the Clear Linux OS team proactively identify and resolve bugs. See the +telemetry guide for more information.

+
+

+
+
+
+

What is the default firewall?

+

Clear Linux OS packages iptables and firewalld as optional +bundles, however, there are no default firewall rules. All network traffic is +allowed by default.

+
+

+
+
+
+

Where are the files that I usually see under /etc like fstab?

+

Clear Linux OS has a stateless design that maintains a separation between system files +and user files. Default values are stored under /usr/share/defaults/. +Clear Linux OS starts with a mostly empty /etc directory to store user-defined +configurations. See the stateless page for more information.

+

See this blog post for an +example explaining how this is accomplished with /etc/fstab/ +specifically.

+
+

+
+
+
+

Does it use the Intel Compiler (icc)?

+

No. Clear Linux OS uses open source compilers: gcc and clang. Clear Linux OS +does not compile any packages with icc.

+

For a more detailed explanation, see this discussion on the community forum.

+
+

+
+
+
+
+

Software

+
+

How is software installed and updated?

+

Clear Linux OS provides software in the form of bundles and +updates software with swupd.

+

Flatpak* is an application virtualization solution +that allows more software to be available to Clear Linux OS users by augmenting the +software Clear Linux OS packages natively with software available through Flatpak.

+

Our goal is to have software packaged natively and made available through +bundles whenever possible.

+
+

+
+
+
+

Does it use RPMs or DEBs packages like other distros?

+

No. Clear Linux OS provides software to systems in the form of Bundles. +Under the hood, Clear Linux OS developers use the RPM format as an intermediary step for +packaging and determining software dependencies at OS build time.

+

Individual RPMs and DEBs can sometimes be manually extracted and installed on +a Clear Linux OS system with the right tools, but that is not the intended use case.

+
+

+
+
+
+

Why does it have a different approach to software management?

+

The Clear Linux OS team wants software installation and updates to be as efficient +and error free as possible. Clear Linux OS packages software differently and uses a +novel updater to solve some of the classic problems with how the software +packages are on Linux.

+

For a more detailed explanation, see this discussion on our community forum.

+
+

+
+
+
+

Can I install a software package from another OS on Clear Linux OS?

+

Software that is packaged in other formats for other Linux distributions is +not guaranteed to work on Clear Linux OS and may be impacted by Clear Linux OS updates.

+

If the software you’re seeking is open source, please submit a request to add +it to Clear Linux OS. Submit requests on GitHub* here: +https://github.com/clearlinux/distribution/issues

+
+

+
+
+
+
+

Software availability

+
+

What software is available on Clear Linux OS?

+

Available software can be found in the Software Store, through the GNOME* +Software application on the desktop, or by using swupd search.

+
+

+
+
+
+

Is Google* Chrome* available?

+

The Google Chrome web browser is not distributed as a bundle in Clear Linux OS due to +copyright and licensing complexities.

+

A discussion on manually installing and maintaining Google Chrome can be found on +GitHub.

+
+

+
+
+
+

Is Microsoft* Visual Studio Code* available?

+

Yes. Find the CLI command for installing VS Code and other Flatpak apps in +the software store. Installing Flatpak apps is also covered in our +tutorial.

+

The Clear Linux OS team is working on a natively packaged version of Visual Studio Code +for future release.

+

Join a community forum discussion about manually installing and maintaining +Visual Studio Code.

+
+

+
+
+
+

Is FFmpeg available?

+

FFmpeg is a multimedia software suite, which is commonly used for +various media encoding/decoding, streaming, and playback.

+

Clear Linux OS does not distribute FFmpeg due to well-known licensing and legal +complexities (See https://www.ffmpeg.org/legal.html and +http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html).

+

While Clear Linux OS cannot distribute FFmpeg, solutions for manually building and +installing FFmpeg have been shared by users on GitHub and the community +forums.

+
+

+
+
+
+

Is ZFS* available?

+

ZFS is not available with Clear Linux OS because of copyright and licensing +complexities. BTRFS is an alternative filesystem that is available in Clear Linux OS +natively.

+

A community contributed tutorial has been shared on how to manually +install ZFS.

+
+

+
+
+
+

Can you add a driver that I need?

+

If a kernel module is available as part of the Linux kernel source tree but +not enabled in the Clear Linux OS kernels, in many cases the Clear Linux OS team will enable it +upon request. Submit requests on GitHub here: +https://github.com/clearlinux/distribution/issues

+

The Clear Linux OS team does not typically add out-of-tree kernel modules as a matter of +practice because of the maintenance overhead. If the driver was unable to be +merged upstream, there is a good chance we may be unable to merge it for +similar reasons.

+

Kernel modules can be individually built and installed on Clear Linux OS. See the +kernel modules page for more information.

+
+

+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_errors/403.html b/_errors/403.html new file mode 100644 index 000000000..bca140944 --- /dev/null +++ b/_errors/403.html @@ -0,0 +1,79 @@ + + + + + Page Not Found + + + + + + + + +

403 Forbidden

+

Sorry, looks like you don't have permission to access this page.

+

Please go back to the documentation home page or try searching:

+ +
+
+ + + +
+
+ + diff --git a/_errors/404.html b/_errors/404.html new file mode 100644 index 000000000..32046bfb4 --- /dev/null +++ b/_errors/404.html @@ -0,0 +1,79 @@ + + + + + Page Not Found + + + + + + + + +

404 Not Found

+

Sorry, we didn't find the page you're looking for.

+

Please go back to the documentation home page or try searching:

+ +
+
+ + + +
+
+ + diff --git a/_images/00-sign-in.png b/_images/00-sign-in.png new file mode 100644 index 000000000..4b9840ee4 Binary files /dev/null and b/_images/00-sign-in.png differ diff --git a/_images/01-cloud-storage.png b/_images/01-cloud-storage.png new file mode 100644 index 000000000..0888723d3 Binary files /dev/null and b/_images/01-cloud-storage.png differ diff --git a/_images/01-digitalocean.png b/_images/01-digitalocean.png new file mode 100644 index 000000000..399c81fe5 Binary files /dev/null and b/_images/01-digitalocean.png differ diff --git a/_images/01-increase-virtual-disk-size.png b/_images/01-increase-virtual-disk-size.png new file mode 100644 index 000000000..63a23b1c5 Binary files /dev/null and b/_images/01-increase-virtual-disk-size.png differ diff --git a/_images/02-digitalocean.png b/_images/02-digitalocean.png new file mode 100644 index 000000000..2c93fd835 Binary files /dev/null and b/_images/02-digitalocean.png differ diff --git a/_images/02-increase-virtual-disk-size.png b/_images/02-increase-virtual-disk-size.png new file mode 100644 index 000000000..207888c52 Binary files /dev/null and b/_images/02-increase-virtual-disk-size.png differ diff --git a/_images/02-storage-browser.png b/_images/02-storage-browser.png new file mode 100644 index 000000000..72db76fdc Binary files /dev/null and b/_images/02-storage-browser.png differ diff --git a/_images/03-create-bucket.png b/_images/03-create-bucket.png new file mode 100644 index 000000000..ad00ca009 Binary files /dev/null and b/_images/03-create-bucket.png differ diff --git a/_images/03-digitalocean.png b/_images/03-digitalocean.png new file mode 100644 index 000000000..313cc6f32 Binary files /dev/null and b/_images/03-digitalocean.png differ diff --git a/_images/04-bucket-created.png b/_images/04-bucket-created.png new file mode 100644 index 000000000..064719cb6 Binary files /dev/null and b/_images/04-bucket-created.png differ diff --git a/_images/04-digitalocean.png b/_images/04-digitalocean.png new file mode 100644 index 000000000..72f172843 Binary files /dev/null and b/_images/04-digitalocean.png differ diff --git a/_images/05-digitalocean.png b/_images/05-digitalocean.png new file mode 100644 index 000000000..81fe8b1b4 Binary files /dev/null and b/_images/05-digitalocean.png differ diff --git a/_images/06-digitalocean.png b/_images/06-digitalocean.png new file mode 100644 index 000000000..ed9146744 Binary files /dev/null and b/_images/06-digitalocean.png differ diff --git a/_images/07-digitalocean.png b/_images/07-digitalocean.png new file mode 100644 index 000000000..15b694d6d Binary files /dev/null and b/_images/07-digitalocean.png differ diff --git a/_images/08-digitalocean.png b/_images/08-digitalocean.png new file mode 100644 index 000000000..6c3362413 Binary files /dev/null and b/_images/08-digitalocean.png differ diff --git a/_images/09-digitalocean.png b/_images/09-digitalocean.png new file mode 100644 index 000000000..9ecd42313 Binary files /dev/null and b/_images/09-digitalocean.png differ diff --git a/_images/10-digitalocean.png b/_images/10-digitalocean.png new file mode 100644 index 000000000..a182643da Binary files /dev/null and b/_images/10-digitalocean.png differ diff --git a/_images/10-image-upload.png b/_images/10-image-upload.png new file mode 100644 index 000000000..babaf2d10 Binary files /dev/null and b/_images/10-image-upload.png differ diff --git a/_images/11-bucket-uploaded.png b/_images/11-bucket-uploaded.png new file mode 100644 index 000000000..ce368e44b Binary files /dev/null and b/_images/11-bucket-uploaded.png differ diff --git a/_images/11-digitalocean.png b/_images/11-digitalocean.png new file mode 100644 index 000000000..fb24087b8 Binary files /dev/null and b/_images/11-digitalocean.png differ diff --git a/_images/20-gce-image.png b/_images/20-gce-image.png new file mode 100644 index 000000000..7b8a2ccb4 Binary files /dev/null and b/_images/20-gce-image.png differ diff --git a/_images/20-image-library.png b/_images/20-image-library.png new file mode 100644 index 000000000..a70cceee6 Binary files /dev/null and b/_images/20-image-library.png differ diff --git a/_images/21-create-image.png b/_images/21-create-image.png new file mode 100644 index 000000000..4ef4d43bc Binary files /dev/null and b/_images/21-create-image.png differ diff --git a/_images/22-image-list.png b/_images/22-image-list.png new file mode 100644 index 000000000..4347e462e Binary files /dev/null and b/_images/22-image-list.png differ diff --git a/_images/30-create-vm.png b/_images/30-create-vm.png new file mode 100644 index 000000000..49854b5f6 Binary files /dev/null and b/_images/30-create-vm.png differ diff --git a/_images/30-vm-catalog.png b/_images/30-vm-catalog.png new file mode 100644 index 000000000..06071cf65 Binary files /dev/null and b/_images/30-vm-catalog.png differ diff --git a/_images/30-vm-instances.png b/_images/30-vm-instances.png new file mode 100644 index 000000000..3c38bd8d5 Binary files /dev/null and b/_images/30-vm-instances.png differ diff --git a/_images/30-vm-none.png b/_images/30-vm-none.png new file mode 100644 index 000000000..3c118f49c Binary files /dev/null and b/_images/30-vm-none.png differ diff --git a/_images/31-select-boot-disk.png b/_images/31-select-boot-disk.png new file mode 100644 index 000000000..b0b44cdfc Binary files /dev/null and b/_images/31-select-boot-disk.png differ diff --git a/_images/40-clear-vm-security.png b/_images/40-clear-vm-security.png new file mode 100644 index 000000000..8d45b4a4c Binary files /dev/null and b/_images/40-clear-vm-security.png differ diff --git a/_images/40-ssh-key.png b/_images/40-ssh-key.png new file mode 100644 index 000000000..e18a390c2 Binary files /dev/null and b/_images/40-ssh-key.png differ diff --git a/_images/41-vm-created.png b/_images/41-vm-created.png new file mode 100644 index 000000000..ec4f3a208 Binary files /dev/null and b/_images/41-vm-created.png differ diff --git a/_images/42-ssh-vm.png b/_images/42-ssh-vm.png new file mode 100644 index 000000000..92badb80d Binary files /dev/null and b/_images/42-ssh-vm.png differ diff --git a/_images/QingCloud-1.png b/_images/QingCloud-1.png new file mode 100644 index 000000000..3c3b3c1b0 Binary files /dev/null and b/_images/QingCloud-1.png differ diff --git a/_images/QingCloud-10.png b/_images/QingCloud-10.png new file mode 100644 index 000000000..799197437 Binary files /dev/null and b/_images/QingCloud-10.png differ diff --git a/_images/QingCloud-11.png b/_images/QingCloud-11.png new file mode 100644 index 000000000..a29370a3b Binary files /dev/null and b/_images/QingCloud-11.png differ diff --git a/_images/QingCloud-12.png b/_images/QingCloud-12.png new file mode 100644 index 000000000..d344d3687 Binary files /dev/null and b/_images/QingCloud-12.png differ diff --git a/_images/QingCloud-13.png b/_images/QingCloud-13.png new file mode 100644 index 000000000..8c0a9f878 Binary files /dev/null and b/_images/QingCloud-13.png differ diff --git a/_images/QingCloud-14.png b/_images/QingCloud-14.png new file mode 100644 index 000000000..61caa0a7a Binary files /dev/null and b/_images/QingCloud-14.png differ diff --git a/_images/QingCloud-15.png b/_images/QingCloud-15.png new file mode 100644 index 000000000..0152fca40 Binary files /dev/null and b/_images/QingCloud-15.png differ diff --git a/_images/QingCloud-16.png b/_images/QingCloud-16.png new file mode 100644 index 000000000..480409248 Binary files /dev/null and b/_images/QingCloud-16.png differ diff --git a/_images/QingCloud-17.png b/_images/QingCloud-17.png new file mode 100644 index 000000000..998271931 Binary files /dev/null and b/_images/QingCloud-17.png differ diff --git a/_images/QingCloud-18.png b/_images/QingCloud-18.png new file mode 100644 index 000000000..e8c47b820 Binary files /dev/null and b/_images/QingCloud-18.png differ diff --git a/_images/QingCloud-19.png b/_images/QingCloud-19.png new file mode 100644 index 000000000..ba6c26b9b Binary files /dev/null and b/_images/QingCloud-19.png differ diff --git a/_images/QingCloud-2.png b/_images/QingCloud-2.png new file mode 100644 index 000000000..ed9d5701b Binary files /dev/null and b/_images/QingCloud-2.png differ diff --git a/_images/QingCloud-20.png b/_images/QingCloud-20.png new file mode 100644 index 000000000..c71dae6d4 Binary files /dev/null and b/_images/QingCloud-20.png differ diff --git a/_images/QingCloud-21.png b/_images/QingCloud-21.png new file mode 100644 index 000000000..990e7cff7 Binary files /dev/null and b/_images/QingCloud-21.png differ diff --git a/_images/QingCloud-3.png b/_images/QingCloud-3.png new file mode 100644 index 000000000..bd326a6c6 Binary files /dev/null and b/_images/QingCloud-3.png differ diff --git a/_images/QingCloud-4.png b/_images/QingCloud-4.png new file mode 100644 index 000000000..35f480baf Binary files /dev/null and b/_images/QingCloud-4.png differ diff --git a/_images/QingCloud-6.png b/_images/QingCloud-6.png new file mode 100644 index 000000000..a800fe1e9 Binary files /dev/null and b/_images/QingCloud-6.png differ diff --git a/_images/QingCloud-7.png b/_images/QingCloud-7.png new file mode 100644 index 000000000..b1f3d8806 Binary files /dev/null and b/_images/QingCloud-7.png differ diff --git a/_images/QingCloud-8.png b/_images/QingCloud-8.png new file mode 100644 index 000000000..688ad825f Binary files /dev/null and b/_images/QingCloud-8.png differ diff --git a/_images/QingCloud-9.png b/_images/QingCloud-9.png new file mode 100644 index 000000000..f79ee9dd2 Binary files /dev/null and b/_images/QingCloud-9.png differ diff --git a/_images/architect-lifecycle-1.png b/_images/architect-lifecycle-1.png new file mode 100644 index 000000000..294d0f351 Binary files /dev/null and b/_images/architect-lifecycle-1.png differ diff --git a/_images/autoproxy_0.png b/_images/autoproxy_0.png new file mode 100644 index 000000000..7a02cd81f Binary files /dev/null and b/_images/autoproxy_0.png differ diff --git a/_images/aws-web-1.png b/_images/aws-web-1.png new file mode 100644 index 000000000..c4fad6852 Binary files /dev/null and b/_images/aws-web-1.png differ diff --git a/_images/aws-web-10.png b/_images/aws-web-10.png new file mode 100644 index 000000000..b4fbeb13f Binary files /dev/null and b/_images/aws-web-10.png differ diff --git a/_images/aws-web-11.png b/_images/aws-web-11.png new file mode 100644 index 000000000..2a6dcab0e Binary files /dev/null and b/_images/aws-web-11.png differ diff --git a/_images/aws-web-12.png b/_images/aws-web-12.png new file mode 100644 index 000000000..1091ea724 Binary files /dev/null and b/_images/aws-web-12.png differ diff --git a/_images/aws-web-13.png b/_images/aws-web-13.png new file mode 100644 index 000000000..507c8c125 Binary files /dev/null and b/_images/aws-web-13.png differ diff --git a/_images/aws-web-14.png b/_images/aws-web-14.png new file mode 100644 index 000000000..36e106610 Binary files /dev/null and b/_images/aws-web-14.png differ diff --git a/_images/aws-web-2.png b/_images/aws-web-2.png new file mode 100644 index 000000000..8bb6ffa08 Binary files /dev/null and b/_images/aws-web-2.png differ diff --git a/_images/aws-web-3.png b/_images/aws-web-3.png new file mode 100644 index 000000000..7beb5ad80 Binary files /dev/null and b/_images/aws-web-3.png differ diff --git a/_images/aws-web-4.png b/_images/aws-web-4.png new file mode 100644 index 000000000..cd143b51d Binary files /dev/null and b/_images/aws-web-4.png differ diff --git a/_images/aws-web-5.png b/_images/aws-web-5.png new file mode 100644 index 000000000..9c70a9031 Binary files /dev/null and b/_images/aws-web-5.png differ diff --git a/_images/aws-web-6.png b/_images/aws-web-6.png new file mode 100644 index 000000000..a5819f7a3 Binary files /dev/null and b/_images/aws-web-6.png differ diff --git a/_images/aws-web-7.png b/_images/aws-web-7.png new file mode 100644 index 000000000..dad60bd8c Binary files /dev/null and b/_images/aws-web-7.png differ diff --git a/_images/aws-web-8.png b/_images/aws-web-8.png new file mode 100644 index 000000000..9e927a438 Binary files /dev/null and b/_images/aws-web-8.png differ diff --git a/_images/aws-web-9.png b/_images/aws-web-9.png new file mode 100644 index 000000000..2c1f411ca Binary files /dev/null and b/_images/aws-web-9.png differ diff --git a/_images/azure-1.png b/_images/azure-1.png new file mode 100644 index 000000000..25c1800f8 Binary files /dev/null and b/_images/azure-1.png differ diff --git a/_images/azure-2.png b/_images/azure-2.png new file mode 100644 index 000000000..8364393c6 Binary files /dev/null and b/_images/azure-2.png differ diff --git a/_images/azure-3.png b/_images/azure-3.png new file mode 100644 index 000000000..dfb1c11ca Binary files /dev/null and b/_images/azure-3.png differ diff --git a/_images/balenaEtcher_Done.PNG b/_images/balenaEtcher_Done.PNG new file mode 100644 index 000000000..d2c884fc4 Binary files /dev/null and b/_images/balenaEtcher_Done.PNG differ diff --git a/_images/balenaEtcher_DriveSlect.PNG b/_images/balenaEtcher_DriveSlect.PNG new file mode 100644 index 000000000..1bb0f2cff Binary files /dev/null and b/_images/balenaEtcher_DriveSlect.PNG differ diff --git a/_images/balenaEtcher_Flashing.PNG b/_images/balenaEtcher_Flashing.PNG new file mode 100644 index 000000000..8cf9c5ced Binary files /dev/null and b/_images/balenaEtcher_Flashing.PNG differ diff --git a/_images/balenaEtcher_ImageSelect.PNG b/_images/balenaEtcher_ImageSelect.PNG new file mode 100644 index 000000000..c1836bfd8 Binary files /dev/null and b/_images/balenaEtcher_ImageSelect.PNG differ diff --git a/_images/balenaEtcher_ReadyToFlash.PNG b/_images/balenaEtcher_ReadyToFlash.PNG new file mode 100644 index 000000000..4662cbe51 Binary files /dev/null and b/_images/balenaEtcher_ReadyToFlash.PNG differ diff --git a/_images/balenaEtcher_Start.PNG b/_images/balenaEtcher_Start.PNG new file mode 100644 index 000000000..9b02db9ab Binary files /dev/null and b/_images/balenaEtcher_Start.PNG differ diff --git a/_images/balenaEtcher_StartingToFlash.PNG b/_images/balenaEtcher_StartingToFlash.PNG new file mode 100644 index 000000000..c0b6f7ff7 Binary files /dev/null and b/_images/balenaEtcher_StartingToFlash.PNG differ diff --git a/_images/bare-metal-install-desktop-01.png b/_images/bare-metal-install-desktop-01.png new file mode 100644 index 000000000..57f998de5 Binary files /dev/null and b/_images/bare-metal-install-desktop-01.png differ diff --git a/_images/bare-metal-install-desktop-02.png b/_images/bare-metal-install-desktop-02.png new file mode 100644 index 000000000..bce97b574 Binary files /dev/null and b/_images/bare-metal-install-desktop-02.png differ diff --git a/_images/bare-metal-install-desktop-03.png b/_images/bare-metal-install-desktop-03.png new file mode 100644 index 000000000..a2650b35d Binary files /dev/null and b/_images/bare-metal-install-desktop-03.png differ diff --git a/_images/bare-metal-install-desktop-04.png b/_images/bare-metal-install-desktop-04.png new file mode 100644 index 000000000..7efc721f9 Binary files /dev/null and b/_images/bare-metal-install-desktop-04.png differ diff --git a/_images/bare-metal-install-desktop-05.png b/_images/bare-metal-install-desktop-05.png new file mode 100644 index 000000000..8a966ab70 Binary files /dev/null and b/_images/bare-metal-install-desktop-05.png differ diff --git a/_images/bare-metal-install-desktop-06.png b/_images/bare-metal-install-desktop-06.png new file mode 100644 index 000000000..13a3d5f2c Binary files /dev/null and b/_images/bare-metal-install-desktop-06.png differ diff --git a/_images/bare-metal-install-desktop-07.png b/_images/bare-metal-install-desktop-07.png new file mode 100644 index 000000000..059625e53 Binary files /dev/null and b/_images/bare-metal-install-desktop-07.png differ diff --git a/_images/bare-metal-install-desktop-08.png b/_images/bare-metal-install-desktop-08.png new file mode 100644 index 000000000..8497270db Binary files /dev/null and b/_images/bare-metal-install-desktop-08.png differ diff --git a/_images/bare-metal-install-desktop-09.png b/_images/bare-metal-install-desktop-09.png new file mode 100644 index 000000000..db05151c7 Binary files /dev/null and b/_images/bare-metal-install-desktop-09.png differ diff --git a/_images/bare-metal-install-desktop-10.png b/_images/bare-metal-install-desktop-10.png new file mode 100644 index 000000000..96dec049b Binary files /dev/null and b/_images/bare-metal-install-desktop-10.png differ diff --git a/_images/bare-metal-install-desktop-11.png b/_images/bare-metal-install-desktop-11.png new file mode 100644 index 000000000..a5973cd41 Binary files /dev/null and b/_images/bare-metal-install-desktop-11.png differ diff --git a/_images/bare-metal-install-desktop-12.png b/_images/bare-metal-install-desktop-12.png new file mode 100644 index 000000000..dbcfae3fe Binary files /dev/null and b/_images/bare-metal-install-desktop-12.png differ diff --git a/_images/bare-metal-install-desktop-13.png b/_images/bare-metal-install-desktop-13.png new file mode 100644 index 000000000..1f64a847d Binary files /dev/null and b/_images/bare-metal-install-desktop-13.png differ diff --git a/_images/bare-metal-install-desktop-14.png b/_images/bare-metal-install-desktop-14.png new file mode 100644 index 000000000..1986af128 Binary files /dev/null and b/_images/bare-metal-install-desktop-14.png differ diff --git a/_images/bare-metal-install-desktop-15.png b/_images/bare-metal-install-desktop-15.png new file mode 100644 index 000000000..75ef94367 Binary files /dev/null and b/_images/bare-metal-install-desktop-15.png differ diff --git a/_images/bare-metal-install-desktop-16.png b/_images/bare-metal-install-desktop-16.png new file mode 100644 index 000000000..8fdfdcf0c Binary files /dev/null and b/_images/bare-metal-install-desktop-16.png differ diff --git a/_images/bare-metal-install-desktop-17.png b/_images/bare-metal-install-desktop-17.png new file mode 100644 index 000000000..98edfbb77 Binary files /dev/null and b/_images/bare-metal-install-desktop-17.png differ diff --git a/_images/bare-metal-install-desktop-18.png b/_images/bare-metal-install-desktop-18.png new file mode 100644 index 000000000..99cc6763b Binary files /dev/null and b/_images/bare-metal-install-desktop-18.png differ diff --git a/_images/bare-metal-install-desktop-19.png b/_images/bare-metal-install-desktop-19.png new file mode 100644 index 000000000..f47bd7022 Binary files /dev/null and b/_images/bare-metal-install-desktop-19.png differ diff --git a/_images/bare-metal-install-desktop-20.png b/_images/bare-metal-install-desktop-20.png new file mode 100644 index 000000000..d81b6dc3b Binary files /dev/null and b/_images/bare-metal-install-desktop-20.png differ diff --git a/_images/bare-metal-install-desktop-21.png b/_images/bare-metal-install-desktop-21.png new file mode 100644 index 000000000..506bfa004 Binary files /dev/null and b/_images/bare-metal-install-desktop-21.png differ diff --git a/_images/bare-metal-install-desktop-22.png b/_images/bare-metal-install-desktop-22.png new file mode 100644 index 000000000..d51a0fa74 Binary files /dev/null and b/_images/bare-metal-install-desktop-22.png differ diff --git a/_images/bare-metal-install-desktop-23.png b/_images/bare-metal-install-desktop-23.png new file mode 100644 index 000000000..d6ac2d52c Binary files /dev/null and b/_images/bare-metal-install-desktop-23.png differ diff --git a/_images/bare-metal-install-desktop-24.png b/_images/bare-metal-install-desktop-24.png new file mode 100644 index 000000000..a82cb2a60 Binary files /dev/null and b/_images/bare-metal-install-desktop-24.png differ diff --git a/_images/bare-metal-install-server-01.png b/_images/bare-metal-install-server-01.png new file mode 100644 index 000000000..bb4e2058d Binary files /dev/null and b/_images/bare-metal-install-server-01.png differ diff --git a/_images/bare-metal-install-server-02.png b/_images/bare-metal-install-server-02.png new file mode 100644 index 000000000..688f85d59 Binary files /dev/null and b/_images/bare-metal-install-server-02.png differ diff --git a/_images/bare-metal-install-server-03.png b/_images/bare-metal-install-server-03.png new file mode 100644 index 000000000..b644a0a59 Binary files /dev/null and b/_images/bare-metal-install-server-03.png differ diff --git a/_images/bare-metal-install-server-04.png b/_images/bare-metal-install-server-04.png new file mode 100644 index 000000000..73bb3f90c Binary files /dev/null and b/_images/bare-metal-install-server-04.png differ diff --git a/_images/bare-metal-install-server-05.png b/_images/bare-metal-install-server-05.png new file mode 100644 index 000000000..9be288eeb Binary files /dev/null and b/_images/bare-metal-install-server-05.png differ diff --git a/_images/bare-metal-install-server-06.png b/_images/bare-metal-install-server-06.png new file mode 100644 index 000000000..3e45ec660 Binary files /dev/null and b/_images/bare-metal-install-server-06.png differ diff --git a/_images/bare-metal-install-server-07.png b/_images/bare-metal-install-server-07.png new file mode 100644 index 000000000..2ebac81ec Binary files /dev/null and b/_images/bare-metal-install-server-07.png differ diff --git a/_images/bare-metal-install-server-08.png b/_images/bare-metal-install-server-08.png new file mode 100644 index 000000000..63c9bb66a Binary files /dev/null and b/_images/bare-metal-install-server-08.png differ diff --git a/_images/bare-metal-install-server-09.png b/_images/bare-metal-install-server-09.png new file mode 100644 index 000000000..50f6c3618 Binary files /dev/null and b/_images/bare-metal-install-server-09.png differ diff --git a/_images/bare-metal-install-server-10.png b/_images/bare-metal-install-server-10.png new file mode 100644 index 000000000..0af6f9220 Binary files /dev/null and b/_images/bare-metal-install-server-10.png differ diff --git a/_images/bare-metal-install-server-11.png b/_images/bare-metal-install-server-11.png new file mode 100644 index 000000000..ae967bd7e Binary files /dev/null and b/_images/bare-metal-install-server-11.png differ diff --git a/_images/bare-metal-install-server-12.png b/_images/bare-metal-install-server-12.png new file mode 100644 index 000000000..5a2b87e93 Binary files /dev/null and b/_images/bare-metal-install-server-12.png differ diff --git a/_images/bare-metal-install-server-13.png b/_images/bare-metal-install-server-13.png new file mode 100644 index 000000000..ea195577c Binary files /dev/null and b/_images/bare-metal-install-server-13.png differ diff --git a/_images/bare-metal-install-server-14.png b/_images/bare-metal-install-server-14.png new file mode 100644 index 000000000..22b3b3b89 Binary files /dev/null and b/_images/bare-metal-install-server-14.png differ diff --git a/_images/bare-metal-install-server-15.png b/_images/bare-metal-install-server-15.png new file mode 100644 index 000000000..48061408e Binary files /dev/null and b/_images/bare-metal-install-server-15.png differ diff --git a/_images/bare-metal-install-server-16.png b/_images/bare-metal-install-server-16.png new file mode 100644 index 000000000..32a5ec49a Binary files /dev/null and b/_images/bare-metal-install-server-16.png differ diff --git a/_images/bare-metal-install-server-17.png b/_images/bare-metal-install-server-17.png new file mode 100644 index 000000000..b96aca8fc Binary files /dev/null and b/_images/bare-metal-install-server-17.png differ diff --git a/_images/bare-metal-install-server-18.png b/_images/bare-metal-install-server-18.png new file mode 100644 index 000000000..1816d84c1 Binary files /dev/null and b/_images/bare-metal-install-server-18.png differ diff --git a/_images/bare-metal-install-server-19.png b/_images/bare-metal-install-server-19.png new file mode 100644 index 000000000..a1b1ce646 Binary files /dev/null and b/_images/bare-metal-install-server-19.png differ diff --git a/_images/bare-metal-install-server-20.png b/_images/bare-metal-install-server-20.png new file mode 100644 index 000000000..b3741d40c Binary files /dev/null and b/_images/bare-metal-install-server-20.png differ diff --git a/_images/bare-metal-install-server-21.png b/_images/bare-metal-install-server-21.png new file mode 100644 index 000000000..8045633fe Binary files /dev/null and b/_images/bare-metal-install-server-21.png differ diff --git a/_images/bare-metal-install-server-22.png b/_images/bare-metal-install-server-22.png new file mode 100644 index 000000000..14f3492f8 Binary files /dev/null and b/_images/bare-metal-install-server-22.png differ diff --git a/_images/bare-metal-install-server-23.png b/_images/bare-metal-install-server-23.png new file mode 100644 index 000000000..315d7673b Binary files /dev/null and b/_images/bare-metal-install-server-23.png differ diff --git a/_images/bare-metal-install-server-24.png b/_images/bare-metal-install-server-24.png new file mode 100644 index 000000000..4a082720e Binary files /dev/null and b/_images/bare-metal-install-server-24.png differ diff --git a/_images/bare-metal-install-server-25.png b/_images/bare-metal-install-server-25.png new file mode 100644 index 000000000..79db68cb6 Binary files /dev/null and b/_images/bare-metal-install-server-25.png differ diff --git a/_images/bare-metal-install-server-26.png b/_images/bare-metal-install-server-26.png new file mode 100644 index 000000000..4aed6b7c4 Binary files /dev/null and b/_images/bare-metal-install-server-26.png differ diff --git a/_images/bare-metal-install-server-27.png b/_images/bare-metal-install-server-27.png new file mode 100644 index 000000000..11ed36606 Binary files /dev/null and b/_images/bare-metal-install-server-27.png differ diff --git a/_images/bare-metal-install-server-28.png b/_images/bare-metal-install-server-28.png new file mode 100644 index 000000000..7a4b9676d Binary files /dev/null and b/_images/bare-metal-install-server-28.png differ diff --git a/_images/bare-metal-install-server-29.png b/_images/bare-metal-install-server-29.png new file mode 100644 index 000000000..6a584f883 Binary files /dev/null and b/_images/bare-metal-install-server-29.png differ diff --git a/_images/bare-metal-install-server-30.png b/_images/bare-metal-install-server-30.png new file mode 100644 index 000000000..0979ba9d8 Binary files /dev/null and b/_images/bare-metal-install-server-30.png differ diff --git a/_images/bare-metal-install-server-31.png b/_images/bare-metal-install-server-31.png new file mode 100644 index 000000000..fc885d5ff Binary files /dev/null and b/_images/bare-metal-install-server-31.png differ diff --git a/_images/bare-metal-install-server-32.png b/_images/bare-metal-install-server-32.png new file mode 100644 index 000000000..36073c230 Binary files /dev/null and b/_images/bare-metal-install-server-32.png differ diff --git a/_images/bare-metal-install-server-33.png b/_images/bare-metal-install-server-33.png new file mode 100644 index 000000000..7a0461916 Binary files /dev/null and b/_images/bare-metal-install-server-33.png differ diff --git a/_images/bare-metal-install-server-34.png b/_images/bare-metal-install-server-34.png new file mode 100644 index 000000000..863561c3e Binary files /dev/null and b/_images/bare-metal-install-server-34.png differ diff --git a/_images/clear-lifecycle.png b/_images/clear-lifecycle.png new file mode 100644 index 000000000..a45449ea9 Binary files /dev/null and b/_images/clear-lifecycle.png differ diff --git a/_images/debug-diagram.png b/_images/debug-diagram.png new file mode 100644 index 000000000..d85a40451 Binary files /dev/null and b/_images/debug-diagram.png differ diff --git a/_images/download-verify-decompress-windows-fig-1.png b/_images/download-verify-decompress-windows-fig-1.png new file mode 100644 index 000000000..0b0ee7f60 Binary files /dev/null and b/_images/download-verify-decompress-windows-fig-1.png differ diff --git a/_images/dptf_bios.png b/_images/dptf_bios.png new file mode 100644 index 000000000..d99080d58 Binary files /dev/null and b/_images/dptf_bios.png differ diff --git a/_images/dual-boot-linux-01.png b/_images/dual-boot-linux-01.png new file mode 100644 index 000000000..a4a0d2ba2 Binary files /dev/null and b/_images/dual-boot-linux-01.png differ diff --git a/_images/dual-boot-linux-02.png b/_images/dual-boot-linux-02.png new file mode 100644 index 000000000..a4a6cc5a1 Binary files /dev/null and b/_images/dual-boot-linux-02.png differ diff --git a/_images/dual-boot-linux-03.png b/_images/dual-boot-linux-03.png new file mode 100644 index 000000000..7120b7d40 Binary files /dev/null and b/_images/dual-boot-linux-03.png differ diff --git a/_images/dual-boot-linux-04.png b/_images/dual-boot-linux-04.png new file mode 100644 index 000000000..6e297d2e8 Binary files /dev/null and b/_images/dual-boot-linux-04.png differ diff --git a/_images/dual-boot-linux-05.png b/_images/dual-boot-linux-05.png new file mode 100644 index 000000000..262306e15 Binary files /dev/null and b/_images/dual-boot-linux-05.png differ diff --git a/_images/dual-boot-linux-06.png b/_images/dual-boot-linux-06.png new file mode 100644 index 000000000..41e9fbe9e Binary files /dev/null and b/_images/dual-boot-linux-06.png differ diff --git a/_images/dual-boot-linux-07.png b/_images/dual-boot-linux-07.png new file mode 100644 index 000000000..6e541be8b Binary files /dev/null and b/_images/dual-boot-linux-07.png differ diff --git a/_images/dual-boot-linux-08.png b/_images/dual-boot-linux-08.png new file mode 100644 index 000000000..776feacf1 Binary files /dev/null and b/_images/dual-boot-linux-08.png differ diff --git a/_images/dual-boot-linux-09.png b/_images/dual-boot-linux-09.png new file mode 100644 index 000000000..f3e0bef39 Binary files /dev/null and b/_images/dual-boot-linux-09.png differ diff --git a/_images/dual-boot-linux-10.png b/_images/dual-boot-linux-10.png new file mode 100644 index 000000000..7a7e142c4 Binary files /dev/null and b/_images/dual-boot-linux-10.png differ diff --git a/_images/dual-boot-linux-11.png b/_images/dual-boot-linux-11.png new file mode 100644 index 000000000..040d0fe58 Binary files /dev/null and b/_images/dual-boot-linux-11.png differ diff --git a/_images/dual-boot-linux-12.png b/_images/dual-boot-linux-12.png new file mode 100644 index 000000000..2a26e29d5 Binary files /dev/null and b/_images/dual-boot-linux-12.png differ diff --git a/_images/dual-boot-win-01.png b/_images/dual-boot-win-01.png new file mode 100644 index 000000000..a1a99feba Binary files /dev/null and b/_images/dual-boot-win-01.png differ diff --git a/_images/dual-boot-win-02.png b/_images/dual-boot-win-02.png new file mode 100644 index 000000000..6110b47eb Binary files /dev/null and b/_images/dual-boot-win-02.png differ diff --git a/_images/dual-boot-win-03.png b/_images/dual-boot-win-03.png new file mode 100644 index 000000000..23e9026ca Binary files /dev/null and b/_images/dual-boot-win-03.png differ diff --git a/_images/dual-boot-win-04.png b/_images/dual-boot-win-04.png new file mode 100644 index 000000000..9eff8198a Binary files /dev/null and b/_images/dual-boot-win-04.png differ diff --git a/_images/dual-boot-win-06.png b/_images/dual-boot-win-06.png new file mode 100644 index 000000000..6d7e0a951 Binary files /dev/null and b/_images/dual-boot-win-06.png differ diff --git a/_images/dual-boot-win-07.png b/_images/dual-boot-win-07.png new file mode 100644 index 000000000..b0fba4627 Binary files /dev/null and b/_images/dual-boot-win-07.png differ diff --git a/_images/dual-boot-win-08.png b/_images/dual-boot-win-08.png new file mode 100644 index 000000000..25c4fe752 Binary files /dev/null and b/_images/dual-boot-win-08.png differ diff --git a/_images/flatpak-01.png b/_images/flatpak-01.png new file mode 100644 index 000000000..8cc7b7cdb Binary files /dev/null and b/_images/flatpak-01.png differ diff --git a/_images/flatpak-02.png b/_images/flatpak-02.png new file mode 100644 index 000000000..55f0f6f38 Binary files /dev/null and b/_images/flatpak-02.png differ diff --git a/_images/flatpak-03.png b/_images/flatpak-03.png new file mode 100644 index 000000000..ec4950c57 Binary files /dev/null and b/_images/flatpak-03.png differ diff --git a/_images/flatpak-04.png b/_images/flatpak-04.png new file mode 100644 index 000000000..af9137fac Binary files /dev/null and b/_images/flatpak-04.png differ diff --git a/_images/format-bump.png b/_images/format-bump.png new file mode 100644 index 000000000..d95e642df Binary files /dev/null and b/_images/format-bump.png differ diff --git a/_images/hpc-01.png b/_images/hpc-01.png new file mode 100644 index 000000000..91d94556a Binary files /dev/null and b/_images/hpc-01.png differ diff --git a/_images/hyper-v-01.png b/_images/hyper-v-01.png new file mode 100644 index 000000000..b1841260d Binary files /dev/null and b/_images/hyper-v-01.png differ diff --git a/_images/hyper-v-02.png b/_images/hyper-v-02.png new file mode 100644 index 000000000..6d6e02250 Binary files /dev/null and b/_images/hyper-v-02.png differ diff --git a/_images/hyper-v-03.png b/_images/hyper-v-03.png new file mode 100644 index 000000000..aa1cad9e4 Binary files /dev/null and b/_images/hyper-v-03.png differ diff --git a/_images/import-clr-aws-01.png b/_images/import-clr-aws-01.png new file mode 100644 index 000000000..45c8ac630 Binary files /dev/null and b/_images/import-clr-aws-01.png differ diff --git a/_images/import-clr-aws-02.png b/_images/import-clr-aws-02.png new file mode 100644 index 000000000..0f4d1c463 Binary files /dev/null and b/_images/import-clr-aws-02.png differ diff --git a/_images/import-clr-aws-03.png b/_images/import-clr-aws-03.png new file mode 100644 index 000000000..88104eb2a Binary files /dev/null and b/_images/import-clr-aws-03.png differ diff --git a/_images/import-clr-aws-04.png b/_images/import-clr-aws-04.png new file mode 100644 index 000000000..236cac4e6 Binary files /dev/null and b/_images/import-clr-aws-04.png differ diff --git a/_images/import-clr-aws-05.png b/_images/import-clr-aws-05.png new file mode 100644 index 000000000..73e3fa464 Binary files /dev/null and b/_images/import-clr-aws-05.png differ diff --git a/_images/import-clr-aws-06.png b/_images/import-clr-aws-06.png new file mode 100644 index 000000000..b92cf8d6f Binary files /dev/null and b/_images/import-clr-aws-06.png differ diff --git a/_images/import-clr-aws-07.png b/_images/import-clr-aws-07.png new file mode 100644 index 000000000..0460dd615 Binary files /dev/null and b/_images/import-clr-aws-07.png differ diff --git a/_images/import-clr-aws-08.png b/_images/import-clr-aws-08.png new file mode 100644 index 000000000..86312beb0 Binary files /dev/null and b/_images/import-clr-aws-08.png differ diff --git a/_images/import-clr-aws-09.png b/_images/import-clr-aws-09.png new file mode 100644 index 000000000..8b9182436 Binary files /dev/null and b/_images/import-clr-aws-09.png differ diff --git a/_images/import-clr-aws-10.png b/_images/import-clr-aws-10.png new file mode 100644 index 000000000..7a8396e7f Binary files /dev/null and b/_images/import-clr-aws-10.png differ diff --git a/_images/import-clr-aws-11.png b/_images/import-clr-aws-11.png new file mode 100644 index 000000000..e51fb39ba Binary files /dev/null and b/_images/import-clr-aws-11.png differ diff --git a/_images/import-clr-aws-12.png b/_images/import-clr-aws-12.png new file mode 100644 index 000000000..abed9621c Binary files /dev/null and b/_images/import-clr-aws-12.png differ diff --git a/_images/import-clr-aws-13.png b/_images/import-clr-aws-13.png new file mode 100644 index 000000000..e84cc1034 Binary files /dev/null and b/_images/import-clr-aws-13.png differ diff --git a/_images/import-clr-aws-14.png b/_images/import-clr-aws-14.png new file mode 100644 index 000000000..ea759c73e Binary files /dev/null and b/_images/import-clr-aws-14.png differ diff --git a/_images/import-clr-aws-15.png b/_images/import-clr-aws-15.png new file mode 100644 index 000000000..6e91bb85b Binary files /dev/null and b/_images/import-clr-aws-15.png differ diff --git a/_images/import-clr-aws-16.png b/_images/import-clr-aws-16.png new file mode 100644 index 000000000..451baa2e1 Binary files /dev/null and b/_images/import-clr-aws-16.png differ diff --git a/_images/import-clr-aws-17.png b/_images/import-clr-aws-17.png new file mode 100644 index 000000000..3eb22a5aa Binary files /dev/null and b/_images/import-clr-aws-17.png differ diff --git a/_images/import-clr-aws-18.png b/_images/import-clr-aws-18.png new file mode 100644 index 000000000..a8ddabf15 Binary files /dev/null and b/_images/import-clr-aws-18.png differ diff --git a/_images/import-clr-aws-19.png b/_images/import-clr-aws-19.png new file mode 100644 index 000000000..76c1427bc Binary files /dev/null and b/_images/import-clr-aws-19.png differ diff --git a/_images/import-clr-aws-20.png b/_images/import-clr-aws-20.png new file mode 100644 index 000000000..9ff3e5ba3 Binary files /dev/null and b/_images/import-clr-aws-20.png differ diff --git a/_images/import-clr-aws-21.png b/_images/import-clr-aws-21.png new file mode 100644 index 000000000..6fd9f68a3 Binary files /dev/null and b/_images/import-clr-aws-21.png differ diff --git a/_images/import-clr-aws-22.png b/_images/import-clr-aws-22.png new file mode 100644 index 000000000..e9464e6f1 Binary files /dev/null and b/_images/import-clr-aws-22.png differ diff --git a/_images/import-clr-aws-23.png b/_images/import-clr-aws-23.png new file mode 100644 index 000000000..eaaac37b7 Binary files /dev/null and b/_images/import-clr-aws-23.png differ diff --git a/_images/import-clr-aws-24.png b/_images/import-clr-aws-24.png new file mode 100644 index 000000000..a9831dd57 Binary files /dev/null and b/_images/import-clr-aws-24.png differ diff --git a/_images/import-clr-aws-25.png b/_images/import-clr-aws-25.png new file mode 100644 index 000000000..2ab4a5a48 Binary files /dev/null and b/_images/import-clr-aws-25.png differ diff --git a/_images/import-clr-aws-26.png b/_images/import-clr-aws-26.png new file mode 100644 index 000000000..464a20bf9 Binary files /dev/null and b/_images/import-clr-aws-26.png differ diff --git a/_images/import-clr-aws-27.png b/_images/import-clr-aws-27.png new file mode 100644 index 000000000..e6230e398 Binary files /dev/null and b/_images/import-clr-aws-27.png differ diff --git a/_images/import-clr-aws-28.png b/_images/import-clr-aws-28.png new file mode 100644 index 000000000..e23e9b94c Binary files /dev/null and b/_images/import-clr-aws-28.png differ diff --git a/_images/ipxe-install-1.png b/_images/ipxe-install-1.png new file mode 100644 index 000000000..52bab4b1a Binary files /dev/null and b/_images/ipxe-install-1.png differ diff --git a/_images/ipxe-install-2.png b/_images/ipxe-install-2.png new file mode 100644 index 000000000..cfa3f5174 Binary files /dev/null and b/_images/ipxe-install-2.png differ diff --git a/_images/machine-learning-1.png b/_images/machine-learning-1.png new file mode 100644 index 000000000..caddc8677 Binary files /dev/null and b/_images/machine-learning-1.png differ diff --git a/_images/machine-learning-2.png b/_images/machine-learning-2.png new file mode 100644 index 000000000..70ee944c4 Binary files /dev/null and b/_images/machine-learning-2.png differ diff --git a/_images/machine-learning-3.png b/_images/machine-learning-3.png new file mode 100644 index 000000000..b54503a55 Binary files /dev/null and b/_images/machine-learning-3.png differ diff --git a/_images/machine-learning-4.png b/_images/machine-learning-4.png new file mode 100644 index 000000000..7cfdbe5dd Binary files /dev/null and b/_images/machine-learning-4.png differ diff --git a/_images/machine-learning-5.png b/_images/machine-learning-5.png new file mode 100644 index 000000000..ae7e7d031 Binary files /dev/null and b/_images/machine-learning-5.png differ diff --git a/_images/machine-learning-6.png b/_images/machine-learning-6.png new file mode 100644 index 000000000..b074d787a Binary files /dev/null and b/_images/machine-learning-6.png differ diff --git a/_images/machine-learning-7.png b/_images/machine-learning-7.png new file mode 100644 index 000000000..0c6715faf Binary files /dev/null and b/_images/machine-learning-7.png differ diff --git a/_images/machine-learning-8.png b/_images/machine-learning-8.png new file mode 100644 index 000000000..add499998 Binary files /dev/null and b/_images/machine-learning-8.png differ diff --git a/_images/mirror-upstream-server-01.png b/_images/mirror-upstream-server-01.png new file mode 100644 index 000000000..30511b681 Binary files /dev/null and b/_images/mirror-upstream-server-01.png differ diff --git a/_images/mirror-upstream-server-02.png b/_images/mirror-upstream-server-02.png new file mode 100644 index 000000000..2846250d8 Binary files /dev/null and b/_images/mirror-upstream-server-02.png differ diff --git a/_images/nmtui_1.png b/_images/nmtui_1.png new file mode 100644 index 000000000..228487441 Binary files /dev/null and b/_images/nmtui_1.png differ diff --git a/_images/nmtui_2.png b/_images/nmtui_2.png new file mode 100644 index 000000000..8d9256990 Binary files /dev/null and b/_images/nmtui_2.png differ diff --git a/_images/nmtui_3.png b/_images/nmtui_3.png new file mode 100644 index 000000000..94ac3f038 Binary files /dev/null and b/_images/nmtui_3.png differ diff --git a/_images/nmtui_4.png b/_images/nmtui_4.png new file mode 100644 index 000000000..0fb8677be Binary files /dev/null and b/_images/nmtui_4.png differ diff --git a/_images/nmtui_5.png b/_images/nmtui_5.png new file mode 100644 index 000000000..f27df24a4 Binary files /dev/null and b/_images/nmtui_5.png differ diff --git a/_images/nvidia-gnome-crash.png b/_images/nvidia-gnome-crash.png new file mode 100644 index 000000000..0e11eb952 Binary files /dev/null and b/_images/nvidia-gnome-crash.png differ diff --git a/_images/openfaas-function-output.png b/_images/openfaas-function-output.png new file mode 100644 index 000000000..74f940f4c Binary files /dev/null and b/_images/openfaas-function-output.png differ diff --git a/_images/openfaas-invoke-function.png b/_images/openfaas-invoke-function.png new file mode 100644 index 000000000..320d27f8e Binary files /dev/null and b/_images/openfaas-invoke-function.png differ diff --git a/_images/openfaas-login.png b/_images/openfaas-login.png new file mode 100644 index 000000000..ff905d9dc Binary files /dev/null and b/_images/openfaas-login.png differ diff --git a/_images/parallels-01.png b/_images/parallels-01.png new file mode 100644 index 000000000..9ba5dcc17 Binary files /dev/null and b/_images/parallels-01.png differ diff --git a/_images/parallels-02.png b/_images/parallels-02.png new file mode 100644 index 000000000..7764b351d Binary files /dev/null and b/_images/parallels-02.png differ diff --git a/_images/parallels-03.png b/_images/parallels-03.png new file mode 100644 index 000000000..67bb0d7fc Binary files /dev/null and b/_images/parallels-03.png differ diff --git a/_images/parallels-04.png b/_images/parallels-04.png new file mode 100644 index 000000000..672797d68 Binary files /dev/null and b/_images/parallels-04.png differ diff --git a/_images/parallels-05.png b/_images/parallels-05.png new file mode 100644 index 000000000..57bf13e6b Binary files /dev/null and b/_images/parallels-05.png differ diff --git a/_images/parallels-06.png b/_images/parallels-06.png new file mode 100644 index 000000000..32b7bf387 Binary files /dev/null and b/_images/parallels-06.png differ diff --git a/_images/parallels-07.png b/_images/parallels-07.png new file mode 100644 index 000000000..e110b66a9 Binary files /dev/null and b/_images/parallels-07.png differ diff --git a/_images/parallels-08.png b/_images/parallels-08.png new file mode 100644 index 000000000..668c72ddd Binary files /dev/null and b/_images/parallels-08.png differ diff --git a/_images/parallels-09.png b/_images/parallels-09.png new file mode 100644 index 000000000..8a1a2f54f Binary files /dev/null and b/_images/parallels-09.png differ diff --git a/_images/pktgen_lw3fd.png b/_images/pktgen_lw3fd.png new file mode 100644 index 000000000..d17318b1a Binary files /dev/null and b/_images/pktgen_lw3fd.png differ diff --git a/_images/proxmox-01.png b/_images/proxmox-01.png new file mode 100644 index 000000000..0dd781b57 Binary files /dev/null and b/_images/proxmox-01.png differ diff --git a/_images/proxmox-02.png b/_images/proxmox-02.png new file mode 100644 index 000000000..feb4cb42b Binary files /dev/null and b/_images/proxmox-02.png differ diff --git a/_images/proxmox-03.png b/_images/proxmox-03.png new file mode 100644 index 000000000..829de8905 Binary files /dev/null and b/_images/proxmox-03.png differ diff --git a/_images/proxmox-04.png b/_images/proxmox-04.png new file mode 100644 index 000000000..28be650f9 Binary files /dev/null and b/_images/proxmox-04.png differ diff --git a/_images/proxmox-05.png b/_images/proxmox-05.png new file mode 100644 index 000000000..fee1a2b69 Binary files /dev/null and b/_images/proxmox-05.png differ diff --git a/_images/proxmox-06.png b/_images/proxmox-06.png new file mode 100644 index 000000000..f64ae361e Binary files /dev/null and b/_images/proxmox-06.png differ diff --git a/_images/proxmox-07.png b/_images/proxmox-07.png new file mode 100644 index 000000000..43bb7fa69 Binary files /dev/null and b/_images/proxmox-07.png differ diff --git a/_images/proxmox-08.png b/_images/proxmox-08.png new file mode 100644 index 000000000..cce7f0ea3 Binary files /dev/null and b/_images/proxmox-08.png differ diff --git a/_images/proxmox-09.png b/_images/proxmox-09.png new file mode 100644 index 000000000..7dc1794c6 Binary files /dev/null and b/_images/proxmox-09.png differ diff --git a/_images/proxmox-10.png b/_images/proxmox-10.png new file mode 100644 index 000000000..960661b8a Binary files /dev/null and b/_images/proxmox-10.png differ diff --git a/_images/proxmox-11.png b/_images/proxmox-11.png new file mode 100644 index 000000000..501f4bfc9 Binary files /dev/null and b/_images/proxmox-11.png differ diff --git a/_images/proxmox-12.png b/_images/proxmox-12.png new file mode 100644 index 000000000..436751348 Binary files /dev/null and b/_images/proxmox-12.png differ diff --git a/_images/proxmox-13.png b/_images/proxmox-13.png new file mode 100644 index 000000000..9656b6cc7 Binary files /dev/null and b/_images/proxmox-13.png differ diff --git a/_images/pyshical_net.png b/_images/pyshical_net.png new file mode 100644 index 000000000..182ba6ce7 Binary files /dev/null and b/_images/pyshical_net.png differ diff --git a/_images/run-cell-button.png b/_images/run-cell-button.png new file mode 100644 index 000000000..b61de4cec Binary files /dev/null and b/_images/run-cell-button.png differ diff --git a/_images/smb-desktop-1.png b/_images/smb-desktop-1.png new file mode 100644 index 000000000..866a45ef2 Binary files /dev/null and b/_images/smb-desktop-1.png differ diff --git a/_images/smb-desktop-2.png b/_images/smb-desktop-2.png new file mode 100644 index 000000000..9ed4a61d3 Binary files /dev/null and b/_images/smb-desktop-2.png differ diff --git a/_images/smb-desktop-3.png b/_images/smb-desktop-3.png new file mode 100644 index 000000000..7688e4845 Binary files /dev/null and b/_images/smb-desktop-3.png differ diff --git a/_images/smb-server-01.png b/_images/smb-server-01.png new file mode 100644 index 000000000..596e153dd Binary files /dev/null and b/_images/smb-server-01.png differ diff --git a/_images/smb-server-02.png b/_images/smb-server-02.png new file mode 100644 index 000000000..7ffbe04ff Binary files /dev/null and b/_images/smb-server-02.png differ diff --git a/_images/stateless-1.png b/_images/stateless-1.png new file mode 100644 index 000000000..550f37cee Binary files /dev/null and b/_images/stateless-1.png differ diff --git a/_images/stateless-2.png b/_images/stateless-2.png new file mode 100644 index 000000000..94e8af22f Binary files /dev/null and b/_images/stateless-2.png differ diff --git a/_images/telemetry-backend-1.png b/_images/telemetry-backend-1.png new file mode 100644 index 000000000..9cd8df75e Binary files /dev/null and b/_images/telemetry-backend-1.png differ diff --git a/_images/telemetry-e2e.png b/_images/telemetry-e2e.png new file mode 100644 index 000000000..75868291e Binary files /dev/null and b/_images/telemetry-e2e.png differ diff --git a/_images/tutorial-ratings-01.svg b/_images/tutorial-ratings-01.svg new file mode 100644 index 000000000..9458529ac --- /dev/null +++ b/_images/tutorial-ratings-01.svg @@ -0,0 +1,3 @@ + + +

Are there ~ 8 or  > “complex” steps

“Complex steps”:

  • require more than one action 

  • require external reading/review

  • include explanation or context

  • give alternative(s) 

    (Must have one or more.)

Are there ~ 8 or  > “complex” steps?...

Experienced Linux user?

Experienced Linux user?

Advanced Linux user?

Advanced Linux user?

Are there ~ 10 or > code/console examples, including those in figures?


Are there ~ 10 or > code/console examples, includi...

Are there ~ 10 or > code/console examples, including those in figures?


Are there ~ 10 or > code/console examples, includin...
NO
NO

Will impact of errors be 

inconsequential

Will impact of errors be...

Will impact of errors

cause system failure
(and difficult to recover) ?

Will impact of errors...

Will impact of errors

cause inconvenience 

(but system still works) ?

Will impact of errors...

Does troubleshooting require background knowledge?

Does troubleshooting require backgroun...
EASY
EASY
NO
NO
YES
YES
MODERATE
MODERATE
DIFFICULT
DIFFICULT
YES
YES
YES
YES
NO
NO
NO
NO
YES
YES
NO
NO
NO
NO
YES
YES
NO
NO
NO
NO
YES
YES
YES
YES
YES
YES
YES
YES
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_images/virt-manager-01.png b/_images/virt-manager-01.png new file mode 100644 index 000000000..bbc5335bb Binary files /dev/null and b/_images/virt-manager-01.png differ diff --git a/_images/virt-manager-02.png b/_images/virt-manager-02.png new file mode 100644 index 000000000..75a5fe272 Binary files /dev/null and b/_images/virt-manager-02.png differ diff --git a/_images/virt-manager-03.png b/_images/virt-manager-03.png new file mode 100644 index 000000000..8993017b8 Binary files /dev/null and b/_images/virt-manager-03.png differ diff --git a/_images/virt-manager-04.png b/_images/virt-manager-04.png new file mode 100644 index 000000000..441703d50 Binary files /dev/null and b/_images/virt-manager-04.png differ diff --git a/_images/virt-manager-05.png b/_images/virt-manager-05.png new file mode 100644 index 000000000..89cf534e8 Binary files /dev/null and b/_images/virt-manager-05.png differ diff --git a/_images/virt-manager-06.png b/_images/virt-manager-06.png new file mode 100644 index 000000000..962f9efc3 Binary files /dev/null and b/_images/virt-manager-06.png differ diff --git a/_images/virt-manager-07.png b/_images/virt-manager-07.png new file mode 100644 index 000000000..80aba6d6e Binary files /dev/null and b/_images/virt-manager-07.png differ diff --git a/_images/virt-manager-08.png b/_images/virt-manager-08.png new file mode 100644 index 000000000..3a3bb04f3 Binary files /dev/null and b/_images/virt-manager-08.png differ diff --git a/_images/virt-manager-09.png b/_images/virt-manager-09.png new file mode 100644 index 000000000..384601b35 Binary files /dev/null and b/_images/virt-manager-09.png differ diff --git a/_images/virt-manager-10.png b/_images/virt-manager-10.png new file mode 100644 index 000000000..d83b4ac43 Binary files /dev/null and b/_images/virt-manager-10.png differ diff --git a/_images/virt-manager-11.png b/_images/virt-manager-11.png new file mode 100644 index 000000000..62cb96bad Binary files /dev/null and b/_images/virt-manager-11.png differ diff --git a/_images/virtualbox-cl-installer-01.png b/_images/virtualbox-cl-installer-01.png new file mode 100644 index 000000000..7722a8860 Binary files /dev/null and b/_images/virtualbox-cl-installer-01.png differ diff --git a/_images/virtualbox-cl-installer-02.png b/_images/virtualbox-cl-installer-02.png new file mode 100644 index 000000000..365f8545a Binary files /dev/null and b/_images/virtualbox-cl-installer-02.png differ diff --git a/_images/virtualbox-cl-installer-03.png b/_images/virtualbox-cl-installer-03.png new file mode 100644 index 000000000..496f270a6 Binary files /dev/null and b/_images/virtualbox-cl-installer-03.png differ diff --git a/_images/virtualbox-cl-installer-04.png b/_images/virtualbox-cl-installer-04.png new file mode 100644 index 000000000..31662623b Binary files /dev/null and b/_images/virtualbox-cl-installer-04.png differ diff --git a/_images/virtualbox-cl-installer-05.png b/_images/virtualbox-cl-installer-05.png new file mode 100644 index 000000000..c250776de Binary files /dev/null and b/_images/virtualbox-cl-installer-05.png differ diff --git a/_images/virtualbox-cl-installer-06.png b/_images/virtualbox-cl-installer-06.png new file mode 100644 index 000000000..9926af814 Binary files /dev/null and b/_images/virtualbox-cl-installer-06.png differ diff --git a/_images/virtualbox-cl-installer-07.png b/_images/virtualbox-cl-installer-07.png new file mode 100644 index 000000000..8f2c2b340 Binary files /dev/null and b/_images/virtualbox-cl-installer-07.png differ diff --git a/_images/virtualbox-cl-installer-08.png b/_images/virtualbox-cl-installer-08.png new file mode 100644 index 000000000..7b23c4548 Binary files /dev/null and b/_images/virtualbox-cl-installer-08.png differ diff --git a/_images/virtualbox-cl-installer-09.png b/_images/virtualbox-cl-installer-09.png new file mode 100644 index 000000000..f6feabfa8 Binary files /dev/null and b/_images/virtualbox-cl-installer-09.png differ diff --git a/_images/virtualbox-cl-installer-10.png b/_images/virtualbox-cl-installer-10.png new file mode 100644 index 000000000..0ffd96e8b Binary files /dev/null and b/_images/virtualbox-cl-installer-10.png differ diff --git a/_images/virtualbox-cl-installer-11.png b/_images/virtualbox-cl-installer-11.png new file mode 100644 index 000000000..b0ca6d359 Binary files /dev/null and b/_images/virtualbox-cl-installer-11.png differ diff --git a/_images/virtualbox-cl-installer-12.png b/_images/virtualbox-cl-installer-12.png new file mode 100644 index 000000000..ba6344def Binary files /dev/null and b/_images/virtualbox-cl-installer-12.png differ diff --git a/_images/vmw-player-01.png b/_images/vmw-player-01.png new file mode 100644 index 000000000..ece959835 Binary files /dev/null and b/_images/vmw-player-01.png differ diff --git a/_images/vmw-player-02.png b/_images/vmw-player-02.png new file mode 100644 index 000000000..3498a7861 Binary files /dev/null and b/_images/vmw-player-02.png differ diff --git a/_images/vmw-player-03.png b/_images/vmw-player-03.png new file mode 100644 index 000000000..6d5cdcb4d Binary files /dev/null and b/_images/vmw-player-03.png differ diff --git a/_images/vmw-player-04.png b/_images/vmw-player-04.png new file mode 100644 index 000000000..719ee1b36 Binary files /dev/null and b/_images/vmw-player-04.png differ diff --git a/_images/vmw-player-05.png b/_images/vmw-player-05.png new file mode 100644 index 000000000..f9a867e21 Binary files /dev/null and b/_images/vmw-player-05.png differ diff --git a/_images/vmw-player-06.png b/_images/vmw-player-06.png new file mode 100644 index 000000000..b40b499cb Binary files /dev/null and b/_images/vmw-player-06.png differ diff --git a/_images/vmw-player-07.png b/_images/vmw-player-07.png new file mode 100644 index 000000000..0c78ae368 Binary files /dev/null and b/_images/vmw-player-07.png differ diff --git a/_images/vmw-player-08.png b/_images/vmw-player-08.png new file mode 100644 index 000000000..f6842c11a Binary files /dev/null and b/_images/vmw-player-08.png differ diff --git a/_images/vmw-player-09.png b/_images/vmw-player-09.png new file mode 100644 index 000000000..9ef2d9388 Binary files /dev/null and b/_images/vmw-player-09.png differ diff --git a/_images/vmw-player-10.png b/_images/vmw-player-10.png new file mode 100644 index 000000000..3b7f6b651 Binary files /dev/null and b/_images/vmw-player-10.png differ diff --git a/_images/vmw-player-11.png b/_images/vmw-player-11.png new file mode 100644 index 000000000..e4281ace3 Binary files /dev/null and b/_images/vmw-player-11.png differ diff --git a/_images/vmw-player-12.png b/_images/vmw-player-12.png new file mode 100644 index 000000000..08744dc59 Binary files /dev/null and b/_images/vmw-player-12.png differ diff --git a/_images/vmw-player-13.png b/_images/vmw-player-13.png new file mode 100644 index 000000000..f09cceddc Binary files /dev/null and b/_images/vmw-player-13.png differ diff --git a/_images/vmw-player-14.png b/_images/vmw-player-14.png new file mode 100644 index 000000000..6daf0f80d Binary files /dev/null and b/_images/vmw-player-14.png differ diff --git a/_images/vmw-player-15.png b/_images/vmw-player-15.png new file mode 100644 index 000000000..339e70ad5 Binary files /dev/null and b/_images/vmw-player-15.png differ diff --git a/_images/vmw-player-16.png b/_images/vmw-player-16.png new file mode 100644 index 000000000..6b983f01e Binary files /dev/null and b/_images/vmw-player-16.png differ diff --git a/_images/vmware-esxi-install-cl-1.png b/_images/vmware-esxi-install-cl-1.png new file mode 100644 index 000000000..828ca8385 Binary files /dev/null and b/_images/vmware-esxi-install-cl-1.png differ diff --git a/_images/vmware-esxi-install-cl-10.png b/_images/vmware-esxi-install-cl-10.png new file mode 100644 index 000000000..856881057 Binary files /dev/null and b/_images/vmware-esxi-install-cl-10.png differ diff --git a/_images/vmware-esxi-install-cl-11.png b/_images/vmware-esxi-install-cl-11.png new file mode 100644 index 000000000..bb134ba25 Binary files /dev/null and b/_images/vmware-esxi-install-cl-11.png differ diff --git a/_images/vmware-esxi-install-cl-12.png b/_images/vmware-esxi-install-cl-12.png new file mode 100644 index 000000000..ba26d552b Binary files /dev/null and b/_images/vmware-esxi-install-cl-12.png differ diff --git a/_images/vmware-esxi-install-cl-13.png b/_images/vmware-esxi-install-cl-13.png new file mode 100644 index 000000000..3f11505d8 Binary files /dev/null and b/_images/vmware-esxi-install-cl-13.png differ diff --git a/_images/vmware-esxi-install-cl-14.png b/_images/vmware-esxi-install-cl-14.png new file mode 100644 index 000000000..59e07de13 Binary files /dev/null and b/_images/vmware-esxi-install-cl-14.png differ diff --git a/_images/vmware-esxi-install-cl-15.png b/_images/vmware-esxi-install-cl-15.png new file mode 100644 index 000000000..9d654081c Binary files /dev/null and b/_images/vmware-esxi-install-cl-15.png differ diff --git a/_images/vmware-esxi-install-cl-16.png b/_images/vmware-esxi-install-cl-16.png new file mode 100644 index 000000000..bb134ba25 Binary files /dev/null and b/_images/vmware-esxi-install-cl-16.png differ diff --git a/_images/vmware-esxi-install-cl-2.png b/_images/vmware-esxi-install-cl-2.png new file mode 100644 index 000000000..a3554e920 Binary files /dev/null and b/_images/vmware-esxi-install-cl-2.png differ diff --git a/_images/vmware-esxi-install-cl-3.png b/_images/vmware-esxi-install-cl-3.png new file mode 100644 index 000000000..aec0c8d04 Binary files /dev/null and b/_images/vmware-esxi-install-cl-3.png differ diff --git a/_images/vmware-esxi-install-cl-4.png b/_images/vmware-esxi-install-cl-4.png new file mode 100644 index 000000000..30cabb0ec Binary files /dev/null and b/_images/vmware-esxi-install-cl-4.png differ diff --git a/_images/vmware-esxi-install-cl-5.png b/_images/vmware-esxi-install-cl-5.png new file mode 100644 index 000000000..f1e7cee18 Binary files /dev/null and b/_images/vmware-esxi-install-cl-5.png differ diff --git a/_images/vmware-esxi-install-cl-6.png b/_images/vmware-esxi-install-cl-6.png new file mode 100644 index 000000000..b0a584876 Binary files /dev/null and b/_images/vmware-esxi-install-cl-6.png differ diff --git a/_images/vmware-esxi-install-cl-7.png b/_images/vmware-esxi-install-cl-7.png new file mode 100644 index 000000000..4971a78e8 Binary files /dev/null and b/_images/vmware-esxi-install-cl-7.png differ diff --git a/_images/vmware-esxi-install-cl-8.png b/_images/vmware-esxi-install-cl-8.png new file mode 100644 index 000000000..b188da8a7 Binary files /dev/null and b/_images/vmware-esxi-install-cl-8.png differ diff --git a/_images/vmware-esxi-install-cl-9.png b/_images/vmware-esxi-install-cl-9.png new file mode 100644 index 000000000..24e726964 Binary files /dev/null and b/_images/vmware-esxi-install-cl-9.png differ diff --git a/_images/vnc-1.png b/_images/vnc-1.png new file mode 100644 index 000000000..bb496aaf1 Binary files /dev/null and b/_images/vnc-1.png differ diff --git a/_images/vnc-10.png b/_images/vnc-10.png new file mode 100644 index 000000000..be6751fca Binary files /dev/null and b/_images/vnc-10.png differ diff --git a/_images/vnc-2.png b/_images/vnc-2.png new file mode 100644 index 000000000..aa7561f73 Binary files /dev/null and b/_images/vnc-2.png differ diff --git a/_images/vnc-3.png b/_images/vnc-3.png new file mode 100644 index 000000000..29365e082 Binary files /dev/null and b/_images/vnc-3.png differ diff --git a/_images/vnc-4.png b/_images/vnc-4.png new file mode 100644 index 000000000..b36082895 Binary files /dev/null and b/_images/vnc-4.png differ diff --git a/_images/vnc-6.png b/_images/vnc-6.png new file mode 100644 index 000000000..5a808e341 Binary files /dev/null and b/_images/vnc-6.png differ diff --git a/_images/vnc-7.png b/_images/vnc-7.png new file mode 100644 index 000000000..a20e6c973 Binary files /dev/null and b/_images/vnc-7.png differ diff --git a/_images/vnc-8.png b/_images/vnc-8.png new file mode 100644 index 000000000..fa702cb4c Binary files /dev/null and b/_images/vnc-8.png differ diff --git a/_images/vnc-9.png b/_images/vnc-9.png new file mode 100644 index 000000000..a8cafba4b Binary files /dev/null and b/_images/vnc-9.png differ diff --git a/_images/web-server-install-1.png b/_images/web-server-install-1.png new file mode 100644 index 000000000..d1dd0e229 Binary files /dev/null and b/_images/web-server-install-1.png differ diff --git a/_images/web-server-install-2.png b/_images/web-server-install-2.png new file mode 100644 index 000000000..b0fd4d3f0 Binary files /dev/null and b/_images/web-server-install-2.png differ diff --git a/_images/web-server-install-3.png b/_images/web-server-install-3.png new file mode 100644 index 000000000..5fbdad011 Binary files /dev/null and b/_images/web-server-install-3.png differ diff --git a/_images/web-server-install-4.png b/_images/web-server-install-4.png new file mode 100644 index 000000000..2c553ce95 Binary files /dev/null and b/_images/web-server-install-4.png differ diff --git a/_images/web-server-install-5.png b/_images/web-server-install-5.png new file mode 100644 index 000000000..292dfbc62 Binary files /dev/null and b/_images/web-server-install-5.png differ diff --git a/_images/web-server-install-6.png b/_images/web-server-install-6.png new file mode 100644 index 000000000..0700a2103 Binary files /dev/null and b/_images/web-server-install-6.png differ diff --git a/_images/web-server-install-7.png b/_images/web-server-install-7.png new file mode 100644 index 000000000..f3f9c327d Binary files /dev/null and b/_images/web-server-install-7.png differ diff --git a/_images/web-server-install-8.png b/_images/web-server-install-8.png new file mode 100644 index 000000000..3e631ec1c Binary files /dev/null and b/_images/web-server-install-8.png differ diff --git a/_images/wifi-1.1.png b/_images/wifi-1.1.png new file mode 100644 index 000000000..44ac556af Binary files /dev/null and b/_images/wifi-1.1.png differ diff --git a/_images/wifi-2.png b/_images/wifi-2.png new file mode 100644 index 000000000..9b1fc4900 Binary files /dev/null and b/_images/wifi-2.png differ diff --git a/_images/wifi-3.png b/_images/wifi-3.png new file mode 100644 index 000000000..3a8b4cc48 Binary files /dev/null and b/_images/wifi-3.png differ diff --git a/_images/wifi-4.png b/_images/wifi-4.png new file mode 100644 index 000000000..4e69f736c Binary files /dev/null and b/_images/wifi-4.png differ diff --git a/_images/wifi-5.png b/_images/wifi-5.png new file mode 100644 index 000000000..414422453 Binary files /dev/null and b/_images/wifi-5.png differ diff --git a/_images/wp-install-1.png b/_images/wp-install-1.png new file mode 100644 index 000000000..3d1239fe1 Binary files /dev/null and b/_images/wp-install-1.png differ diff --git a/_images/wp-install-2.png b/_images/wp-install-2.png new file mode 100644 index 000000000..6adc942a9 Binary files /dev/null and b/_images/wp-install-2.png differ diff --git a/_images/wp-install-3.png b/_images/wp-install-3.png new file mode 100644 index 000000000..9e7132100 Binary files /dev/null and b/_images/wp-install-3.png differ diff --git a/_images/wp-install-4.png b/_images/wp-install-4.png new file mode 100644 index 000000000..124f3b8e6 Binary files /dev/null and b/_images/wp-install-4.png differ diff --git a/_images/wp-install-5.png b/_images/wp-install-5.png new file mode 100644 index 000000000..6651b16f9 Binary files /dev/null and b/_images/wp-install-5.png differ diff --git a/_images/wp-install-6.png b/_images/wp-install-6.png new file mode 100644 index 000000000..6118eebbb Binary files /dev/null and b/_images/wp-install-6.png differ diff --git a/_images/wp-install-7.png b/_images/wp-install-7.png new file mode 100644 index 000000000..554a0d36a Binary files /dev/null and b/_images/wp-install-7.png differ diff --git a/_images/wp-install-8.png b/_images/wp-install-8.png new file mode 100644 index 000000000..1e477c251 Binary files /dev/null and b/_images/wp-install-8.png differ diff --git a/_sources/FAQ/index.rst.txt b/_sources/FAQ/index.rst.txt new file mode 100644 index 000000000..267050b84 --- /dev/null +++ b/_sources/FAQ/index.rst.txt @@ -0,0 +1,255 @@ +.. _faq: + +FAQ +### + +Below is a list of commonly asked questions with answers sourced from the +|CL-ATTR| team and `Clear Linux community forums`_. + +.. contents:: :local: + :depth: 2 + +General +******* + +What is |CL|? +============= + +|CL| is an open source, rolling release Linux distribution optimized for +performance and security. See `the about page `_ +for more information. + +| + +Why another Linux distribution? +=============================== + +The |CL| team felt that performance was left on the table with Linux software. +|CL| takes a holistic approach to improve performance across the stack. We +also wanted to take more modern approaches with OS updates and tooling. + +| + +Is it a derivative of another Linux distribution? +================================================= + +No. |CL| is a new Linux distribution. It is not a fork and does not have a +parent Linux distribution. + +| + +Can others copy improvements from |CL|? +======================================= + +Yes, we absolutely love open source reuse and upstreaming improvements. + +| + +How often does it update? +========================= + +The |CL| team puts out multiple releases a week, often releasing two or more +times a day. This rolling release approach allows |CL| to remain agile to +upstream changes and security patches. + +| + +Is telemetry required? +====================== + +The telemetry solution provided by |CL| is entirely optional and customizable. +It is disabled by default. If you do choose to enable telemetry, the data +helps the |CL| team proactively identify and resolve bugs. See the +:ref:`telemetry ` guide for more information. + +| + +What is the default firewall? +============================= + +|CL| packages :command:`iptables` and :command:`firewalld` as optional +bundles, however, there are no default firewall rules. All network traffic is +allowed by default. + +| + +Where are the files that I usually see under /etc like fstab? +============================================================= + +|CL| has a stateless design that maintains a separation between system files +and user files. Default values are stored under :file:`/usr/share/defaults/`. +|CL| starts with a mostly empty :file:`/etc` directory to store user-defined +configurations. See the :ref:`stateless ` page for more information. + +See `this blog post +`_ for an +example explaining how this is accomplished with :file:`/etc/fstab/` +specifically. + + +| + +Does it use the Intel Compiler (icc)? +===================================== + +No. |CL| uses open source compilers: :command:`gcc` and :command:`clang`. |CL| +does not compile any packages with :command:`icc`. + +For a more detailed explanation, see `this discussion on the community forum +`_. + +| + +Software +******** + +How is software installed and updated? +====================================== + +|CL| provides software in the form of :ref:`bundles ` and +updates software with :ref:`swupd `. + +:ref:`Flatpak\* ` is an application virtualization solution +that allows more software to be available to |CL| users by augmenting the +software |CL| packages natively with software available through Flatpak. + +Our goal is to have software packaged natively and made available through +bundles whenever possible. + +| + +Does it use RPMs or DEBs packages like other distros? +===================================================== + +No. |CL| provides software to systems in the form of :ref:`bundles-guide`. +Under the hood, |CL| developers use the RPM format as an intermediary step for +packaging and determining software dependencies at OS build time. + +Individual RPMs and DEBs can sometimes be manually extracted and installed on +a |CL| system with the right tools, but that is not the intended use case. + +| + +Why does it have a different approach to software management? +============================================================= + +The |CL| team wants software *installation* and *updates* to be as efficient +and error free as possible. |CL| packages software differently and uses a +novel updater to solve some of the classic problems with how the software +packages are on Linux. + +For a more detailed explanation, see `this discussion on our community forum +`_. + + +| + +Can I install a software package from another OS on |CL|? +========================================================= + +Software that is packaged in other formats for other Linux distributions is +not guaranteed to work on |CL| and may be impacted by |CL| updates. + +If the software you're seeking is open source, please submit a request to add +it to |CL|. Submit requests on GitHub\* here: +https://github.com/clearlinux/distribution/issues + +| + +Software availability +********************* + +What software is available on |CL|? +=================================== + +Available software can be found in the `Software Store`_, through the GNOME\* +Software application on the desktop, or by using :ref:`swupd search `. + +| + +Is Google\* Chrome\* available? +=============================== + +The Google Chrome web browser is not distributed as a bundle in |CL| due to +copyright and licensing complexities. + +A `discussion on manually installing and maintaining Google Chrome +`_ can be found on +GitHub. + +| + +Is Microsoft\* Visual Studio Code\* available? +============================================== + +Yes. Find the CLI command for installing `VS Code`_ and other Flatpak apps in +the `software store`_. Installing Flatpak apps is also covered in our +:ref:`tutorial `. + +The |CL| team is working on a natively packaged version of Visual Studio Code +for future release. + +Join a community `forum discussion about manually installing and maintaining +Visual Studio Code +`_. + + +.. _VS Code: https://clearlinux.org/software?search_api_fulltext=vscode + +| + +.. _licensing_restrict: + +Is FFmpeg available? +==================== + +`FFmpeg`_ is a multimedia software suite, which is commonly used for +various media encoding/decoding, streaming, and playback. + +|CL| does not distribute FFmpeg due to well-known licensing and legal +complexities (See https://www.ffmpeg.org/legal.html and +http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html). + + +While |CL| cannot distribute FFmpeg, solutions for manually building and +installing FFmpeg have been shared by users `on GitHub +`_ and `the community +forums +`_. + +| + +Is ZFS\* available? +=================== + +ZFS is not available with |CL| because of copyright and licensing +complexities. BTRFS is an alternative filesystem that is available in |CL| +natively. + +A community contributed tutorial has been shared on how to :ref:`manually +install ZFS `. + +| + +Can you add a driver that I need? +================================= + +If a kernel module is available as part of the Linux kernel source tree but +not enabled in the |CL| kernels, in many cases the |CL| team will enable it +upon request. Submit requests on GitHub here: +https://github.com/clearlinux/distribution/issues + +The |CL| team does not typically add out-of-tree kernel modules as a matter of +practice because of the maintenance overhead. If the driver was unable to be +merged upstream, there is a good chance we may be unable to merge it for +similar reasons. + +Kernel modules can be individually built and installed on |CL|. See the +:ref:`kernel modules ` page for more information. + +| + + +.. _`Clear Linux community forums`: https://community.clearlinux.org +.. _`Software Store`: https://clearlinux.org/software +.. _`FFmpeg`: https://ffmpeg.org/ diff --git a/_sources/about.rst.txt b/_sources/about.rst.txt new file mode 100644 index 000000000..5e1c91a34 --- /dev/null +++ b/_sources/about.rst.txt @@ -0,0 +1,311 @@ +.. _about: + +About +##### + +|CL-ATTR| does things differently. Our software architecture provides a +unique and innovative platform for Linux* developers focused on +performance and security for compute, server, and the cloud. + +.. contents:: + :local: + :depth: 1 + +What is |CL|? +************* + +|CL| is an open source, rolling-release Linux distribution, optimized for +performance and security from the cloud to the Edge. Designed from the ground up, +|CL| provides an industry blueprint on how to incorporate Intel® architecture +features for a modern, modular Linux OS. |CL| is not based on any other Linux +distro. + +What |CL| isn't? +**************** + +|CL| is not intended to be a general-purpose Linux distribution, suitable +for novice end-users. While we ship common applications, our purpose isn’t +to make an OS for routine desktop tasks and provide immunity from all +security threats in all situations. Our unique focus means that what we consider *essential* use cases, *optional* use cases, or even *unsupported* use cases, differs from other Linux distros. See our :ref:`target audience ` below. + +Is |CL| completely Open Source? +******************************* + +|CL| aims to be completely open source. Our project `source code`_ and +`packages source code`_ are available on GitHub\*. When considering projects +for inclusion, we check that they are in active development and are well +maintained. We have a very strict requirement for not accepting proprietary +packages and non-open source components. For example, many Linux distros +may not be able to include certain media codecs due to +:ref:`licensing restrictions `, but manual installation and `third party alternatives`_ are available. + +.. _target-audience: + +Who is the target audience? +*************************** + +|CL| mainly targets professionals in IT, DevOps, Cloud/Container deployments, and :abbr:`AI (Artificial Intelligence)`. + +Rather than making a standard Linux distribution, the |CL| team decided to +build a unique Linux distro. Developing a distro in house allows us to experiment and iterate faster, which means we continually optimize performance and deliver security patches, :ref:`several times per week `. Yet our experiments are only valuable if our software architecture gives you the freedom to innovate, too. To improve manageability, |CL| employs a :ref:`stateless` design, separating user and system management. + +We leverage the pool of knowledge and skills at Intel to drive improvements to |CL|. + +Intel has worked with the Linux community and other distros for many years. +Understanding what it takes to integrate features in our own Linux distro +helps us collaborate with other distro owners and submit enhancements to +upstream. We demonstrate the value of our distro by offering users the same +tools we use. For example, :ref:`mixer`, a tool unique to |CL|, allows users +to build custom derivatives and act as their own :abbr:`OSV (Operating System +Vendor)`. + +For more details on |CL| features, visit our :ref:`cl-guides` guides. + +How does |CL| address security? +******************************* + +Several :ref:`security features ` are designed to work +out-of-the-box, yet they're not intended to be intrusive. We focus on +*essential* use cases and ignore *unwanted* or *unsupported* use cases. +For example, while |CL| does not enable antivirus by default, we provide a +bundle for it (``clamav``). We leave antivirus configuration to our users. +In addition, firewalls are less important if the OS doesn’t expose services +to the outside by default. In |CL|, we enforce this strategy by disabling +network services by default - e.g. ``mariadb`` listens on a UNIX socket; +``nginx`` won’t listen at all; and other services similarly are restricted +from being accessed over the network. This strategy alone makes firewall +software much less urgent--there simply isn’t anything that a firewall could +easily block. + +What’s the thinking around Server vs. Desktop? +********************************************** + +|CL| focuses on performance for server and cloud use-cases first because +many design decisions associated with them are applicable to other +use-cases, such as IoT and the desktop client. While our initial focus was +on the command line, we realized that many people valued the ease-of-use of +a desktop environment. Whereas in the past we tried to accommodate those +interested in a desktop version, we were forced to confront clear limits as +to how we could meet this need. |CL| minimizes the customizations and patches in support of the desktop and provides a generic GNOME implementation. Other window managers or desktops are available; however, testing in |CL| is focused on GNOME. + +What makes |CL| different? +************************** + +.. _release-cadence: + +Release Cadence +=============== + +|CL| updates are based on a rolling release that can occur daily, up to a few +times per week. Each release has a unique version number that identifies +every component in the OS from kernel, to driver, to tool, to GUI +application. Most components are included in entities called :ref:`bundles`. + +Updates +======= + +By default, |CL| automatically checks for updates, ensuring the latest +performance and security fixes are installed as soon as they are available. +|CL| stays in lockstep with upstream for current security upgrades and is +designed to rapidly deliver security mitigations to customers. +:ref:`swupd-guide` is designed to manage updates and bundles. + +Ease of Use +=========== + +|CL| makes it easier to manage a number of difficult problems. + +* :ref:`autoproxy` makes it possible for |CL| tools to operate in some proxy + environments without needing to be configured. + +* :ref:`stateless` means that configuration settings are easier to manage + and remain untouched when system software is updated. + +* :ref:`swupd-guide` simplifies managing software and maintaining + compatibility. + +Custom Derivatives +================== + +The same tools used to build the |CL| are available *in* the OS. These tools can be used to create a custom distribution that continues to benefit from upstream rolling releases. + +.. figure:: /_figures/about/clear-lifecycle.png + :scale: 75% + :align: center + :alt: Creating and managing a Clear Linux* OS version (or derivative) + + Figure 1: Creating and managing a Clear Linux\* OS version (or derivative) + +Create +====== + +To create a custom distribution you need to understand how to use the +:ref:`autospec` and :ref:`mixer` tools. Additional training materials are available in the `how-to-clear`_ GitHub project to help you get started with |CL| tools. + +Deploy +====== + +We also provide training on how to :ref:`deploy-at-scale`. + +Administrate +============ + +|CL| provides a :ref:`telem-guide` solution for collecting useful information +about a deployment, as well as :ref:`debug` capabilities. + +Why create new components rather than modifying existing projects? +****************************************************************** + +One question that's often asked: “Why did you develop your own solution +instead of using ?” (e.g. `swupd post`_). We do evaluate existing +projects for inclusion in |CL|, yet there are cases where our unique +architecture and components would require too much customization to use +off-the-shelf projects. In other situations, we may feel that using a new +language to develop the component would give us a performance advantage, +ease code development and maintenance, and grow the skills of our engineers +on new and upcoming programming languages. And yes, sometimes there are +personal biases for and against some projects by the architects and +engineers. We tend to move fast, and sometimes it’s easier to live with +suboptimal choices until we have the time or incentive to re-architect them +properly. + +Which Components are used in Clear Linux? +***************************************** + +.. list-table:: + :widths: 33,33,33 + :header-rows: 1 + + * - Component + - Enabled in OS/Bundle + - Optional + + * - OS Installer + - `Clear Linux installer`_ + - + + * - Bootloader + - `systemd-boot`_ (UEFI) / `syslinux`_ (Legacy) + - + + * - Boot Manager + - `Clear Linux Boot Manager`_ + - + + * - Configuration initialization and management + - *NA* + - `micro-config-drive`_ (minimal cloud-init), Ansible + + * - Software component installer, manager, updater + - `swupd`_ + - + + * - Software bundle generator - + - `mixer`_ and `Clear Linux Distro Factory`_ + - + + * - Software package builder + - `autospec`_ + - + + * - Software debugging + - *NA* + - `clr-debug-info`_ + + * - Unified TLS Trust Store Management + - `clrtrust`_ + - + + * - System and software telemetry + - *NA* + - `Telemetrics`_ (disabled by default) + + * - File system + - `EXT4`_ (default for rootfs), `VFAT`_, `EXT2 and EXT3`_, `F2FS`_ + - + + * - Disk encryption + - *NA* + - `LUKS`_ + + * - System /Service manager + - `systemd`_ + - + + * - Display manager + - `GNOME`_ + - ``KDE``, ``Xfce``, ``lightdm``, ``sddm`` (see `Clear Linux store`_) + + * - Display services (Desktop installed) + - `X.Org`_ + - `Wayland`_ compositor + + * - Network services + - `NetworkManager`_ by default, `systemd-networkd`_ See Note below. + - + + * - SSH Port scanning blocker + - `Tallow`_ + - + + * - Firewall + - *NA* + - iptables and `firewalld`_ + + * - Antivirus + - *NA* + - `ClamAV*`_ + + * - Web browser + - `Lynx`_ or `links`_ for text environments, `Firefox*`_ for GUI + - + + * - Additional Software + - `Supplied Bundles`_ + - Flatpak, 3rd-party software bundles + +.. note:: + + The |CL| OS images targeted for cloud deployments continue to use + ``systemd-networkd`` to manage network connections. In earlier |CL|, + ``systemd-networkd`` was used to manage Ethernet interfaces and NetworkManager was used for wireless interfaces. + + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _third party alternatives: https://community.clearlinux.org/t/about-the-3rd-party-sw-category/4072 +.. _how-to-clear: https://github.com/clearlinux/how-to-clear +.. _Clear Linux store: https://clearlinux.org/software +.. _source code: https://github.com/clearlinux +.. _swupd post: https://community.clearlinux.org/t/why-does-clearlinux-use-swupd-and-not-apt-deb-rpm/ +.. _swupd: https://github.com/clearlinux/swupd-client +.. _Clear Linux installer: https://github.com/clearlinux/clr-installer/ +.. _systemd-boot: https://www.freedesktop.org/software/systemd/man/systemd-boot.html +.. _syslinux: https://wiki.syslinux.org/wiki/index.php?title=The_Syslinux_Project +.. _Clear Linux Boot Manager: https://github.com/clearlinux/clr-boot-manager +.. _mixer: https://github.com/clearlinux/mixer-tools +.. _Clear Linux Distro Factory: https://github.com/clearlinux/clr-distro-factory +.. _autospec: https://github.com/clearlinux/common +.. _clr-debug-info: https://github.com/clearlinux/clr-debug-info +.. _clrtrust: https://github.com/clearlinux/clrtrust +.. _EXT4: https://ext4.wiki.kernel.org/index.php/Main_Page +.. _VFAT: https://www.kernel.org/doc/html/latest/filesystems/vfat.html +.. _EXT2 and EXT3: https://ext4.wiki.kernel.org/index.php/Main_Page +.. _F2FS: https://www.kernel.org/doc/Documentation/filesystems/f2fs.txt +.. _LUKS: https://gitlab.com/cryptsetup/cryptsetup/ +.. _systemd: https://www.freedesktop.org/wiki/Software/systemd/ +.. _GNOME: https://www.gnome.org/ +.. _X.Org: https://www.x.org/ +.. _Wayland: https://wayland.freedesktop.org/ +.. _NetworkManager: https://wiki.gnome.org/Projects/NetworkManager +.. _systemd-networkd: https://www.freedesktop.org/software/systemd/man/systemd.network.html +.. _Tallow: https://github.com/clearlinux/tallow +.. _firewalld: https://docs.01.org/clearlinux/latest/guides/network/firewall.html#firewalld +.. _ClamAV*: https://www.clamav.net/ +.. _Lynx: https://lynx.invisible-island.net/ +.. _links: http://links.twibright.com/ +.. _Firefox*: https://www.mozilla.org/en-US/firefox/ +.. _Supplied Bundles: https://clearlinux.org/software +.. _micro-config-drive: https://github.com/clearlinux/micro-config-drive +.. _Telemetrics: https://github.com/clearlinux/telemetrics-backend +.. _packages source code: https://github.com/clearlinux-pkgs/ diff --git a/_sources/collaboration/collaboration.rst.txt b/_sources/collaboration/collaboration.rst.txt new file mode 100644 index 000000000..bcdbbec5e --- /dev/null +++ b/_sources/collaboration/collaboration.rst.txt @@ -0,0 +1,74 @@ +.. _collaboration: + +Contribute +########## + +There are multiple ways to help improve our documentation: + +* `Contribute via GitHub`_: Submit pull requests in the GitHub\* documentation + repository. +* `Log an issue`_: Enter an issue in the documentation repository for + minor issues such as typos. +* `Make a suggestion`_: Send your documentation suggestion to the dev email inbox. +* Test documentation: Step through our guides and tutorials to verify the + instructions. `Log an issue`_ or `submit a pull request`_ with your findings. + +All contributions must follow our `code of conduct`_. + +Contribute via GitHub +********************* + +Our documentation is hosted in GitHub and we follow the standard `GitHub flow`_. +Here are the basic steps for contributing: + +#. Clone the `documentation repository`_. + +#. Create your own fork of the repository. + +#. Create a branch for your contribution. + +#. Add your commits. + +#. Open a pull request. + +#. Discuss, review, and update your contributions. + +#. Once the maintainer approves, your contribution is merged and published as + part of the documentation. + + +Contribution guidelines +*********************** + +The |CL| documentation is written using reStructuredText. Use our guidelines +and best practices to write consistent, readable documentation. If you're writing a tutorial, review our skill levels to better target a user group. + +.. toctree:: + :maxdepth: 1 + + Writing guide + Structure and formatting guide + +.. _references: + +References +********** + +We use the following references for grammar, style, and formatting: + +* `Microsoft Writing Style Guide`_ +* `Merriam-Webster Dictionary`_ +* The Chicago Manual of Style (15th edition), The University of Chicago Press +* Microsoft Press Computer Dictionary, Microsoft Press +* Read Me First!, Oracle Technical Publications + + +.. _`code of conduct`: https://clearlinux.org/community/code-of-conduct +.. _Make a suggestion: mailto:dev@clearlinux.discoursemail.com +.. _GitHub flow: https://guides.github.com/introduction/flow/ +.. _Log an issue: https://github.com/clearlinux/clear-linux-documentation/issues +.. _Contribute via GitHub: https://github.com/clearlinux/clear-linux-documentation +.. _submit a pull request: https://github.com/clearlinux/clear-linux-documentation +.. _documentation repository: https://github.com/clearlinux/clear-linux-documentation +.. _Microsoft Writing Style Guide: https://docs.microsoft.com/en-us/style-guide/welcome/ +.. _Merriam-Webster Dictionary: https://www.merriam-webster.com/ diff --git a/_sources/collaboration/structure-formatting.rst.txt b/_sources/collaboration/structure-formatting.rst.txt new file mode 100644 index 000000000..56f4c9548 --- /dev/null +++ b/_sources/collaboration/structure-formatting.rst.txt @@ -0,0 +1,482 @@ +.. _structure-formatting: + +Structure and formatting +######################## + +Content should be organized to support scanning. Consistent organization, +formatting, and writing style helps readers quickly find what they need and to +understand the content more effectively. This document describes our +organization and formatting guidelines. + +Refer to :ref:`writing-guide` to learn how we keep our documents clear and +concise. + +.. contents:: :local: + :depth: 1 + +Markup +****** + +Our documentation is written in the reStructuredText markup language, using +Sphinx roles and directives. We use Sphinx to generate the final documentation. +You can read more about reStructuredText and Sphinx on their respective +websites: + +* `Sphinx documentation`_ +* `reStructuredText Primer`_ + +You can view the content directly in the .rst markup files, or generate the HTML +content by installing and building the documentation locally. To run the +documentation locally, follow the instructions found in the +`documentation repository`_ README. + +New pages +========= + +There are a few additional steps to consider when adding a new page to the +documentation. First, identify where your new page should be located within the +existing `Documentation organization`_. Second, make sure the new page is picked +up in the Sphinx build and easily linkable from other content. + +Each page must be included in a `Sphinx toctree`_ in order to be included in the +documentation content tree. Typically, pages are added to the section landing +page toctree. + +For example, the :ref:`collaboration` page toctree looks like: + +.. code-block:: rest + + .. toctree:: + :maxdepth: 1 + + writing-guide + structure-formatting + +Additionally, each page must include a uniquely named reST label directly before +the page title, to enable the `Sphinx ref role`_ for linking to a page. + +For example, this page "Structure and formatting" has the label +``.. _structure-formatting``: + +.. code-block:: rest + + .. _structure-formatting: + + Structure and formatting + ######################## + +This page can then be referenced from other pages in the documentation using the +`:ref:` role: + +.. code-block:: rest + + :ref:`structure-formatting` + +Documentation organization +************************** + +The documentation is organized into five general sections: + +#. **Concepts**: Introduction and overview of |CL| specific concepts or + features. +#. **Get started**: Information about getting started with |CL|. +#. **Guides**: Detailed information and instruction on using |CL| features. +#. **Tutorials**: Step-by-step instruction for using |CL| in specific use cases. +#. **Reference**: Supplementary and reference information for |CL|. + +Page structure +============== + +Each page in the documentation should follow the basic format of: + +* Overview: 1-2 sentences describing what this page shows and why it matters +* Prerequisites: Describe any pre-work necessary to the content (if appropriate) +* Content +* Next steps: List links to next steps (if appropriate) +* Related topics: List links to related content (if appropriate) + +Headings +======== + +Use headings to section and organize your content for better readability and +clarity. + +* All files must have a top level heading, which is the title for the page. +* Up to three additional levels of headings are allowed under the title heading. +* Each heading should be followed by at least one paragraph of content. Avoid + two or more consecutive headings. + +Refer to the :ref:`writing-guide` for tips on using headings to create +:ref:`scannable content `. + +To mark up headings in the .rst file: + +* Use hash-tags to underline the file's main title: + + .. code-block:: rest + + Main title + ########## + +* Use asterisks to underline the file's first level headings: + + .. code-block:: rest + + First level heading + ******************* + +* Use equal signs to underline the file's second level of headings: + + .. code-block:: rest + + Second level heading + ==================== + +* Use dashes to underline the file's third level of headings: + + .. code-block:: rest + + Third level heading + ------------------- + +In-page navigation +================== + +If a page has three or more sections, provide quick links to each section. Place +the quick links after the overview section. + +Use the standard `reST contents directive`_ with depth: 1 for quick links. + +Inline text formatting +********************** + +We use the `Microsoft Writing Style Guide`_ as our starting point for text +formatting. We apply the formatting using reST and Sphinx markup. + +Use our quick reference for the most commonly used inline text elements: + ++--------------------------------+---------------------------------------+-----------------------------+ +| **Element** | **Convention** | **reST/Sphinx** | ++--------------------------------+---------------------------------------+-----------------------------+ +| Acronyms | Define acronym when first used. After | Use the ``:abbr:`` role, in | +| | first use and definition, use the | the following format: | +| | acronym only. | | +| | | ``:abbr:`Acronym (Def)``` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Bundle names | Bold | Use the ``:command:`` role. | ++--------------------------------+---------------------------------------+-----------------------------+ +| Callouts | | Use ``.. note::`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Code/command examples | Monospace, visually distinct | Use ``.. code-block::`` | +| | from rest of text. Use an | with the correct language | +| | indented call-out box. | setting. | ++--------------------------------+---------------------------------------+-----------------------------+ +| Commands | Bold | Use the ``:command:`` role. | ++--------------------------------+---------------------------------------+-----------------------------+ +| Command flags | Bold | Use the ``:command:`` role. | ++--------------------------------+---------------------------------------+-----------------------------+ +| Console output | Monospace, visual distinction | Use ``.. code-block::`` | +| | from rest of text. Use an | with console as the | +| | indented call-out box. | language setting. | ++--------------------------------+---------------------------------------+-----------------------------+ +| Emphasis | Italic | ``*strong*`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Environment variables | Use the case format of the | Use ``:envvar:`` | +| | environment variable. | | ++--------------------------------+---------------------------------------+-----------------------------+ +| Example commands with | Use angle brackets for swapping | | +| optional or replaceable | in the specific name, | | +| parts | e.g. . | | +| | | | +| | Use square brackets for optional | | +| | parts, | | +| | e.g. [--build]. | | ++--------------------------------+---------------------------------------+-----------------------------+ +| Example URLs (not linked) | Plain text | | ++--------------------------------+---------------------------------------+-----------------------------+ +| File extensions | Lowercase | | ++--------------------------------+---------------------------------------+-----------------------------+ +| File names, directories, paths | Title style capitalization | Use the ``:file:`` role. | ++--------------------------------+---------------------------------------+-----------------------------+ +| GUI labels | | Use ``:guilabel:`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Inline comments | | Use ``..`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Keystrokes | | Use ``:kbd:`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Local navigation | | ``.. contents:: :local:`` | +| | | with a depth of 1 | ++--------------------------------+---------------------------------------+-----------------------------+ +| Menu selection | | Use ``:menuselection:`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| New terms | Italic for first use, normal for all | ``*term*`` | +| | subsequent uses. | | +| | | | +| | If it is used outside of the source | | +| | of definition, link the term. | | ++--------------------------------+---------------------------------------+-----------------------------+ +| Product name | Follow correct trademark and | | +| | attribution guidelines. | | ++--------------------------------+---------------------------------------+-----------------------------+ +| Tool names | Correctly capitalized, no quotes, | | +| | bold, or italics as the basic rule. | | +| | | | +| | If the tool name is the command, like | | +| | most Linux tools, treat it like a | | +| | command. | | +| | | | +| | If the tool name is lowercase and | | +| | used at the start of a sentence, use | | +| | bold. | | ++--------------------------------+---------------------------------------+-----------------------------+ + +White space and line length +=========================== + +Limit line length to 78 characters. The GitHub web interface forces this +limitation for readability. + +Remove trailing whitespace from your documents. + +Code blocks and examples +************************ + +When providing example code or commands use the `Sphinx code-block directive`_. +Select the appropriate syntax highlighting for the example command or code. + +For example, if showing console output, use console highlighting: + +.. code-block:: rest + + .. code-block:: console + +Sphinx provides other ways of `marking up example code`_ if needed. + +Lists and instructions +********************** + +Use a numbered list when the order or priority of the items is important, such +as step-by-step instructions. + +Use a bulleted list when the order of the items is not important. + +For both list types, keep all items in the list parallel. See +:ref:`parallelism`. + +Use standard `reST list markup`_. + +Numbered lists +============== + +Numbered lists are most frequently used for procedures. Use numbered lists to +show sequence for the items. Follow our guidelines for numbered lists: + +* Make sure the list is sequential and not just a collection of items. +* Introduce a numbered list with a sentence. End the setup text with a + colon. Example: "To configure the unit, perform the following steps:" +* Each item in the list should be parallel. +* Treat numbered list items as full sentences with correct ending + punctuation. +* You may interrupt numbered lists with other content, if relevant, + e.g. explanatory text, commands, or code. +* Second-level steps are acceptable; avoid third-level steps. +* Avoid single-step procedures; the minimum number of steps in a procedure + is two. +* Do not create numbered lists that emulate flowcharts. The reader should be + able to execute the list of steps from first to last without branching or + looping. +* Avoid over-using numbered lists, except in procedural documents such as + tutorials and step-by-step guides. + +Bulleted lists +============== + +Use bulleted lists to reduce wordiness and paragraph density, especially when +a sequence is not required. Here are some guidelines for bulleted lists: + +* Introduce a bulleted list with a sentence. End the setup text with a + colon. Example: "To repair the unit, you will need the following items:" +* Each item in the list should be parallel. +* Avoid interrupting bulleted lists with other paragraph styles. +* Second-level bullets are acceptable; avoid third-level bullets. + +Use the correct ending punctuation for sentence style bullet lists. For example: + +**Use this:** + +:: + + When setting the user code, remember: + + * Use a number that has a meaning for you. + * Change the code once a month. + * Do not disclose the user code to anyone, including the security company. + +**Not this:** + +:: + + When setting the user code remember: + + * make the user code easy to remember. Use a number that has a meaning for you + * change the code once a month + * do not disclose the user code to anyone else. This includes the security + company + +Instructions +============ + +When presenting instructions, such as in a tutorial, present them in a numbered +list according to these guidelines: + +* Each step (list item) should describe one action. + +* If the same steps are repeated, refer to the earlier steps rather than + repeating them. + +* When a step includes a command or code block as an example, put the command + or code block after the step that includes them. + +* Use supporting images where appropriate. If the series of steps is supported + by one figure, refer to the figure in the introductory text. + + For example: "See Figure 15 and do the following:" + + When a series of steps is supported by two or more figures, refer to the + specific figure in the relevant step and show the figure immediately after + the reference. **Do not write**: "See figures 15 through 22 and do the + following:" + +Notices +******* + +We use four special types of notices: notes, cautions, warnings, and dangers. +Here are some specific rules and tips regarding use of these notices: + +* Do not use a notice directly after a heading. Notices must follow a variant of + body text. +* Do not include more than one notice in a single notice block. +* Avoid back-to-back notices. +* If back-to-back notices are not avoidable, make sure each distinct notice in + the notice block is clearly defined. + +Use the standard `reST admonition directive`_. + +Notes, cautions, and warnings +============================= + +Use notes sparingly. Avoid having more than one note per section. If you exceed +this number consistently, consider rewriting the notes as main body text. + +Use cautions and warnings to alert readers of potential problems or pitfalls. +Use conditional phrases in cautions and warnings, such as "If you do X, then Y +will occur." + +These are examples of typical notices and the conditions for their usage: + +.. note:: + Notes are extra bits of information that supplement the main content. Notes + should be relatively short. + +.. caution:: + Cautions are low-level hazard messages that alert the user of possible + equipment, product, and software damage, including loss of data. + +.. warning:: + Warnings are mid-level hazards that are likely to cause product damage. + +Links +***** + +Use the standard `reST markup for links`_. + +To add a cross-reference to another documentation page, use the `:ref:` role: + +.. code-block:: rest + + :ref:`structure-formatting` + +To add an external link, we use named references that refer to a defined +link/label at the bottom of the page. + +For example, an external link is defined at the bottom of the page like this: + +.. code-block:: rest + + .. _wiki about dogs: https://en.wikipedia.org/wiki/Dog + +The defined link is then used in the content like this: + +.. code-block:: rest + + Check out the great `wiki about dogs`_. + +Images +****** + +Use images or figures to convey information that may be difficult to explain +using words alone. Well-planned graphics reduce the amount of text required to +explain a topic or example. + +Follow these guidelines when using graphics in support of your documentation: + +* Keep it simple. Use images that serve a specific purpose in your document, + and contain only the information the reader needs. + +* Avoid graphics that will need frequent updating. Don't include information in + a graphic that might change with each release, such as product versions. + +* Use either PNG or JPEG bitmap files for screenshots and SVG files for vector + graphics. + +* Place the image immediately after the text it helps clarify, or as close as + possible. + +* Use the `Sphinx figure directive`_ to insert images and figures into the + document. Include both alt text, a figure name, and caption. + + For example: + + .. code-block:: rest + + .. figure:: figures/topic-1.png + :alt: An image supporting the topic. + + Figure 1: This is the figure 1 caption. + +* Include at least one direct reference to an image from the main text, using + the figure number. For example: + + **Use this:** :: + + Figure 1 + + **Not this:** :: + + The figure above or below + +Images should follow these naming and location conventions: + +* Save the image files in a :file:`figures` folder at the same level as the file + that will reference the image. +* Name image files according to the following rules: + + * Use only lower case letters. + * Separate multiple words in filenames using dashes. + * Name images using the filename of the file they appear on and add a number + to indicate their place in the file. For example, the third figure added to + the :file:`welcome.rst` file must be named :file:`welcome-3.png`. + +.. _Sphinx documentation: http://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html +.. _reStructuredText Primer: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html +.. _documentation repository: https://github.com/clearlinux/clear-linux-documentation +.. _Sphinx toctree: https://www.sphinx-doc.org/en/master/usage/quickstart.html?highlight=toctree#defining-document-structure +.. _Sphinx ref role: https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-ref +.. _reST contents directive: http://docutils.sourceforge.net/docs/ref/rst/directives.html#table-of-contents +.. _Microsoft Writing Style Guide: https://docs.microsoft.com/en-us/style-guide/welcome/ +.. _Sphinx code-block directive: http://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-code-block +.. _marking up example code: http://www.sphinx-doc.org/en/1.6/markup/code.html +.. _reST list markup: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#lists-and-quote-like-blocks +.. _reST admonition directive: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#directives +.. _reST markup for links: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#hyperlinks +.. _Sphinx figure directive: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#directives diff --git a/_sources/collaboration/writing-guide.rst.txt b/_sources/collaboration/writing-guide.rst.txt new file mode 100644 index 000000000..40c6830f8 --- /dev/null +++ b/_sources/collaboration/writing-guide.rst.txt @@ -0,0 +1,410 @@ +.. _writing-guide: + +Writing guide +############# + +We want our documentation to be easy to read and understand. This document +describes guidelines for writing documentation that is clear, concise, +confident, and courteous. + +Refer to :ref:`structure-formatting` for details on organizing content and how +we use reStructuredText and Sphinx. + +.. contents:: :local: + :depth: 1 + +Use simple English +****************** + +Write using simple English: Be brief and communicate only the information that +is needed. Be friendly and informative. Emphasize clarity and avoid +unnecessary complicated or technical terms. Make the content accessible to +non-native speakers. + +Be brief +======== + +Use short sentences and paragraphs. Stick to the principle of one main +idea per sentence, plus one additional point if needed. Each paragraph +should address one main idea. Remember the basic structure of a paragraph: +Introduction, body, and conclusion. + +Be friendly +=========== + +We write for our peers and want to be familiar. Take a personal tone as if you +were speaking directly to the reader. Use "you" to address the reader and "we" +to refer to our view. Be professional, respectful, and cooperative. + +Assume your audience has the same level of technical understanding and expertise +as you did when you first started collaborating. Do not talk down to our +readers, but also do not assume they know everything about the subject. Offer +brief explanations or summaries of common knowledge if a significant portion of +readers might benefit. + +Use simple words +================ + +Use simple words to increase reader comprehension and reduce ambiguity. Follow +our tips for making good word choices: + +* **Avoid jargon**: Write for your audience, using everyday language where + possible, and technical terms where appropriate. Avoid clichés, idioms, and + metaphors. +* **Be consistent**: Use one term for each concept or action and use it + consistently. +* **Avoid "fancy" words and phrases**: If there is a simpler word or phrase, + use it. + + For example: + + =================== =================== + Use this Not this + =================== =================== + start, begin commence + so consequently + more than in excess of + if in the event of + before prior to + if you want should one wish + use utilize + example instance + =================== =================== + +Avoid overuse of product name +============================= + +Use product names only when necessary. Typically, you can rewrite sentences to +remove the product name with no change in meaning, which keeps the content +concise and scannable. + +Avoid using the product name in page titles and headings. + +.. _scannable-content: + +Make content scannable +********************** + +Organize your content to make it scannable for the reader, which helps them find +what they need quickly, and to understand the information more efficiently. + +* **Put the most important content first.** Make sure your introduction clearly + communicates what the reader can find on the page. Present the point of the + document first, and organize supporting information towards the end of the + page. +* **Write scannable headings.** Expect readers of documentation to skim and scan + the content, and to leave if they don't find what they need quickly. Good + headings add organization to your content and help the reader to find and + understand content more effectively. Follow our guidelines for writing + effective `Headings`_. +* **Write great link text.** Great link text tells the reader what they can + expect when they click on a link. It also helps make the page more scannable. + Follow our guidelines for writing `Link text`_. + +Headings +======== + +Use these guidelines to write effective headings: + +* **Be concise and descriptive.** Use only the words necessary to describe the + section. +* **Use sentence case.** Capitalize only the first word and proper nouns in a + heading. +* **Avoid punctuation.** Unless your heading is a question, don't use sentence + punctuation in headings. +* **Use parallel structure.** Headings at the same level should use the same + grammatical pattern. This provides structure to the document and helps users + find information more easily. See :ref:`parallelism`. +* **Use strong verbs.** Strong, active verbs get to the point. Avoid -ing verbs, + such as *Running*, *Testing*, etc. + +For example, two headings at the same level: + +**Use this:** :: + + Install software + + Configure software + +**Not this:** :: + + Installing the Software on the Platform + + Software Configuration. + +Link text +========= + +All links in content should follow these guidelines: + +* **Write descriptive link text**: Link text should describe where the link + goes, without having to read the surrounding text. +* **Keep link text concise**: Use only the words needed to accurately describe + the destination. +* **Use unique link text**: Each link on a page should be unique. If users see + the same link text twice on a page, they'll assume it goes to the same place. +* **Start link text with keywords**: Frontload the link text with the most + important words to help users scan the text. +* **Avoid generic text**: Don't use generic, uninformative link text such as + "click here" or "read more". + +For example: + +**Use this:** :: + + For more information about dogs, read the `dog wiki article`_. + +**Not this:** :: + + For more information about dogs, `click here`_. + +Use strong verbs +**************** + +Passive verbs make writing stuffy and formal. Use strong verbs to get to the +point and avoid unnecessary words and phrases. + +Use imperatives +=============== + +Commands, also called imperatives, are the fastest and most direct way of giving +someone instructions. For example: + +**Use this:** :: + + Send it to me. + +**Not this:** :: + + I would appreciate it if you would send it to me. + +Use present tense +================= + +Use simple present tense instead of future tense for most text. Search for the +words "will" or "shall" to find future tense instances. Future tense is +acceptable for conditional statements, such as in a caution or a warning. For +example: + +**Use this:** :: + + The system operates at a nominal temperature of 180 degrees Fahrenheit. + +**Not this:** :: + + The system will operate at a nominal temperature of 180 degrees Fahrenheit. + +Avoid nominalizations +===================== + +Avoid nominalizations, which are nouns formed from verbs. + +For example: + +===================== ===================== + Verb Nominalization +===================== ===================== + complete completion + provide provision + fail failure + install installation +===================== ===================== + +For example: + +**Use this:** :: + + We discussed the matter. + +**Not this:** :: + + We had a discussion about the matter. + +Or: + +**Use this:** :: + + IT has installed the software. + +**Not this:** :: + + IT has completed the installation of the software. + +Avoid words ending in -ing +========================== + +Avoid using words ending in -ing unless they are part of a technical name. For +example: + +**Use this:** :: + + There is no way to verify this. + +**Not this:** :: + + There is no way of verifying this. + +Use the active voice +==================== + +Use active voice whenever possible to show who or what is performing an +action. + +* Active voice follows standard English word order: SUBJECT–VERB–OBJECT + (where the OBJECT is optional). +* Passive voice reverses the order and weakens the verb: OBJECT–be VERB–by + SUBJECT (where the OBJECT is optional). + +For example: + +**Use this:** :: + + I made a mistake. + +**Not this:** :: + + A mistake was made. *(By whom?)* + +Or: + +**Use this:** :: + + We released version 2.0 in June. + +**Not this:** :: + + Version 2.0 was released in June. + +Avoid long noun phrases +*********************** + +Noun phrases (a noun and other words that describe or modify it) can be +difficult to understand. Try to limit the number of modifiers in a noun phrase +to two. For example: + +**Use this:** :: + + Integration policies for power management mechanisms. + +**Not this:** :: + + Power management mechanism integration policies. + +.. _parallelism: + +Parallelism +*********** + +Parallelism refers to the practice of using similar patterns of grammar, and +sometimes length, to coordinate words, phrases, and clauses. + +Use parallel construction in lists. The table below shows some unparallel +structures and how they can be made parallel with a little rewording. + ++----------------------------------+----------------------------------+ +| Parallel (do) | Unparallel (don't) | ++==================================+==================================+ +| 1. Mount the panel. | 1. Mount the panel. | +| 2. Install the battery. | 2. Battery installation. | +| 3. Wire the keypad. | 3. Wiring the keypad. | ++----------------------------------+----------------------------------+ +| I like practicing my accordion, | I like practicing my accordion, | +| reading sci-fi, and eating | reading sci-fi, and to eat | +| peanut butter and pickle | peanut butter and pickle | +| sandwiches. | sandwiches. | ++----------------------------------+----------------------------------+ +| For breakfast he likes coffee | For breakfast he likes coffee | +| and bacon. | and to fry bacon. | ++----------------------------------+----------------------------------+ +| Apples or bananas are a good | Apples or a banana are a good | +| snack. | snack. | ++----------------------------------+----------------------------------+ + +Grammar and punctuation +*********************** + +This section covers common grammatical topics relevant to our +documentation. For detailed explanations of correct grammar and punctuation, +use one of our :ref:`preferred references `. + +Capitalization +============== + +The capitalization style for all documentation is sentence case. Words should +only be capitalized when they are proper nouns or refer to trademarked product +names. + +.. note:: + Do not capitalize a word to indicate it is more important than other + words. Never change the case of variable, function or file names - always + keep the original case. + +Menu capitalization +------------------- + +When referring to software menu items by name, use the same capitalization as +seen in the actual menu. + +A few other tips when referring to menu items: + +* Reference the specific menu item using "Select :menuselection:`File --> New`." + +* Put the option to be selected last. "Select + :menuselection:`View --> Side Bar --> Hide Side Bar`" + +* Do not include more than 3 navigation steps in a menu selection. If + more than three steps are needed, divide the steps using + ``:guilabel:`` or ``:menuselection:``. + + For example: "Go to :guilabel:`File` and select + :menuselection:`Print --> Print Preview --> Set Up`." + +Software version capitalization +------------------------------- + +When listing software or hardware version numbers, the word “version” or letter +"v" are lowercase. The v is closed with the number (no period). + +For example: + +* Widget Pro version 5.0 +* Widget Master v2.1.12 + +Contractions +============ + +Avoid using contractions, such as it's, they're, and you're, because they may be +unclear to non-native English-speaking audiences. + +Quotation marks +=============== + +Follow these guidelines for quotation marks: + +* Restrict use of quotation marks to terms as terms. +* Do not use quotation marks for emphasis; use *italics* for emphasis. +* Avoid using single-quote marks. + +Commas and colons +================= + +This section addresses common use of commas, semicolons, and colons in our +documentation. Refer to one of our :ref:`preferred references ` +for further details. + +Use the serial comma +-------------------- + +When writing a series of items, use the serial comma before the final *and* and +*or* to avoid confusion and ambiguity. For example: + +**Use this:** :: + + Mom, Dad, and I are going to the game. + +**Not this:** :: + + Mom, Dad and I are going to the game. + +.. _click here: https://en.wikipedia.org/wiki/Dog +.. _dog wiki article: https://en.wikipedia.org/wiki/Dog diff --git a/_sources/disclaimers.rst.txt b/_sources/disclaimers.rst.txt new file mode 100644 index 000000000..6f2dfb6e6 --- /dev/null +++ b/_sources/disclaimers.rst.txt @@ -0,0 +1,12 @@ +:orphan: + +.. _disclaimers: + + +.. rubric:: Disclaimer + +.. important:: + This documentation is a work in progress and is being provided for + informative purposes only. Because it is a work in progress, there are + parts that are either missing or will be revised as code development + continues. diff --git a/_sources/documentation_license.rst.txt b/_sources/documentation_license.rst.txt new file mode 100644 index 000000000..758a7a24f --- /dev/null +++ b/_sources/documentation_license.rst.txt @@ -0,0 +1,12 @@ +:orphan: + +.. raw:: html + + Creative Commons License
This work is licensed under a Creative Commons + Attribution 4.0 International License + diff --git a/_sources/get-started/bare-metal-install-desktop.rst.txt b/_sources/get-started/bare-metal-install-desktop.rst.txt new file mode 100644 index 000000000..b92c0cd46 --- /dev/null +++ b/_sources/get-started/bare-metal-install-desktop.rst.txt @@ -0,0 +1,686 @@ +.. _bare-metal-install-desktop: + +Install |CL-ATTR| from the live desktop +####################################### + +This page explains how to boot the |CL-ATTR| live desktop image, from which +you can install |CL| or explore without modifying the host system. +Alternatively, use a :ref:`YAML configuration file ` +to install |CL|. + +.. contents:: + :local: + :depth: 1 + +System requirements +******************* + +Before installing |CL|, verify that the host system supports the +installation: + +* Requires 20 GB or more disk space +* :ref:`system-requirements` +* :ref:`compatibility-check` + +.. _preliminary-steps-install-desktop: + +Preliminary steps +***************** + +#. Visit our `Downloads`_ page. + +#. Download the file :file:`clear--live-desktop.iso`, + also called the |CL| Desktop. + + .. note:: + + is the latest |CL| auto-numbered release. + +#. Follow your OS instructions to + :ref:`create a bootable usb drive `. + +.. _install-on-target-start: + +Install from live image +*********************** + +After you download and burn the live desktop image on a USB drive, follow +these steps. + +#. Insert the USB drive into an available USB slot. + +#. Power on the system. + +#. Open the system BIOS setup menu by pressing the :kbd:`F2` key. + Your BIOS setup menu entry point may vary. + +#. In the setup menu, enable the UEFI boot and set the USB drive as the + first option in the device boot order. + +#. Save these settings, e.g. :kbd:`F10`, and exit. + +#. Reboot the target system. + +.. _preliminary-steps-install-desktop-end: + +Choose boot menu option +======================= + +#. Choose one of the options shown in Figure 1. + + a. Follow `Verify integrity of installer media (optional)`_. + + #. Select :guilabel:`Clear Linux OS` in the boot menu. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-01.png + :scale: 100% + :alt: Clear Linux OS in boot menu + + Figure 1: Clear Linux OS in boot menu + + .. note:: + + If no action is taken, the live image starts by default. + +.. _install-on-target-end: + +Verify integrity of installer media (optional) +============================================== + +Use :guilabel:`Verify ISO Integrity` to verify the checksum of +the image burned to the installer media. The checksum ensures that the ISO +is uncorrupted (see Figure 1). For every ISO generated, the +:guilabel:`clr-installer` implants checksums, which are verified during +early boot stage as part of :command:`initrd`. + +#. Select :guilabel:`Verify ISO Integrity`. The media will be validated. + +#. If the check passes, it will boot into the live image. Continue in + the next section. + +#. If the check fails, a failure message appears. + + * Restart the process at `Preliminary Steps`_. + +.. _install-clr-desktop-start: + +Launch the |CL| installer +========================= + +#. After the live desktop image boots, scroll over the vertical + :guilabel:`Activities` menu at left. + +#. Click the |CL| penguin icon to launch the installer, shown in Figure 2. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-02.png + :scale: 100% + :alt: Install Clear Linux OS icon + + Figure 2: |CL| installer icon + +#. After the installer is launched, it will appear as shown in Figure 3. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-03.png + :scale: 100% + :alt: |CL| Desktop Installer + + Figure 3: |CL| OS Desktop Installer + +#. In :guilabel:`Select Language`, select a language from the options, or + type your preferred language in the search bar. + +#. Select :guilabel:`Next`. + + +Network Proxy (optional) +------------------------ + +#. Configure :guilabel:`Network Proxy` settings. + +#. In the top right menu bar, select the :guilabel:`Power button`. + +#. Select :guilabel:`Wired Connected` and then :guilabel:`Wired Settings`. + + #. In :guilabel:`Network Proxy`, select the :guilabel:`Gear` icon to view + options. + + #. Select an option from `Automatic`, `Manual` or `Disabled`. + + #. Close :guilabel:`Network Proxy`. + +#. Close :guilabel:`Settings`. + +.. _incl-bare-metal-beta-start: + +Minimum installation requirements +********************************* + +To fulfill minimum installation requirements, complete the +`Required options`_. We also recommend completing `Advanced options`_. + +.. note:: + + * The :kbd:`Install` button is only highlighted **after** you complete + `Required options`_. + + * Check marks indicate a selection has been made. + + * The installer image contains the default bundles required for + installation. An Internet connection is only required if you install + additional bundles from `Advanced options`_. + +|CL| Desktop Installer +********************** + +The |CL| Desktop Installer Main Menu appears as shown in Figure 4. To meet +the minimum requirements, enter values in all submenus for the +:guilabel:`Required options`. After you complete them, your selections appear +below submenus and a check mark appears at right. + +.. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-04.png + :scale: 100% + :alt: Clear Linux OS Desktop Installer - Main Menu + + Figure 4: Clear Linux OS Desktop Installer - Main Menu + +Navigation +********** + +* Use the :kbd:`mouse` to navigate or select options. + +* Use :kbd:`Tab` key to navigate between :guilabel:`Required options` + and :guilabel:`Advanced options` + +* Use :kbd:`Up` or :kbd:`Down` arrow keys to navigate the submenus. + +* Select :kbd:`Confirm`, or :kbd:`Cancel` in submenus. + +Required options +**************** + +Select Time Zone +================ + +#. From the Main Menu, select :guilabel:`Select Time Zone`. `UTC` is selected + by default. + +#. In :guilabel:`Select Time Zone`, navigate to the desired time zone. + Or start typing the region and then the city. + (.e.g., :file:`America/Los_Angeles`). + +#. Select :guilabel:`Confirm`. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-05.png + :scale: 100% + :alt: Select System Timezone + + Figure 5: Select System Time Zone + +Select Keyboard +=============== + +#. From the Main Menu, select :guilabel:`Select Keyboard`. + +#. Navigate to your desired keyboard layout. We select "us" for the + United States. + +#. Select :guilabel:`Confirm`. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-06.png + :scale: 100% + :alt: Select Keyboard menu + + Figure 6: Select Keyboard menu + +Select Installation Media +========================= + +#. From the Main Menu, select :guilabel:`Select Installation Media`. + +#. Choose an installation method: `Safe Installation`_ or + `Destructive Installation`_. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-07.png + :scale: 100% + :alt: Select Installation Media + + Figure 7: Select Installation Media + +Safe Installation +----------------- + +Use this method to safely install |CL| on media with available space, or +alongside existing partitions, and accept the `Default partition schema`_. +If enough free space exists, safe installation is allowed. + +.. note:: + + |CL| allows installation alongside another OS. Typically, when you boot + your system, you can press an `F key` to view and select a bootable + device or partition during the BIOS POST stage. Some BIOSes present the + |CL| partition, and you can select and boot it. However, other + BIOSes may only show the primary partition, in which case you will not be + able boot |CL|. Be aware of this possible limitation. + +Destructive Installation +------------------------ + +Use this method to destroy the contents of the target device, install |CL| +on it, and accept the `Default partition schema`_. + +Disk encryption +--------------- + +For greater security, disk encryption is supported using LUKS. Encryption is +optional. + +#. To encrypt the root partition, select :guilabel:`Enable Encryption`, + as shown in Figure 8. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-08.png + :scale: 100% + :alt: Enable Encryption + + Figure 8: Enable Encryption + +#. When :guilabel:`Encryption Passphrase` appears, enter a passphrase. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-09.png + :scale: 100% + :alt: Encryption Passphrase + + Figure 9: Encryption Passphrase + + .. note:: + + Minimum length is 8 characters. Maximum length is 94 characters. + +#. Enter the same passphrase in the second field. + +#. Select :guilabel:`Confirm` in the dialogue box. + + .. note:: + + :guilabel:`Confirm` is only highlighted if passphrases match. + +#. Select :guilabel:`Confirm` in submenu. + +Advanced Installation +--------------------- + +Use this method to manually partition the target media using `gparted`. +Our example uses the `Default partition schema`_. The space you allocate for +``root``, or additional partitions, may vary. + +#. Select :guilabel:`Advanced Installation`. + +#. Select :guilabel:`Partition Media`, shown in Figure 11. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-10.png + :scale: 100% + :alt: Advanced Installation + + Figure 10: Advanced Installation + +boot partition +-------------- + +#. Select the available target media shown as `unallocated`. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-11.png + :scale: 100% + :alt: Advanced Disk Partitioning + + Figure 11: Advanced Disk Partitioning + +#. Choose :menuselection:`Device --> Create Partition Table`. + +#. In the `Warning` screen, under :guilabel:`Select new partition table type` + , select `gpt` from the pull-down menu. + +#. Select :guilabel:`Apply`. + +#. Select :menuselection:`Partition --> New`. + + .. note:: + + The `/boot` partition must be `VFAT(FAT32)`. + +#. In :guilabel:`Create new Partition`, complete the following fields to + match Figure 12. Don't change other default values. + + * :guilabel:`New size:` 150 + * :guilabel:`Partition name:` CLR_BOOT + * :guilabel:`File system:` fat32 + * :guilabel:`Label:` boot + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-12.png + :scale: 100% + :alt: boot partition + + Figure 12: boot partition + +#. Select :guilabel:`Add`. + +swap partition (optional) +------------------------- + +A swapfile is generated by default during installation. However, if you prefer to create a swap partition, follow the steps below. + +#. With :guilabel:`unallocated` highlighted, select from the menu + :menuselection:`Partition --> New`. + +#. In :guilabel:`Create new Partition`, complete the following fields to + match Figure 13. Don't change other default values. + + * :guilabel:`New size:` 256 + * :guilabel:`Partition name:` CLR_SWAP + * :guilabel:`File system:` linux-swap + * :guilabel:`Label:` swap + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-13.png + :scale: 100% + :alt: swap partition + + Figure 13: swap partition + +#. Select :guilabel:`Add`. + +root partition +-------------- + +#. With :guilabel:`unallocated` highlighted, select from the menu + :menuselection:`Partition --> New`. + +#. In :guilabel:`Create new Partition`, complete the following fields to + match Figure 14. Don't change other default values. + +#. In :guilabel:`New size`, enter the desired size, or leave as is + to accept the *default: remaining size*. + + * :guilabel:`New size:` + * :guilabel:`Partition name:` CLR_ROOT + * :guilabel:`File system:` ext[234], XFS, or f2fs + * :guilabel:`Label:` root + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-14.png + :scale: 100% + :alt: root partition + + Figure 14: root partition + +#. After all partitions are defined, verify your partition + configuration is similar to Figure 15. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-15.png + :scale: 100% + :alt: Final partition configuration + + Figure 15: Final partition configuration + +#. Select :menuselection:`Edit --> Apply All Operations`. + +#. A dialog box appears asking "Are you sure you want to apply the pending + operations?" + +#. Select :guilabel:`Apply`. + +#. When dialog :guilabel:`Applying pending operations` is complete, select + :guilabel:`Close`. + +#. Select :menuselection:`GParted --> Quit`. + +You are returned to installer. + +Manage User +=========== + +#. In Required Options, select :guilabel:`Manage User`. + +#. In :guilabel:`User Name`, enter a user name. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-16.png + :scale: 100% + :alt: Manage User + + Figure 16: Manage User + +#. In :guilabel:`Login`, create a login name. It must start with a letter + and can use numbers, hyphens, and underscores. Maximum length is 31 + characters. + +#. In :guilabel:`Password`, enter a password. Minimum length is + 8 characters. Maximum length is 255 characters. + +#. In :guilabel:`Confirm`, enter the same password. + + .. note:: + + :guilabel:`Administrator` rights are selected by default. + For security purposes, the default user must be assigned as an + Administrator. + +#. Select :kbd:`Confirm`. + + .. note:: + + Select :guilabel:`Cancel` to return to the Main Menu. + +Modify User +----------- + +#. In Manager User, select :guilabel:`Manage User`. + +#. Modify user details as desired. + +#. Select :guilabel:`Confirm` to save the changes you made. + + .. note:: + + Optional: Select :guilabel:`Cancel` to return to the Main Menu to + revert changes. + +Optional: Skip to `Finish installation`_. + +Telemetry +========= + +Choose whether to participate in `telemetry`. :ref:`telem-guide` is a |CL| +feature that reports failures and crashes to the |CL| development +team for improvements. + +#. From :guilabel:`Required Options`, select :guilabel:`Telemetry`. + +#. Select :kbd:`Yes`. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-17.png + :scale: 100% + :alt: Enable Telemetry + + Figure 17: Enable Telemetry + +#. If you don't wish to participate, select :kbd:`No`. + +Advanced options +**************** + +After you complete the `Required options`_, we recommend completing +:guilabel:`Advanced options`--though they're not required. Doing so +customizes your development environment, so you're ready to go immediately +after reboot. + +.. note:: + + You can always add more bundles later with :ref:`swupd-guide`. + +Select Additional Bundles +========================= + +This option is only available with a valid network connection. +Bundle selection is disabled if no network connection exists. + +#. On the Advanced menu, select :guilabel:`Select Additional Bundles`. + +#. Select your desired bundles. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-18.png + :scale: 100% + :alt: Bundle Selection + + Figure 18: Bundle Selection + +#. Select :kbd:`Confirm`. + +#. View the bundles that you selected. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-19.png + :scale: 100% + :alt: Select Additional Bundles + + Figure 19: Select Additional Bundles + +Optional: Skip to `Finish installation`_. + +Assign Hostname +=============== + +#. In Advanced Options, select :guilabel:`Assign Hostname`. + +#. In :guilabel:`Hostname`, enter the hostname only (excluding the domain). + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-20.png + :scale: 100% + :alt: Assign Hostname + + Figure 20: Assign Hostname + + .. note:: + + Hostname does not allow empty spaces. Hostname must start with an + alphanumeric character but may also contain hyphens. Maximum length of + 63 characters. + +#. Select :kbd:`Confirm`. + +Optional: Skip to `Finish installation`_. + +Kernel Configuration +==================== + +#. In :guilabel:`Kernel Configuration`, navigate to select your desired + kernel. :guilabel:`Native` is selected by default. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-21.png + :scale: 100% + :alt: Kernel Configuration + + Figure 21: Kernel Configuration + +#. To add arguments, enter the argument in :guilabel:`Add Extra Arguments`. + +#. To remove an argument, enter the argument in :guilabel:`Remove Arguments`. + +#. Select :kbd:`Confirm`. + +Software Updater Configuration +============================== + +#. In Advanced Options, select :guilabel:`Software Updater Configuration`. + +#. In :guilabel:`Mirror URL`, follow the instructions if you wish to + specify a different installation source. + +#. :guilabel:`Enable Auto Updates` is selected by default. If you **do not** + wish to enable automatic software updates, uncheck the box. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-22.png + :scale: 100% + :alt: Software Updater Configuration + + Figure 22: Software Updater Configuration + +#. Select :kbd:`Confirm`. + +Finish installation +******************* + +#. When you are satisfied with your installation configuration, select + :guilabel:`Install`. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-23.png + :scale: 100% + :alt: Assign Hostname + + Figure 23: Finish installation + + .. note: + + All check marks must appear in :guilabel:`Required Options` for the + :guilabel:`Install` button to be enabled. + +#. If you do not enter a selection for all :guilabel:`Required Options`, + the :guilabel:`Install` button remains disabled, as shown + in Figure 24. Return to `Required Options`_ and make selections. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-24.png + :scale: 100% + :alt: Required Options - Incomplete + + Figure 24: Required Options - Incomplete + +#. After installation is complete, select :guilabel:`Exit`. + +#. Shut down the target system. + +#. Remove the USB or any installation media. + +#. Power on your system. + + .. note:: + + Allow time for the graphical login to appear. A login prompt shows the administrative user that you created. + +#. Log in as the administrative user. + +Congratulations. You successfully installed |CL|. + +Default partition schema +======================== + +Create partitions per requirements in Table 1. + +.. list-table:: **Table 1. Default partition schema** + :widths: 25, 25, 25, 25 + :header-rows: 1 + + * - FileSystem + - Label + - Mount Point + - Default size + + * - ``VFAT (FAT32)`` + - boot + - /boot + - 150MB + + * - ``ext[234], XFS, or f2fs`` + - root + - / + - *Size depends upon use case/desired bundles.* + +.. note:: + + A 64MiB swapfile is generated by default. The default size may be set + manually with the ``--swap-file-size`` command-line option. + +Troubleshooting +*************** + +:ref:`erase-lvm-troubleshooting-tip` + +Related topics +************** + +* :ref:`install-configfile` + +.. _Downloads: https://clearlinux.org/downloads diff --git a/_sources/get-started/bare-metal-install-server.rst.txt b/_sources/get-started/bare-metal-install-server.rst.txt new file mode 100644 index 000000000..0c345e670 --- /dev/null +++ b/_sources/get-started/bare-metal-install-server.rst.txt @@ -0,0 +1,1042 @@ +.. _bare-metal-install-server: + +Install |CL-ATTR| from the live server +###################################### + +This page explains how to install |CL-ATTR| on bare metal from a bootable USB +drive using a live server image. Alternatively, use a :ref:`YAML configuration file ` to install |CL|. + +.. contents:: + :local: + :depth: 1 + +System requirements +******************* + +Before installing |CL|, verify that the host system supports the +installation: + +* Requires 4 GB or more disk space +* :ref:`system-requirements` +* :ref:`compatibility-check` + +Preliminary steps +***************** + +#. Visit our `Downloads`_ page. + +#. Download the file :file:`clear--live-server.iso`, + also called the |CL| Server. + + .. note:: + + is the latest |CL| auto-numbered release. + +#. Follow your OS instructions to + :ref:`create a bootable usb drive `. + +Install |CL| on your target system +********************************** + +Ensure that your system is configured to boot UEFI. The installation method +described below requires a wired or wireless Internet connection with DHCP. + +Follow these steps to install |CL| on the target system: + +#. Insert the USB drive into an available USB slot. + +#. Power on the system. + +#. Open the system BIOS setup menu by pressing the :kbd:`F2` key. + Your BIOS setup menu entry point may vary. + + .. note:: + |CL| supports UEFI boot. Some hardware may list UEFI and non-UEFI USB + boot entries. In this case, you should select the `UEFI` boot + option. + +#. In the setup menu, enable the UEFI boot and set the USB drive as the first + option in the device boot order. + +#. Save these settings and exit. + +#. Reboot the target system. + +Choose boot menu option +======================= + +#. Choose one of the options shown in Figure 1. + + a. Follow `Verify integrity of installer media (optional)`_. + + #. Select :guilabel:`Clear Linux OS` in the boot menu. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-01.png + :scale: 100% + :alt: Clear Linux OS Installer boot menu + + Figure 1: Clear Linux OS Installer boot menu + + .. note:: + + If no action is taken, the live image starts by default. + +Verify integrity of installer media (optional) +============================================== + +Use :guilabel:`Verify ISO Integrity` to verify the checksum of +the image burned to the installer media. The checksum ensures that the ISO +is uncorrupted (see Figure 1). For every ISO generated, the +:guilabel:`clr-installer` implants checksums, which are verified during +early boot stage as part of :command:`initrd`. + +#. Select :guilabel:`Verify ISO Integrity`. The media will be validated. + +#. If the check passes, it will boot into the live image. Continue in + the next section. + +#. If the check fails, a failure message appears. + + * Restart the process at `Preliminary Steps`_. + +.. _install-clr-server-start: + +Launch the |CL| Installer +************************* + +#. At the :guilabel:`login` prompt, enter :command:`root`. + +#. Follow the onscreen instructions, shown in Figure 2, and + enter a temporary password. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-02.png + :scale: 100% + :alt: root login + + Figure 2: root login + + .. note:: + + If a wireless connection is needed, connect to the network using + :command:`nmtui` before lauching the installer. See the documentation on + :ref:`configuring Wifi with nmtui ` for more details. + +#. At the :guilabel:`root` prompt, enter :command:`clr-installer` and + press :kbd:`Enter`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-03.png + :scale: 100% + :alt: clr-installer command + + Figure 3: clr-installer command + +Minimum installation requirements +********************************* + +To fulfill minimum installation requirements, complete the +`Required options`_. While not required, we encourage you to apply the +`Recommended options`_. `Advanced options`_ are optional. + +.. note:: + + * The :kbd:`Install` button is **only highlighted after** you complete + `Required options`_. + +Main Menu +********* +The |CL| Installer Main Menu appears as shown in Figure 4. + +.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-04.png + :scale: 100% + :alt: Clear Linux OS Installer + + Figure 4: Clear Linux OS Installer + +The |CL| Installer Main Menu has two tabs: :guilabel:`[R] Required options` +and :guilabel:`[A] Advanced options`. Navigate between tabs using these shortcut keys: + +* :kbd:`Shift+A` for :guilabel:`[A] Advanced options` +* :kbd:`Shift+R` for :guilabel:`[R] Required options` + +To meet the minimum requirements, enter your choices in the +:guilabel:`Required options`. After confirmation, your selections appear +beside the :guilabel:`>>` chevron, below the menu options. + +Navigation +********** + +* Select :kbd:`Tab` or :kbd:`Up/Down` arrows to highlight your choice. + +* Select :kbd:`Enter` or :kbd:`Spacebar` to confirm your choice. + +* Select :kbd:`Cancel` or :kbd:`Esc` to cancel your choice. + +Required options +**************** + +Choose Timezone +=============== + +#. From the Main Menu, navigate to :guilabel:`Choose Timezone`. + `UTC` is the default. + +#. Select :kbd:`Enter`. + +#. In :guilabel:`Select System Timezone`, use :kbd:`Up/Down` arrows + navigate to the desired timezone. + +#. Press :kbd:`Enter` to confirm. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-05.png + :scale: 100% + :alt: Select System Timezone + + Figure 5: Select System Timezone + +Choose Language +=============== + +#. From the Main Menu, navigate to :guilabel:`Choose Language`. + +#. Select :kbd:`Enter`. + +#. In :guilabel:`Select System Language`, navigate to your desired language. + +#. Press :kbd:`Enter` to confirm. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-06.png + :scale: 100% + :alt: Select System Language + + Figure 6: Select System Language + +Configure the Keyboard +====================== + +#. From the Main Menu, select :guilabel:`Configure the Keyboard`. + +#. Select :kbd:`Enter`. + +#. In :guilabel:`Select Keyboard`, navigate to the desired option. + +#. Select :kbd:`Enter` to :kbd:`Confirm`. + +#. Optional: In :guilabel:`Test keyboard`, type text to assure + that the keys map to your keyboard. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-07.png + :scale: 100% + :alt: Select Keyboard menu + + Figure 7: Select Keyboard menu + +Configure Installation Media +============================ + +#. From the Main Menu, select :guilabel:`Configure Installation Media`. + +#. Choose an installation method: + * `Safe Installation`_ + * `Destructive Installation`_ + * `Advanced Installation`_ + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-08.png + :scale: 100% + :alt: Select Installation Media + + Figure 8: Select Installation Media + +#. Select :guilabel:`Rescan Media` to show available installation targets. + +Safe Installation +----------------- + +Use this method to safely install |CL| on media with available space, or +alongside existing partitions, and accept the `Default partition schema`_. +If enough free space exists, safe installation is allowed. See also +`Troubleshooting`_ below. + +Destructive Installation +------------------------ + +Use this method to destroy the contents of the target device, install |CL| +on it, and accept the `Default partition schema`_. + +.. note:: + + From the :guilabel:`Select Installation Media` menu, select + :guilabel:`Enable Encryption` to encrypt the root filesystem for either + option above. See also `Disk encryption`_ for more information. + +Advanced Installation +--------------------- + +Use this method to manually configure partitions using `cgdisk`. +This example uses the `Default partition schema`_. The space you allocate for +your ``root``, or additional partitions, may vary. + +#. Navigate to :guilabel:`Advanced Installation` and press :kbd:`Spacebar`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-09.png + :scale: 100% + :alt: Advanced installation + + Figure 9: Advanced installation + +#. If no target media appears, select :kbd:`Rescan Media`. + +#. Navigate to :guilabel:`Partition` and and press :kbd:`Spacebar` + to launch `cgdisk`. + +Partition codes +--------------- + +* ef00 - EFI System +* 8200 - Linux swap +* 8300 - Linux filesystem + +boot partition +-------------- + +#. With the free space highlighted in the cgdisk utility, select + :guilabel:`[New]`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-10.png + :scale: 100% + :alt: Select New + + Figure 10: Select New + + .. note:: + + The `/boot` partition must be `VFAT(FAT32)`. + +#. Where :guilabel:`First sector` appears, press :kbd:`Enter`. + +#. For :guilabel:`Size in sectors`, type 150M. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-11.png + :scale: 100% + :alt: Size in sectors + + Figure 11: Size in sectors + +#. Press `Enter`. + +#. Enter the hex code `ef00` and press :kbd:`Enter`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-12.png + :scale: 100% + :alt: `ef00` partition code + + Figure 12: `ef00` partition code + +#. For the partition name, enter `CLR_BOOT`, the EFI boot partition. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-13.png + :scale: 100% + :alt: CLR_BOOT + + Figure 13: CLR_BOOT + + .. note:: + + Encryption is not allowed on the CLR_BOOT partition. + +Now follow the same process to configure the remaining partitions. + +swap partition (optional) +------------------------- + +A swapfile is generated by default during installation. However, if you +prefer to create a swap partition, follow the steps below. + +#. Use the :kbd:`Up/Down` arrow to select free space. + +#. Select :guilabel:`[New]` at bottom and press :kbd:`Enter`. + +#. Under :guilabel:`First sector`, press :kbd:`Enter`. + +#. For :guilabel:`Size in sectors`, type 256M, and press :kbd:`Enter`. + +#. Enter the hex code `8200` and press :kbd:`Enter`. + +#. In :guilabel:`Enter new partition name...`, type CLR_SWAP. + +#. Press :kbd:`Enter`. + +root partition +-------------- + +#. Use the :kbd:`Up/Down` arrow to select free space. + +#. Select :guilabel:`[New]` at bottom and press Enter. + +#. Under :guilabel:`First sector`, press Enter. + +#. For :guilabel:`Size in sectors`, type in desired size. + Optionally, press :kbd:`Enter` to use the remaining space available. + +#. Press Enter. + +#. Enter the hex code `8300` and press :kbd:`Enter`. + +#. In :guilabel:`Enter new partition name...`, type: CLR_ROOT. + The `/root` partition must be `ext[234]`, `XFS`, or `f2fs`. + If no filesystem exists, the installer will default to `VFAT(FAT32)` + for `/boot`, and `ext4` for all others. + + .. note:: + + You may also append `_F` to the partition name to force the formatting. + + * `CLR_ROOT_F`: Force the formatting of the root partition prior to + use. + + * `CLR_F_SWAP`: Force the formatting of the swap partition prior to + use; helpful when re-using a partition for swap which was previously formatted for a file system. + + * `CLR_F_MNT_/data`: Force the formatting of the extra data + partition prior to use + +#. Press :kbd:`Enter`. + +#. After all partitions are defined, verify that your partition + configuration is similar to Figure 14. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-14.png + :scale: 100% + :alt: Final partition configuration + + Figure 14: Final partition configuration + +Additional partitions (optional) +-------------------------------- + +#. Use the :kbd:`Up/Down` arrow to select free space. + +#. Now select :guilabel:`[New]` at bottom and press Enter. + +#. Under :guilabel:`First sector`, press Enter. + +#. For :guilabel:`Size in sectors`, type in desired size. + + .. note:: + + If you do not specify a size, it will use the remaining space. + +#. Press :kbd:`Enter`. + +#. Enter the hex code `8300`. Then press :kbd:`Enter`. + +#. In :guilabel:`Enter new partition name...`, type: `CLR_MNT_`. + For example, replace with `/home`, shown in Figure 15. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-15.png + :scale: 100% + :alt: CLR_MNT + + Figure 15: CLR_MNT + + .. note:: + + If formatting is desired, the `_F` **must precede** `_MNT`. + +#. Alternatively, you may create `CLR_MNT_/srv` or other partitions. + +Write configuration to disk +--------------------------- + +#. When you're satisfied with the partition configuration, press the + Right Arrow until :guilabel:`[Write]` is highlighted. + +#. Press :kbd:`Enter`. + +#. When the prompt appears asking if you want to write the partition table + to disk, type "yes". + +#. Finally, select :guilabel:`[Quit]`. + +Disk encryption +=============== + +For greater security, disk encryption is supported using LUKS for the +any partition except `/boot` on |CL|. To encrypt the root partition, see the +example below. Encryption is optional. + +Encryption Passphrase +--------------------- + +|CL| uses a single passphrase for encrypted partitions. Additional keys may +be configured post-installation using the ``cryptsetup`` tool. + +#. Optional: Select :guilabel:`[X] Enable encryption` to encrypt the root + partition, as shown in Figure 16. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-16.png + :scale: 100% + :alt: Encrypt partition + + Figure 16: Encrypt partition + +#. The :guilabel:`Encryption Passphrase` dialog appears. + + .. note:: + + Minimum length is 8 characters. Maximum length is 94 characters. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-17.png + :scale: 100% + :alt: Encryption Passphrase + + Figure 17: Encryption Passphrase + +#. Enter the same passphrase in the first and second field. + +#. Navigate to :guilabel:`Confirm` and press :kbd:`Enter`. + + .. note:: + + :guilabel:`Confirm` is only highlighted if passphrases match. + +Manage User +=========== + +Add New User +------------ + +#. In Required Options, select :guilabel:`Manage User`. + +#. Select :guilabel:`Add New User` as shown in Figure 18. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-18.png + :scale: 100% + :alt: Add New User, User Name + + Figure 18: Add New User + +#. Optional: Enter a :guilabel:`User Name`. + + .. note: + + The User Name must be alphanumeric and can include spaces, commas, + underscores or hyphens. Maximum length is 64 characters. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-19.png + :scale: 100% + :alt: User Name + + Figure 19: User Name + +#. Enter a :guilabel:`Login`. + + .. note:: + + The User Login must be alphanumeric and can include hyphens and underscores. Maximum length is 31 characters. + +#. Enter a :guilabel:`Password`. + + .. note: + + Minimum length is 8 characters. Maximum length is 255 characters. + +#. In :guilabel:`Confirm`, enter the same password. + +#. The :guilabel:`Administrator` checkbox is selected by default. + + .. note:: + + Selecting Administrator enables sudo privileges for the user. For the installation to proceed, at least one user must be assigned as an Administrator. + +#. Select :kbd:`Confirm`. To reset the form, select :guilabel:`Reset`. + +#. In :guilabel:`Manage User`, navigate to :guilabel:`Confirm`. + +#. With :guilabel:`Confirm` highlighted, select :kbd:`Enter`. + +Modify / Delete User +-------------------- + +#. In :guilabel:`Manage User`, navigate to the user you wish + to modify until highlighted, as shown in Figure 20. + +#. Select :kbd:`Enter` to modify the user. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-20.png + :scale: 100% + :alt: Modify User + + Figure 20: Modify User + +#. Modify user details as desired. + +#. Navigate to :kbd:`Confirm` until highlighted. + + .. note:: + + Optional: Select :guilabel:`Reset` to rest the form. + +#. Select :guilabel:`Confirm` to save the changes you made. + +#. Optional: In :guilabel:`Modify User`, to delete the user, navigate to + the :guilabel:`Delete` button and select :kbd:`Enter`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-21.png + :scale: 100% + :alt: Delete User + + Figure 21: Delete User + +You are returned to :guilabel:`Manage User`. + +#. Navigate to :kbd:`Confirm` until highlighted. + +#. Select :guilabel:`Enter` to complete :guilabel:`Manage User` options. + +Telemetry +========= + +:ref:`telem-guide` is a |CL| feature that reports failures and crashes to +the |CL| development team for improvements. + +Select your desired option on whether to participate in telemetry. + +#. In the Main Menu, navigate to :guilabel:`Telemetry` and select + :kbd:`Enter`. + +#. Select :kbd:`Tab` to highlight your choice. + +#. Select :kbd:`Enter` to confirm. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-22.png + :scale: 100% + :alt: Enable Telemetry + + Figure 22: Enable Telemetry + +Recommended options +******************* + +After you complete the `Required options`_, we highly recommend completing +some `Advanced options`_: + +* `Assign Hostname`_ Simplify your development environment + +Skip to finish installation +=========================== + +After selecting values for all :guilabel:`Required options`, you may skip +to `Finish installation`_. + +Otherwise, continue below. In the Main Menu, select +:guilabel:`Advanced options` for additional configuration. + +Advanced options +**************** + +Configure Network Interfaces +============================ + +By default, |CL| is configured to automatically detect the host network +interface using DHCP. However, if you want to use a static IP address or if +you do not have a DHCP server on your network, follow these instructions to +manually configure the network interface. Otherwise, default network +interface settings are automatically applied. + +.. note:: + + If DHCP is available, no user selection may be required. + +#. Navigate to :guilabel:`Configure Network Interfaces` and + select :kbd:`Enter`. + +#. Navigate to the network :guilabel:`interface` you wish to change. + +#. When the desired :guilabel:`interface` is highlighted, select + :guilabel:`Enter` to edit. + + .. note:: Multiple network interfaces may appear. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-23.png + :scale: 100% + :alt: Configure Network Interfaces + + Figure 23: Configure Network Interfaces + +#. Notice :guilabel:`Automatic / dhcp` is selected by default (at bottom). + + Optional: Navigate to the checkbox :guilabel:`Automatic / dhcp` and select + :kbd:`Spacebar` to deselect. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-24.png + :scale: 100% + :alt: Network interface configuration + + Figure 24: Network interface configuration + +#. Navigate to the appropriate fields and assign the desired + network configuration. + +#. To save settings, navigate to :guilabel:`Confirm` and select + :kbd:`Enter`. + + .. note:: + + To revert to previous settings, navigate to the :guilabel:`Cancel` + and select :kbd:`Enter`. + +#. Upon confirming network configuration, the :guilabel:`Testing Networking` + dialog appears. Assure the result shows success. If a failure occurs, + your changes will not be saved. + +#. Upon confirmation, you are returned to :guilabel:`Network interface` + settings. + +#. Navigate to and select :guilabel:`Main Menu`. + +Optional: Skip to `Finish installation`_. + +Proxy +===== + +|CL| automatically attempts to detect proxy settings, as described in +:ref:`autoproxy`. If you need to manually assign proxy settings, follow this +instruction. + +#. From the Advanced options menu, navigate to :guilabel:`Proxy`, and + select :kbd:`Enter`. + +#. Navigate to the field :guilabel:`HTTPS Proxy`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-25.png + :scale: 100% + :alt: Configure the network proxy + + Figure 25: Configure the network proxy + +#. Enter the desired proxy address and port using conventional syntax, + such as: \http://address:port. + +#. Navigate to :guilabel:`Confirm` and select :kbd:`Enter`. + +#. To revert to previous settings, navigate to :guilabel:`Cancel` + and select :guilabel:`Cancel`. + +Optional: Skip to `Finish installation`_. + +Test Network Settings +===================== + +To manually assure network connectivity before installing |CL|, +select :guilabel:`Test Network Settings` and select :guilabel:`Enter`. + +.. note:: + If using the :command:`off-line installer`, this option is not available. + +A progress bar appears as shown in Figure 26. + +.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-26.png + :scale: 100% + :alt: Testing Networking dialog + + Figure 26: Testing Networking dialog + +.. note:: + + Any changes made to network settings are automatically tested + during configuration. + +Optional: Skip to `Finish installation`_. + +Select Additional Bundles +========================= + +This option is only available with a valid network connection. +Bundle selection is disabled if no network connection exists. + +#. On the Advanced menu, select :guilabel:`Select Additional Bundles`. + +#. Navigate to the desired bundle using :kbd:`Tab` or :kbd:`Up/Down` arrows. + +#. Select :kbd:`Spacebar` to select the checkbox for each desired bundle. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-27.png + :scale: 100% + :alt: Bundle Selection + + Figure 27: Bundle Selection + +#. Optional: To start developing with |CL|, we recommend + adding :file:`os-clr-on-clr`. + +#. Navigate to and select :kbd:`Confirm`. + + You are returned to the :guilabel:`Advanced options` menu. + +Optional: Skip to `Finish installation`_. + +Assign Hostname +=============== + +#. In Advanced Options, select :guilabel:`Assign Hostname`. + +#. In :guilabel:`Hostname`, enter the hostname only (excluding the domain). + + .. note:: + + Hostname does not allow empty spaces. Hostname must start with an + alphanumeric character but may also contain hyphens. Maximum length of + 63 characters. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-28.png + :scale: 100% + :alt: Assign Hostname + + Figure 28: Assign Hostname + +#. Navigate to :kbd:`Confirm` until highlighted. + +#. Select :kbd:`Confirm`. + +Optional: Skip to `Finish installation`_. + +Kernel Command Line +=================== + +For advanced users, |CL| provides the ability to add or remove kernel +arguments. If you want to append a new argument, enter the argument here. +This argument will be used every time you install or update a +new kernel. + +#. In Advanced Options, select :guilabel:`Tab` to highlight + :guilabel:`Kernel Command Line`. + +#. Select :kbd:`Enter`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-29.png + :scale: 100% + :alt: Kernel Command Line + + Figure 29: Kernel Command Line + +#. Choose from the following options. + + * To add arguments, enter the argument in :guilabel:`Add Extra Arguments`. + + * To remove an argument, enter the argument in + :guilabel:`Remove Arguments`. + +#. Select :kbd:`Confirm`. + +Optional: Skip to `Finish installation`_. + +Kernel Selection +================ + +#. Select a kernel option. By default, the latest kernel release is + selected. Native kernel is shown in Figure 30. + +#. To select a different kernel, navigate to it using :guilabel:`Tab`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-30.png + :scale: 100% + :alt: Kernel selection + + Figure 30 Kernel selection + +#. Select :kbd:`Spacebar` to select the desired option. + +#. Navigate to :kbd:`Confirm` and select :kbd:`Enter`. + +Optional: Skip to `Finish installation`_. + +Swupd Mirror +============ + +If you have your own custom mirror of |CL|, you can add its URL. + +#. In Advanced Options, select :guilabel:`Swupd Mirror`. + +#. To add a local swupd mirror, enter a valid URL in :guilabel:`Mirror URL:` + +#. Select :kbd:`Confirm`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-31.png + :scale: 100% + :alt: Swupd Mirror + + Figure 31: Swupd Mirror + +Optional: Skip to `Finish installation`_. + +Automatic OS Updates +==================== + +Automatic OS updates are enabled by default. In the rare case that you +need to disable automatic software updates, follow the onscreen instructions, +shown in Figure 32. + +#. In Advanced Options, select :guilabel:`Automatic OS Updates`. + +#. Select the desired option. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-32.png + :scale: 100% + :alt: Automatic OS Updates + + Figure 32: Automatic OS Updates + +You are returned to the :guilabel:`Main Menu`. + +Save Configuration Settings +=========================== + +#. In Advanced Options, select :guilabel:`Save Configuration Settings`. + +#. A dialog box shows the installation configuration was saved to + :file:`clr-installer.yaml` + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-33.png + :scale: 100% + :alt: Save configuration to YAML file + + Figure 33: Save configuration to YAML file + +#. Use the :file:`clr-installer.yaml` file to install |CL|, with the same + configuration, on multiple targets. + +Finish installation +******************* + +#. When you are satisfied with your installation configuration, navigate to + :guilabel:`Install` and select :kbd:`Enter`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-34.png + :scale: 100% + :alt: Select Install + + Figure 34: Select Install + +#. Select :guilabel:`reboot`. + + .. note:: + + If you do not assign an administrative user, upon rebooting, + enter `root` and set the root password immediately. + +#. When the system reboots, remove any installation media present. + +Default partition schema +======================== + +Create partitions per requirements in Table 1. + +.. list-table:: **Table 1. Default partition schema** + :widths: 25, 25, 25, 25 + :header-rows: 1 + + * - FileSystem + - Label + - Mount Point + - Default size + + * - ``VFAT(FAT32)`` + - boot + - /boot + - 150MB + + * - ``ext[234], `XFS`, or f2fs`` + - root + - / + - *Size depends upon use case/desired bundles.* + +.. note:: + + A 64MiB swapfile is generated by default. The default size may be set + manually with the ``--swap-file-size`` command-line option. + +Troubleshooting +*************** + +For Configure Installation Media +================================ + +If a warning message appears that no media or space is available after +entering :guilabel:`Configure Installation Media`: + +- Verify that target media has enough free space. + +- Confirm the USB is properly connected to and mounted on target media. + +- Review the size of existing partitions on the target media: + + - Linux\* OS: :command:`lsblk -a` + - Windows\* OS: :command:`diskpart`, then :command:`list disk` + - macOS\* platform: :command:`diskutil list` + +.. _erase-lvm-troubleshooting-tip: + +Erase LVM Partitions Before Installing |CL| +=========================================== + +If you’re planning to install |CL| on a drive that has LVM partitions, +you must erase them first before using the clr-installer. + +Here is an example of a drive (/dev/sda) with LVMs: + +.. code-block:: console + :emphasize-lines: 6-9 + + NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT + loop0 7:0 0 627.6M 1 loop + sda 8:0 0 335.4G 0 disk + ├─sda1 8:1 0 200M 0 part + ├─sda2 8:2 0 1G 0 part + └─sda3 8:3 0 334.2G 0 part + ├─LVM-root 252:0 0 70G 0 lvm + ├─LVM-home 252:1 0 248.4G 0 lvm + └─LVM-swap 252:2 0 15.7G 0 lvm + +If you do not erase the LVMs first, you will encounter a clr-installer +error like this: + +.. code-block:: console + + root@clr-live~ # clr-installer + + Please report this crash using GitHub Issues: + https://github.com/clearlinux/clr-installer/issues + + Include the following as attachments to enable diagnosis: + /root/pre-install-clr-installer.yaml + /root/clr-installer.log + + You may need to remove any personal data of concern from the attachments. + The Installer will now exit. + exit status 1 + + Error Trace: + errors.Wrap() + errors/errors.go:91 + storage.makeFs() + storage/ops.go:79 + +The quickest and simplest method to erasing the LVMs is to execute these +commands: + +.. code-block:: bash + + sudo sgdisk -Z /dev/ + sudo partprobe + sudo dmsetup remove_all --force + sudo partprobe + +Related topics +************** + +* :ref:`install-configfile` + + +.. _Downloads: https://clearlinux.org/downloads + + diff --git a/_sources/get-started/bootable-usb.rst.txt b/_sources/get-started/bootable-usb.rst.txt new file mode 100644 index 000000000..6a3959998 --- /dev/null +++ b/_sources/get-started/bootable-usb.rst.txt @@ -0,0 +1,171 @@ +.. _bootable-usb: + +Create a bootable USB drive using Etcher\* +########################################## + +Use Etcher* software from Balena\* to flash the |CL| image to a USB drive. +An `Advanced: Linux CLI`_ option is also available. + +Prerequisites +************* + +* Download the |CL| Desktop or Server image from the `Downloads`_ page +* Recommended minimum **4GB** USB drive or larger +* Download and install the `Etcher`_ version per your operating system. + +Burn the |CL| image onto a USB drive +==================================== + +.. caution:: + + Burning an image formats the USB drive and destroys all pre-existing + content. Back up your data before proceeding. + +#. Launch Etcher. + + .. rst-class:: dropshadow + + .. figure:: /_figures/bootable-usb/balenaEtcher_Start.PNG + :scale: 100% + :alt: Start screen + + Figure 1: Start screen + +#. Press :guilabel:`Select Image`. + +#. Change directory to where the image resides. + +#. Select the image and click :guilabel:`Open`. + + .. rst-class:: dropshadow + + .. figure:: /_figures/bootable-usb/balenaEtcher_ImageSelect.PNG + :scale: 100% + :alt: In Open, select the image + + Figure 2: In Open, select the image + +#. Plug in the USB drive. + +#. Identify the USB drive or click :guilabel:`Change` to select a + different USB. + + .. note:: + + This shows all USB drives attached to the system. + + .. rst-class:: dropshadow + + .. figure:: /_figures/bootable-usb/balenaEtcher_DriveSlect.PNG + :scale: 100% + :alt: USB drives attached + + Figure 3: USB drives attached + +#. Select the proper device and press :guilabel:`Continue`. + + .. rst-class:: dropshadow + + .. figure:: /_figures/bootable-usb/balenaEtcher_ReadyToFlash.PNG + :scale: 100% + :alt: USB Flash Device selected + + Figure 4: USB Flash Device selected + +#. When ready press the :guilabel:`Flash!` Button. + The dialog shows :guilabel:`Flashing` while in progress. + + .. rst-class:: dropshadow + + .. figure:: /_figures/bootable-usb/balenaEtcher_StartingToFlash.PNG + :scale: 100% + :alt: Starting to flash + + Figure 5: Starting to flash + + .. rst-class:: dropshadow + + .. figure:: /_figures/bootable-usb/balenaEtcher_Flashing.PNG + :scale: 100% + :alt: Flashing, percentage complete + + Figure 6: Flashing, percentage complete + +#. :guilabel:`Flash complete!` shows when the process is finished. + + .. rst-class:: dropshadow + + .. figure:: /_figures/bootable-usb/balenaEtcher_Done.PNG + :scale: 100% + :alt: Flash Complete! + + Figure 7: Flash Complete! + + .. note:: + + The process may take more than a few minutes. When the process completes, close BalenaEtcher. + +Advanced: Linux CLI +=================== + +#. Open a Terminal window. + +#. Change directory to where the image resides. + +#. Plug in the USB drive. + +#. Identify all drives attached to the system. In the example output below, there are 3 drives (`/dev/sda`, `/dev/sdb`, and `/dev/sdc`) attached, where `/dev/sda` is the primary drive and the remaining are USB drives. + + .. code-block:: bash + + lsblk -po NAME,SIZE,VENDOR,MODEL,TRAN,TYPE,PARTLABEL,MOUNTPOINT + + Example output: + + .. code-block:: console + + NAME SIZE VENDOR MODEL TRAN TYPE PARTLABEL MOUNTPOINT + /dev/sda 119.2G ATA SAMSUNG_MZ7PC128HAFU-000 sata disk + ├─/dev/sda1 450M part Basic data partition + ├─/dev/sda2 100M part EFI system partition + ├─/dev/sda3 16M part Microsoft reserved partition + ├─/dev/sda4 97.2G part Basic data partition + ├─/dev/sda5 142M part EFI + ├─/dev/sda6 245M part linux-swap [SWAP] + └─/dev/sda7 21.1G part / / + /dev/sdb 7.5G General UDisk usb disk + └─/dev/sdb1 7.5G part Microsoft Basic Data /run/media/clear/CENA_X64FRE + /dev/sdc 15G Patriot_Memory usb disk + └─/dev/sdc1 15G part /run/media/clear/U + + .. note:: + + Some Linux distros may automatically mount a USB drive when it is plugged in. + +#. Unmount the USB drive you want to use before burning an image onto it. + Use the :command:`umount` command followed by the device identifier/partition. For example, to unmount all ``/dev/sdc`` partitions: + + .. code-block:: bash + + sudo umount /dev/sdc* + +#. Burn the image onto the USB drive. This example burns an image onto + ``/dev/sdc``. The device name of the USB may vary. + + .. code-block:: bash + + sudo dd if=./clear-[version number]-live-[desktop | server].iso of=/dev/sdc oflag=sync bs=4M status=progress + +Eject the |CL| image USB drive +============================== + +.. caution:: + + If you do not properly unmount the USB drive before removing it, it may cause file system checksum errors in it. If this happens, burn the image again, ensuring all the USB drive partitions are unmounted first before removing drive. + +#. Unmount the USB per your OS instructions. + +#. Then eject the USB. + +.. _Downloads: https://clearlinux.org/downloads +.. _Etcher: https://www.balena.io/etcher/ diff --git a/_sources/get-started/cloud-install/aws-web.rst.txt b/_sources/get-started/cloud-install/aws-web.rst.txt new file mode 100644 index 000000000..9d4312c98 --- /dev/null +++ b/_sources/get-started/cloud-install/aws-web.rst.txt @@ -0,0 +1,288 @@ +.. _aws-web: + +|CL-ATTR| on Amazon Web Services\* +################################## + +This tutorial explains how to create and launch a |CL| +:abbr:`AMI (Amazon Machine Image)` instance from the +:abbr:`AWS\* (Amazon Web Services)` console and complete the following tasks: + +#. Locate and select the |CL| OS Basic AMI in the AWS Marketplace. +#. Create a new public and private key pair to allow you to connect to your + |CL| instance securely. +#. Launch the new |CL| instance and connect to it. +#. Update your instance of |CL| using the :command:`swupd` command. +#. Stop the |CL| instance. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +This tutorial assumes the following statements are true: + +* You are using a linux-based system to access AWS and can run :command:`SSH` + to access the remote |CL| AWS image. +* Your browser puts downloaded files in the :file:`$HOME/Downloads` + directory. +* You have already set up an AWS user account and logged into the AWS + console. + +.. note:: + This tutorial uses a |CL| AMI t2.micro instance that is eligible for the + AWS free tier. To learn more about AWS and setting up an account, visit the + AWS website at http://aws.amazon.com. + +Locate, select, and launch the |CL| Basic AMI +********************************************* + +#. Start from your main AWS services console menu in your browser and select + the :guilabel:`EC2` text as shown in Figure 1: + + .. figure:: /_figures/aws/aws-web-1.png + :scale: 50 % + :alt: AWS Console + + Figure 1: :guilabel:`AWS Console` + + This selection brings up your :guilabel:`EC2 Dashboard` menu. + +#. To create a new |CL| instance from the :guilabel:`EC2 Dashboard` menu, + select the :guilabel:`Launch Instance` button as shown in Figure 2: + + .. figure:: /_figures/aws/aws-web-2.png + :scale: 50 % + :alt: EC2 Dashboard + + Figure 2: :guilabel:`EC2 Dashboard` + + This selection takes you to the + :guilabel:`Step 1: Choose an Amazon Machine Image (AMI)` menu. + +#. To find the :guilabel:`Clear Linux OS Basic` AMI in the + :guilabel:`Step 1: Choose an Amazon Machine Image (AMI)` menu, do the + following: + + #. In the lefthand navigation window, select the + :guilabel:`AWS Marketplace` menu item to bring up the search bar to + :guilabel:`Search AWS Marketplace Products`. + + #. In the search bar, type "clear linux os" and press the :kbd:`Enter` key + to search for and locate the :guilabel:`Clear Linux OS Basic` AMI. + + #. Select the :guilabel:`Clear Linux OS Basic` AMI by clicking the + :guilabel:`Select` button as shown in Figure 3: + + .. figure:: /_figures/aws/aws-web-3.png + :scale: 50 % + :alt: Step 1: Choose AMI + + Figure 3: :guilabel:`Step 1: Choose AMI` + + #. A pop-up dialog box appears showing you more information about the + :guilabel:`Clear Linux OS Basic` AMI along with the pricing details for + running |CL| on different platform configurations as shown in Figure 4. + Select the :guilabel:`Continue` button. + + .. figure:: /_figures/aws/aws-web-4.png + :scale: 50 % + :alt: Clear Linux OS Basic + + Figure 4: :guilabel:`Clear Linux OS Basic` + +#. The :guilabel:`Choose Instance Type` menu appears as shown in Figure 5. + + .. figure:: /_figures/aws/aws-web-5.png + :scale: 50 % + :alt: Choose an Instance Type + + Figure 5: :guilabel:`Choose an Instance Type` + + Select the :guilabel:`t2.micro` type by clicking the box on the left side + of the instance and then select the :guilabel:`Review and Launch` button to + move to the :guilabel:`Step 7: Review the Instance Launch` menu. + + .. note:: + + You can configure the instance details, add additional storage, add + tags, and configure the security group before selecting the + :guilabel:`Review and Launch` button if you want to further customize + this |CL| instance. + +#. The :guilabel:`Step 7: Review the Instance Launch` menu, shown in Figure 6, + allows you to :guilabel:`Cancel` the process, return to + the :guilabel:`Previous` screen to change the configuration + or :guilabel:`Launch` the instance defined. + + .. figure:: /_figures/aws/aws-web-6.png + :scale: 50 % + :alt: Step 7: Review the Instance Launch + + Figure 6: :guilabel:`Step 7: Review the Instance Launch` + + #. Select the :guilabel:`Launch` button. A dialog box appears, as shown in + Figure 7, asking you to + :guilabel:`Select an existing key pair or create a new pair`. + + .. figure:: /_figures/aws/aws-web-7.png + :scale: 50 % + :alt: Select an existing key pair or create a new pair + + Figure 7: :guilabel:`Select an existing key pair or create a new pair` + + #. Select the :guilabel:`Create a new key pair` option. + + #. For the :guilabel:`Key pair name` field, enter `AWSClearTestKey`. + + #. Select the :guilabel:`Download Key Pair` button to download the + :file:`AWSClearTestKey.pem` to your browser's defined + :file:`Downloads` directory. + + #. When the file finishes downloading, select the + :guilabel:`Launch Instances` button to proceed to the + :guilabel:`Launch Status` menu shown in Figure 8. + + .. figure:: /_figures/aws/aws-web-8.png + :scale: 50 % + :alt: Launch Status + + Figure 8: :guilabel:`Launch Status` + + #. Once the :guilabel:`Launch Status` page changes to what is shown in + Figure 9, select the :guilabel:`View Instances` button to view your + :guilabel:`Instances` dashboard. + + .. figure:: /_figures/aws/aws-web-9.png + :scale: 50 % + :alt: View Instance + + Figure 9: :guilabel:`View Instance` + +Connect to your Clear Linux OS basic instance +********************************************* + +Your :guilabel:`Instances` Dashboard is shown in Figure 10 with the new |CL| +OS basic instance already selected and in the running state. If there are +other instances available, they are also listed but not selected. + +.. figure:: /_figures/aws/aws-web-10.png + :scale: 50 % + :alt: Instance Dashboard + + Figure 10: :guilabel:`Instance Dashboard` + +#. To connect to your running instance, click the :guilabel:`Connect` button + located at the top of your dashboard. AWS brings up the pop-up dialog + box shown in Figure 11 describing how to connect to your running instance. + +.. _fig-aws-web-11: + +.. figure:: /_figures/aws/aws-web-11.png + :scale: 50 % + :alt: Connect to Your Instance + + Figure 11: :guilabel:`Connect to Your Instance` + +#. Open a terminal on your system. You should be in your :file:`$HOME` + directory. + +#. Copy the previously downloaded keyfile from the :file:`Downloads` + directory to the current directory. + + .. code-block:: console + + cp Downloads/AWSClearTestKey.pem . + +#. Change the attributes of the :file:`AWSClearTestKey.pem` using the + :command:`chmod` command as instructed in the dialog box shown in Figure + 11. + + .. code-block:: console + + chmod 400 AWSClearTestKey.pem + +#. Copy the text highlighted in the :guilabel:`Example:` section that is + shown in :ref:`figure 11`. Paste the copied text into your + terminal, change the text before the `@` sign to the username `clear`, and + press the :kbd:`Enter` key to execute the command. + + .. code-block:: console + + ssh -i "AWSClearTestKey.pem" clear@ec2-34-209-39-184.us-west-2.compute.amazonaws.com + +#. A message appears on the terminal stating the authenticity of the host + can't be established and prompts you with the message: + + .. code-block:: console + + The authenticity of host 'ec2-34-209-39-184.us-west-2.compute.amazonaws.com (34.209.39.184)' can't be established. + ECDSA key fingerprint is SHA256:LrziT5Ar66iBTfia8qmiIsrfBUm/UGam76U8bDR6yJc. + Are you sure you want to continue connecting (yes/no)? + +#. Type `yes` and press the :kbd:`Enter` key. Another warning is printed to + the terminal and you are now at the command prompt of your new |CL| + instance. + + .. code-block:: console + + Warning: Permanently added 'ec2-34-209-39-184.us-west-2.compute.amazonaws.com,34.209.39.184' (ECDSA) to the list of known hosts. + clear@clr-96a8565d0ca54b0c80364a1e5e7b0f88 ~ $ + +Update the |CL| instance +************************ + +Run the :command:`sudo swupd update` command to update the operating +system as shown in Figure 12: + +.. figure:: /_figures/aws/aws-web-12.png + :scale: 50 % + :alt: sudo swupd update + + Figure 12: :guilabel:`sudo swupd update` + +In this example, we updated from version 18940 to 19100. + +Stop the |CL| instance +********************** + +When you are finished using your AWS |CL| instance, you must stop it using +the :guilabel:`Instances` dashboard to stop accruing charges. Complete the +following steps from the :guilabel:`Instances` dashboard to stop your AWS |CL| +instance from running. + +#. Select the :guilabel:`Actions` button to bring up a pull-down menu. + +#. Select the :guilabel:`Instance State` menu item to expand the options. + +#. Select :guilabel:`Stop` menu item to shut down the running instance. + + Figure 13 illustrates these steps. + + .. figure:: /_figures/aws/aws-web-13.png + :scale: 50 % + :alt: Stop Instance + + Figure 13: :guilabel:`Stop Instance` + +#. A pop-up dialog box appears warning you that any ephemeral storage of + your instance will be lost. Select the :guilabel:`Yes, Stop` button to stop + your |CL| instance. + +.. figure:: /_figures/aws/aws-web-14.png + :scale: 50 % + :alt: Stop Instances + + Figure 14: :guilabel:`Stop Instances` + +Congratulations! You are up and running with |CL| on AWS. To see what you +can do with your |CL| instance, visit our :ref:`tutorials ` +section for examples on using your |CL| system. + +Related topics +************** + +* :ref:`azure` +* :ref:`gce` +* :ref:`clr-digitalocean` diff --git a/_sources/get-started/cloud-install/azure.rst.txt b/_sources/get-started/cloud-install/azure.rst.txt new file mode 100644 index 000000000..a6cc1f203 --- /dev/null +++ b/_sources/get-started/cloud-install/azure.rst.txt @@ -0,0 +1,548 @@ +.. _azure: + +|CL-ATTR| on Microsoft\* Azure\* +################################ + +This tutorial shows how to install and use the Azure :abbr:`CLI (Command Line +Interface)` on |CL|. The Azure CLI offers the ability to create and +manage resources in MS Azure from the command line. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +|CL| is available for you to use in the Microsoft Azure marketplace and +is offered with three different images, also known as a +:abbr:`SKU (Stock Keeping Unit)`. + +* |CL| Basic - This SKU consists of a bare-bones system which can be used as a + starting point for those wanting to explore and build out a system with + additional software bundles of their choosing. + +* |CL| Containers - This SKU comes with the containers-basic software bundle + already installed. + +* |CL| Machine-learning - This SKU comes pre-loaded with popular open source + tools for developing machine learning applications. + +Sign in at the `Azure portal`_ to access these images from the Azure dashboard, +or use the MS Azure CLI 2.0. If you do not already have an account set up with +MS Azure, you can sign up for a `MS Azure free account`_ to access the +|CL| :abbr:`VM (Virtual Machine)` images. + +Prerequisites +************* + +To use the MS Azure CLI 2.0 on your |CL| system, your system must have the +following packages installed: + +* Python 2.7 or later + +* libffi + +* OpenSSL 1.0.2 + +You can check to see which versions you have installed on your system by +running the individual commands as follows: + +.. code-block:: bash + + python --version + +.. code-block:: console + + python 2.7.12 + +.. code-block:: bash + + openssl version + +.. code-block:: console + + OpenSSL 1.0.2n 7 Dec 2017 + +.. code-block:: bash + + ls -l /usr/lib64/libffi* + +.. code-block:: console + + lrwxrwxrwx 1 root root 15 Jan 12 2017 /usr/lib64/libffi.so.6 -> libffi.so.6.0.4 + -rwxr-xr-x 1 root root 38792 Jan 12 2017 /usr/lib64/libffi.so.6.0.4 + +If you do not have these packages installed on your |CL| system, install the +sysadmin-basic software bundle using the :command:`swupd` command: + +.. code-block:: bash + + sudo swupd bundle-add sysadmin-basic + +.. note:: + + These instructions are for installing the MS Azure CLI 2.0 tools on a |CL| + system. If you are installing the CLI on another platform, follow the + instructions in the `MS Azure Install Azure CLI tutorial`_ for your + specific operating system. + +Install MS Azure CLI 2.0 on |CL| +******************************** + +#. To install the MS Azure CLI 2.0 on |CL|, use the :command:`curl` command as + follows: + + .. code-block:: bash + + curl -L https://aka.ms/InstallAzureCli | bash + + If you get an error message from :command:`curl` related to the -L + parameter or an error message is generated that includes the text "Object + Moved", use the full URL instead of the aka.ms redirect address: + + .. code-block:: bash + + curl https://azurecliprod.blob.core.windows.net/install | bash + +#. The installation script begins and prompts you several times during + execution for information. + + .. note:: + + The console output from the script displays your username instead of the + **[user]** variable shown on this tutorial. + + .. code-block:: console + + ===> In what directory would you like to place the install? (leave blank to use '/home/[user]/lib/azure-cli'): + + Press the :kbd:`Enter` key to accept the default or chose another + directory in which to install the MS Azure CLI 2.0 tools. + + .. code-block:: console + + ===> In what directory would you like to place the 'az' executable? (leave blank to use '/home/[user]/bin'): + + Press the :kbd:`Enter` key to accept the default or chose another + directory in which to install the :command:`az` executable. + +#. The installation downloads and builds all the required tools. When it is + complete, it prompts you: + + .. code-block:: console + + ===> Modify profile to update your $PATH and enable shell/tab completion now? (Y/n): Y + + Type :kbd:`Y` and press the :kbd:`Enter` key to allow this modification. + + .. code-block:: console + + ===> Enter a path to an rc file to update (leave blank to use '/home/[user]/.bashrc'): + + Press the :kbd:`Enter` key to accept the default or enter the pathname to + your :file:`.bashrc` file. The installation completes with the final output + shown below: + + .. code-block:: console + + -- Backed up '/home/[user].bashrc' to '/home/[user]/.bashrc.backup' + -- Tab completion set up complete. + -- If tab completion is not activated, verify that '/home/[user]/.bashrc' is sourced by your shell. + -- + -- ** Run `exec -l $SHELL` to restart your shell. ** + -- + -- Installation successful. + -- Run the CLI with /home/[user]/bin/az --help + +#. When the installation program finishes, you must restart your shell for + the changes to take effect. When the installation is successful, run the + following command to restart your shell. + + .. code-block:: bash + + exec -l $SHELL + +With the MS Azure CLI 2.0 executable successfully built and installed, run +the :command:`az` command. + +.. code-block:: bash + + az + +The output from the :command:`az` command is shown below: + +.. code-block:: console + + + /\ + / \ _____ _ _ __ ___ + / /\ \ |_ / | | | \'__/ _ \ + / ____ \ / /| |_| | | | __/ + /_/ \_\/___|\__,_|_| \___| + + + Welcome to the cool new Azure CLI! + + Here are the base commands: + + account : Manage Azure subscription information. + acr : Manage Azure Container Registries. + acs : Manage Azure Container Services. + ad : Synchronize on-premises directories and manage Azure Active Directory + resources. + advisor : (PREVIEW) Manage Azure Advisor. + aks : Manage Kubernetes clusters. + appservice : Manage App Service plans. + backup : Commands to manage Azure Backups. + batch : Manage Azure Batch. + batchai : Batch AI. + billing : Manage Azure Billing. + cdn : Manage Azure Content Delivery Networks (CDNs). + cloud : Manage registered Azure clouds. + cognitiveservices: Manage Azure Cognitive Services accounts. + configure : Display and manage the Azure CLI 2.0 configuration. This command is + interactive. + consumption : Manage consumption of Azure resources. + container : (PREVIEW) Manage Azure Container Instances. + cosmosdb : Manage Azure Cosmos DB database accounts. + disk : Manage Azure Managed Disks. + dla : (PREVIEW) Manage Data Lake Analytics accounts, jobs, and catalogs. + dls : (PREVIEW) Manage Data Lake Store accounts and filesystems. + eventgrid : Manage Azure Event Grid topics and subscriptions. + extension : Manage and update CLI extensions. + feature : Manage resource provider features. + feedback : Loving or hating the CLI? Let us know! + find : Find Azure CLI commands. + functionapp : Manage function apps. + group : Manage resource groups and template deployments. + image : Manage custom virtual machine images. + interactive : Start interactive mode. + iot : (PREVIEW) Manage Internet of Things (IoT) assets. + keyvault : Safeguard and maintain control of keys, secrets, and certificates. + lab : Manage Azure DevTest Labs. + lock : Manage Azure locks. + login : Log in to Azure. + logout : Log out to remove access to Azure subscriptions. + managedapp : Manage template solutions provided and maintained by Independent Software + Vendors (ISVs). + monitor : Manage the Azure Monitor Service. + mysql : Manage Azure Database for MySQL servers. + network : Manage Azure Network resources. + policy : Manage resource policies. + postgres : Manage Azure Database for PostgreSQL servers. + provider : Manage resource providers. + redis : Access to a secure, dedicated Redis cache for your Azure applications. + reservations : Manage Azure Reservations. + resource : Manage Azure resources. + role : Manage user roles for access control with Azure Active Directory and service + principals. + sf : Manage and administer Azure Service Fabric clusters. + snapshot : Manage point-in-time copies of managed disks, native blobs, or other + snapshots. + sql : Manage Azure SQL Databases and Data Warehouses. + storage : Manage Azure Cloud Storage resources. + tag : Manage resource tags. + vm : Provision Linux or Windows virtual machines. + vmss : Manage groupings of virtual machines in an Azure Virtual Machine Scale Set + (VMSS). + webapp : Manage web apps. + +Log into your Microsoft Azure account +************************************* + +#. With the :command:`az` command properly installed and functional, login to + your MS Azure account using the :command:`az login` command shown below: + + .. code-block:: bash + + az login + + The output from this command is: + + .. code-block:: console + + To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code BQ9MG442B to authenticate. + +#. Open your browser and enter the page `https://aka.ms/devicelogin` as shown + in figure 1: + + .. figure:: /_figures/azure/azure-1.png + :scale: 50 % + :alt: Microsoft Device Login + + Figure 1: :guilabel:`Microsoft Device Login` + +#. Enter the code `BQ9MG442B` to authenticate your device as shown in figure + 2. The code `BQ9MG442B` is a random authentication code generated for each + session login and will be different each time you log into MS Azure using + the :command:`az login` command. + + .. figure:: /_figures/azure/azure-2.png + :scale: 50 % + :alt: Microsoft Device Login - Azure CLI + + Figure 2: :guilabel:`Microsoft Device Login - Azure CLI` + +#. Once you enter the authentication code, the website displays a screen to + enter your existing Microsoft Azure credentials. + +#. Log in with your existing MS Azure account credentials. The + browser screen shows you have signed into the Microsoft Cross-platform + Command Line Interface application on your device, as shown in figure 3. + You can close the page. + + .. figure:: /_figures/azure/azure-3.png + :scale: 50 % + :alt: Microsoft Azure Cross-platform CLI + + Figure 3: :guilabel:`Microsoft Azure Cross-platform CLI` + +The MS Azure CLI 2.0 interface is now active using your existing MS Azure +account credentials. + +Create a MS Azure resource group +******************************** + +To learn more about MS Azure resource groups, visit the +`Azure Resource Manager overview`_ for an overview and detailed description +of resources within MS Azure. + +#. To create a new resource group, run the :command:`az group create ...` + command shown below to create a resource group named `ClearResourceGroup` + using the `-n` parameter and locate it in the `westus` region using the + `-l` parameter. + + .. code-block:: bash + + az group create -n ClearResourceGroup -l westus + +#. When the command has completed, the output from this command is similar to + the following: + + .. code-block:: console + + { + "id": "/subscriptions/{unique-id}/resourceGroups/ClearResourceGroup", + "location": "westus", + "managedBy": null, + "name": "ClearResourceGroup", + "properties": { + "provisioningState": "Succeeded" + }, + "tags": null + } + +Create and log into the |CL| virtual machine +******************************************** + +For this tutorial, we are using the |CL| Basic SKU for our VM. + +#. To locate the available |CL| Basic VM SKU images in the MS Azure + marketplace, run the :command:`az vm image ...` command: + + .. code-block:: bash + + az vm image list --offer clear-linux --sku basic --all --output table + + This command may take some time to finish. The output lists all available + |CL| Basic images available in the Microsoft Azure marketplace as shown + below: + + .. code-block:: console + + Offer Publisher Sku Urn Version + -------------- ------------------- ---------------- ------------------------------------------------------------- --------- + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:15780.0.0 15780.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:15960.0.0 15960.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:16050.0.0 16050.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:16150.0.0 16150.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:16500.0.0 16500.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:16810.0.0 16810.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:18080.0.0 18080.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:18620.0.0 18620.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:18860.0.0 18860.0.0 + + .. note:: + + The output list shows current offerings. New versions are added to the + MS Azure marketplace all the time. To reference the latest version of an + image, you can use the version label `latest` when specifying an image. + +#. The information shown in the `Urn` column lists the + `Publisher:Offer:Sku:Version` for each image available. This is the + information we want to create the |CL| Basic VM. Since we are creating a + |CL| Basic VM, highlight the `clear-linux-project:clear-linux-os:basic:` + string and copy it to your clipboard. Use the label + `latest` instead of referencing a specific version. + +#. Create the new |CL| Basic VM. Run the :command:`az vm create ...` + command using the URN `:clear-linux-project:clear-linux-os:basic:latest` + that we copied to the clipboard on the previous step. + + .. code-block:: bash + + az vm create --resource-group ClearResourceGroup --name ClearVM --image clear-linux-project:clear-linux-os:basic:latest --generate-ssh-keys + + .. note:: + + If you have already defined your public/private SSH key pair and they + are stored in your :file:`$HOME/.ssh` directory, you do not need to + include the *--generate-ssh-keys* option. + + The output from this command will look similar to this output, where + [user] is your user name: + + .. code-block:: console + + SSH key files '/home/[user]/.ssh/id_rsa' and '/home/[user]/.ssh/id_rsa.pub' have been generated under ~/.ssh to allow SSH access to the VM. If using machines without permanent storage, back up your keys to a safe location. + + running... + + { + "fqdns": "", + "id": "/subscriptions/{unique-id}/resourceGroups/ClearResourceGroup/providers/Microsoft.Compute/virtualMachines/ClearVM", + "location": "westus", + "macAddress": "00-0D-3A-37-C7-59", + "powerState": "VM running", + "privateIpAddress": "10.0.0.4", + "publicIpAddress": "13.91.4.245", + "resourceGroup": "ClearResourceGroup", + "zones": "" + } + + Take note of the public IP address from the output. + +#. Login into the new |CL| Basic VM, run the :command:`ssh` command with the + public IP address obtained from the previous step as shown: + + .. code-block:: bash + + ssh [user]@13.91.4.245 + + You may see the following message about the authenticity of the host. If + this appears, type `yes` to proceed connecting to your new |CL| VM. + + .. code-block:: console + + The authenticity of host '13.91.4.245 (13.91.4.245)' can't be established. + RSA key fingerprint is SHA256:{unique-number}. + Are you sure you want to continue connecting (yes/no)? yes + Warning: Permanently added '13.91.4.245' (RSA) to the list of known hosts. + + [user]@ClearVM ~ $ + + You are now logged into your new |CL| VM as [user], where [user] is your + user name. To check which software bundles are included with + this VM image, run the :command:`sudo swupd bundle-list` command inside the + VM: + + .. code-block:: bash + + sudo swupd bundle-list + + The output shown should be similar to: + + .. code-block:: console + + swupd-client bundle list 3.14.1 + Copyright (C) 2012-2017 Intel Corporation + + bootloader + editors + kernel-hyperv + network-basic + openssh-server + os-cloudguest-azure + os-core + os-core-update + perl-basic + python-basic + python3-basic + storage-utils + sysadmin-basic + Current OS version: 19600 + + When you are finished using your new |CL| VM, type :command:`exit` to close + the :command:`SSH` terminal and logout. + +Stop and deallocate the |CL| VM and resources +********************************************* + +When you finish using your new |CL| instance, you must stop the VM and +deallocate the resources in your resource group. If you only stop a VM, the OS +image shuts down but the resources associated with it in your resource group +remain allocated and incurring charges. For instance, if you stop and then +later start the VM using the :command:`az vm start...` without deallocating +the resources, the IP address is retained and you can access the VM using that +same IP address. To release the resources associated with the VM and stop +incurring charges for them, you must deallocate the resources as well. + +#. At the command prompt, enter the :command:`az vm stop...` command as + follows: + + .. code-block:: bash + + az vm stop --resource-group ClearResourceGroup --name ClearVM + + This will stop the VM and then output text similar to: + + .. code-block:: console + + { + "endTime": "2017-12-13T23:04:02.346676+00:00", + "error": null, + "name": "{unique-name}", + "startTime": "2017-12-13T23:03:59.018536+00:00", + "status": "Succeeded" + } + +#. Once the VM stops, deallocate the VM resources to stop incurring + charges for the |CL| instance. Enter the following command: + + .. code-block:: console + + az vm deallocate --resource-group ClearResourceGroup --name ClearVM + +**Congratulations!** You are up and running with |CL| on MS Azure using the +Azure CLI 2.0 command line tools. + +Next steps +********** + +To see use cases you can fulfill with your |CL| instance, visit our +:ref:`tutorials ` section. + +For additional information visit the |CL| +`Azure Partner Mini Case Study`_ and the `Azure Partner Datasheet`_. + +To learn more about the MS Azure CLI 2.0 tool and options that are available, +visit the `MS Azure documentation and tutorials`_ website. + +Related topics +************** + +* :ref:`gce` +* :ref:`aws-web` +* :ref:`clr-digitalocean` + +.. _`Azure Portal`: + https://portal.azure.com + +.. _`MS Azure free account`: + https://azure.microsoft.com/en-us/free/ + +.. _`MS Azure documentation and tutorials`: + https://docs.microsoft.com/en-us/cli/azure/overview?view=azure-cli-latest + +.. _`MS Azure Install Azure CLI tutorial`: + https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest + +.. _`Azure Resource Manager overview`: + https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-overview + +.. _Azure Partner Datasheet: + http://download.microsoft.com/download/D/9/E/D9E22342-96D9-4455-BB15-99A1AF514DDD/Microsoft%20Azure%20Partner%20Datasheet%20-%20Intel%20Clear%20Linux.pdf + +.. _Azure Partner Mini Case Study: + http://download.microsoft.com/download/D/9/E/D9E22342-96D9-4455-BB15-99A1AF514DDD/Microsoft%20Azure%20Partner%20Mini%20Case%20Study%20-%20Intel%20Clear%20Linux.pdf diff --git a/_sources/get-started/cloud-install/digitalocean.rst.txt b/_sources/get-started/cloud-install/digitalocean.rst.txt new file mode 100644 index 000000000..142b01bc9 --- /dev/null +++ b/_sources/get-started/cloud-install/digitalocean.rst.txt @@ -0,0 +1,364 @@ +.. _clr-digitalocean: + +|CL-ATTR| on DigitalOcean\* +########################### + +This guide explains how to import a |CL-ATTR| image to `DigitalOcean`_ +and then deploy a VM instance. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* Set up a DigitalOcean account. + +* Create an SSH key on your client system that you will use to remote + into the VM. You can follow the `DigitalOcean's SSH key creation guide`_. + +Add |CL| Image to DigitalOcean +****************************** + +Before you can deploy a |CL| instance on DigitalOcean, you need to add +an image since it's currently not available in its marketplace. +You can use our pre-built image or you can build your own custom image. + +Use pre-built image +=================== + +.. note:: + Our cloud images (`clear--digitalocean.img.gz`) for + DigitalOcean are considered **Beta** until we finish setting up our + automated testing of the images against the DigitalOcean environment. + Apart from the initial version, `clear-31870-digitalocean.img.gz`_, we + cannot guarantee that future versions and updates to the initial + version is problems-free. + +.. bktan8 - commented out until the images are fully validated by DevOps + and go live on official Downloads page. + Go to the |CL| `downloads` page and copy the URL for the + **Cloud Guest Legacy** image. See Figure 1. + figure:: ../../_figures/digitalocean/01-digitalocean.png + :scale: 100 % + :alt: Cloud Guest Legacy image + Figure 1: Cloud Guest Legacy image + +#. Copy the URL for `clear-31870-digitalocean.img.gz`_. + +#. Skip to the `Upload image`_ section. + +Build custom image +================== + +For this method, you need a |CL| system to generate an image using +the *clr-installer* tool. + +#. Add the *clr-installer* and *gzip* bundles. + + .. code-block:: bash + + sudo swupd bundle-add clr-installer gzip + +#. Create an image configuration YAML file. + See `Installer YAML Syntax`_ for more information on the clr-installer + configuration YAML syntax. + + .. code-block:: bash + + cat > clear-digitalocean.yaml << EOF + #clear-linux-config + + # switch between aliases if you want to install to an actual block device + # i.e /dev/sda + block-devices: [ + {name: "bdevice", file: "clear-digitalocean.img"} + ] + + targetMedia: + - name: \${bdevice} + size: "800M" + type: disk + children: + - name: \${bdevice}1 + fstype: ext4 + options: -O ^64bit + mountpoint: / + size: "800M" + type: part + + bundles: [ + bootloader, + openssh-server, + os-cloudguest, + os-core, + os-core-update, + systemd-networkd-autostart + ] + + autoUpdate: false + postArchive: false + postReboot: false + telemetry: false + legacyBios: true + + keyboard: us + language: en_US.UTF-8 + kernel: kernel-kvm + + version: 0 + EOF + + The settings that are required in order to make the image + work on DigitalOcean are: + + * *os-cloudguest* bundle: Allows DigitalOcean to provision the + image with settings such as hostname, resource (CPU, memory, + storage) sizing, and user creation. + * *legacyBios: true*: The image need to support legacy BIOS to boot + on DigitalOcean. + +#. Generate the image. + + .. code-block:: bash + + sudo clr-installer -c clear-digitalocean.yaml + + The output should be :file:`clear-digitalocean.img`. + +#. Compress the image with *gzip* to save bandwidth and upload time. + + .. code-block:: bash + + gzip clear-digitalocean.img + + The output should be :file:`clear-digitalocean.img.gz`. + + .. note:: + + *bzip2* is the other compression format DigitalOcean accepts. + +Upload image +============ + +#. On DigitalOcean's website, go to :menuselection:`MANAGE --> Images + --> Custom Images`. + + See Figure 1. + + .. figure:: ../../_figures/digitalocean/01-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Upload custom images + + Figure 1: DigitalOcean - Upload custom images + +#. Select an upload method. + + * To import a pre-built image from |CL| `downloads`_, click + :guilabel:`Import via URL`, paste the URL, and click :guilabel:`Next`. + + See Figure 2. + + .. figure:: ../../_figures/digitalocean/02-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Import via URL + + Figure 2: DigitalOcean - Import via URL + + * To import your custom image, click :guilabel:`Upload Image` + and select the image from your client system. + +#. Set the :guilabel:`DISTRIBUTION` type as :guilabel:`Unknown`. + + See Figure 3. + + | + +#. Choose your preferred datacenter region. + +#. Click :guilabel:`Upload Image`. + Wait for the upload to finish before proceeding to the next section. + + .. figure:: ../../_figures/digitalocean/03-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Set image distribution type, region, tag + + Figure 3: DigitalOcean - Set image distribution type, region, tag + +Create and Deploy a |CL| Instance +********************************* + +#. On DigitalOcean's website, go to :menuselection:`MANAGE --> Droplets` + and then click :guilabel:`Create Droplet`. + + See Figure 4. + + .. figure:: ../../_figures/digitalocean/04-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Create Droplet + + Figure 4: DigitalOcean - Create Droplet + +#. Under :guilabel:`Choose an image`, select :guilabel:`Custom images`. + + See Figure 5. + + | + +#. Select your uploaded |CL| image. + + .. figure:: ../../_figures/digitalocean/05-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Choose custom image + + Figure 5: DigitalOcean - Choose custom image + +#. Under :guilabel:`Choose a plan`, select your preferred plan. + + See Figure 6. + + .. figure:: ../../_figures/digitalocean/06-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Choose plan + + Figure 6: DigitalOcean - Choose plan + +#. Under :guilabel:`Choose a datacenter region`, select the region you + want the instance deployed to. + + See Figure 7. + + .. figure:: ../../_figures/digitalocean/07-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Choose datacenter region + + Figure 7: DigitalOcean - Choose datacenter region + +#. Assign SSH key to default *clear* user. + + By default, the user *clear* will be added to the instance and + an SSH key must be assigned to this account. + + a. Under :guilabel:`Authentication`, select :guilabel:`SSH keys` and + click :guilabel:`New SSH Key`. + + See Figure 8. + + .. figure:: ../../_figures/digitalocean/08-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Add SSH key + + Figure 8: DigitalOcean - Add SSH key + + #. Copy and paste your SSH public key in the :guilabel:`SSH key content` + text field. + + See Figure 9. + + | + + #. Give a name for the SSH key. + + #. Click :guilabel:`Add SSH Key`. + + .. figure:: ../../_figures/digitalocean/09-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Add public SSH key + + Figure 9: DigitalOcean - Add public SSH key + + .. note:: + + If you need to add additional users to the instance, you can do that + wth a YAML-formatted *cloud-config* user data script. + For more information on cloud-config scripting for |CL|, see our + subset implementation of cloud-init called `micro-config-drive`_. + + a. Under :guilabel:`Select additional options`, + select :guilabel:`User data`. + + #. Add your YAML-formatted *cloud-config* user data in the field below. + Here is a simple example: + + .. code-block:: console + + #cloud-config + + users: + - name: foobar + gecos: Foo B. Bar + homedir: /home/foobar + ssh-authorized-keys: + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC65OihS4UP27xKOpqKWgT9 + mgUNwEqhUEpTGGvopjT65Y/KU9Wfj6EYsdGzbHHcMUhFSTxAUAV4POH5d0LR + MzI7sXMe528eCmpm2fTOHDDkVrurP/Jr2bjB9IrfSMkBYS8uRd603xNg/RDq + EH3XzVeEDdEAxoej0mzsJ2UkQSBi+PD1J7JeCbX2lsb55x2yWzaUa+BTai7+ + /TU4UabTRDtFTiXhx2rImSSguofDISVll6W5TTzbGmHdoEI+8DIAFU66ZgC9 + SzL75LQi1YAWlj5XG+dXhN6Ev6KFM34odvWdxeCj0jcx5UIXcieBfOuLujEH + dVybwNLG7hxDy/67BA1j username@mydomain.com + sudo: + - [ "ALL=(ALL) NOPASSWD:ALL" ] + +#. Under :guilabel:`Finalize and create`: + + a. Set the number of instances you want to deploy. + + #. Set the hostname for the instance. + + See Figure 10. + + | + +#. Click :guilabel:`Create Droplet` to deploy the instance. + + .. figure:: ../../_figures/digitalocean/10-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Finalize and create Droplet + + Figure 10: DigitalOcean - Finalize and create Droplet + +Connect to Your |CL| Instance +***************************** + +#. On DigitalOcean's website, go to :menuselection:`MANAGE --> Droplets`. + + See Figure 11. + + | + +#. Get the IP address of your |CL| instance. + + .. figure:: ../../_figures/digitalocean/11-digitalocean.png + :scale: 100 % + :alt: DigitalOcean - Get Droplet IP address + + Figure 11: DigitalOcean - Get Droplet IP address + +#. On your client system, SSH into your instance. + For example: + + .. code-block:: bash + + ssh clear@ -i + + +Related topics +************** + +* :ref:`gce` +* :ref:`azure` +* :ref:`aws-web` + +.. _clear-31870-digitalocean.img.gz: https://cdn.download.clearlinux.org/releases/31870/clear/clear-31870-digitalocean.img.gz + +.. _DigitalOcean: https://www.digitalocean.com/ + +.. _DigitalOcean's SSH key creation guide: https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/create-with-openssh/ + +.. _downloads: https://clearlinux.org/downloads + +.. _Installer YAML Syntax: + https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md + +.. _micro-config-drive: https://github.com/clearlinux/micro-config-drive diff --git a/_sources/get-started/cloud-install/gce.rst.txt b/_sources/get-started/cloud-install/gce.rst.txt new file mode 100644 index 000000000..431ecb175 --- /dev/null +++ b/_sources/get-started/cloud-install/gce.rst.txt @@ -0,0 +1,265 @@ +.. _gce: + +|CL-ATTR| on Google Cloud Platform\* +#################################### + +This page explains the steps to create a virtual machine instance of +|CL-ATTR| on `Google Cloud Platform`_ (:abbr:`GCP (Google Cloud Platform)`). + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* Set up a Google account and a GCP billing account. + +* Generate and install a user SSH key in the Linux PCs that will connect to + the VMs in GCP. + +Setup |CL| VM on GCP +******************** + +#. Sign in to your Google\* account on the + `Google Cloud Console `_: + + .. figure:: /_figures/gce/00-sign-in.png + :scale: 50 % + :alt: Sign in to Google services + + Figure 1: Google sign in screen + +#. Google Cloud Platform uses **Projects** to manage resources. + Select or create a new project for hosting the |CL| VM. + + .. note:: + + Refer to the + `Quickstart Using a Linux VM `_ + guide to learn about the process of creating VM instances on GCP. + +#. Navigate to the latest |CL| + `release folder `_ + to view the currently released :abbr:`GCE (Google Compute Engine\*)` + image, and download the :file:`clear--gce.tar.gz` + image archive. + + You don't need to uncompress the image archive, the intact file will + be uploaded to the Google Cloud Storage later. + +#. Create a *Storage Bucket* for hosting the |CL| image source archive + downloaded in the previous step: + + * Click the :guilabel:`Navigation menu` icon on the upper left screen menu. + + * Select the :menuselection:`Storage` item from the sidebar on the left. + You will be sent to the Storage Browser tool or the Cloud Storage + overview page. + + .. figure:: /_figures/gce/01-cloud-storage.png + :scale: 50 % + :alt: Browse Google Cloud Storage + + Figure 2: Browse Google Cloud Storage + + .. note:: + You may need to create a billing account and link to this project + before you create a bucket. + + .. figure:: /_figures/gce/02-storage-browser.png + :scale: 50 % + :alt: Cloud Storage Browser tool + + Figure 3: Cloud Storage Browser tool + + * Click the :guilabel:`CREATE BUCKET` button to enter the bucket creation tool. + The bucket name must be unique because buckets in the Cloud Storage share + a single global namespace. + + Leave the remaining options set to the defaults, and click the + :guilabel:`Create` button at the bottom to create a *Bucket*. + + .. figure:: /_figures/gce/03-create-bucket.png + :scale: 50 % + :alt: Set a unique bucket name + + Figure 4: Set bucket name + +#. Once the bucket is created, click the :guilabel:`Upload files` button + on the Bucket details page to upload the |CL| GCE image archive + to the named bucket: + + .. figure:: /_figures/gce/04-bucket-created.png + :scale: 50 % + :alt: Cloud Storage bucket is available for storing objects + + Figure 5: Cloud Storage bucket + + .. figure:: /_figures/gce/10-image-upload.png + :scale: 50 % + :alt: Uploading the image source archive file + + Figure 6: Uploading the image source archive file + + .. figure:: /_figures/gce/11-bucket-uploaded.png + :scale: 50 % + :alt: Image archive imported complete + + Figure 7: Importing complete + +#. Browse the Compute Engine Image library page: + + * Click the :guilabel:`Navigation menu` icon on the upper left screen menu. + + * Select the :menuselection:`Compute Engine --> Images` from the side bar + on the left. + + .. figure:: /_figures/gce/20-gce-image.png + :scale: 50 % + :alt: Go to Google Compute Engine Image library + + Figure 8: Image library + +#. On the Compute Engine Image library page, click the + :guilabel:`[+] CREATE IMAGE` menu item to create a custom image: + + .. figure:: /_figures/gce/20-image-library.png + :scale: 50 % + :alt: Create a Google Compute Engine image + + Figure 9: Create image + +#. In the VM image creation page, change the image source type to + *Cloud Storage file*. + +#. Under :guilabel:`Source`, select :guilabel:`Browse`. + +#. Locate the :file:`clear--gce.tar.gz` file, + and click :guilabel:`Select`. + + .. figure:: /_figures/gce/21-create-image.png + :scale: 50 % + :alt: Create the image using the imported image archive object + + Figure 10: Create image using imported object + + Accept all default options, and click the :guilabel:`Create` button + at the bottom to import the Clear Linux GCE image to the image library. + + .. figure:: /_figures/gce/22-image-list.png + :scale: 50 % + :alt: Clear Linux Compute Engine image is created + + Figure 11: Image is created + +#. After the |CL| image is imported, you can launch a VM instance running + |CL|: + + * Click the :guilabel:`Navigation menu` icon on the upper left screen menu. + + * Select :menuselection:`Compute Engine --> VM Instances` from the side bar + on the left. + + .. figure:: /_figures/gce/30-vm-instances.png + :scale: 50 % + :alt: Go to VM instances catalog + + Figure 12: VM instances catalog + +#. If no VM instance was created in this project, you will be prompted to + create one. + +#. Alternatively, click the :guilabel:`CREATE INSTANCE` button on the VM + instances page to create a VM instance. + + .. figure:: /_figures/gce/30-vm-none.png + :scale: 50 % + :alt: Prompt for VM creation + + Figure 13: VM creation + + .. figure:: /_figures/gce/30-vm-catalog.png + :scale: 50 % + :alt: List of VM instances + + Figure 14: VM instances list + + * Under :guilabel:`Region`, choose a region based on the + `Best practices for Compute Engine regions selection`_. + + * Under :guilabel:`Boot disk`, click the :guilabel:`Change` button. + + .. figure:: /_figures/gce/30-create-vm.png + :scale: 50 % + :alt: Use custom image while creating Clear Linux VM instance + + Figure 15: Use custom image + + * Select the :menuselection:`Custom images` tab for using Clear Linux OS GCE image. + + .. figure:: /_figures/gce/31-select-boot-disk.png + :scale: 50 % + :alt: Select Clear Linux boot disk to create a VM instance + + Figure 16: Select Clear Linux boot disk to create a VM instance + + * Scroll down to the bottom of the VM instance creation page, + expand the :guilabel:`Management, security, disks, networking, sole tenancy` + group. + + .. figure:: /_figures/gce/40-clear-vm-security.png + :scale: 50 % + :alt: Clear Linux requires setting up SSH keys + + Figure 17: Set up SSH keys + + .. note:: + |CL| does not allow SSH login with a root account by default. + As a result, you must configure the VM instance with your + SSH public key, so that you are able to access it remotely. + + Refer to :ref:`security` for more details. + + * Click the :menuselection:`Security` tab, copy and paste your SSH public key: + + .. figure:: /_figures/gce/40-ssh-key.png + :scale: 50 % + :alt: Set SSH key for remote login + + Figure 18: Set SSH key for remote login + + .. note:: + + The username is assigned from characters preceding ``@`` in the email + address, included in the SSH key. + + * Click the :guilabel:`Create` button to create the |CL| VM. + +#. The Clear Linux VM instance is created and assigned a public IP address: + + .. figure:: /_figures/gce/41-vm-created.png + :scale: 50 % + :alt: Clear Linux VM instance is created and started + + Figure 19: Clear Linux VM instance is created and started + +#. You can now SSH login to the VM using the IP address obtained in the + previous step, and the username associated with the SSH public key: + + .. figure:: /_figures/gce/42-ssh-vm.png + :scale: 50 % + :alt: SSH login to the Clear Linux VM + + Figure 20: SSH login to Clear Linux VM + +Related topics +************** + +* :ref:`azure` +* :ref:`aws-web` +* :ref:`clr-digitalocean` + +.. _Google Cloud Platform: https://cloud.google.com/ + +.. _Best practices for Compute Engine regions selection: https://cloud.google.com/solutions/best-practices-compute-engine-region-selection diff --git a/_sources/get-started/cloud-install/import-clr-aws.rst.txt b/_sources/get-started/cloud-install/import-clr-aws.rst.txt new file mode 100644 index 000000000..6433da4f3 --- /dev/null +++ b/_sources/get-started/cloud-install/import-clr-aws.rst.txt @@ -0,0 +1,511 @@ +.. _import-clr-aws: + +Import Clear Linux Image and Launch Instance on AWS +################################################### + +Clear Linux is available on the AWS marketplace. However, it may not +be the latest version because we only update the marketplace on a +periodic basis, as often as weekly or but maybe monthly as well. +If you want to use the latest release from us or upload your own +custom image, follow this guide. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* You are familiar with AWS and how to use it + +Download or create a |CL| image for AWS +*************************************** + +Obtain an AWS |CL| image using one of these methods. + +Download pre-built image +======================== +#. Go to the `Downloads`_ page and download the + *Amazon\* Web Services (AWS)* image. + +#. Uncompress it. + +Create a custom image using clr-installer +========================================= +#. On a |CL| system, open a terminal. + +#. Install the `clr-installer` bundle. + + .. code-block:: bash + + sudo swupd bundle-add clr-installer + +#. Download a sample `aws.yaml`_ configuration file. + +#. Make changes to the configuration file as needed. + See `Installer YAML Syntax`_ for more information on clr-installer + configuration YAML syntax. + +#. Download the `AWS image post-install script`_ and make it executable. + +#. Produce an image with clr-installer. + + .. code-block:: bash + + clr-installer --template $PWD/aws.yaml + +Create an S3 bucket +******************* + +#. Log into AWS. + +#. Go to :guilabel:`Services`, :guilabel:`Storage`, and select :guilabel:`S3`. + See Figure 1. + + .. figure:: ../../_figures/aws/import-clr-aws-01.png + :scale: 70% + :alt: AWS Services - S3 Management Console + + Figure 1: AWS Services - S3 Management Console + +#. Click :guilabel:`+ Create bucket`. + + .. figure:: ../../_figures/aws/import-clr-aws-02.png + :scale: 70% + :alt: AWS S3 - Create bucket + + Figure 2: AWS S3 - Create bucket + +#. Set a bucket name and select a region. + See Figure 3. + + .. figure:: ../../_figures/aws/import-clr-aws-03.png + :scale: 70% + :alt: AWS S3 - Create bucket - Set bucket name and region + + Figure 3: AWS S3 - Create bucket - Set bucket name and region + +#. Leave the :guilabel:`Configure options` and :guilabel:`Set permissions` + settings as is or configure as desired. See Figure 4 and 5. + + .. figure:: ../../_figures/aws/import-clr-aws-04.png + :scale: 70% + :alt: AWS S3 - Create bucket - Configure options + + Figure 4: AWS S3 - Create bucket - Configure options + + .. figure:: ../../_figures/aws/import-clr-aws-05.png + :scale: 70% + :alt: AWS S3 - Create bucket - Set permissions + + Figure 5: AWS S3 - Create bucket - Set permissions + +#. At the :guilabel:`Review` screen, click :guilabel:`Create bucket`. + + .. figure:: ../../_figures/aws/import-clr-aws-06.png + :scale: 70% + :alt: AWS S3 - Create bucket - Review + + Figure 6: AWS S3 - Create bucket - Review + + The created bucket should appear. See Figure 7. + + .. figure:: ../../_figures/aws/import-clr-aws-07.png + :scale: 70% + :alt: AWS S3 - Created bucket + + Figure 7: AWS S3 - Created bucket + +Upload the |CL| image into the bucket +************************************* + +#. Click on the bucket. + See Figure 8. + + .. figure:: ../../_figures/aws/import-clr-aws-08.png + :scale: 70% + :alt: AWS S3 - Select bucket + + Figure 8: AWS S3 - Select bucket + +#. Click :guilabel:`Upload`. + See Figure 9. + + .. figure:: ../../_figures/aws/import-clr-aws-09.png + :scale: 70% + :alt: AWS S3 - Upload + + Figure 9: AWS S3 - Upload + +#. Click :guilabel:`Add files` and select the |CL| image file to upload. + See Figure 10. + + .. figure:: ../../_figures/aws/import-clr-aws-10.png + :scale: 70% + :alt: AWS S3 - Add files + + Figure 10: AWS S3 - Add files + +#. Click :guilabel:`Next`. Leave remaining settings as is or set as desired. + See Figure 11, Figure 12, and Figure 13. + + .. figure:: ../../_figures/aws/import-clr-aws-11.png + :scale: 70% + :alt: AWS S3 - Add files + + Figure 11: AWS S3 - Add files + + .. figure:: ../../_figures/aws/import-clr-aws-12.png + :scale: 70% + :alt: AWS S3 - Set permissions + + Figure 12: AWS S3 - Set permissions + + .. figure:: ../../_figures/aws/import-clr-aws-13.png + :scale: 70% + :alt: AWS S3 - Set properties + + Figure 13: AWS S3 - Set properties + +#. Click :guilabel:`Upload` to upload the image. + See Figure 14. + + .. figure:: ../../_figures/aws/import-clr-aws-14.png + :scale: 70% + :alt: AWS S3 - Upload + + Figure 14: AWS S3 - Upload + +Add a user to IAM with AWS_CLI privilege +**************************************** + +#. Go to :guilabel:`Services`, :guilabel:`Security, Identity, & Compliance`, + and select :guilabel:`IAM`. + See Figure 15. + + .. figure:: ../../_figures/aws/import-clr-aws-15.png + :scale: 70% + :alt: AWS Services - IAM + + Figure 15: AWS Services - IAM + +#. On the left navigation bar under :guilabel:`Access management`, + select :guilabel:`Users`. + See Figure 16. + + .. figure:: ../../_figures/aws/import-clr-aws-16.png + :scale: 70% + :alt: AWS AIM - Access management + + Figure 16: AWS AIM - Access management + +#. Click :guilabel:`Add user`. + See Figure 17. + + .. figure:: ../../_figures/aws/import-clr-aws-17.png + :scale: 70% + :alt: AWS AIM - Add user + + Figure 17: AWS AIM - Add user + +#. Under the :guilabel:`Set user details` section, enter a user name. + See Figure 18. + + .. figure:: ../../_figures/aws/import-clr-aws-18.png + :scale: 70% + :alt: AWS AIM - Enter user name and select access type + + Figure 18: AWS AIM - Enter user name and select access type + +#. Under the :guilabel:`Select AWS access type` section, + checkmark :guilabel:`Programmatic access`. + See Figure 18. + +#. Click :guilabel:`Next: Permissions`. + +#. Under :guilabel:`Set permissions`, select :guilabel:`Add user to group`. + See Figure 19. + + .. figure:: ../../_figures/aws/import-clr-aws-19.png + :scale: 70% + :alt: AWS AIM - Set user permissions + + Figure 19: AWS AIM - Set user permissions + +#. Under :guilabel:`Add user to group`, enter `AWS_CLI` into search window. + Checkmark :guilabel:`AWS_CLI`. + See Figure 19. + +#. Click :guilabel:`Next: Tags`. + +#. Click :guilabel:`Next: Review`. + +#. Click :guilabel:`Create user`. + See Figure 20. + + .. figure:: ../../_figures/aws/import-clr-aws-20.png + :scale: 70% + :alt: AWS AIM - Create user + + Figure 20: AWS AIM - Create user + +#. After the user is successfully added, save the :guilabel:`Access key ID` + and the :guilabel:`Secret access key`. These will be used when setting up + the AWS CLI tool at a later step. + See Figure 21. + + .. figure:: ../../_figures/aws/import-clr-aws-21.png + :scale: 70% + :alt: AWS AIM - Access key ID and secret access key + + Figure 21: AWS AIM - Access key ID and secret access key + +#. Click :guilabel:`Close`. + +Install and configure the AWS CLI tool on your system +***************************************************** + +#. To install the tool on |CL|, simply run: + + .. code-block:: bash + + sudo swupd bundle-add cloud-api + + .. note: + + If you are using a different OS, follow the + `Installing the AWS CLI version 2`_ guide. + +#. Configure it with your security credentials, default region, + and default output format. See `Configuring the AWS CLI`_ for more information. + + .. code-block:: bash + + aws configure + + Below is an example (using the security credentials that was created in + the previous section): + + .. code-block:: console + + AWS Access Key ID [None]: AKIA5LEGQPQ3EUB3JMS7 + AWS Secret Access Key [None]: EcvbWpWr+Gp7NhBoVEacwR3EifzN7xTTg8B1PHvO + Default region name [None]: us-west-2 + Default output format [None]: json + +#. Verify your credentials are good. + + .. code-block:: bash + + aws iam list-access-keys + + If you get something like the example below, then make sure you set your + system date and time properly. + + .. code-block:: console + + An error occurred (SignatureDoesNotMatch) when calling the ListAccessKeys operation: Signature expired: 20200305T153154Z is now earlier than 20200305T231847Z (20200305T233347Z - 15 min.) + +Import a snapshot of the |CL| image +*********************************** + +#. Create a :file:`container.json` with the description of the image to import. + Specify the name of the S3 bucket that was created earlier for the + `S3Bucket` field and the name of |CL| image that was uploaded to the S3 bucket + for the `S3Key`. + + Here's an example: + + .. code-block:: console + + { + "Description": "My Clear Linux AWS 32400 Image", + "Format": "raw", + "UserBucket": { + "S3Bucket": "my-clearlinux-bucket", + "S3Key": "clear-32400-aws.img" + } + } + +#. Import a snapshot of the image. + + .. code-block:: bash + + aws ec2 import-snapshot \ + --description "My Clear Linux AWS 32400 Snapshot" \ + --disk-container file://container.json + + You should get an output similar this example: + + .. code-block:: console + + { + "Description": "My Clear Linux AWS 32400 Snapshot", + "ImportTaskId": "import-snap-00fa9ccd98e9b8378", + "SnapshotTaskDetail": { + "Description": "My Clear Linux AWS 32400 Snapshot", + "DiskImageSize": 0.0, + "Format": "RAW", + "Progress": "3", + "Status": "active", + "StatusMessage": "pending", + "UserBucket": { + "S3Bucket": "my-clearlinux-bucket", + "S3Key": "clear-32400-aws.img" + } + } + } + +#. Using the `ImportTaskId` from the previous step, check the status + of the import. For example: + + .. code-block:: bash + + snapshot_id=$(aws ec2 describe-import-snapshot-tasks \ + --import-task-ids "import-snap-00fa9ccd98e9b8378" \ + | grep SnapshotId | awk -F '"' '{print $4}') + + Wait for the `Status` field to show `completed` before proceeding. + + The resulting `snapshot_id` will be used to create an AMI in + the next section. + +Create an AMI from the snapshot +******************************* + +There are 2 methods to create an AMI from the snapshot. + +* *AWS CLI Method*: + + .. code-block:: bash + + aws ec2 register-image \ + --name "My-Clear-Linux-32400-AMI" \ + --description "My Clear Linux 32400 AMI" \ + --architecture x86_64 \ + --virtualization-type hvm \ + --ena-support \ + --root-device-name "/dev/sda1" \ + --block-device-mappings "[ + { + \”Deviceame\": \"/dev/sda1\", + \"Ebs\": { + \"SnapshotId\": \"$snapshot_id\" + } + } + ]" + +* *GUI Method*: + + #. Go to :guilabel:`Services`, :guilabel:`Compute`, and select + :guilabel:`EC2`. + See Figure 22. + + .. figure:: ../../_figures/aws/import-clr-aws-22.png + :scale: 70% + :alt: AWS Services - EC2 + + Figure 22: AWS Services - EC2 + + #. Click :guilabel:`Snapshots`. + See Figure 23. + + .. figure:: ../../_figures/aws/import-clr-aws-23.png + :scale: 70% + :alt: AWS Services - Snapshots + + Figure 23: AWS Services - Snapshots + + #. Locate the snaphot using the `Snapshot ID`. + See Figure 24. + + .. figure:: ../../_figures/aws/import-clr-aws-24.png + :scale: 70% + :alt: AWS Services - Snapshots + + Figure 24: AWS Services - Snapshots + + #. Right-click it and select :guilabel:`Create Image`. + + #. Configure as follows: + + * Enter the name in the :guilabel:`Name` field + * Enter the description in the :guilabel:`Description` field + * Set the :guilabel:`Architecture` as `x86_64` + * Set the :guilabel:`Virtualization type` as `Hardware-assisted virtualization` + * Set the :guilabel:`Root device name` as `/dev/sda1` + + See Figure 25. + + .. figure:: ../../_figures/aws/import-clr-aws-25.png + :scale: 70% + :alt: AWS Services - Snapshots + + Figure 25: AWS Services - Snapshots + + #. Click :guilabel:`Create`. + +Launch an instance +****************** + +#. Go to :guilabel:`Services`, :guilabel:`Compute`, and select + :guilabel:`EC2`. + See Figure 26. + + .. figure:: ../../_figures/aws/import-clr-aws-26.png + :scale: 70% + :alt: AWS Services - EC2 + + Figure 26: AWS Services - EC2 + +#. Click the :guilabel:`Launch Instance` dropdown and select + :guilabel:`Launch Instance`. + See Figure 27. + + .. figure:: ../../_figures/aws/import-clr-aws-27.png + :scale: 70% + :alt: AWS Services - Launch instance + + Figure 27: AWS Services - Launch instance + +#. On the left navigation bar, select :guilabel:`My AMIs`. + See Figure 28. + + .. figure:: ../../_figures/aws/import-clr-aws-28.png + :scale: 70% + :alt: AWS Services - Select AMI + + Figure 28: AWS Services - Select AMI + +#. Find your AMI and click :guilabel:`Select`. + +#. From here onward, configure the details of your instance as desired + and launch it. + +Connect to your |CL| instance +***************************** + +#. Follow these steps to `connect to your instance`_. + +Related topics +************** + +* :ref:`azure` +* :ref:`gce` +* :ref:`clr-digitalocean` + +.. _Downloads: + https://clearlinux.org/downloads +.. _aws.yaml: + https://cdn.download.clearlinux.org/current/config/image/aws.yaml +.. _AWS image post-install script: + https://cdn.download.clearlinux.org/current/config/image/aws-disable-root.sh +.. _Installing the AWS CLI version 2: + https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html +.. _Configuring the AWS CLI: + https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html +.. _connect to your instance: + https://docs.01.org/clearlinux/latest/get-started/cloud-install/aws-web.html#connect-to-your-clear-linux-os-basic-instance +.. _Installer YAML Syntax: + https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md + diff --git a/_sources/get-started/cloud-install/qingcloud.rst.txt b/_sources/get-started/cloud-install/qingcloud.rst.txt new file mode 100644 index 000000000..3a5c7106f --- /dev/null +++ b/_sources/get-started/cloud-install/qingcloud.rst.txt @@ -0,0 +1,262 @@ +.. _qingcloud: + +|CL-ATTR| on QingCloud\* +########################### + +This tutorial describes how to create and launch a Clear Linux OS instance +from the QingCloud console. + +.. contents:: + :local: + :depth: 1 + + +Prerequisites +************* + +This tutorial assumes that you have completed the following configuration steps: + +* Your environment can run SSH to access remote Clear Linux OS virtual hosts. +* You know the absolute path where the browser downloaded the file. +* You have set up a user account for QingCloud and that the account is + enabled and logged in to the QingCloud console. To learn more about + QingCloud and setting up an account, please visit QingCloud's official + `website `_. + + +Select and start |CL| virtual host with QingCloud console +********************************************************* + +#. Select :guilabel:`计算>主机` (Compute>Host) in the main menu of the + QingCloud console and click the :guilabel:`创建` (Create) option. + + .. figure:: /_figures/qingcloud/QingCloud-1.png + :scale: 50 % + :alt: QingCloud console + +#. On the host creation page, first click the :guilabel:`系统` (System) option, + click the |CL| icon on the far right. Click the :guilabel:`下一步` (Next) + button to continue. + + .. figure:: /_figures/qingcloud/QingCloud-2.png + :scale: 50 % + :alt: Select Clear Linux OS to create virtual host + + Select |CL| to create a virtual host + +#. In the configuration selection interface, you can configure the + number of CPU cores, memory size, and the storage backup method. + For demonstration purposes, we will choose the default configuration. + Click the :guilabel:`下一步` (Next) button to go to the network settings + interface. + + .. figure:: /_figures/qingcloud/QingCloud-3.png + :scale: 50 % + :alt: Configuration selection + + Configuration selection + +#. Select :guilabel:`基础网络` (Basic Network) in the network settings + interface. + + .. figure:: /_figures/qingcloud/QingCloud-4.png + :scale: 50 % + :alt: Network settings + + Network Settings + +#. In the basic information setting interface, you need to enter the virtual + host name and set the SSH key login method. + +Create an SSH key (Optional) +============================ + +#. If you haven't created an SSH key before, click the :guilabel:`创建一个` + (Create one) button to create an SSH key. + + .. figure:: /_figures/qingcloud/QingCloud-6.png + :scale: 50 % + :alt: Create SSH key + + Create SSH Key + +#. In the SSH key creation interface, you can fill in the key name, and select + encryption method you prefer. After confirming that they are correct, click + the :guilabel:`提交` (Submit) button. + + .. figure:: /_figures/qingcloud/QingCloud-6.png + :scale: 50 % + :alt: New SSH key + + New SSH Key + +#. After the download button appears, please download the key within 10 + minutes, and save the key locally for connecting to the virtual host later. + + .. figure:: /_figures/qingcloud/QingCloud-7.png + :scale: 50 % + :alt: Download SSH key + + Download SSH Key + +#. After ensuring that the SSH key has been properly downloaded and saved, + check the basic information of the virtual host. After confirming that they + are correct, click the :guilabel:`创建` (Create) button. + + .. figure:: /_figures/qingcloud/QingCloud-8.png + :scale: 50 % + :alt: Confirm the information and create a virtual host + + Confirm the information and create a virtual host + +QingCloud will now create the Clear Linux OS virtual host. You +can check the state of the virtual host in the new interface. + +Apply for a public IP and add it to the virtual host +**************************************************** + +#. Since QingCloud does not automatically assign a public IP address to a + virtual host created using the default network, we need to manually apply + and add it to the virtual host. Click the :guilabel:`网络与CDN` (Network and + CDN) button on the left side of the navigation bar . + + .. figure:: /_figures/qingcloud/QingCloud-9.png + :scale: 50 % + :alt: Network and CDN + + Network and CDN + +#. In the network and CDN configuration interface, click the :guilabel:`公网IP` + (Public IP) button on the left , and click the :guilabel:`申请` (Apply) + button in the middle to create a public IP. + + .. figure:: /_figures/qingcloud/QingCloud-10.png + :scale: 50 % + :alt: Apply for public IP + + Apply for public IP + + After clicking the apply button, a dialog will pop up. Read it + carefully and click the :guilabel:`继续申请公网IP` (Continue to apply for + public IP) button. + + .. figure:: /_figures/qingcloud/QingCloud-11.png + :scale: 50 % + :alt: Confirmation dialog + + Confirmation dialog + +#. On the public network IP application page, confirm and fill in the + relevant information, including the charging mode and bandwidth upper limit + (the charge-by-bandwidth mode is used in this tutorial and the 2Mbps + bandwidth limit is set). After confirming that they are correct, click + :guilabel:`提交` (Submit) button. + + .. figure:: /_figures/qingcloud/QingCloud-12.png + :scale: 50 % + :alt: Confirmation of Public IP Application + + Confirmation of Public IP Application + +#. After that, click the :guilabel:`计算>网卡` (Compute>Network Card) buttons + in the navigation bar to come to the network card interface. + + .. figure:: /_figures/qingcloud/QingCloud-13.png + :scale: 50 % + :alt: NIC interface + + Network Interface + +#. On the network card interface, select the network card of the |CL| host + that you just created. Click the :guilabel:`更多操作` (More Actions) + button above, and then click the :guilabel:`绑定公网IPv4` (Binding Public + Network IPv4) button. + + .. figure:: /_figures/qingcloud/QingCloud-14.png + :scale: 50 % + :alt: Bind selected + + Bind selected + +#. On the binding public network IP confirmation interface, select the public + IP address that has just been applied for, and click the :guilabel:`提交` + (Submit) button below . After waiting a moment, the state of the |CL| + virtual host will change. + + .. figure:: /_figures/qingcloud/QingCloud-15.png + :scale: 50 % + :alt: Commit binding + + Commit binding + + .. figure:: /_figures/qingcloud/QingCloud-16.png + :scale: 50 % + :alt: Public network IP binding succeeded + + Public network IP binding succeeded + +Connect to |CL| virtual host +********************************* + +Click the :guilabel:`计算>主机` (Compute>Host) buttons on the left side of the +navigation bar to confirm that the current virtual host is running and has a public IP address. + +.. figure:: /_figures/qingcloud/QingCloud-17.png + :scale: 50 % + :alt: Confirm that the virtual host is currently in a normal state + + Confirm that the virtual host is currently in a normal state + +#. Copy the public IP address of the current |CL| virtual host and + connect to it from an SSH client. Here we need to use the previously saved + SSH key. + +#. In this tutorial, the MobaXterm client is used as an example to demonstrate + the login process. Check each item as shown. For the user name, we choose + ``root``. For the key, select the SSH key that was downloaded and saved to + the local computer . + + .. figure:: /_figures/qingcloud/QingCloud-18.png + :scale: 50 % + :alt: SSH login virtual host settings + + SSH login virtual host settings + +#. Click :guilabel:`Login` to log in to the + |CL| virtual host after completing the setup process. + + .. figure:: /_figures/qingcloud/QingCloud-19.png + :scale: 50 % + :alt: SSH login successful + + SSH login successful + +Remove |CL| virtual host +************************ + +This section explains how to delete a |CL| virtual host created on QingCloud. + +On the left navigation bar select :guilabel:`计算>主机` (Compute>Master), find +the |CL| host you just created, and click the checkbox next to it. Select +:guilabel:`更多操作>删除` (More Actions>Delete) to delete the virtual host. + +.. figure:: /_figures/qingcloud/QingCloud-20.png + :scale: 50 % + :alt: Remove Clear Linux OS Virtual Host + + Remove Clear Linux OS Virtual Host + +Delete the applied public IP +**************************** + +Select :guilabel:`网络与CDN>公网IP` (Network and CDN>Public IP) from the +navigation bar on the left , and then find the public IP address just applied. +Select it as shown, then click :guilabel:`更多操作>删除` (More Actions>Delete) +to delete. + +.. figure:: /_figures/qingcloud/QingCloud-21.png + :scale: 50 % + :alt: Delete public network IP address + + Delete public network IP address + \ No newline at end of file diff --git a/_sources/get-started/compatibility-check.rst.txt b/_sources/get-started/compatibility-check.rst.txt new file mode 100644 index 000000000..d4297369d --- /dev/null +++ b/_sources/get-started/compatibility-check.rst.txt @@ -0,0 +1,104 @@ +.. _compatibility-check: + +Check Processor Compatibility +############################# + +Before installing |CL-ATTR|, check your host system's processor compatibility using one of +the following options: + +.. note:: + This does not check other system components (for example: storage and + graphics) for compatibility with |CL|. + +Option 1: Use the :command:`clear-linux-check-config.sh` script on an existing Linux system +******************************************************************************************* + +#. Download the `clear-linux-check-config.sh`_ file. + + If a browser is not available, use: + + .. code-block:: bash + + curl -O https://cdn.download.clearlinux.org/current/clear-linux-check-config.sh + +#. Make the script executable. + + .. code-block:: bash + + chmod +x clear-linux-check-config.sh + +#. Run the script. + + #. Check to see if the host's processor is capable of running |CL|. + + .. code-block:: bash + + ./clear-linux-check-config.sh host + + #. Check to see if the host is capable of running |CL| in a container. + + .. code-block:: bash + + ./clear-linux-check-config.sh container + + The script prints a list of test results similar to the output below. + All items should return a `SUCCESS` status. This example indicates the + host's processor supports running |CL|. + + .. code-block:: console + + Checking if host is capable of running Clear Linux* OS + + SUCCESS: 64-bit CPU (lm) + SUCCESS: Supplemental Streaming SIMD Extensions 3 (ssse3) + SUCCESS: Streaming SIMD Extension v4.1 (sse4_1) + SUCCESS: Streaming SIMD Extensions v4.2 (sse4_2) + SUCCESS: Carry-less Multiplication extensions (pclmulqdq) + +Option 2: Use a |CL| live image on a non-Linux system +===================================================== + +#. `Download`_ either the `Desktop` or `Server` version of the live image ISO. + +#. Follow the instruction to :ref:`bootable-usb`. + +#. Boot up the |CL| live image on the USB. + +#. Check compatibility as follows: + + * *Desktop version:* + + a. Open a terminal. + + #. Check compatibility. + + .. code-block:: bash + + sudo clr-installer --system-check + + * *Server version:* + + a. Log in as `root` and set a password. + + #. Check compatibility. + + .. code-block:: bash + + clr-installer --system-check + + Expected output for a compatible host processor: + + .. code-block:: console + + Checking for required CPU feature: lm [success] + Checking for required CPU feature: sse4_2 [success] + Checking for required CPU feature: sse4_1 [success] + Checking for required CPU feature: pclmulqdq [success] + Checking for required CPU feature: ssse3 [success] + Success: System is compatible + +.. _clear-linux-check-config.sh: + https://cdn.download.clearlinux.org/current/clear-linux-check-config.sh + +.. _Download: + https://clearlinux.org/downloads diff --git a/_sources/get-started/containers/container-images.rst.txt b/_sources/get-started/containers/container-images.rst.txt new file mode 100644 index 000000000..848dfb1fa --- /dev/null +++ b/_sources/get-started/containers/container-images.rst.txt @@ -0,0 +1,79 @@ +.. _container-images: + +|CL-ATTR| container images +########################## + +|CL| can run inside of a container on top of any operating system as long as +it is hosting a containerized environment, such as Docker* or Kubernetes*. A +|CL| base image is available for standalone use as well as variations of +popular application images built from the |CL| base image. + +Browse all |CL| container images on `the Docker Hub* website +`_. Find the +Dockerfiles used to build |CL| container images `on GitHub +`_. + +See the `containers `_ page for +the benefits of using |CL| containers and using |CL| as a container host. + +Container image types +********************* + +|CL| base image +=============== + +The `Clear Linux OS base container `_ is +an official image on Docker Hub*. The |CL| base container image can be used to +run a standalone or as a `parent image +`_ for building other +container images. + +On a Docker host simply use the command :command:`docker run clearlinux` to +pull and start a |CL| container. + + +|CL|-based runtime images +========================= + +|CL| container images for programming languages and their runtimes are +available on Docker Hub*. These can be used by developers to create and run +applications using these popular runtimes. + +Below are some popular |CL|-based runtime images: + +* `clearlinux/golang `_ +* `clearlinux/node `_ +* `clearlinux/numpy `_ +* `clearlinux/python `_ +* `clearlinux/perl `_ +* `clearlinux/r-base `_ + +More |CL|-based images can be found on Docker Hub: +https://hub.docker.com/u/clearlinux. + + +|CL|-based application images +============================= + +|CL| container images for common applications are available on Docker Hub. +These can be used to create and deploy containerized services. + +Below are some popular |CL|-based runtime images: + +* `clearlinux/nginx `_ +* `clearlinux/mariadb `_ +* `clearlinux/postgres `_ +* `clearlinux/redis `_ +* `clearlinux/tensorflow `_ +* `clearlinux/wordpress `_ + + +More |CL|-based images can be found on Docker Hub: +https://hub.docker.com/u/clearlinux. + +Related topics +============== +* :ref:`container-image-new` +* :ref:`container-image-modify` +* :ref:`docker` +* :ref:`kata` diff --git a/_sources/get-started/index.rst.txt b/_sources/get-started/index.rst.txt new file mode 100644 index 000000000..151a0ff70 --- /dev/null +++ b/_sources/get-started/index.rst.txt @@ -0,0 +1,69 @@ +.. _get-started: + +Get started +########### + +The Get Started section guides you through the requirements and installation +of |CL-ATTR|. Follow these step-by-step instructions to get started with |CL|, +fast. + +Pre-install +*********** + +There are a couple of things to take care of before you install. + +* :ref:`system-requirements` +* :ref:`compatibility-check` +* :ref:`bootable-usb` + +When installing |CL-ATTR| in a VM, consider which kernel to use. + +* :ref:`Compatible VM kernels ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + compatibility-check + bootable-usb + +Install +******* + +.. toctree:: + :maxdepth: 1 + + bare-metal-install-desktop + bare-metal-install-server + install-configfile + ipxe-install + +.. _virtual-machine-install: + +Install in a virtual machine +**************************** + +.. toctree:: + :maxdepth: 1 + :glob: + + virtual-machine-install/* + ../../guides/maintenance/increase-virtual-disk-size.rst + +Deploy to the cloud +******************* + +.. toctree:: + :maxdepth: 1 + :glob: + + cloud-install/* + +Containers +********** + +.. toctree:: + :maxdepth: 1 + :glob: + + containers/* diff --git a/_sources/get-started/install-configfile.rst.txt b/_sources/get-started/install-configfile.rst.txt new file mode 100644 index 000000000..f6e703778 --- /dev/null +++ b/_sources/get-started/install-configfile.rst.txt @@ -0,0 +1,197 @@ +.. _install-configfile: + +Install using clr-installer and a configuration file +#################################################### + +In addition to the interactive GUI and text-based modes, +:command:`clr-installer` also supports an unattended mode where you +simply provide it a YAML configuration file. + +This guide shows you two examples of how to use its unattended mode. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +For installation onto bare metal, ensure that your target system +supports these requirements: + +* :ref:`system-requirements` +* :ref:`compatibility-check` + +Download and make bootable USB of the live server image +******************************************************* + +See :ref:`bootable-usb`. + +Example 1: Fresh installation onto bare metal +********************************************* + +This example uses a YAML configuration file to perform a new installation. + +#. Boot up the |CL| Live Server USB thumb drive. + +#. Select :guilabel:`Clear Linux OS` from the menu. + +#. In the console window, log in as `root` and set a password. + +#. Verify you have a network connection to the Internet and configure proxy + settings if you're working behind a firewall. + +#. Download a sample YAML configuration file. For example, if you want to + install |CL| with a desktop GUI, you might want to use :file:`live-desktop.yaml`. + Or you can use the :file:`live-server.yaml` if you want to install a non-GUI version + of |CL|. + + * *Desktop:* + + .. code-block:: bash + + curl -O https://cdn.download.clearlinux.org/current/config/image/live-desktop.yaml + + * *Server:* + + .. code-block:: bash + + curl -O https://cdn.download.clearlinux.org/current/config/image/live-server.yaml + +#. Edit the YAML configuration file and change the settings as needed. + + Commonly-changed settings include (refer to the example below): + + a. Under *block-devices* (line 15), set your target media. For example: ``file: "/dev/sda"``. + #. Under *targetMedia* (line 34), set the third partition size to “0” to use the entire disk space. + #. Under *bundles* (line 37), add additional bundles as needed. + #. Delete the *post-install* section unless you have post-installation scripts. + #. Under *Version* (line 50), set a version number. To use the latest version, set to “0”. + + See `Installer YAML Syntax`_ for more details. + + .. code-block:: console + :linenos: + :emphasize-lines: 14,15,34,37,50 + + #clear-linux-config + + # c-basic-offset: 2; tab-width: 2; indent-tabs-mode: nil + # vi: set shiftwidth=2 tabstop=2 expandtab: + # :indentSize=2:tabSize=2:noTabs=true: + + # File: developer-live-server.yaml + # Use Case: Live Image which boots into login prompt + # Optionally allows for installing Clear Linux OS + # using the TUI clr-installer by running clr-installer + + # switch between aliases if you want to install to an actual block device + # i.e /dev/sda + block-devices: [ + {name: "bdevice", file: "/dev/sda"} + ] + + targetMedia: + - name: ${bdevice} + type: disk + children: + - name: ${bdevice}1 + fstype: vfat + mountpoint: /boot + size: "150M" + type: part + - name: ${bdevice}2 + fstype: swap + size: "32M" + type: part + - name: ${bdevice}3 + fstype: ext4 + mountpoint: / + size: "0" + type: part + + bundles: [os-core, os-core-update, NetworkManager, clr-installer, vim] + + autoUpdate: false + postArchive: false + postReboot: false + telemetry: false + iso: true + keepImage: true + + keyboard: us + language: en_US.UTF-8 + kernel: kernel-native + + version: 30010 + +#. Start the unattended installation using the `--config` option. + + .. code-block:: bash + + clr-installer --config live-server.yaml + +#. Reboot your system after installation is completed. + +Example 2: Replicate a previous installation +******************************************** + +This example uses a saved configuration file from a previous installation, +which you can use to easily clone the installation on additional machines +, ideally with the same hardware configuration. + +.. warning:: + + Be aware of the following when applying a saved configuration on a new machine: + + * Make sure the target media on the new machine matches up + + * The users' credentials will be replicated as well + +#. On a system where |CL| was installed, open a terminal window. + +#. Get root privilege. + + .. code-block:: bash + + sudo su + +#. Copy the :file:`clr-installer.yaml` from :file:`/root` to a USB thumb drive. + + .. code-block:: bash + + cp /root/clr-installer.yaml + +#. Install on target system. + + a. Boot up the |CL| Live Server USB thumb drive. + + #. Select :guilabel:`Clear Linux OS` from the menu. + + #. In the console window, log in as `root` and set a password. + + #. Verify you have a network connection to the Internet and configure proxy + settings if you're working behind a firewall. + + #. Plug in and mount the USB thumb drive containing the retrieved + :file:`clr-installer.yaml` configuration file. + + #. Doublecheck to make sure the target media in the saved configuration file + matches with the target system's. + + #. Start the installation. + + .. code-block:: bash + + clr-installer --config clr-installer.yaml + + #. Reboot your system after installation is completed. + +References +********** + +* `Clear Linux Installer`_ +* `Installer YAML Syntax`_ + +.. _Clear Linux Installer: https://github.com/clearlinux/clr-installer +.. _Installer YAML Syntax: https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md diff --git a/_sources/get-started/ipxe-install.rst.txt b/_sources/get-started/ipxe-install.rst.txt new file mode 100644 index 000000000..466991f5b --- /dev/null +++ b/_sources/get-started/ipxe-install.rst.txt @@ -0,0 +1,589 @@ +.. _ipxe-install: + +Install |CL| Over the Network with iPXE +####################################### + +PXE :abbr:`PXE (Pre-boot Execution Environment)` is an industry standard +that describes client-server interaction with network-boot software and +uses the DHCP and TFTP protocols. iPXE, a fork of gPXE, is an open-source +version of PXE. It enables computers without built-in PXE capability to +network-boot using protocols such as HTTP, :abbr:`iSCSI (Internet Small +Computer Systems Interface)`, :abbr:`AoE (ATA over Ethernet\*)`, and +:abbr:`FCoE (Fiber Channel over Ethernet\*)`. + +This guide demonstrates how to setup an iPXE server to install |CL-ATTR| +over the network. + +Figure 1 depicts the flow of information between an iPXE server and a +PXE client. + +.. figure:: ../_figures/ipxe/ipxe-install-1.png + :alt: PXE information flow + + Figure 1: PXE information flow + +.. caution:: + + The |CL| PXE image that boots through the iPXE process automatically + erases all data and partitions on the PXE client system and performs + a fresh installation according to a clr-installer YAML configuration + file. + +Prerequisites +************* + +Your iPXE server must have: + +* Ethernet/LAN boot option +* At least two network adapters +* Connection to a public (WAN) network +* Secure Boot option disabled in BIOS + +Your clients must have: + +* Ethernet/LAN boot option +* One network adapter +* Secure Boot option disabled in BIOS +* The minimum requirements to run |CL|. Review the :ref:`compatibility-check`. + +Connect the iPXE server and clients to a network switch on a private +(LAN) network, as shown in Figure 2. + +.. figure:: ../_figures/ipxe/ipxe-install-2.png + :alt: Network topology + + Figure 2: Network topology + +Install |CL| on server +********************** + +#. Install |CL| on the system that will serve as the iPXE server. + We recommend using the `server` version. + +#. Open a terminal window. + +#. Add the :command:`pxe-server` bundle to your |CL| system. + The bundle contains all the necessary apps (web server, iPXE firmwares, + dnsmasq which provides TFTP, DNS, DHCP functionalities) to run an + iPXE server. + + .. code-block:: bash + + sudo swupd bundle-add pxe-server + +#. Define the following variables used for setting up the iPXE server. + Be sure to substitute the value for the WAN_INTERFACE and + LAN_INTERFACE variables with your LAN and WAN interfaces names. + Use :command:`ip a` to list your network devices and get their + names. + + .. code-block:: bash + + IPXE_APP_NAME=ipxe + IPXE_PORT=50000 + WEB_ROOT_DIR=/var/www + IPXE_ROOT_DIR=${WEB_ROOT_DIR}/${IPXE_APP_NAME} + TFTP_ROOT_DIR=/srv/tftp + CLR_INSTALLER_CONF_DIR=clr-installer-configs + WAN_INTERFACE=eno1 + LAN_INTERFACE=eno2 + IPXE_SUBNET=192.168.100 + IPXE_LAN_IP=${IPXE_SUBNET}.1 + IPXE_SUBNET_MASK_IP=255.255.255.0 + IPXE_SUBNET_BITMASK=16 + +Setup nginx web server to host iPXE +*********************************** + +#. Set up an nginx web server to serve the |CL| PXE image to clients + using these steps: + + .. code-block:: bash + + # setup nginx + sudo mkdir -p /etc/nginx/conf.d + sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf + + # grant $USER permission to run the web server + sudo tee -a /etc/nginx/nginx.conf << EOF + user $USER; + EOF + + # web server config + sudo tee -a /etc/nginx/conf.d/${IPXE_APP_NAME}.conf << EOF + server { + listen ${IPXE_PORT}; + server_name localhost; + + # directory to store ipxe + location /${IPXE_APP_NAME}/ { + root ${WEB_ROOT_DIR}/${IPXE_APP_NAME}; + rewrite ^/${IPXE_APP_NAME}(/.*)$ \$1 break; + } + + # directory to store clr-installer configs + location /${CLR_INSTALLER_CONF_DIR}/ { + root ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}; + rewrite ^/${CLR_INSTALLER_CONF_DIR}(/.*)$ \$1 break; + } + } + EOF + +#. Set nginx to start automatically on boot and then start it. + + .. code-block:: bash + + sudo systemctl enable nginx --now + +Configure iPXE +************** + +#. Download the latest |CL| PXE image and extract the files into the iPXE root. + + .. code-block:: bash + + sudo curl -o /tmp/clear-pxe.tar.xz \ + https://cdn.download.clearlinux.org/current/clear-$(curl \ + https://cdn.download.clearlinux.org/latest)-pxe.tar.xz + sudo mkdir -p ${IPXE_ROOT_DIR} + sudo tar -xJf /tmp/clear-pxe.tar.xz -C ${IPXE_ROOT_DIR} + sudo ln -sf $(ls ${IPXE_ROOT_DIR} | grep 'org.clearlinux.*') ${IPXE_ROOT_DIR}/linux + + .. note:: + + Ensure that the initial ramdisk file is named :file:`initrd` and + the kernel file is named :file:`linux`, which is a symbolic link to the + actual kernel file. + +#. Create an iPXE boot script. The script presents a menu of bootable images to + download, boot, and install |CL|, according to a designated clr-installer + YAML configuration file. + + .. code-block:: bash + + sudo tee -a ${IPXE_ROOT_DIR}/ipxe_boot_script.ipxe << EOF + #!ipxe + + set menu-timeout 5000 + set submenu-timeout \${menu-timeout} + isset \${menu-default} || set menu-default clr-server + + :menu + menu Select a version of Clear Linux OS to install + item clr-desktop Clear Linux OS (Desktop) + item clr-server Clear Linux OS (Server) + item ipxe-shell iPXE Shell + item reboot Reboot + + choose --timeout \${menu-timeout} --default \${menu-default} selected || goto cancel + set menu-timeout 0 + goto \${selected} + + :clr-desktop + echo Booting and installing Clear Linux OS (Desktop)... + kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug \\ + tsc=reliable no_timer_check noreplace-smp rw initrd=initrd \\ + clri.descriptor=http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml + initrd initrd + boot || goto failed + + :clr-server + echo Booting and installing Clear Linux OS (Server)... + kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug \\ + tsc=reliable no_timer_check noreplace-smp rw initrd=initrd \\ + clri.descriptor=http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml + initrd initrd + boot || goto failed + + :cancel + echo Menu canceled, going to iPXE shell + + :ipxe-shell + echo Type 'exit' to return to the menu + shell + set menu-timeout 0 + set submenu-timeout 0 + goto menu + + echo Booting + :failed + echo Booting failed, going to iPXE shell + goto shell + + :reboot + echo Rebooting... + sleep 1 + reboot + EOF + + .. note:: + + The `clri.discriptor` option tells clr-installer where to download a YAML + configuration file to use. Without this option, the |CL| PXE image will + simply boot and not perform any installation. + +Add clr-installer YAML configuration files +****************************************** + +After the |CL| PXE image boot, clr-installer downloads the YAML configuration file +specified in the kernel command-line and installs accordingly. + +See `Installer YAML Syntax`_ for more information on clr-installer configuration +YAML syntax. + +#. Create the directory to store the configuration files. + + .. code-block:: bash + + sudo mkdir -p ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR} + +#. Create this sample `Desktop` configuration called :file:`clr-desktop.yaml`. + + .. code-block:: bash + + sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml << EOF + #clear-linux-config + + # switch between aliases if you want to install to an actuall block device + # i.e /dev/sda + block-devices: [ + {name: "bdevice", file: "/dev/sda"} + ] + + targetMedia: + - name: \${bdevice} + type: disk + children: + - name: \${bdevice}1 + fstype: vfat + mountpoint: /boot + size: "150M" + type: part + - name: \${bdevice}2 + fstype: swap + size: "250M" + type: part + - name: \${bdevice}3 + fstype: ext4 + mountpoint: / + size: "0" # Use remaining disk space + type: part + + bundles: [ bootloader, os-core, os-core-update, desktop-autostart, libreoffice, + vlc, c-basic, git, openssh-server, vim ] + + autoUpdate: true + postArchive: false + postReboot: true + telemetry: false + hostname: clrlinux-desktop + keyboard: us + language: en_US.UTF-8 + kernel: kernel-native + + users: + - login: clrlinux + username: Clear Linux + # Password is "clear123" + password: $6$SJJMfnInWQg.CvMA$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/ + admin: true + - login: root + username: Root Root + # Password is "clear123" + password: $6$SJJMfnInWQg.CvMA$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/ + admin: true + + pre-install: [ + {cmd: "curl -o /tmp/add-issue.sh http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh"}, + {cmd: "chmod +x /tmp/add-issue.sh"} + ] + + post-install: [ + {cmd: "echo PermitRootLogin yes > \${chrootDir}/etc/ssh/sshd_config"}, + {cmd: "/tmp/add-issue.sh \${chrootDir}"} + ] + EOF + + +#. Create this sample `Server` configuration called :file:`clr-server.yaml`. + + .. code-block:: bash + + sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml << EOF + #clear-linux-config + + # switch between aliases if you want to install to an actuall block device + # i.e /dev/sda + block-devices: [ + {name: "bdevice", file: "/dev/sda"} + ] + + targetMedia: + - name: \${bdevice} + type: disk + children: + - name: \${bdevice}1 + fstype: vfat + mountpoint: /boot + size: "150M" + type: part + - name: \${bdevice}2 + fstype: swap + size: "250M" + type: part + - name: \${bdevice}3 + fstype: ext4 + mountpoint: / + size: "0" # Use remaining disk space + type: part + + bundles: [ bootloader, os-core, os-core-update, vim ] + + autoUpdate: true + postArchive: false + postReboot: true + telemetry: false + hostname: clrlinux-server + keyboard: us + language: en_US.UTF-8 + kernel: kernel-native + + users: + - login: clrlinux + username: Clear Linux + # Password is "clear123" + password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/ + admin: true + - login: root + username: Root Root + # Password is "clear123" + password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/ + admin: true + + pre-install: [ + {cmd: "curl -o /tmp/add-issue.sh http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh"}, + {cmd: "chmod +x /tmp/add-issue.sh"} + ] + + post-install: [ + {cmd: "echo PermitRootLogin yes > \${chrootDir}/etc/ssh/sshd_config"}, + {cmd: "/tmp/add-issue.sh \${chrootDir}"} + ] + EOF + +#. Add following content to the :file:`add-issue.sh` script, which will be + used by the above two YAML configuration files: + + .. code-block:: bash + + sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh << EOF + #!/bin/bash + echo "Creating custom issue file for \$1" + + echo "Welcome to the Clear Linux* OS + + * Documentation: https://clearlinux.org/documentation + * Community Support: https://community.clearlinux.org + + " >> \$1/etc/issue + + exit 0 + EOF + +Configure network +***************** + +#. The DNS server, included with the `pxe-server` bundle, + conflicts with the DNS stub listener provided in `systemd-resolved`. + Disable the DNS stub listener and temporarily stop `systemd-resolved`. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd + sudo tee -a /etc/systemd/resolved.conf << EOF + [Resolve] + DNSStubListener=no + EOF + + sudo systemctl stop systemd-resolved + +#. Disable NetworkManager. The base installation of |CL| comes with two + network managers, systemd-networkd and NetworkManager, with the latter + being the default. systemd-networkd is recommended for a server use case, + so we will disable NetworkManager. + + .. code-block:: bash + + sudo systemctl mask --now NetworkManager + +#. Assign a static IP address to the LAN side network adapter + and restart `systemd-networkd`. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/network + sudo tee -a /etc/systemd/network/70-internal-static.network << EOF + [Match] + Name=${LAN_INTERFACE} + [Network] + DHCP=no + Address=${IPXE_LAN_IP}/${IPXE_SUBNET_BITMASK} + EOF + + sudo systemctl enable systemd-networkd + sudo systemctl restart systemd-networkd + +Setup NAT +********* + +#. Configure :abbr:`NAT (Network Address Translation)` to route traffic from + the LAN to the WAN network so clients can download upstream bundles for + installation. And to make these changes persistent during reboots, save the + changes to the firewall. + + .. code-block:: bash + + sudo iptables -t nat -F POSTROUTING + sudo iptables -t nat -A POSTROUTING -o ${WAN_INTERFACE} -j MASQUERADE + sudo systemctl enable iptables-save.service + sudo systemctl restart iptables-save.service + sudo systemctl enable iptables-restore.service + sudo systemctl restart iptables-restore.service + +#. Configure the kernel to forward network packets to different interfaces. + Otherwise, NAT will not work. + + .. code-block:: bash + + sudo mkdir -p /etc/sysctl.d + sudo tee -a /etc/sysctl.d/80-nat-forwarding.conf << EOF + net.ipv4.ip_forward=1 + EOF + + sudo tee -a /proc/sys/net/ipv4/ip_forward << EOF + 1 + EOF + +Setup dnsmaq for DHCP, DNS, and TFTP functionalities +**************************************************** + +#. Create a configuration file for `dnsmasq` to listen on a dedicated IP address + for TFTP, DNS, and DHCP functions. PXE clients on the LAN network will talk to + this IP address. + + .. code-block:: bash + + sudo tee -a /etc/dnsmasq.conf << EOF + listen-address=${IPXE_LAN_IP} + EOF + +#. Add the options to serve iPXE firmware images to clients over TFTP to + the :file:`dnsmasq` configuration file. + + .. code-block:: bash + + sudo tee -a /etc/dnsmasq.conf << EOF + enable-tftp + tftp-root=${TFTP_ROOT_DIR} + EOF + +#. Add the options to host a DHCP server for clients to the :file:`dnsmasq` + configuration file. + + .. code-block:: bash + + sudo tee -a /etc/dnsmasq.conf << EOF + dhcp-leasefile=/var/db/dnsmasq.leases + + dhcp-authoritative + dhcp-option=option:router,${IPXE_LAN_IP} + dhcp-option=option:dns-server,${IPXE_LAN_IP} + + dhcp-match=set:ipxeclient,60,IPXEClient* + dhcp-range=tag:ipxeclient,${IPXE_SUBNET}.2,${IPXE_SUBNET}.253,${IPXE_SUBNET_MASK_IP},15m + dhcp-range=tag:!ipxeclient,${IPXE_SUBNET}.2,${IPXE_SUBNET}.253,${IPXE_SUBNET_MASK_IP},6h + + dhcp-match=set:ipxeboot,175 + dhcp-boot=tag:ipxeboot,http://${IPXE_LAN_IP}:${IPXE_PORT}/${IPXE_APP_NAME}/ipxe_boot_script.ipxe + dhcp-boot=tag:!ipxeboot,undionly.kpxe,${IPXE_LAN_IP} + EOF + + The configuration provides the following important functions: + + * Directs clients without an iPXE implementation to the TFTP server + to acquire architecture-specific iPXE firmware images that allow them + to perform an iPXE boot. + * Activates only on the network adapter that has an IP address on the + defined subnet. + * Directs clients to the DNS server. + * Directs clients to the iPXE server for routing via NAT. + * Divides the private network into two pools of IP addresses. One pool + is for network boot and one pool is used after boot. Each pool has + their own lease times. + +#. Create a file for `dnsmasq` to record the IP addresses it provides + to clients. + + .. code-block:: bash + + sudo mkdir -p /var/db + sudo touch /var/db/dnsmasq.leases + +#. Create a TFTP hosting directory and populate it with the iPXE firmware. + + .. code-block:: bash + + sudo mkdir -p ${TFTP_ROOT_DIR} + sudo ln -sf /usr/share/ipxe/undionly.kpxe ${TFTP_ROOT_DIR}/undionly.kpxe + +#. Start `dnsmasq` and enable startup on boot. + + .. code-block:: bash + + sudo systemctl daemon-reload + sudo systemctl enable dnsmasq + sudo systemctl restart dnsmasq + +#. Start `systemd-resolved`. + + .. code-block:: bash + + sudo systemctl start systemd-resolved + + .. note:: + + `systemd-resolved` dynamically updates the list of DNS servers for the + LAN network if you use the `dnsmasq` DNS server. The setup creates a + pass-through DNS server that relies on the DNS servers listed in + :file:`/etc/resolv.conf`. + +Verify setup +************ + +Verify you can access these URLs before deploying: + +* \http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${IPXE_APP_NAME}/ipxe_boot_script.ipxe +* \http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml +* \http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml +* \http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh + +Deploy +****** + +#. Connect your client system to the LAN network. + +#. Power on the client. + +#. Set your client to network boot. It should get an IP address and download + the iPXE script. + +#. When presented with the iPXE menu, select one of the options. The client + will then download and boot the |CL| image. Once booted, clr-installer will + download the assigned YAML configuration file and begin to install |CL|. + After installation, the client will reboot to |CL|. + +.. _iPXE: + http://ipxe.org/ + +.. _Installer YAML Syntax: + https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md diff --git a/_sources/get-started/virtual-machine-install/hyper-v.rst.txt b/_sources/get-started/virtual-machine-install/hyper-v.rst.txt new file mode 100644 index 000000000..0feb9fba6 --- /dev/null +++ b/_sources/get-started/virtual-machine-install/hyper-v.rst.txt @@ -0,0 +1,152 @@ +.. _hyper-v: + +|CL-ATTR| on Microsoft Hyper-V\* +################################ + +This page explains how to run a |CL-ATTR| :abbr:`VM (virtual machine)` on a +Microsoft\* Hyper-V\* hypervisor. + +.. contents:: + :local: + :depth: 1 + + +Overview +******** + +Hyper-V is a type 1 bare-metal hypervisor that runs directly on system +hardware. It is available for `Windows\* server`_ and client operating +systems, including `Windows 10`_. + +|CL| provides a virtual disk image for Hyper-V, which also includes +a :ref:`Hyper-V specific kernel ` and drivers. + +Prerequisites +************* + +* Enable virtualization on the host system from EFI/BIOS, such as: + + * `Intel® Virtualization Technology`_ (Intel® VT) + * `Intel® Virtualization Technology for Directed I/O`_ (Intel® VT-d) + +* Install Hyper-V on the appropriate Windows operating system: + + * `Install the Hyper-V role on Windows Server`_ + * `Install Hyper-V on Windows 10`_ + +* Configure the appropriate virtual networking in Hyper-V: + + * `Create a virtual network on Windows Server`_ + * `Create a virtual network on Windows 10`_ + + +Download the |CL| disk image for Hyper-V +**************************************** + +#. Download the :file:`clear-[VERSION]-azure-hyperv.vhd.gz` for Microsoft* + Hyper-V from the `downloads`_ website. + +#. Verify and extract the image using these instructions: + :ref:`download-verify-decompress`. + +#. Extract the compressed file using software such as the + 7-Zip\* tool or the WinZip\* tool. + + After extraction, the file should be named :file:`clear-[VERSION]-azure-hyperv.vhd`. + +Create and configure new VM +**************************** + +#. Open the **Hyper-V Manager** from the Start menu. + + .. figure:: figures/hyper-v/hyper-v-01.png + :scale: 100% + :alt: Hyper-V Manager from the Start menu + + Figure 1: Hyper-V Manager from the Start menu + + .. note:: + + You may need to manually enable Hyper-V on a Windows\* machine. Review + ``Windows Features``. + +#. Create a *New Virtual Machine* by clicking the :guilabel:`Action` menu, + then selecting :guilabel:`New` and :guilabel:`Virtual Machine...`. + + .. figure:: figures/hyper-v/hyper-v-02.png + :scale: 100% + :alt: New Virtual Machine in Hyper-V Manager + + Figure 2: New Virtual Machine in Hyper-V Manager + +#. Follow the *New Virtual Machine Wizard* to create a new virtual machine + specifying the options below: + + - **Name**: Choose name (for example, ClearLinuxOS-VM) + - **Specify Generation**: Generation 1 + - **Startup memory**: 2048 MB or more + - **Configure Networking**: Change :guilabel:`Connection` to `Default Switch` + - **Connect Virtual Hard Disk**: Select :guilabel:`Use an existing virtual + hard disk` and browse to find the + :file:`clear-[VERSION]-azure-hyperv.vhd` file. + + After finishing the wizard, the VM will be created but not powered on. + +#. Configure the VM by right-clicking it in the Hyper-V Manager and selecting + :guilabel:`Settings...`. Figure 3 shows the Settings page after configuration selections. + + **Optional** + + - If you wish to `Encrypt state and virtual machine traffic, under + :guilabel:`Security`, select :guilabel:`Add Key Storage Drive`. + + - Under :guilabel:`Processor`, consider increasing the number of virtual + processors assigned to the |CL| VM to improve performance. + + .. figure:: figures/hyper-v/hyper-v-03.png + :scale: 100% + :alt: |CL| VM Settings in Hyper-V Manager + + Figure 3: |CL| VM Settings page after configuration + +#. Click :guilabel:`Apply` at the bottom of the VM Settings screen. + +#. Click :guilabel:`OK` at the bottom of the VM Settings screen. + + +Start the VM +************ + +#. Start the |CL| VM by right-clicking the VM in Hyper-V Manager and + selecting :guilabel:`Start`. + +#. Connect to the VM console by right-clicking the VM in Hyper-V Manager and + selecting :guilabel:`Connect...`. A new *Virtual Machine Connection* + window is displayed. + +#. After |CL| is booted, log in to the console with user *root*. You are + prompted to set a new password immediately. + + .. code-block:: console + + > User: root + +|CL-ATTR| on Microsoft Hyper-V\* is ready for use. + +Related topics +************** + +* :ref:`increase-virtual-disk-size` + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _`Windows\* Server`: https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/hyper-v-on-windows-server +.. _`Windows 10`: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/index +.. _`Intel® Virtualization Technology`: http://www.intel.com/content/www/us/en/virtualization/virtualization-technology/intel-virtualization-technology.html +.. _`Intel® Virtualization Technology for Directed I/O`: https://software.intel.com/en-us/articles/intel-virtualization-technology-for-directed-io-vt-d-enhancing-intel-platforms-for-efficient-virtualization-of-io-devices +.. _`Install the Hyper-V role on Windows Server`: https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/get-started/install-the-hyper-v-role-on-windows-server +.. _Install Hyper-V on Windows 10: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v +.. _`Create a virtual network on Windows Server`: https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/get-started/create-a-virtual-switch-for-hyper-v-virtual-machines +.. _`Create a virtual network on Windows 10`: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/connect-to-network +.. _downloads: https://clearlinux.org/downloads + diff --git a/_sources/get-started/virtual-machine-install/kvm.rst.txt b/_sources/get-started/virtual-machine-install/kvm.rst.txt new file mode 100644 index 000000000..bb3bea89d --- /dev/null +++ b/_sources/get-started/virtual-machine-install/kvm.rst.txt @@ -0,0 +1,220 @@ +.. _kvm: + +|CL-ATTR| on KVM +################ + +This page explains how to run |CL-ATTR| in a virtualized environment using +:abbr:`KVM (Kernel-based Virtual Machine)`. + +.. contents:: + :local: + :depth: 1 + +Install QEMU-KVM +**************** + +#. Enable the `Intel® Virtualization Technology`_ (Intel® VT) and the + `Intel® Virtualization Technology for Directed I/O`_ (Intel® VT-d) in the + host machine’s BIOS. + +#. Log in and open a terminal emulator. + +#. Install `QEMU*-KVM` on the host machine. Below are some examples using + different distros: + + ==================== ========================================= + Host OS Installation command + ==================== ========================================= + |CL| :command:`sudo swupd bundle-add kvm-host` + -------------------- ----------------------------------------- + Ubuntu\* and Mint\* :command:`sudo apt-get install qemu-kvm` + -------------------- ----------------------------------------- + Fedora :command:`dnf install qemu-kvm` + ==================== ========================================= + +Download and launch the virtual machine image +********************************************* + +#. Download the latest pre-built |CL| KVM image file from + the `image `_ directory. Look for + ``clear--kvm.img.xz``. You can also use this command: + + .. code-block:: bash + + curl -o clear.img.xz https://cdn.download.clearlinux.org/image/$(curl https://cdn.download.clearlinux.org/image/latest-images.json | grep -o clear-'[0-9]'*-kvm.img.xz | head -1) + +#. Uncompress the downloaded image: + + .. code-block:: bash + + xz -dv clear.img.xz + +#. Download the 3 OVMF files (`OVMF.fd`, `OVMF_CODE.fd`, `OVMF_VARS.fd`) that + provides UEFI support for virtual machines. + + .. code-block:: bash + + curl -O https://cdn.download.clearlinux.org/image/OVMF.fd + curl -O https://cdn.download.clearlinux.org/image/OVMF_CODE.fd + curl -O https://cdn.download.clearlinux.org/image/OVMF_VARS.fd + + .. note:: + + The default OVMF files from |CL| may not work for some non-|CL| distro + version(s). You may get an `ASSERT` in the `debug.log` file when + starting the VM. If you encounter this, use the distro-specific OVMF + files instead. + + +#. Download the `start_qemu.sh`_ script from the + `image `_ directory. This script + will launch the |CL| VM and provide console interaction within the same + terminal emulator window. + + .. code-block:: bash + + curl -O https://cdn.download.clearlinux.org/image/start_qemu.sh + +#. Start the |CL| KVM virtual machine: + + .. code-block:: bash + + sudo bash ./start_qemu.sh clear.img + +#. Log in as ``root`` user and set a new password. + +Optional: Enable SSH access +*************************** + +To interact with the |CL| VM remotely through SSH instead of the console it +was launched from, follow these steps. + +#. Enable and configure SSH in the |CL| VM to allow root login as described in + :ref:`openssh-server`. + + +#. SSH into the |CL| VM using the port `10022`. This port number is set in + :file:`start_qemu.sh` and passed through to the SSH service running on port + 22 + + .. code-block:: bash + + ssh -p 10022 root@ + + +Optional: Install a graphical user interface (GUI) +************************************************** + +To add :abbr:`GDM (GNOME Display Manager)` to the |CL| VM, follow these steps: + +#. Shutdown the active |CL| VM. + + .. code-block:: bash + + poweroff + +#. Install the Spice viewer on the localhost or remote system. Below are some + examples using different distros: + + ==================== ========================================= + Host OS Installation command + ==================== ========================================= + |CL| :command:`sudo swupd bundle-add virt-viewer` + -------------------- ----------------------------------------- + Ubuntu\* and Mint\* :command:`sudo apt-get install virt-viewer` + -------------------- ----------------------------------------- + Fedora :command:`dnf install virt-viewer` + ==================== ========================================= + + +#. Modify the :file:`start_qemu.sh` script to increase memory (`-m`), add + graphics driver (`-vga`), and add Spice (`-spice`, `-usb`, and + `-device`) support. + + .. code-block:: console + :emphasize-lines: 5-10 + + qemu-system-x86_64 \ + -enable-kvm \ + ${UEFI_BIOS} \ + -smp sockets=1,cpus=4,cores=2 -cpu host \ + -m 4096 \ + -vga qxl \ + -nographic \ + -spice port=5924,disable-ticketing \ + -usb \ + -device usb-tablet,bus=usb-bus.0 \ + -drive file="$IMAGE",if=virtio,aio=threads,format=raw \ + -netdev user,id=mynet0,hostfwd=tcp::${VMN}0022-:22,hostfwd=tcp::${VMN}2375-:2375 \ + -device virtio-net-pci,netdev=mynet0 \ + -debugcon file:debug.log -global isa-debugcon.iobase=0x402 $@ + +#. Due to changes in the :file:`start_qemu.sh` script from the previous step, + having previously used OVMF files will result in the VM not booting + properly and you returning to the UEFI shell. The easiest way to avoid this + is to delete the 3 OVMF files and reobtain originals before relaunching the + VM: + + .. code-block:: bash + + rm -v OVMF*.fd + curl -O https://cdn.download.clearlinux.org/image/OVMF.fd + curl -O https://cdn.download.clearlinux.org/image/OVMF_CODE.fd + curl -O https://cdn.download.clearlinux.org/image/OVMF_VARS.fd + +#. Increase the size of the VM by 10GB to accommodate the GDM installation: + + .. code-block:: bash + + qemu-img resize -f raw clear--kvm.img +10G + +#. Relaunch the |CL| VM: + + .. code-block:: bash + + sudo ./start_qemu.sh clear.img + +#. Determine the IP address of the host on which you will launch the VM. + Substitute in the next step with this information. + + .. code-block:: bash + + ip a + + +#. From the local host or remote system, open a new terminal emulator window + and connect into the |CL| VM using the Spice viewer: + + .. code-block:: bash + + remote-viewer spice://:5924 + +#. Log in as `root` user into the |CL| VM. + +#. Follow these steps from :ref:`increase-virtual-disk-size` to resize the + partition of the virtual disk of the VM. + +#. Add GDM to the |CL| VM: + + .. code-block:: bash + + swupd bundle-add desktop-autostart + +#. Reboot the |CL| VM to start GDM: + + .. code-block:: bash + + reboot + +#. Go through the GDM out-of-box experience (OOBE). + +#. The default aspect ratio of the GDM GUI for the |CL| VM is 4:3. To change + it, use GDM's `Devices > Displays` setting tool (located at the top-right + corner). + + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _Intel® Virtualization Technology: https://www.intel.com/content/www/us/en/virtualization/virtualization-technology/intel-virtualization-technology.html +.. _Intel® Virtualization Technology for Directed I/O: https://software.intel.com/en-us/articles/intel-virtualization-technology-for-directed-io-vt-d-enhancing-intel-platforms-for-efficient-virtualization-of-io-devices +.. _start_qemu.sh: https://cdn.download.clearlinux.org/image/start_qemu.sh diff --git a/_sources/get-started/virtual-machine-install/parallels.rst.txt b/_sources/get-started/virtual-machine-install/parallels.rst.txt new file mode 100644 index 000000000..eeaf8f671 --- /dev/null +++ b/_sources/get-started/virtual-machine-install/parallels.rst.txt @@ -0,0 +1,132 @@ +.. _parallels: + +|CL-ATTR| on Parallels\* Desktop for Mac\* +########################################## + +This page explains how to run |CL| Server in :abbr:`CLI (command-line interface)` mode as a guest OS in Parallels Desktop 14 for Mac. + +Parallels Desktop for Mac is virtualization software that allows other +operating systems, such as Linux, to run side-by-side with macOS\*. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* Install Parallels Desktop 14 for Mac. + +Download ISO image +****************** + +#. Download a live-server ISO installation file from https://clearlinux.org/downloads. + This guide uses |CL| Server 30140 as its example. + +#. Unzip the ISO image with the command: + + .. code-block:: bash + + gunzip clear-30140-live-server.iso.xz + +Initialize new VM +***************** + +Start Parallels and initialize your :abbr:`VM (Virtual Machine)` with the +following steps. + +#. Go to :menuselection:`File > New`. + +#. In the opening dialog window, select + :guilabel:`Install Windows or another OS from a DVD or image`, then click + :guilabel:`Continue`. (See Figure 1.) + + .. figure:: /_figures/parallels/parallels-01.png + :alt: Parallels opening dialog + + Figure 1: Parallels opening dialog + +#. On the next screen, select :guilabel:`Image File`, then click + :guilabel:`Select a file...` as shown in Figure 2. + + .. figure:: /_figures/parallels/parallels-02.png + :alt: Dialog to select source for VM + + Figure 2: Dialog to select source for VM + +#. Select your ISO file. The system displays the warning message "Unable to + detect operating system", as shown in Figure 3. This message is expected and + can be ignored. Click :guilabel:`Continue`. + + .. figure:: /_figures/parallels/parallels-03.png + :alt: Warning that OS is not detected + + Figure 3: Warning that OS is not detected + +#. You are prompted to select your OS, as shown in Figure 4. Select + :menuselection:`More Linux > Other Linux` from the drop-down menu and click + :guilabel:`Continue`. + + .. figure:: /_figures/parallels/parallels-04.png + :alt: Select OS from drop-down menu + + Figure 4: Select OS from drop-down menu + +#. Name your VM and check :guilabel:`Customize settings before installation`. + (See Figure 5.) + + .. figure:: /_figures/parallels/parallels-05.png + :alt: Name and Location screen + + Figure 5: Name and Location screen + +#. Click :guilabel:`Create`. The Configuration window for the new VM opens, as + shown in Figure 6. + + Select :menuselection:`Hardware > Boot Order`. + + .. figure:: /_figures/parallels/parallels-06.png + :alt: VM Configuration window + + Figure 6: VM Configuration window + +#. Expand :guilabel:`Advanced Settings`. Set :guilabel:`BIOS` to “EFI 64-bit” + and in the :guilabel:`Boot flags` field, enter “vm.bios.efi=1” as shown in + Figure 7. + + .. figure:: /_figures/parallels/parallels-07.png + :alt: Advanced configuration settings + + Figure 7: Advanced configuration settings + +#. Close the Configuration window and click :guilabel:`Continue`. + + If camera and microphone access restriction warnings are displayed, you can + ignore them. + +Install |CL| on VM +****************** + +#. Follow the prompts and install |CL| using the text-based installer as shown + in Figure 8. + + Refer to :ref:`bare-metal-install-server` for additional installation + instructions. + + .. figure:: /_figures/parallels/parallels-08.png + :alt: On screen instructions from text-based installer + + Figure 8: On screen instructions from text-based installer + +#. After installation, reboot the VM. You are prompted to log in, as shown + in Figure 9. Log in with the credentials you used when you installed |CL| + on the VM. + + .. figure:: /_figures/parallels/parallels-09.png + :alt: Log in prompt + + Figure 9: Log in prompt + + +Congratulations! You have successfully set up a |CL| VM using Parallels +Desktop for Mac. diff --git a/_sources/get-started/virtual-machine-install/proxmox.rst.txt b/_sources/get-started/virtual-machine-install/proxmox.rst.txt new file mode 100644 index 000000000..c37a0ec93 --- /dev/null +++ b/_sources/get-started/virtual-machine-install/proxmox.rst.txt @@ -0,0 +1,209 @@ +.. _proxmox: + +|CL-ATTR| on Proxmox\* Virtual Environment +########################################## + +This guide explains how to create a new VM in Proxmox VE 6.1-3, install and run |CL| on as a guest OS. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* Proxmox VE 6.1-3 server already set up and you have familiarity with how + to use it. + +Download the Latest |CL| Live Server Image +****************************************** + +#. Visit our `Downloads`_ page. + +#. Download the file :file:`clear--live-server.iso`, + also called the |CL| Server. + + .. note:: + + is the latest |CL| auto-numbered release. + +Upload |CL| Live Server Image to Promox Server +********************************************** + +#. Connect to your Proxmox server and log into an account with sufficient + permission to create and manage VMs. + +#. Under the :guilabel:`Server View` window, select the :guilabel:`local` + storage. See Figure 1. + +#. On the right window, click :guilabel:`Upload`. + + .. figure:: ../../_figures/proxmox/proxmox-01.png + :scale: 100% + :alt: Proxmox - Upload ISO + + Figure 1: Proxmox - Upload ISO + +#. Set the :guilabel:`Content` as `ISO image`. See Figure 2. + +#. Click :guilabel:`Select File...` and select the |CL| ISO. + +#. Click :guilabel:`Upload`. + + .. figure:: ../../_figures/proxmox/proxmox-02.png + :scale: 100% + :alt: Proxmox - Select ISO to upload + + Figure 2: Proxmox - Select ISO to upload + + The ISO should now appear in the :guilabel:`Content` list. See Figure 3. + + .. figure:: ../../_figures/proxmox/proxmox-03.png + :scale: 100% + :alt: Proxmox - Content list + + Figure 3: Proxmox - Content list + +Create VM on Proxmox +******************** + +#. Under the :guilabel:`Server View` window, select your Proxmox node. + See Figure 4. + +#. On the right window, click :guilabel:`Create VM`. + + .. figure:: ../../_figures/proxmox/proxmox-04.png + :scale: 100% + :alt: Proxmox - Create VM + + Figure 4: Proxmox - Create VM + +#. In the :guilabel:`General` tab: + | See Figure 5. + + a. Check the :guilabel:`Advanced` checkbox. + + #. In the :guilabel:`Name` field, give the VM a name. + + .. figure:: ../../_figures/proxmox/proxmox-05.png + :scale: 100% + :alt: Proxmox - Create VM - General settings + + Figure 5: Proxmox - Create VM - General settings + +#. In the :guilabel:`OS` tab: + See Figure 6. + + a. Select :guilabel:`Use CD/DVD disc image file (iso)`. + + #. For :guilabel:`Storage`, select :guilabel:`local`. + + #. For :guilabel:`ISO image`, select the |CL| ISO you uploaded earlier. + + #. Set the :guilabel:`Type` to :guilabel:`Linux`. + + #. Set the :guilabel:`Version` to :guilabel:`5.x - 2.6 kernel`. + + .. figure:: ../../_figures/proxmox/proxmox-06.png + :scale: 100% + :alt: Proxmox - Create VM - OS settings + + Figure 6: Proxmox - Create VM - OS settings + +#. In the :guilabel:`System` tab: + See Figure 7. + + a. For :guilabel:`BIOS`, select :guilabel:`OVMF (UEFI)`. + + #. For :guilabel:`Storage`, select an appropriate location. + + #. For :guilabel:`Machine`, select :guilabel:`q35`. + + .. figure:: ../../_figures/proxmox/proxmox-07.png + :scale: 100% + :alt: Proxmox - Create VM - System settings + + Figure 7: Proxmox - Create VM - System settings + +#. In the :guilabel:`Hard Disk` tab: + See Figure 8. + + a. For :guilabel:`Disk size (GiB)`, set the desired disk size for your VM. + A minimum of 4GB is required for |CL|. + + .. figure:: ../../_figures/proxmox/proxmox-08.png + :scale: 100% + :alt: Proxmox - Create VM - Hard Disk settings + + Figure 8: Proxmox - Create VM - Hard Disk settings + +#. In the :guilabel:`CPU` tab: + See Figure 9. + + a. Set the :guilabel:`Type` to :guilabel:`host`. + + #. For the :guilabel:`Extra CPU Flags`, scroll to the bottom and turn on the + :guilabel:`aes` setting by clicking the :guilabel:`+` radio button. + + .. figure:: ../../_figures/proxmox/proxmox-09.png + :scale: 100% + :alt: Proxmox - Create VM - CPU settings + + Figure 9: Proxmox - Create VM - CPU settings + +#. In the :guilabel:`Memory` tab: + See Figure 10. + + a. For :guilabel:`Memory (MiB)`, set a desired value. + + .. figure:: ../../_figures/proxmox/proxmox-10.png + :scale: 100% + :alt: Proxmox - Create VM - Memory settings + + Figure 10: Proxmox - Create VM - Memory settings + +#. In the :guilabel:`Network` tab: + See Figure 11. + + a. For :guilabel:`Model`, select :guilabel:`E1000`. + + .. figure:: ../../_figures/proxmox/proxmox-11.png + :scale: 100% + :alt: Proxmox - Create VM - Network settings + + Figure 11: Proxmox - Create VM - Network settings + +#. In the :guilabel:`Confirm` tab: + See Figure 12. + + a. Confirm the settings. + + #. Click :guilabel:`Finish` to create the VM. The new VM should appear + under the :guilabel:`Server View` window. + + .. figure:: ../../_figures/proxmox/proxmox-12.png + :scale: 100% + :alt: Proxmox - Create VM - Confirm settings + + Figure 12: Proxmox - Create VM - Confirm settings + +Start VM and Install |CL| on Promox +*********************************** + +#. Under the :guilabel:`Server View` window, select your newly-created VM. + See Figure 13. + +#. On the right window, click :guilabel:`Start`. + +#. Click :guilabel:`Console` button to bring up a console and interact with it. + + .. figure:: ../../_figures/proxmox/proxmox-13.png + :scale: 100% + :alt: Proxmox - Start VM + + Figure 13: Proxmox - Start VM + +#. Follow the instructions in the :ref:`bare-metal-install-server` guide + starting at the `Launch the Clear Linux OS Installer` section. + +.. _Downloads: https://clearlinux.org/downloads diff --git a/_sources/get-started/virtual-machine-install/virt-manager.rst.txt b/_sources/get-started/virtual-machine-install/virt-manager.rst.txt new file mode 100644 index 000000000..cdca51dc8 --- /dev/null +++ b/_sources/get-started/virtual-machine-install/virt-manager.rst.txt @@ -0,0 +1,225 @@ +.. _virt-manager: + +|CL-ATTR| using virt-manager +############################ + +This page explains how to create a |CL-ATTR| virtual machine using the +`virt-mgr`_ desktop application with |CL| as the guest operating system. +These instructions support the |CL| live-server installer to create the |CL| +:abbr:`VM (Virtual Machine)`. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +#. Enable virtualization, such as `Intel® Virtualization Technology`_ + (Intel® VT), on the host system from the UEFI firmware setup. + +#. Install the software bundles kvm-host and virt-manager-gui using + :command:`swupd`: + + .. code-block:: bash + + sudo swupd bundle-add kvm-host virt-manager-gui + +#. Add your userid to the `kvm` and `libvirt` groups. + + .. code-block:: bash + + sudo usermod -G kvm -a $USER + sudo usermod -G libvirt -a $USER + +#. Enable the `libvirtd` daemon and reboot the system to complete the + process. + + .. code-block:: bash + + sudo systemctl enable libvirtd + sudo reboot + + +Download the |CL| installer ISO +******************************* + +There are several options available to set up and use a |CL| VM with +:command:`virt-manager`. You can either download the `KVM` image and run it +as-is or download the installer ISO and run it to create a new installation of +|CL|. + +This example uses the live-server-installer ISO to create a new installation. + +#. Download the `Clear Linux* OS Server` from the `Downloads`_ page. + +#. (Optional) Validate the integrity of the downloaded image by checking the + file hash and signatures. Refer to :ref:`validate-signatures` for detailed + steps. + +Launch and set up virt-manager +****************************** + +Virt-manager is a GUI-based virtual machine manager that runs in your desktop +environment. This example uses the Gnome\* desktop. + +#. Launch the Virtual Machine Manager from the applications window. The + application window opens as shown in Figure 1. + + .. figure:: figures/virtmgr/virt-manager-01.png + :scale: 100% + :alt: Virtual Machine Manager + + Figure 1: Virtual Machine Manager + +#. In the `Name` field, select and highlight the `QEMU/KVM` item, then select + :menuselection:`Edit > Connection Details`. A dialog box with + `QEMU/KVM Connection Details` opens as shown in Figure 2. + + .. figure:: figures/virtmgr/virt-manager-02.png + :scale: 100% + :alt: QEMU/KVM Connection Details + + Figure 2: QEMU/KVM Connection Details + +#. On the `Overview` tab, check the `Autoconnect` field. Select the `Virtual + Networks` tab and in the lower left of the dialog window, select the + :guilabel:`+` key to add a new network connection. The `Create a new virtual + network` dialog window opens as shown in Figure 3. To accept the default + values, select the :guilabel:`Finish` button. + + .. figure:: figures/virtmgr/virt-manager-03.png + :scale: 100% + :alt: Create a new virtual network + + Figure 3: Create a new virtual network + +#. Close the `QEMU/KVM Connection details` dialog box and return to the Virtual + Machine Manager main console. You are ready to create your VM. + +Create a new virt-manager virtual machine +***************************************** + +In the Virtual Machine Manager main console, either select +:menuselection:`File > New Virtual Machine` or click the `Create a +new virtual machine` icon. This launches the `New VM` wizard, shown in Figure 4. + +.. figure:: figures/virtmgr/virt-manager-04.png + :scale: 100% + :alt: New VM + + Figure 4: New VM dialog box, step 1 + +#. Select `Local install media (ISO image or CDROM)` and select the + :guilabel:`Forward` button. + +#. In step 2 of the `New VM` wizard, you can choose ISO or CDROM install + media. + + a. Uncheck `Automatically detect from the installation media / source` + field and select the :guilabel:`Browse...` button as shown in Figure 5. + + .. figure:: figures/virtmgr/virt-manager-05.png + :scale: 100% + :alt: New VM + + Figure 5: New VM dialog box, step 2: Choose media + + #. In the `Choose Storage Volume` dialog, select the + :guilabel:`Browse Local` button as shown in Figure 6. Browse to + the ISO image that you downloaded earlier and open it. + + .. figure:: figures/virtmgr/virt-manager-06.png + :scale: 100% + :alt: Choose storage volume + + Figure 6: Choose storage volume dialog box + + #. In the `Choose the operating system you are installing` search field, + type `generic` and select the `Generic default` value when it is displayed. + Select the :guilabel:`Forward` button as shown in Figure 7. + + .. figure:: figures/virtmgr/virt-manager-07.png + :scale: 100% + :alt: New VM + + Figure 7: New VM dialog box, step 2: Choose operating system + + .. note:: + + A message may be displayed that says the emulator does not have + search permissions for the ISO image path. Select :guilabel:`Yes` to + proceed to the next step. + +#. Step 3 of the `New VM` wizard allocates the memory and CPUs for + the new VM. Choose settings that are valid for the resources on your host + system. This example sets `Memory` to 2048GB and `CPUs` to 1. Once complete, + select the :guilabel:`Forward` button as shown in Figure 8. + + .. figure:: figures/virtmgr/virt-manager-08.png + :scale: 100% + :alt: New VM Choose Memory and CPU settings dialog box + + Figure 8: New VM dialog box, step 3: Choose Memory and CPU settings + +#. Step 4 of the `New VM` wizard sets up the storage media for your VM. You + can create a new disk image or use an existing image. This example selects + `Enable storage for this virtual machine` and creates a 20GB image for it. + Once complete, select the :guilabel:`Forward` button as shown in Figure 9. + + .. figure:: figures/virtmgr/virt-manager-09.png + :scale: 100% + :alt: New VM Enable storage dialog box + + Figure 9: New VM dialog box, step 4: Enable storage + +#. Step 5 of the `New VM` wizard displays the selections you made and allows + you to customize the configuration before running the installation. Select the + `Customize configuration before install` checkbox and select the + :guilabel:`Finish` button as shown in Figure 10. + + .. figure:: figures/virtmgr/virt-manager-10.png + :scale: 100% + :alt: New VM Ready to begin the installation dialog box + + Figure 10: New VM dialog box, step 5: Ready to begin the installation + +#. Customize the installation process by changing the firmware from `BIOS` to + `UEFI x86_64`. |CL| requires UEFI firmware. In the `Firmware` field, select + the :file:`UEFI x86_64:/usr/share/qemu/OVMF.fd` entry as shown in Figure 11 + and select the :guilabel:`Apply` button. + + .. figure:: figures/virtmgr/virt-manager-11.png + :scale: 100% + :alt: vm1 on QEMU/KVM dialog box + + Figure 11: vm1 on QEMU/KVM dialog box + +#. Begin the installation by selecting the :guilabel:`Begin Installation` in + the upper left corner of the `vm1 on QEMU/KVM` dialog box. + +Install |CL| in the virt-manager VM +*********************************** + +To install |CL| in your VM, follow the instructions in the getting started +guide :ref:`bare-metal-install-server`. + +.. note:: + + You do not need to set up the network as described in the installation + guide, because you already downloaded the ISO image and connected to your + VM. Your network will show up as a wired connection. + +Congratulations! You have successfully installed |CL| in your new VM and can +begin using it immediately. The `virt-manager` tool is maintained on GitHub\* +at `virt-manager-github`_. + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _virt-mgr: https://www.virt-manager.org + +.. _Downloads: https://clearlinux.org/downloads + +.. _virt-manager-github: https://github.com/virt-manager/virt-manager + +.. _Intel® Virtualization Technology: https://www.intel.com/content/www/us/en/virtualization/virtualization-technology/intel-virtualization-technology.html diff --git a/_sources/get-started/virtual-machine-install/virtualbox-cl-installer.rst.txt b/_sources/get-started/virtual-machine-install/virtualbox-cl-installer.rst.txt new file mode 100644 index 000000000..9a1642815 --- /dev/null +++ b/_sources/get-started/virtual-machine-install/virtualbox-cl-installer.rst.txt @@ -0,0 +1,407 @@ +.. _virtualbox-cl-installer: + +|CL-ATTR| on VirtualBox\* +######################### + +This page explains how to create a virtual machine on the `VirtualBox`_ +hypervisor with |CL-ATTR| as the guest operating system. These instructions +support the |CL| live-server installer to create the |CL| virtual machine (VM). + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +#. Enable virtualization, such as `Intel® Virtualization Technology `_ + (Intel® VT), on the host system from EFI/BIOS. + +#. Download and install |VB| **version 6.0 or later** from + `VirtualBox`_ using the `VirtualBox Installation Instructions`_ for your + platform. + +Download and extract the |CL| installer ISO +******************************************* + +#. Download the :file:`clear--live-server.iso.xz` of + |CL| on the `Downloads`_ page. + +#. Validate the integrity of the downloaded image by checking the file hash + and signatures. Refer to :ref:`validate-signatures` for detailed steps. + +#. Decompress the downloaded image. + + - On Windows, you can use `7zip`_ to extract the file by right-clicking the + file to *Extract Here* (in the same directory) + + .. figure:: figures/vbox/virtualbox-cl-installer-01.png + :scale: 100% + :alt: 7zip extract here command + + Figure 1: 7zip extract here command + + - On Linux : + + .. code-block:: bash + + xz -d clear--live-server.iso.xz + +#. Delete the originally downloaded compressed file. + +Create a new |VB| virtual machine +********************************* + +A new :abbr:`VM (Virtual Machine)` needs to be created in |VBM| where |CL| +will be installed. General instructions for creating a virtual machine and +details about using different settings are available in the VirtualBox manual section `Creating Your First Virtual Machine`_. + +#. Launch the |VBM| from your host system. + +#. Click the :guilabel:`New` button to create a new VM. + +#. Choose :guilabel:`Expert mode`. + +#. On the :guilabel:`Create Virtual Machine` screen, enter the following settings: + + - **Name**: Choose name (e.g. ClearLinuxOS-VM). + - **Type**: Linux + - **Version**: **Linux 2.6 / 3.x / 4.x (64-bit)** + - **Hard disk**: `Create a virtual hard disk now` + - **Memory size default**: 2048 MB (Adjust appropriately.) + + .. note:: + Later, if you want to change the amount of RAM allocated, power down your VM. Return to :file:`Settings > System` and change + :guilabel:`Base Memory` to the desired size. + + .. figure:: figures/vbox/virtualbox-cl-installer-02.png + :scale: 100% + :alt: Create Virtual Machine + + Figure 2: Create Virtual Machine + +#. Click :guilabel:`Create`. + +#. On the :guilabel:`Create Virtual Hard Disk` screen, select: + + - **File location** + - **File size**: **32.00 GB**. Adjust size to your needs. + - **Hard disk file type**: `VDI (VirtualBox Disk Image)` + - **Storage on physical hard disk**: `Dynamically allocated` + + .. figure:: figures/vbox/virtualbox-cl-installer-03.png + :scale: 100% + :alt: Create Virtual Hard Disk + + Figure 3: Create Virtual Hard Disk + +#. Click :guilabel:`Create`. + + A new virtual machine will be created and appear in the |VBM|. + +#. Click :guilabel:`Settings` to configure the |CL| VM. + +#. In the left-hand menu, navigate to the :menuselection:`System` menu. + +#. On the :guilabel:`Motherboard` tab, select the :guilabel:`Chipset` menu, and + then select :menuselection:`ICH9`. See Figure 4. + + .. note:: + + You can select which chipset will be presented to the virtual machine. + Consult the `VM VirtualBox User Manual`_ for more details. + +#. In :guilabel:`Enabled Features`, check these boxes: + + - **Enable I/O APIC** + - **Enable EFI (special OSes only)** + + .. figure:: figures/vbox/virtualbox-cl-installer-04.png + :scale: 100% + :alt: Settings > System + + Figure 4: Settings > System + + .. note:: + + By default, only 1 virtual CPU is allocated to the new VM. Consider + increasing the number of virtual processors allocated to the virtual + machine under Settings > System > Processor for increased + performance. + +#. Click :guilabel:`OK`. + +Install |CL| on the |VB| VM +*************************** + +|CL| is ready to be installed. + +Mount the installation ISO +========================== + +The |CL| installer ISO needs to be mounted as a virtual CD-ROM on the VM +before powering the VM on. + +#. From the *ClearLinux-OS* :guilabel:`Settings` menu at left, select + :guilabel:`Storage`. + +#. From :guilabel:`Storage Devices`, middle column, click the blue + disk labeled :guilabel:`Empty`. + +#. From the :guilabel:`Attributes` menu, click the blue CD disk next to + the :guilabel:`Optical Drive` drop down menu and click + :guilabel:`Choose Virtual Optical Disk File...` + + .. figure:: figures/vbox/virtualbox-cl-installer-05.png + :scale: 100% + :alt: Choose Virtual Optical Disk Drive + + Figure 5: Choose Virtual Optical Disk Drive + +#. Where there appears :guilabel:`Please choose a virtual optical disk file`, + select the ISO file and click *Open*. + + .. figure:: figures/vbox/virtualbox-cl-installer-06.png + :scale: 100% + :alt: Mounting an ISO + + Figure 6: Mounting an ISO + +#. Click :guilabel:`OK` to exit and return to the main |VBM|. + +Install |CL| with live-server installer +======================================= + +#. In the |VBM|, select virtual machine you created and click :guilabel:`Start`. + + .. figure:: figures/vbox/virtualbox-cl-installer-07.png + :scale: 100% + :alt: Start the installer + + Figure 7: Start the installer + + .. note:: + + To release the mouse cursor from the VM console window, press the right + :kbd:`Ctrl` key on the keyboard. + +#. When :guilabel:`Clear Linux Installer` in boot manager appears, + select :kbd:`Enter`. Do not install the bundle `desktop-autostart`. + +#. Follow the steps in :ref:`bare-metal-install-server` to + install |CL| onto the VM virtual disk. Note: + + #. In :guilabel:`Configure Installation Media`, navigate top + VBOX HARDDISK, and then select :guilabel:`Confirm`. + + #. In :menuselection:`Advanced options --> Manage User`, create an + administrative user. + + #. Do not install the bundle `desktop-autostart`. + +#. When |CL| installation is complete, click :guilabel:`Exit`. + +#. At the prompt, enter: + + .. code-block:: bash + + shutdown now + +Unmount the ISO +=============== + +The |CL| installer ISO needs to be unmounted to allow the VM to boot from the +virtual hard disk. + +#. Return to the |VBM|. + +#. Click :guilabel:`Settings` to configure the |CL| VM. + +#. From the VM :guilabel:`Settings` window, navigate to the :guilabel:`Storage` + pane in the left menu. + +#. From the middle :guilabel:`Storage Devices` column, click the blue CD disk + labeled :guilabel:`clear--live-server.iso` under the + :guilabel:`Controller: IDE`. + +#. From the :guilabel:`Attributes` column on the right, in :guilabel:`Optical Drive`, + select the blue CD icon beside and click + :guilabel:`Remove Disk from Virtual Drive`. + + .. figure:: figures/vbox/virtualbox-cl-installer-08.png + :scale: 100% + :alt: Remove Disk from Virtual Drive + + Figure 8: Remove Disk from Virtual Drive + +#. Click :guilabel:`OK` to exit the :guilabel:`VM Settings` menu and return to + the main |VBM|. + +Install |VB| Linux Guest Additions +================================== + +|CL| provides Linux Guest Additions drivers for full compatibility using an +install script in the **kernel-lts** (Long Term Support) bundle by |CL|. + +#. From the |VBM| select the |CL| VM, and select :guilabel:`Start`. + +#. In the VM Console, log in as the administrative user previously created. + + .. note:: + A message may appear: "A kernel update is available: you may wish + to reboot the system." + + To update the kernel, enter: + + .. code-block:: bash + + sudo reboot + + At initial login, enter the administrative user's password and continue. + +#. Validate the installed kernel is **kernel-lts** by checking the output + of the :command:`uname -r` command. It should end in **.lts** or **.lts2018**. + + .. code-block:: bash + + uname -r + .lts + + If the running kernel is not **lts**: install the LTS kernel manually, + update the bootloader, and check again: + + .. code-block:: bash + + sudo swupd bundle-add kernel-lts + clr-boot-manager set-kernel $(basename $(realpath /usr/lib/kernel/default-lts)) + clr-boot-manager update + reboot + +#. Remove any kernel bundles that do not end in *-lts* or *kernel-install* + to simplify and avoid conflicts: + + .. code-block:: bash + + sudo swupd bundle-list | grep kernel + sudo swupd bundle-remove + +#. In the VM Console top menu, click :guilabel:`Devices`, and select + :guilabel:`Insert Guest Additions CD image...` to mount the |VB| driver + installation to the |CL| VM. + + .. figure:: figures/vbox/virtualbox-cl-installer-09.png + :scale: 100% + :alt: Insert Guest Additions CD image + + Figure 9: Insert Guest Additions CD image + +#. If a dialogue appears, "VBx_GAs_6.0.8... Would you like to run it?", + select :guilabel:`Cancel`. + + Instead, we provide a script to patch and install |VB| drivers on |CL|. + +#. Open a Terminal and enter the script: + + .. code-block:: bash + + sudo install-vbox-lga + + .. note:: + + Successful installation shows: "Guest Additions installation complete". + If drivers are already installed, don't re-install them. + +#. Shut down the system. Select :menuselection:`Machine --> ACPI Shutdown`. + + .. figure:: figures/vbox/virtualbox-cl-installer-10.png + :scale: 100% + :alt: Powering off a VirtualBox VM + + Figure 10: Powering off a VirtualBox VM + +#. Select :guilabel:`Settings`, :guilabel:`Display`. + +#. In :guilabel:`Graphics Controller`, select :guilabel:`VBoxSVGA` + to adjust screen size dynamically. + + .. figure:: figures/vbox/virtualbox-cl-installer-11.png + :scale: 100% + :alt: Remove Disk from Virtual Drive + + Figure 11: VirtualBox hardware acceleration error + +#. In the |VBM|, select :guilabel:`Start`. + +#. In the VM console, login and verify the |VB| drivers are loaded: + + .. code-block:: bash + + lsmod | grep ^vbox + + You should see drivers loaded with names beginning with **vbox**: + (e.g., vboxvideo, vboxguest). + +#. Add `desktop-autostart` for a full desktop experience. + + .. code-block:: bash + + sudo swupd bundle-add desktop-autostart + +#. Reboot the VM and log in with the administrative user. + + .. code-block:: bash + + sudo reboot + +The |CL| VM running on |VB| is ready to develop and explore. + +Troubleshooting +*************** + +#. **Problem:** On a Microsoft\* Windows\* OS, |VB| encounters an error when + trying to start a VM indicating *VT-X/AMD-v hardware acceleration is not + available on your system.* + + .. figure:: figures/vbox/virtualbox-cl-installer-12.png + :scale: 100% + :alt: Remove Disk from Virtual Drive + + Figure 12: VirtualBox hardware acceleration error + + **Solution:** First, double check the `Prerequisites`_ section to make + sure *Hardware accelerated virtualization* extensions have been enabled + in the host system's EFI/BIOS. + + *Hardware accelerated virtualization*, may get disabled for |VB| when + another hypervisor, such as *Hyper-V* is enabled. + + To disable *Hyper-V* execute this command in an + **Administrator: Command Prompt or Powershell**, and reboot the system: + + .. code-block:: bash + + bcdedit /set {current} hypervisorlaunchtype off + + To enable Hyper-V again, execute this command in an + **Administrator: Command Prompt or Powershell**, and reboot the system: + + .. code-block:: bash + + bcdedit /set {current} hypervisorlaunchtype Auto + + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _VirtualBox Installation Instructions: https://www.virtualbox.org/manual/ch02.html + +.. _VirtualBox: https://www.virtualbox.org + +.. _Downloads: https://clearlinux.org/downloads + +.. _`Creating Your First Virtual Machine`: https://www.virtualbox.org/manual/UserManual.html#gui-createvm + +.. _7zip: http://www.7-zip.org/ + +.. _Intel® Virtualization Technology: https://www.intel.com/content/www/us/en/virtualization/virtualization-technology/intel-virtualization-technology.html + +.. _VM VirtualBox User Manual: https://docs.oracle.com/cd/E97728_01/E97727/html/settings-system.html \ No newline at end of file diff --git a/_sources/get-started/virtual-machine-install/vmw-player.rst.txt b/_sources/get-started/virtual-machine-install/vmw-player.rst.txt new file mode 100644 index 000000000..b222340eb --- /dev/null +++ b/_sources/get-started/virtual-machine-install/vmw-player.rst.txt @@ -0,0 +1,422 @@ +.. _vmw-player: + +|CL-ATTR| on VMware\* Workstation Player +######################################## + +This guide explains how to set up the VMware\* Workstation Player 15.5.1 +hypervisor and instantiate a VM instance of |CL| by installing it using +an ISO or using a pre-built image. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +`VMware Workstation Player`_ is a type 2 hypervisor. It runs on top of +Windows\* or Linux\* operating systems. With VMware Workstation Player, +you can create, configure, manage, and run |CL-ATTR| +:abbr:`VMs (Virtual Machines)` on your local system. + +VMware offers a type 1 hypervisor called `VMware ESXi`_ designed for the +cloud environment. For information on how to install |CL| as guest OS on +it, see :ref:`vmware-esxi-install-cl`. + +.. note:: + + The screenshots in this document show the Windows version of the + VMware Workstation Player 15.5.1. The menus and prompts are similar to those + in other versions and for the Linux version, save some minor wording + differences. + +Install the VMware Workstation Player hypervisor +************************************************ + +#. Enable Intel® Virtualization Technology (Intel® VT) and + Intel® Virtualization Technology for Directed I/O (Intel® VT-d) in + your system's BIOS. + +#. `VMware Workstation Player`_ is available for Windows and Linux. + Download your preferred version. + +#. Install VMware Workstation Player by following the instructions + appropriate for your system's OS: + + * On supported Linux distros: + + a. Ensure your Linux distro is running a GUI desktop. + #. Start a terminal emulator. + #. Start the installer by issuing the command below and follow the + guided steps. + + .. code-block:: console + + sudo sh ./VMware-Player-.x86_64.bundle + + * On Windows: + + a. Start the installer. + #. Follow the setup wizard. + +For additional help, see the `VMware Workstation Player Documentation`_. + +Create a blank VM +***************** + +#. Start the ``VMware Workstation Player`` app. + +#. On the home screen, click :guilabel:`Create a New Virtual Machine`. See + Figure 1. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-01.png + :scale: 100% + :alt: VMware Workstation Player - Create a new virtual machine + + Figure 1: VMware Workstation Player - Create a new virtual + machine + +#. Select :guilabel:`I will install the operating system later`. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-02.png + :scale: 100% + :alt: I will install the operating system later. + + Figure 2: I will install the operating system later. + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Select a Guest Operating System` window, set the + :guilabel:`Guest operating system` setting to :guilabel:`Linux`. See + Figure 3. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-03.png + :scale: 100% + :alt: VMware Workstation Player - Select guest operating system type + + Figure 3: VMware Workstation Player - Select guest operating system + type + +#. Set the :guilabel:`Version` setting to + :guilabel:`Other Linux 5.x or later kernel 64-bit`. + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Name the Virtual Machine` screen, name the new VM. See + Figure 4. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-04.png + :scale: 100% + :alt: VMware Workstation Player - Name virtual machine + + Figure 4: VMware Workstation Player - Name virtual machine + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Specify Disk Capacity` screen, set the VM's maximum disk + size. If you're planning to use a pre-built image, just use the default + size for now. See Figure 5. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-05.png + :scale: 100% + :alt: VMware Workstation Player - Set disk capacity + + Figure 5: VMware Workstation Player - Set disk capacity + + .. note:: + + For optimal performance with the |CL| Desktop image, we recommend 32GB + of drive space. See :ref:`system-requirements` for more details. + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Ready to Create Virtual Machine` screen, click the + :guilabel:`Customize Hardware...` button. See Figure 6. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-06.png + :scale: 100% + :alt: VMware Workstation Player - Customize hardware + + Figure 6: VMware Workstation Player - Customize hardware + +#. Select :guilabel:`Memory` and set a desired value. See Figure 7. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-07.png + :scale: 100% + :alt: VMware Workstation Player - Set memory size + + Figure 7: VMware Workstation Player - Set memory size + + .. note:: + + The |CL| live installer ISO needs a minimum of 1GB of RAM. + After completing installation, |CL| can run on as little as + 128MB of RAM. Thus, you can reduce the memory size if needed. + See :ref:`system-requirements` for more details. + +#. Under the :guilabel:`Device` list, select :guilabel:`Processors`. See + Figure 8. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-08.png + :scale: 100% + :alt: VMware Workstation Player - Set virtualization engine option + + Figure 8: VMware Workstation Player - Set virtualization engine + option + +#. Under :guilabel:`Processors` and :guilabel:`Number of processor cores`, + enter the desired number of cores. + +#. Under the :guilabel:`Virtualization engine` section, + check the :guilabel:`Virtualize Intel VT-x/EPT or AMD-V/RVI` box. + +#. Click the :guilabel:`Close` button. + +#. Click the :guilabel:`Finish` button. + +Enable UEFI boot support +************************ + +|CL| needs UEFI support to boot and work properly. To enable it: + +#. Close the ``VMware Workstation Player`` app. + +#. Add the following line to the end of your VM's :file:`.vmx` file. + + .. code-block:: console + + firmware = "efi" + + .. note:: + + Depending on the OS, you can typically find the VMware VM files under: + + * On Linux distros: :file:`/home/username/vmware` + * On Windows: :file:`C:\\Users\\username\\Documents\\Virtual Machines` + +Instantiate |CL| +**************** + +If you want to install |CL| from scratch, following the instructions +in the **Install |CL| using ISO** tab. Otherwise, follow the +**Use |CL| pre-built VMware image** tab to use our pre-built image. + +.. tabs:: + + .. tab:: Install |CL| using ISO + + #. Navigate to the |CL| `Downloads`_ page and download either the ``Server`` + or ``Desktop`` ISO image. After the download is complete, you will + attach this image. + + #. Start the ``VMware Workstation Player`` app. + + #. Select the VM that was created in section `Create a blank VM`_. + See Figure 9. + + #. Click :guilabel:`Edit virtual machine settings`. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-09.png + :scale: 100% + :alt: VMware Workstation Player - Edit virtual machine settings + + Figure 09: VMware Workstation Player - Edit virtual machine settings + + #. In the :guilabel:`Virtual Machine settings` window, + under :guilabel:`Hardware`, select guilabel:`CD/DVD (IDE)`. + See Figure 10. + + #. Under :guilabel:`Connection` at the right, select + :guilabel:`Use ISO image file`. + + #. Click :guilabel:`Browse` and select the + |CL| installer ISO. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-10.png + :scale: 100% + :alt: VMware Workstation Player - Select |CL| installer ISO + + Figure 10: VMware Workstation Player - Select |CL| installer ISO + + #. Click :guilabel:`OK` to close the :guilabel:`Virtual Machine settings` + window. + + #. Start the VM by clicking :guilabel:`Play virtual machine`. + + #. Follow one of these guides to complete the installation of |CL|. + + * *Desktop* version: :ref:`install-clr-desktop-start` + * *Server* version: :ref:`install-clr-server-start` + + #. Reboot the VM after the installation completes. + + #. Install the ``os-cloudguest-vmware`` bundle, the open source + VMware Tools for Linux\* guest operating systems, which enables + new features and improves general performance. + + .. code-block:: bash + + sudo swupd bundle-add os-cloudguest-vmware + sudo systemctl enable --now open-vm-tools + + More information is available on the `VMWare Tools Product Documentation`_ + site. + + .. tab:: Use |CL| pre-built VMWare image + + #. Navigate to the |CL| `Downloads`_ page and download the ``VMware`` + image. + + #. Decompress the downloaded file and move it to the + directory where your newly-created VM files reside. + + .. note:: + + Depending on the OS, you can typically find the VMware VM + files under: + + * Linux distros :file:`/home/username/vmware` + * Windows :file:`C:\\Users\\username\\Documents\\Virtual Machines` + + #. Start the ``VMware Workstation Player`` app. + + #. Select the VM that was created in section `Create a blank VM`_. + See Figure 9. + + #. Click :guilabel:`Edit virtual machine settings`. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-09.png + :scale: 100% + :alt: VMware Workstation Player - Edit virtual machine settings + + Figure 9: VMware Workstation Player - Edit virtual machine settings + + #. Under :guilabel:`Hardware` and :guilabel:`Device` list, select + :guilabel:`Hard Disk (SCSI)`. See Figure 11. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-11.png + :scale: 100% + :alt: VMware Workstation Player - Remove hard drive + + Figure 11: VMware Workstation Player - Remove hard drive + + #. Click the :guilabel:`Remove` button. + + #. To add a new hard disk and attach the pre-built |CL| + VMware image, click the :guilabel:`Add` button. See Figure 12. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-12.png + :scale: 100% + :alt: VMware Workstation Player - Add new device + + Figure 12: VMware Workstation Player - Add new device + + #. Under the :guilabel:`Hardware types` section, select + :guilabel:`Hard Disk`. See Figure 13. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-13.png + :scale: 100% + :alt: VMware Workstation Player - Add hard drive + + Figure 13: VMware Workstation Player - Add hard drive + + #. Click the :guilabel:`Next` button. + + #. Select your preferred :guilabel:`Virtual disk type`. + See Figure 14. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-14.png + :scale: 100% + :alt: VMware Workstation Player - Select virtual disk type + + Figure 14: VMware Workstation Player - Select virtual disk type + + #. Select the :guilabel:`Use an existing virtual disk` option. + See Figure 15. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-15.png + :scale: 100% + :alt: VMware Workstation Player - Use existing virtual disk + + Figure 15: VMware Workstation Player - Use existing virtual disk + + #. Click the :guilabel:`Browse` button and select the + pre-built |CL| VMware image file. See Figure 16. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/vmw-player/vmw-player-16.png + :scale: 100% + :alt: VMware Workstation Player - Select pre-built VMware |CL| image file + + Figure 16: VMware Workstation Player - Select pre-built VMware |CL| + image file + + #. Click the :guilabel:`Finish` button. + + .. note:: + + When asked to convert the existing virtual disk to a newer format, + selecting either option works. + + #. Click the :guilabel:`OK` button. + + #. Start the VM by clicking :guilabel:`Play virtual machine`. + + .. note:: + + If you need to increase the disk size of the pre-built |CL| image, see + :ref:`increase-virtual-disk-size`. + +Related topics +************** + +For other guides on using the VMWare Player and ESXi, see: + +* :ref:`vmware-esxi-install-cl` + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _VMware ESXi: https://www.vmware.com/products/esxi-and-esx.html + +.. _VMware Workstation Player: + https://www.vmware.com/products/workstation-player.html + +.. _VMware Workstation Player Documentation: + https://docs.vmware.com/en/VMware-Workstation-Player/index.html + +.. _Downloads: https://clearlinux.org/downloads + +.. _VMWare Tools Product Documentation: https://docs.vmware.com/en/VMware-Tools/10.1.0/com.vmware.vsphere.vmwaretools.doc/GUID-8B6EA5B7-453B-48AA-92E5-DB7F061341D1.html diff --git a/_sources/get-started/virtual-machine-install/vmware-esxi-install-cl.rst.txt b/_sources/get-started/virtual-machine-install/vmware-esxi-install-cl.rst.txt new file mode 100644 index 000000000..1828cf2f5 --- /dev/null +++ b/_sources/get-started/virtual-machine-install/vmware-esxi-install-cl.rst.txt @@ -0,0 +1,278 @@ +.. _vmware-esxi-install-cl: + +|CL-ATTR| on VMware\* ESXi +########################## + +This page explains how to create a new :abbr:`VM (Virtual Machine)` and +manually install |CL-ATTR| on the new VM with VMware ESXi 6.5. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +`VMware ESXi`_ is a type 1 bare-metal hypervisor that runs directly on top +of server hardware. With VMware ESXi, you can create, configure, manage, and +run |CL| virtual machines in the cloud. + +Manually installing |CL| on a new VM gives additional configuration flexibility +during installation. For example: alternate disk sizes, number of partitions, +pre-installed bundles, etc. + +.. note:: + + VMware also offers a type 2 hypervisor designed for the desktop environment, called `VMware Workstation Player`_. Refer to + :ref:`vmw-player` for more information. + + Visit :ref:`image-types` to learn more about all available images. + +Download the latest |CL| installer ISO +************************************** + +Get the latest |CL| installer ISO image from the `image`_ repository. +Look for :file:`clear-[version number]-installer.iso.xz`. + +We also provide instructions for downloading and verifying a Clear Linux ISO. +For more information, refer to :ref:`download-verify-decompress`. + +Upload the |CL| installer ISO to the VMware server +************************************************** + +#. Connect to the VMware server and log into an account with sufficient + permission to create and manage VMs. +#. Under the :guilabel:`Navigator` window, select :guilabel:`Storage`. + See Figure 1. +#. Under the :guilabel:`Datastores` tab, click the :guilabel:`Datastore browser` + button. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-1.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Storage + + Figure 1: VMware ESXi - Navigator > Storage + +#. Click the :guilabel:`Create directory` button and name the directory `ISOs`. + See Figure 2. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-2.png + :scale: 100 % + :alt: VMware ESXi - Datastore > Create directory + + Figure 2: VMware ESXi - Datastore > Create directory + +#. Select the newly-created directory and click the :guilabel:`Upload` button. + See Figure 3. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-3.png + :scale: 100 % + :alt: VMware ESXi - Datastore > Upload ISO + + Figure 3: VMware ESXi - Datastore > Upload ISO + +#. Select the decompressed |CL| installer ISO file :file:`clear-[version number]-installer.iso` + and upload it. + +Create and configure a new VM +***************************** + +In this section, you will create a new VM, configure its basic parameters such +as drive size, number of CPUs, memory size, and then attach the |CL| installer ISO. + +#. Under the :guilabel:`Navigator` window, select :guilabel:`Virtual Machines`. + See Figure 4. +#. In the right window, click the :guilabel:`Create / Register VM` button. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-4.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Virtual Machines + + Figure 4: VMware ESXi - Navigator > Virtual Machines + +#. On the :guilabel:`Select creation type` step: + + #. Select the :guilabel:`Create a new virtual machine` option. + See Figure 5. + #. Click the :guilabel:`Next` button. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-5.png + :scale: 100 % + :alt: VMware ESXi - Create a new virtual machine + + Figure 5: VMware ESXi - Create a new virtual machine + +#. On the :guilabel:`Select a name and guest OS` step: + + #. Give the new VM a name in the :guilabel:`Name` field. See Figure 6. + #. Set the :guilabel:`Compatibility` option to :guilabel:`ESXi 6.5 virtual machine`. + #. Set the :guilabel:`Guest OS family` option to :guilabel:`Linux`. + #. Set the :guilabel:`Guest OS version` option to :guilabel:`Other 3.x or later Linux (64-bit)`. + #. Click the :guilabel:`Next` button. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-6.png + :scale: 100 % + :alt: VMware ESXi - Give a name and select guest OS type + + Figure 6: VMware ESXi - Give a name and select guest OS type + +#. On the :guilabel:`Select storage` step: + + #. Accept the default option. + #. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Customize settings` step: + + #. Click the :guilabel:`Virtual Hardware` button. See Figure 7. + #. Expand the :guilabel:`CPU` setting and enable :guilabel:`Hardware virtualization` by + checking :guilabel:`Expose hardware assisted virtualization to the guest OS`. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-7.png + :scale: 100 % + :alt: VMware ESXi - Enable hardware virtualization + + Figure 7: VMware ESXi - Enable hardware virtualization + + #. Set :guilabel:`Memory` size to 2048MB (2GB). See Figure 8. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-8.png + :scale: 100 % + :alt: VMware ESXi - Set memory size + + Figure 8: VMware ESXi - Set memory size + + .. note:: + + The |CL| installer ISO needs a minimum of 2GB of RAM to work properly. + You can reduce the memory size after the installation completes if you want, + because a minimum |CL| installation can function on as little as 128MB of RAM. + See :ref:`system-requirements` for more details. + + #. Set :guilabel:`Hard disk 1` to the desired capacity. See Figure 9. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-9.png + :scale: 100 % + :alt: VMware ESXi - Set hard disk size + + Figure 9: VMware ESXi - Set hard disk size + + .. note:: + + A minimum |CL| installation can exist on 600MB of drive space. + See :ref:`system-requirements` for more details. + + #. Attach the |CL| installer ISO. For the :guilabel:`CD/DVD Drive 1` setting, + click the drop-down list to the right of it and select the :guilabel:`Datastore ISO file` + option. Then select the |CL| installer ISO :file:`clear-[version number]-installer.iso` + that you previously uploaded to the VMware server. See Figure 10. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-10.png + :scale: 100 % + :alt: VMware ESXi - Set CD/DVD to boot installer ISO + + Figure 10: VMware ESXi - Set CD/DVD to boot installer ISO + +#. Click the :guilabel:`Next` button. +#. Click the :guilabel:`Finish` button. + +Install |CL| into the new VM +**************************** + +#. Power on the VM. + + #. Under the :guilabel:`Navigator` window, select :guilabel:`Virtual Machines`. + See Figure 11. + #. In the right window, select the newly-created VM. + #. Click the :guilabel:`Power on` button. + #. Click on the icon representing the VM to bring it into view and maximize + its window. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-11.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Virtual Machines > Power on VM + + Figure 11: VMware ESXi - Navigator > Virtual Machines > Power on VM + +#. Follow the :ref:`install-on-target-start` guide to complete the installation of + |CL|. +#. After the installation is complete, follow the |CL| instruction to reboot it. + This will restart the installer again. + +Reconfigure the VM's settings to boot the newly-installed |CL| +************************************************************** + +After |CL| has been installed using the installer ISO, it must be detached so +it will not run again. Also, in order to boot the newly-installed |CL|, you must +enable UEFI support. + +#. Power off the VM. + + #. Click the :guilabel:`Actions` button - located on the top-right corner + of the VM's windows - and go to the :guilabel:`Power` setting and + select the :guilabel:`Power off` option. See Figure 12. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-12.png + :scale: 100 % + :alt: VMware ESXi - Actions > Power off + + Figure 12: VMware ESXi - Actions > Power off + +#. Edit the VM settings. + + #. Click the :guilabel:`Actions` button again and select :guilabel:`Edit settings`. + See Figure 13. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-13.png + :scale: 100 % + :alt: VMware ESXi - Actions > Edit settings + + Figure 13: VMware ESXi - Actions > Edit settings + +#. Disconnect the CD/DVD to stop it from booting the |CL| installer ISO again. + + #. Click the :guilabel:`Virtual Hardware` button. See Figure 14. + #. For the :guilabel:`CD/DVD Drive 1` setting, uncheck the + :guilabel:`Connect` checkbox. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-14.png + :scale: 100 % + :alt: VMware ESXi - Disconnect the CD/DVD drive + + Figure 14: VMware ESXi - Disconnect the CD/DVD drive + +#. |CL| needs UEFI support in order to boot. Enable it. + + #. Click the :guilabel:`VM Options` button. See Figure 15. + #. Expand the :guilabel:`Boot Options` setting. + #. For the :guilabel:`Firmware` setting, click the drop-down list to the right + of it and select the :guilabel:`EFI` option. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-15.png + :scale: 100 % + :alt: VMware ESXi - Set boot firmware to EFI + + Figure 15: VMware ESXi - Set boot firmware to EFI + +#. Click the :guilabel:`Save` button. + +Power on the VM and boot |CL| +***************************** + +After configuring the settings above, power on the VM. + +#. Under the :guilabel:`Navigator` window, select :guilabel:`Virtual Machines`. + See Figure 16. +#. In the right window, select the VM. +#. Click the :guilabel:`Power on` button. +#. Click on the icon representing the VM to bring it into view and maximize + its window. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-16.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Virtual Machines > Power on VM + + Figure 16: VMware ESXi - Navigator > Virtual Machines > Power on VM + +.. _VMware ESXi: https://www.vmware.com/products/esxi-and-esx.html +.. _VMware Workstation Player: https://www.vmware.com/products/workstation-player.html +.. _image: https://cdn.download.clearlinux.org/image/ diff --git a/_sources/guides/clear/autoproxy.rst.txt b/_sources/guides/clear/autoproxy.rst.txt new file mode 100644 index 000000000..f6ed1082a --- /dev/null +++ b/_sources/guides/clear/autoproxy.rst.txt @@ -0,0 +1,168 @@ +.. _autoproxy: + +Autoproxy +######### + +Autoproxy is provided to enable |CL-ATTR| to work smoothly behind a +corporate proxy. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +Autoproxy tries to detect a Proxy Auto-Config (PAC) script and use it to +automatically resolve the proxy needed for a given connection. With +Autoproxy, you can use |CL| inside any proxy environment without having to +manually configure the proxies. + +Corporate and private networks can be very complex, needing to restrict and +control network connections for security reasons. The typical side effects +are limited or blocked connectivity, and require manual configuration of +proxies to perform the most mundane tasks, such as cloning a repo or checking +for updates. With |CL|, all of the work is done behind the scenes to +effortlessly use your network and have connections “just work”. + +This feature removes severe complications with network connectivity due to +proxy issues. You can automate tasks, such as unit testing, without worrying +about the proxy not being set, and you can remove unset proxies from the +equation when dealing with network unavailability across systems. + +How it works +************ + +We designed Autoproxy around tools provided by most Linux\* +distributions with a few minor additions and modifications. We leveraged the +DHCP and network information obtained from systemd and created a +PAC-discovery daemon. The daemon uses the information to resolve a URL for a +PAC file. The daemon then passes the URL into PACrunner\*. PACrunner +downloads the PAC file and uses the newly implemented Duktape\* engine to +parse it. + +.. figure:: figures/autoproxy_0.png + :width: 400px + + Figure 1: Autoproxy Flow + +From that point on, any cURL\* or network requests query PACrunner for the +correct proxy to use. We modified the cURL library to communicate with +PACrunner over DBus. However, cURL will ignore PACrunner and run normally if +no PAC file is loaded or if you manually set any proxies. Thus, your +environment settings are respected and no time is wasted trying to resolve a +proxy. All these steps happen in the background with no user interaction. + +Troubleshooting +*************** + +Autoproxy allows |CL| to operate seamlessly behind a proxy +because :ref:`swupd ` and other |CL| tools are implemented on +top of libcurl. Tools that do not use libcurl, like git, must +be configured independently. + +If you are familiar with PAC files and WPAD, you can use +:command:`pacdiscovery` and :command:`FindProxyForURL` to +troubleshoot problems with autoproxy. + +.. note:: + + Learn more about WPAD, PAC files, and PAC functions at `findproxyforurl`_. + +.. _findproxyforurl: http://findproxyforurl.com/ + + +Run :command:`pacdiscovery` with no arguments to indicate |br| + +#. if there is a problem resolving the :command:`WPAD` host name resolution: + + .. code-block:: bash + + sudo pacdiscovery + + Sample output: + + .. code-block:: console + + failed getaddrinfo: No address associated with hostname + Unable to find wpad host + +#. or if the :command:`pacrunner` service is disabled (masked). + + .. code-block:: bash + + sudo pacdiscovery + + Sample output: + + .. code-block:: console + + PAC url: http://autoproxy.your.domain.com/wpad.dat + Failed to create proxy config: Unit pacrunner.service is masked. + +Unmask the :command:`pacrunner` service by running: + +.. code-block:: bash + + sudo systemctl unmask pacrunner.service + + + +Use :command:`FindProxyForURL` with :command:`busctl` to indicate |br| + +#. the URL and port of the proxy server when an external URL and host are + provided as arguments: + + .. code-block:: bash + + busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client FindProxyForURL ss "http://www.google.com" "google.com" + + Sample output showing proxy was found: + + .. code-block:: console + + s "PROXY proxy.your.domain.com:" + +#. if the :command:`pacrunner.service` is masked: + + .. code-block:: bash + + busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client FindProxyForURL ss "http://www.google.com" "google.com" + + Sample output: + + .. code-block:: console + + Unit pacrunner.service is masked. + dig wpad, dig wpad. + +#. if a proxy server is not available, or if :command:`pacrunner` is running + without a PAC file: + + .. code-block:: bash + + busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client FindProxyForURL ss "http://www.google.com" "google.com" + + Sample output, indicating connection made directly, without proxy: + + .. code-block:: console + + s "DIRECT" + +Once :command:`pacdiscovery` is able to look up :command:`WPAD`, restart the +:command:`pacrunner` service: + +.. code-block:: bash + + sudo systemctl stop pacrunner + sudo systemctl restart pacdiscovery + +.. note:: + + A "domain" or "search" entry in :file:`/etc/resolv.conf` is required + for short name lookups to resolve. The :file:`resolv.conf` man page has + additional details. + +.. |br| raw:: html + +

\ No newline at end of file diff --git a/_sources/guides/clear/autospec.rst.txt b/_sources/guides/clear/autospec.rst.txt new file mode 100644 index 000000000..0727392e8 --- /dev/null +++ b/_sources/guides/clear/autospec.rst.txt @@ -0,0 +1,611 @@ +.. _autospec: + +autospec +######## + +**autospec** is a tool used to assist with the automated creation and +maintenance of RPM packaging in |CL-ATTR|. Where a standard +:abbr:`RPM (RPM Package Manager)` build process using :command:`rpmbuild` +requires a tarball and :file:`.spec` file to start, autospec requires only a +tarball and package name to start. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +The autospec tool attempts to infer the requirements of the :file:`.spec` +file by analyzing the source code and :file:`Makefile` information. It +continuously runs updated builds based on new information discovered from +build failures until it has a complete and valid :file:`.spec` file. If +needed, you can influence the behavior of autospec and customize the build by providing optional `control files`_ to the autospec tool. + +autospec uses **mock** as a sandbox to run the builds. Visit the `mock wiki`_ +for additional information on using mock. + +For a general understanding of how an RPM works, visit +the `rpm website`_ or the `RPM Packaging Guide`_. + +.. raw:: html + + + +How it works +************ + +Learn the autospec tool set up and process. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +============= + +The setup for building source in |CL| must be completed before using the +autospec tool. + +Refer to `Setup environment to build source`_ for instructions on completing +the setup. + +Create an RPM +============= + +The basic autospec process is described in the following steps: + +#. The :command:`make autospec` command generates a :file:`.spec` file based + on the analysis of code and existing control files. + + Any control files should be located in the same directory as the resulting + :file:`.spec` file. View the `autospec README`_ for more information on `control files`_. + +#. autospec creates a build root with mock config. + +#. autospec attempts to build an RPM from the generated :file:`.spec`. + +#. autospec detects any missed declarations in the :file:`.spec`. + +#. If build errors occur, autospec scans the build log to try to detect + the root cause. + +#. If autospec detects the root cause and knows how to continue, it restarts + the build automatically at step 1 with updated build instructions. + +#. Otherwise, autospec stops the build for user inspection to resolve the + errors. Respond to the build process output by fixing source code issues + and/or editing control files to resolve issues, which may include + dependencies or exclusions. See `autospec README`_ for more information on + control files. + + The user resumes the process at step 1 after errors are resolved. + + If a binary dependency doesn't exist in |CL|, you must build it + before running autospec again. + +Following these steps, autospec continues to rebuild the package, based on +new information discovered from build failures, until it has a valid +:file:`.spec`. If no build errors occur, RPM packages are successfully built. + +Examples +******** + +Complete `Setup environment to build source`_ before using these examples. + +.. contents:: + :local: + :depth: 1 + +Example 1: Build RPM with an existing spec file +=============================================== + +This example shows how to build a RPM from a pre-packaged upstream package +with an existing spec file. The example uses the ``dmidecode`` package. + +#. Navigate to the autospec workspace and clone the ``dmidecode`` package: + + .. code-block:: bash + + cd ~/clearlinux + make clone_dmidecode + + .. note:: + + You can clone all package repos at once using the following command: + + .. code-block:: bash + + make [-j NUM] clone-packages + + The optional NUM is the number of threads to use. + + For a list of available packages, view the + :file:`~/clearlinux/projects/common/packages` file. + +#. Navigate to the local copy of the ``dmidecode`` package and build it: + + .. code-block:: bash + + cd ~/clearlinux/packages/dmidecode/ + make build + +#. The resulting RPMs are in :file:`./rpms`. Build logs and additional RPMs + are in :file:`./results`. + +Example 2: Build a new RPM +========================== + +This example shows how to build a new RPM with no spec file. The example will +create a simple helloclear RPM. + +#. Navigate to the autospec workspace and build the helloclear RPM. The + :file:`Makefile` provides a :command:`make autospecnew` that can + automatically generate an RPM package using the autospec tool. You must + pass the URL to the source tarball and the NAME of the RPM you wish to + create: + + .. code-block:: bash + + cd ~/clearlinux + make autospecnew URL="https://github.com/clearlinux/helloclear/archive/helloclear-v1.0.tar.gz" NAME="helloclear" + + The resulting RPMs are in :file:`./packages/helloclear/rpms`. Build logs and additional RPMs are in :file:`./packages/helloclear/results`. + +Example 3: Generate a new spec file with a pre-defined package +============================================================== + +This example shows how to modify an existing package to create a custom RPM. +In this example you will make a simple change to the ``dmidecode`` package +and rebuild the package. + +#. Navigate to the autospec workspace and clone the ``dmidecode`` package: + + .. code-block:: bash + + cd ~/clearlinux + make clone_dmidecode + +#. Navigate into the *dmidecode* directory: + + .. code-block:: bash + + cd packages/dmidecode + +#. Open the :file:`excludes` file with an editor and add these lines: + + .. code-block:: console + + /usr/bin/biosdecode + /usr/bin/ownership + /usr/bin/vpddecode + /usr/share/man/man8/biosdecode.8 + /usr/share/man/man8/ownership.8 + /usr/share/man/man8/vpddecode.8 + + .. note:: + + These files aren't needed by dmidecode, so we can remove them without + any issues. + +#. In the :file:`dmidecode` directory, build the modified ``dmidecode`` + package: + + .. code-block:: bash + + make autospec + +#. The resulting RPMs are in :file:`./rpms`. Logs are in :file:`./results`. + +Example 4: Provide control files to autospec +============================================ + +This example shows how to modify control files to correct build failures that +autospec is unable to resolve. In this example, you will add a missing +license and dependencies so autospec can complete a successful build. + +#. Navigate to the autospec workspace: + + .. code-block:: bash + + cd ~/clearlinux + +#. If you have not already, clone all upstream package repos: + + .. code-block:: bash + + make [-j NUM] clone-packages + + The optional NUM is the number of threads to use. + + .. note:: + + In a later step of this example, we will search the cloned package + repos for a missing dependency. + +#. Build the opae-sdk RPM: + + .. code-block:: bash + + make autospecnew URL="https://github.com/OPAE/opae-sdk/archive/0.13.0.tar.gz" NAME="opae-sdk" + + This results in an error for a missing license file: + + .. code-block:: console + + [FATAL] Cannot find any license or opae-sdk.license file! + +#. Navigate to the package with build failures: + + .. code-block:: bash + + cd packages/opae-sdk + +#. Add one or more valid license identifiers from the + `SPDX License List `_. + In the example below, two different licenses are appropriate based on the + opae-sdk project licensing: + + .. code-block:: bash + + echo "BSD-3-Clause MIT" > opae-sdk.license + +#. Run autospec again: + + .. code-block:: bash + + make autospec + + This results in a generic error: + + .. code-block:: console + + [FATAL] Build failed, aborting + +#. Open the build log to view the error details: + + .. code-block:: bash + + cat ./results/build.log + + The build log contains details for the specific failures. In this + instance, there are missing dependencies: + + .. code-block:: console + + CMake Error: The following variables are used in this project, but + they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: + + CJSON_LIBRARY + linked by target "opae-c++-utils" in directory /builddir/build/BUILD/opae-sdk-0.13.0/tools/c++utilslib + json-c_LIBRARIES + linked by target "opae-c" in directory /builddir/build/BUILD/opae-sdk-0.13.0/libopae + libuuid_LIBRARIES + linked by target "opae-c" in directory /builddir/build/BUILD/opae-sdk-0.13.0/libopae + +#. Search the spec files of upstream |CL| packages to see if the json-c + library is available. In this case, it does exist and we'll add the json-c 'dev' package into the buildreq_add: + + .. code-block:: bash + + grep 'json-c\.so$' ~/clearlinux/packages/*/*.spec + echo "json-c-dev" >> buildreq_add + + .. note:: + + This search step works only if the user cloned all of the upstream package repos. In this example, upstream package repos were cloned in a previous step. + +#. Search the spec files of upstream |CL| packages to see if the libuuid + library is available. In this case, it exists in the util-linux package, so we'll add util-linux-dev package into the buildreq_add: + + .. code-block:: bash + + grep 'libuuid\.so$' ~/clearlinux/packages/*/*.spec + echo "util-linux-dev" >> buildreq_add + +#. Run autospec again and find the successfully-generated RPMs in the + :file:`rpms` directory: + + .. code-block:: bash + + make autospec + + .. note:: + + If you need a dependency that does not exist in the |CL| repo, you must first build it manually (see `Example 2: Build a new RPM`_), then add the repo so that autospec knows the package exists. For example: + + .. code-block:: bash + + cd ~/clearlinux/packages/ + make repoadd + make repostatus + + You only need to add the dependency to the :file:`buildreq_add` control + file if autospec is not able to automatically find the correct dependency + on its own. + +.. TODO: Document how to set up a license server for use with autospec. +.. TODO: Demonstrate control file management. Establish specific use cases. + +Example 5: Update an existing package +===================================== + +The |CL| team prefers to carry no patches and seeks to make the latest +releases work. If we do need patches, we use :command:`autospec` to add, +remove, or manage patches. The :command:`autospec` control files are +integral to the patch management process. Developers can expect a more +streamlined approach to managing a large collection of packages with +:command:`autospec`. + +Adding and submitting patches +----------------------------- + +* To add patches to |CL| upstream, follow `patching source code`_. + +* To submit a patch to upstream, follow + `contributing to an existing software package`_. + +If you maintain a downstream derivative of |CL| and you want to integrate +new or patched packages into your mix, follow the process in :ref:`mixer`. + +Assuming you have followed the above process, :command:`autospec` has +generated a new spec file. + +Refresh a package and inspect +----------------------------- + +In this example, we use autospec to refresh the :command:`m4` package and +recreate RPM files. + +#. Navigate to the top-level directory of the workspace + + .. code-block:: bash + + cd clearlinux + + - where :command:`clearlinux` is the top level of the tooling workspace + +#. Run the make_clone command and then navigate to the package. + + .. code-block:: bash + + make clone_m4 + + cd packages/m4 + +#. Make desired changes to the package, its control files, or + other files. + +#. Finally, run: + + .. code-block:: bash + + make autospec + +#. To view spec file changes, run: + + .. code-block:: bash + + git show m4.spec + + The output shows: + + .. code-block:: console + + m4: Autospec creation for version 1.4.18 + + diff --git a/m4.spec b/m4.spec + index f76c78d..97b846a 100644 + --- a/m4.spec + +++ b/m4.spec + @@ -6,15 +6,14 @@ + # + Name : m4 + Version : 1.4.18 + -Release : 88 + +Release : 89 + URL : http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.xz + Source0 : http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.xz + -Source99 : http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.xz.sig + +Source1 : http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.xz.sig + Summary : No detailed summary available + Group : Development/Tools + ... + +#. The following commands provide a more complete view of the changes. + + * :command:`git log -p` + * :command:`gitk` + +Test packaged software +********************** + +After software has been packaged with autospec, the resulting RPMs can be +tested for functionality before being integrated and deployed into a |CL| +image with the :ref:`Mixer tool `. + +The |CL| development tooling offers two ways to quickly test autospec +generated RPMs. + +.. note:: + The methods outlined below should only be used for temporary testing on + development systems. + + +Test in a |CL| virtual machine +============================== + +The |CL| development tooling includes a method to install RPMs into a |CL| +virtual machine running on the KVM hypervisor. Using a :abbr:`VM (Virtual +Machine)` allows testing in a completely isolated environment. + +To test an autospec-created package inside a VM: + +#. Download the |CL| KVM image into the :file:`~/clearlinux` directory as + :file:`clear.img`. The location and name :file:`clear.img.xz` is important + for the tooling to work: + + .. code-block:: bash + + cd ~/clearlinux + curl -o clear.img.xz https://download.clearlinux.org/image/$(curl https://download.clearlinux.org/image/latest-images | grep '[0-9]'-kvm) + +#. Extract the downloaded |CL| KVM image: + + .. code-block:: bash + + unxz -v clear.img.xz + +#. Copy the QEMU start script and virtual firmware needed for KVM into the + :file:`~/clearlinux` directory: + + .. code-block:: bash + + cp ~/clearlinux/projects/common/start_qemu.sh . + cp /usr/share/qemu/OVMF.fd . + +#. Run :command:`make install` from the package's autospec directory. The + :command:`make install` command mounts the downloaded |CL| KVM image and + installs the autospec-created RPM into it: + + .. code-block:: bash + + cd ~/clearlinux/packages/ + make install + + The code that makes this possible can be viewed by searching for the + *install:* target in the `Makefile.common`_ file on GitHub. + +#. Return to the :file:`~/clearlinux` directory and start the |CL| VM: + + .. code-block:: bash + + cd ~/clearlinux/ + sudo ./start_qemu.sh clear.img + +#. A new |CL| VM will launch in the console. Log into the VM as *root* and set + a new password for the VM. + +#. Check that the software is installed in the |CL| VM as expected and perform + any relevant tests. + +#. After testing has been completed, the |CL| VM can be powered off and + deleted: + + .. code-block:: bash + + poweroff + rm clear.img + + +Test directly on a development machine +====================================== + +The |CL| development tooling also includes a method to extract +autospec-created RPMs locally onto a |CL| development system for testing. +Extracting an RPM directly onto a system offers quicker testing; however +conflicts may occur and responsibility to remove the software after testing is +up to the developer. + +To test an autospec created package directly on the |CL| development system: + +#. Run :command:`make install-local` from the package's autospec directory. + The :command:`make install-local` command extracts the RPM directly onto + the filesystem of the running |CL| system: + + .. code-block:: bash + + cd ~/clearlinux/packages/ + make install-local + + The code that makes this possible can be viewed by searching for the + *install-local:* target in the `Makefile.common`_ file on GitHub. + +#. Check that the software is installed as expected and perform any relevant + tests. + +#. After testing has been completed, the software and any related files must + be identified and deleted. The :command:`swupd repair --picky` + command can help restore the state of the :file:`/usr` directory (see + :ref:`swupd `) however any other files must be cleaned up + manually. + + +References +********** + +Reference the `autospec README`_ for details regarding `autospec` commands and options. + +Setup environment to build source +================================= + +.. _install-tooling-after-header: + +Setup of the workspace and tooling used for building source in |CL| is mostly +automated for you with a setup script. It uses tools from the +:command:`os-clr-on-clr` bundle. + +The setup script creates a workspace in the :file:`clearlinux` folder, with the +subfolders :file:`Makefile`, :file:`packages`, and :file:`projects`. The +:file:`projects` folder contains the main tools used for making packages in +|CL| :file:`autospec` and :file:`common`. + +Follow these steps to setup the workspace and tooling for building source: + +#. Install the :command:`os-clr-on-clr` bundle: + + .. code-block:: bash + + sudo swupd bundle-add os-clr-on-clr + +#. Download the :file:`user-setup.sh` script: + + .. code-block:: bash + + curl -O https://raw.githubusercontent.com/clearlinux/common/master/user-setup.sh + +#. Make :file:`user-setup.sh` executable: + + .. code-block:: bash + + chmod +x user-setup.sh + +#. Run the script as an unprivileged user: + + .. code-block:: bash + + ./user-setup.sh + +#. After the script completes, log out and log in again to complete the setup + process. + +#. Set your Git user email and username for the repos on your system: + + .. code-block:: bash + + git config --global user.email "you@example.com" + git config --global user.name "Your Name" + + This global setting is used by |CL| tools that make use of Git. + +.. _install-tooling-end: + +Related topics +************** + +* :ref:`Mixer tool ` +* :ref:`Proxy Configuration ` + +.. _contributing to an existing software package: https://github.com/clearlinux/distribution/blob/master/contributing.md#contributing-to-an-existing-software-package + +.. _patching source code: https://github.com/clearlinux/distribution/blob/master/contributing.md#patching-source-code + +.. _`Makefile.common`: https://github.com/clearlinux/common/blob/master/Makefile.common +.. _autospec README: https://github.com/clearlinux/autospec +.. _control files: https://github.com/clearlinux/autospec#control-files +.. _mock wiki: https://github.com/rpm-software-management/mock/wiki +.. _rpm website: http://rpm.org +.. _RPM Packaging Guide: https://rpm-packaging-guide.github.io/ + + +.. TODO: Add link to how to submit a new package: https://github.com/clearlinux/distribution/blob/master/contributing.md#contributing-a-new-software-package diff --git a/_sources/guides/clear/bundles.rst.txt b/_sources/guides/clear/bundles.rst.txt new file mode 100644 index 000000000..52cc194d7 --- /dev/null +++ b/_sources/guides/clear/bundles.rst.txt @@ -0,0 +1,27 @@ +.. _bundles-guide: + +Bundles +####### + +Linux-based operating systems contain the code of several hundred, if +not thousands, of open source projects. To make this manageable, +distributions use a concept called "packages" to configure and compile +the source code of these projects into binaries. + +Many distributions then split the content of these compiled packages +into so-called sub-packages, which are the granularity at which these +distributions deploy their software. With those kinds of distributions, +system administrators can then install and update sub-packages +individually or as a set, using tools such as "yum" and "apt-get." + +The |CL-ATTR| takes a slightly different approach. While we also use the +concept of packages to manage compiling source code into binaries, we do not +use the package concept to deploy software. Instead, we provide software +"bundles" that are installed and managed using :ref:`swupd`. +Each bundle contains as many or as few open source projects needed to provide a +complete functionality. + +Related topics +************** + +* :ref:`swupd-guide` \ No newline at end of file diff --git a/_sources/guides/clear/compatible-kernels.rst.txt b/_sources/guides/clear/compatible-kernels.rst.txt new file mode 100644 index 000000000..5882459bf --- /dev/null +++ b/_sources/guides/clear/compatible-kernels.rst.txt @@ -0,0 +1,72 @@ +.. _compatible-kernels: + +Kernels +####### + +The |CL-ATTR| provides the following Linux kernels with a respective bundle. +This document describes the specific use cases these `bundles`_ serve +and provides links to their source code. + +Bare metal only +*************** + +Kernel native + The *kernel-native* bundle focuses on the bare metal platforms. It is + optimized for fast booting and performs best on the Intel® Architecture Processors + described on the :ref:`supported hardware list`. The + optimization patches are found in our `Linux`_ GitHub\* repo. + +.. _vm-kernels: + +Also compatible with VMs +************************ + +Kernel LTS + The *kernel-lts* bundle focuses on the bare metal platforms but uses the + latest :abbr:`LTS (Long Term Support)` Linux kernel. It is optimized for + fast booting and performs best on the Intel® Architecture Processors described + on the :ref:`supported hardware list`. Additionally, this + kernel includes the VirtualBox\* kernel modules, see our + :ref:`instructions on using Virtualbox` for more + information. The optimization patches are found in our `Linux-LTS`_ GitHub + repo. + +VM only +******* + +Kernel KVM + The *kernel-kvm* bundle focuses on the Linux + :abbr:`KVM (Kernel-based Virtual Machine)`. It is optimized for fast + booting and performs best on Virtual Machines running on the Intel® Architecture + Processors described on the + :ref:`supported hardware list`. Use this kernel when + running |CL| as the guest OS on top of *qemu/kvm*. Use this kernel with + **cloud orchestrators** using *qemu/kvm* internally as their **hypervisor** + . This kernel can be used as a standalone |CL| VM, see our + :ref:`instructions on using KVM` for more information. The + optimization patches are found in our `Linux-KVM`_ GitHub repo. + +Kernel Hyper-V\* + The *kernel-hyperv* bundle focuses on running Linux on Microsoft\* + Hyper-V. It is optimized for fast booting and performs best on Virtual + Machines running on the Intel® Architecture Processors described on the + :ref:`supported hardware list`. + Use this kernel when running |CL| as the guest OS of **Cloud Instances** in + projects such as Microsoft `Azure`_\*. This kernel can be used in a + standalone |CL| VM, see our :ref:`instructions on using Hyper-V` + for more information. The optimization patches are found in our + `Linux-HyperV`_ GitHub repo. + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _Linux: https://github.com/clearlinux-pkgs/linux +.. _Linux-LTS: https://github.com/clearlinux-pkgs/linux-lts +.. _Linux-KVM: https://github.com/clearlinux-pkgs/linux-kvm +.. _Linux-HyperV: https://github.com/clearlinux-pkgs/linux-hyperv +.. _Linux-HyperV-LTS: https://github.com/clearlinux-pkgs/linux-hyperv-lts +.. _Linux-Container: https://github.com/clearlinux-pkgs/linux-container +.. _bundles: https://github.com/clearlinux/clr-bundles +.. _CIAO: https://github.com/01org/ciao +.. _Azure: + https://azuremarketplace.microsoft.com/en-us/marketplace/apps/clear-linux-project.clear-linux-os + diff --git a/_sources/guides/clear/debug.rst.txt b/_sources/guides/clear/debug.rst.txt new file mode 100644 index 000000000..bb984767b --- /dev/null +++ b/_sources/guides/clear/debug.rst.txt @@ -0,0 +1,91 @@ +.. _debug: + +Debug system +############ + +|CL-ATTR| introduces a novel approach to system software debugging using +*clr-debug-info*. On the client side, the |CL| debug system obtains any +necessary debug information on-the-fly over a network during a debugging +session. On the server side, the system curates and compresses debug +information into small pieces for efficient downloading. + +For developers, this avoids the interruption during debugging that usually +happens when debug information is missing. This can be especially useful on +systems where storage is limited. + + +.. contents:: :local: + :depth: 2 + + +Background +---------- + +Software that is compiled and packaged for general usage in an operating +system typically only contains components that are used to execute the +program, such as binaries and libraries. Extra developer data, such as the +actual source code and symbol information, are separated and excluded for +efficiency. + +The debug information helps relate binary code to human readable source code +lines and variables. Most of the time, this auxiliary information +is not needed; +however without it, debugging a program results in limited visibility. + + +Usage +----- + +The clr-debug-info system is integrated into |CL| and seamlessly engages once +installed. + +#. Install the *dev-utils* bundle. + + .. code:: bash + + sudo swupd bundle-add dev-utils + + .. note:: + + The *telemetrics* and *performance-tools* bundles also include + clr-debug-info. + + +#. Start a debugging session against a program using a debugger, such as GDB. + For example, to debug *gnome-control-center* execute the following + command: + + .. code:: bash + + gdb /usr/bin/gnome-control-center + +As you step through the program and debug information is needed, the +clr_debug_daemon obtains it in the background. + + +Implementation +-------------- + +The implementation of the |CL| debug system is open source and available on +GitHub at: https://github.com/clearlinux/clr-debug-info/ + +.. figure:: figures/debug-diagram.png + :width: 400px + :alt: Debug system communication flow + + Figure 1: The communication flow of the |CL| debug system + +The |CL| debug system implements a :abbr:`FUSE (filesystem in userspace)` +filesystem mounted at :file:`/usr/lib/debug` and :file:`/usr/src/debug`. The +FUSE filesystem starts automatically. You can verify its status by executing +:command:`systemctl status clr_debug_fuse.service`. + +The *clr_debug_daemon* is responsible for fetching the appropriate package +debug content from the server and making it available for any debugging +programs that need it. It is socket activated whenever a request to the local +FUSE filesystem occurs. You can verify its status with :command:`systemctl +status clr_debug_daemon.service`. + + +|CL| hosts debuginfo content packaged for consumption by |CL| debug clients at +https://download.clearlinux.org/debuginfo/ diff --git a/_sources/guides/clear/k8s-migration.rst.txt b/_sources/guides/clear/k8s-migration.rst.txt new file mode 100644 index 000000000..cb863fe15 --- /dev/null +++ b/_sources/guides/clear/k8s-migration.rst.txt @@ -0,0 +1,321 @@ +.. _kubernetes-migration: + +Kubernetes\* migration +###################### + +This guide describes how to migrate `Kubernetes container orchestration system`_ on |CL-ATTR| from 1.17.x to 1.19.x. + +.. contents:: + :local: + :depth: 1 + +Background +********** + +The version of Kubernetes\* was bumped from 1.17.7 to 1.19.4 in |CL-ATTR| +release 34090. This guide and the |CL| bundle `k8s-migration` were created +to help facilitate migration of a cluster from 1.17.x to the latest 1.19.x . + +The new |CL| bundle `k8s-migration` was added in |CL-ATTR| release 34270. + +Prerequisites +************* + +* Make sure you check any updates to kubernetes upgrade doc for caveats related to the version that is running in the cluster. +* Make sure ALL the nodes are in Ready state. Without that, the cluster cannot be upgraded. + Either fix the broken nodes or remove them from the cluster. + +.. contents:: + :local: + :depth: 1 + +Upgrade 1.17.x ---> 1.18.15 +*************************** + +#. Upgrade Control Node to 1.18.15 first + + First step would be to upgrade one of the main control node and + update kubernetes components on them. You will need to have a newer + version of :command:`kubeadm` for the upgrade to work. Please consult + `kubeadm upgrade guide`_ + for any caveats from your current version to the new one. + + Update |CL| to the latest release to update the kubernetes version. + + .. code-block:: bash + + sudo -E swupd update + + .. note:: + Note: PLEASE DO NOT REBOOT YOUR SYSTEM AT THIS TIME. |CL| is awesome and + your stuff will work just fine. + +#. Add the new Kubernetes migration bundle which contains the 1.18.15 binaries. + + .. code-block:: bash + + sudo -E swupd bundle-add k8s-migration + +#. Find the upgrade version of kubeadm that can used. This should be 1.18.15. + + This command will show the command and possible jumps that can be made from the current kubernetes version. + + .. code-block:: bash + + sudo -E /usr/k8s-migration/bin/kubeadm upgrade plan + + Sample output: + + .. code-block:: console + + [upgrade/config] Making sure the configuration is correct: + [upgrade/config] Reading configuration from the cluster... + [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml' + [preflight] Running pre-flight checks. + [upgrade] Running cluster health checks + [upgrade] Fetching available versions to upgrade to + [upgrade/versions] Cluster version: v1.17.17 + [upgrade/versions] kubeadm version: v1.18.15 + I0209 21:12:49.868786 832739 version.go:252] remote version is much newer: v1.20.2; falling back to: stable-1.18 + [upgrade/versions] Latest stable version: v1.18.15 + [upgrade/versions] Latest stable version: v1.18.15 + [upgrade/versions] Latest version in the v1.17 series: v1.17.17 + [upgrade/versions] Latest version in the v1.17 series: v1.17.17 + + Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply': + COMPONENT CURRENT AVAILABLE + Kubelet 3 x v1.17.7 v1.18.15 + + Upgrade to the latest stable version: + + COMPONENT CURRENT AVAILABLE + API Server v1.17.17 v1.18.15 + Controller Manager v1.17.17 v1.18.15 + Scheduler v1.17.17 v1.18.15 + Kube Proxy v1.17.17 v1.18.15 + CoreDNS 1.6.5 1.6.7 + Etcd 3.4.3 3.4.3-0 + + You can now apply the upgrade by executing the following command: + + kubeadm upgrade apply v1.18.15 + +#. Upgrade the node to the intermediate 1.18.15 version of Kubernetes. + + .. code-block:: bash + + sudo -E /usr/k8s-migration/bin/kubeadm upgrade apply v1.18.15 + + .. note:: + Note: Do **not** reboot the system yet. + +#. Upgrade Additional Control Nodes to 1.18.15 + + In multi-node control plane, verify all the control plane nodes are updated prior to upgrading the worker nodes/SUTs. + +#. Upgrade Other Nodes to 1.18.15 + + For each of the other nodes: + + a. Update |CL| to the latest release to update the kubernetes version. + + .. code-block:: bash + + sudo -E swupd update + + #. Add the new Kubernetes migration bundle which contains the 1.18.15 binaries. + + .. code-block:: bash + + sudo -E swupd bundle-add k8s-migration + + #. On the **Admin node**, drain the Client node *FIRST* + + .. code-block:: bash + + /usr/k8s-migration/bin/kubectl drain --ignore-daemonsets --delete-local-data + + #. Back on the **Client node**, upgrade Kubernetes on the Client + + .. code-block:: bash + + sudo -E /usr/k8s-migration/bin/kubeadm upgrade node + + #. On the **Admin node**, re-enable the Client + + .. code-block:: bash + + /usr/k8s-migration/bin/kubectl uncordon + + + #. Back on the **Client node**, restart Kubernetes on the Client + + .. code-block:: bash + + sudo -E systemctl restart kubelet + +#. Restart Kubernetes on the Admin node(s) to finish the 1.18.x upgrade + + .. code-block:: bash + + sudo -E systemctl restart kubelet + + .. note:: + Note: Wait for all nodes to be Ready and showing the 1.19.x version. + This version will now show as it is the released version the + service files will see and use, but the Nodes are *not* upgraded yet. + +Upgrade 1.18.15 ---> 1.19.x +*************************** + +#. Upgrade Control Node to 1.19.x + + Now that systems are upgraded to the intermediate release of 1.18.15 + each of the nodes can be upgraded to the latest 1.19.x release. + +#. Find the upgrade version of kubeadm that can used. This should be 1.19.x. + + This command will show the command and possible jumps that can be made from the current kubernetes version. + + .. code-block:: bash + + sudo -E kubeadm upgrade plan + + Sample output: + + .. code-block:: console + + [upgrade/config] Making sure the configuration is correct: + [upgrade/config] Reading configuration from the cluster... + [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml' + [preflight] Running pre-flight checks. + [upgrade] Running cluster health checks + [upgrade] Fetching available versions to upgrade to + [upgrade/versions] Cluster version: v1.18.15 + [upgrade/versions] kubeadm version: v1.19.7 + I0209 23:08:23.810900 925910 version.go:252] remote version is much newer: v1.20.2; falling back to: stable-1.19 + [upgrade/versions] Latest stable version: v1.19.7 + [upgrade/versions] Latest stable version: v1.19.7 + [upgrade/versions] Latest version in the v1.18 series: v1.18.15 + [upgrade/versions] Latest version in the v1.18 series: v1.18.15 + + Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply': + COMPONENT CURRENT AVAILABLE + kubelet 3 x v1.17.7 v1.19.7 + + Upgrade to the latest stable version: + + COMPONENT CURRENT AVAILABLE + kube-apiserver v1.18.15 v1.19.7 + kube-controller-manager v1.18.15 v1.19.7 + kube-scheduler v1.18.15 v1.19.7 + kube-proxy v1.18.15 v1.19.7 + CoreDNS 1.6.7 1.7.0 + etcd 3.4.3-0 3.4.13-0 + + You can now apply the upgrade by executing the following command: + + kubeadm upgrade apply v1.19.7 + + The table below shows the current state of component configs as understood by this version of kubeadm. + Configs that have a "yes" mark in the "MANUAL UPGRADE REQUIRED" column require manual config upgrade or + resetting to kubeadm defaults before a successful upgrade can be performed. The version to manually + upgrade to is denoted in the "PREFERRED VERSION" column. + + API GROUP CURRENT VERSION PREFERRED VERSION MANUAL UPGRADE REQUIRED + kubeproxy.config.k8s.io v1alpha1 v1alpha1 no + kubelet.config.k8s.io v1beta1 v1beta1 no + +#. Upgrade the node to the latest 1.19.x version of Kubernetes. + + .. code-block:: bash + + sudo -E /usr/bin/kubeadm upgrade apply v1.19.7 + + .. note:: + + Note: Do **not** reboot the system yet. + +#. Upgrade Additional Control Nodes to 1.19.x + + In multi-node control plane, verify all the control plane nodes are updated prior to upgrading the worker nodes/SUTs. + +#. Upgrade Other Nodes to 1.19.x + + For each of the other nodes: + + a. On the **Admin node**, drain the Client *FIRST* + + .. code-block:: bash + + kubectl drain --ignore-daemonsets + + #. Back on the **Client node**, upgrade Kubernetes on the Client + + .. code-block:: bash + + sudo -E kubeadm upgrade node + + #. On the **Admin node**, re-enable the Client + + .. code-block:: bash + + kubectl uncordon + + #. Back on the **Client node**, if you wish reboot the Client, it is now safe to do so. + + .. code-block:: bash + + sudo reboot + +#. Reboot the Control Node (optional) + + *If you wish reboot the nodes, it is now safe to do so.* + + .. code-block:: bash + + sudo reboot + +**Congratulations!** + +You've successfully installed and set up Kubernetes in |CL| using CRI-O and kata-runtime. You are now ready to follow on-screen instructions to deploy a pod network to the cluster and join worker nodes with the displayed token and IP information. + +Clean up: Remove the migration bundle for each node + +.. code-block:: bash + + sudo -E swupd bundle-remove k8s-migration + +Related topics +************** + +Read the Kubernetes documentation to learn more about: + +* `Kubernetes tutorial `_ + +* `Kubernetes best practices `_ + +* Deploying Kubernetes with a `cloud-native-setup`_ + +* `Understanding basic Kubernetes architecture`_ + +* `Deploying an application to your cluster`_ + +* Installing a `pod network add-on`_ + +* `Joining your nodes`_ + + +.. _kubeadm upgrade guide: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/ + +.. _Kubernetes container orchestration system: https://kubernetes.io/ + +.. _Understanding basic Kubernetes architecture: https://kubernetes.io/docs/user-journeys/users/application-developer/foundational/#section-3 + +.. _Deploying an application to your cluster: https://kubernetes.io/docs/user-journeys/users/application-developer/foundational/#section-2 + +.. _pod network add-on: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network + +.. _Joining your nodes: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#join-nodes + +.. _cloud-native-setup: https://github.com/clearlinux/cloud-native-setup/tree/master/clr-k8s-examples diff --git a/_sources/guides/clear/mixer.rst.txt b/_sources/guides/clear/mixer.rst.txt new file mode 100644 index 000000000..b384dda94 --- /dev/null +++ b/_sources/guides/clear/mixer.rst.txt @@ -0,0 +1,1110 @@ +.. _mixer: + +mixer +##### + +The |CL-ATTR| team uses **mixer** to generate official update content and +releases. The update content generated by mixer is then consumed by swupd on +a downstream client. The same mixer tool is available to those who wish to create customized update content and releases. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +mixer uses the following sources as inputs to generate update content: + +* Upstream |CL| bundles with their corresponding RPM packages +* Locally-defined bundles with their corresponding local RPM packages +* Locally-defined bundles with upstream RPM packages +* Locally-defined bundles with non-RPM content + +Using the mixer tool, you select which content from these sources that +becomes part of your update. Your selection of sources produces a unique +combination of functionality for your custom update content, known as +a **mix**. + +The update content that mixer generates consists of various pieces of OS +content, update metadata, as well as a complete image. The OS content +includes all files in an update, as well as zero- and delta-packs for +improved update performance. The update metadata, stored as manifests, +describes all of the bundle information for the update. Update content +produced by mixer is then published to a web server and consumed by clients +via :command:`swupd`. Refer to :ref:`swupd ` for additional +information regarding updates and update content. + +How it works +************ + +Learn the mixer tool set up and workflow. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +============= + +* :command:`mixer` bundle + + Add the mixer tool by installing the :command:`mixer` bundle. Refer to + :ref:`swupd-guide` for more information on installing bundles. + +* If you're working behind a corporate proxy, configure proxy settings using + the :ref:`General proxy settings for many applications ` steps. + +* Location to host the update content and images + + In order for :command:`swupd` to make use of your mix, the update content for your mix must be hosted on a web server. Your mix will be configured with an update location URL, which :command:`swupd` will use to pull down updates. + + Refer to `Set up a nginx web server for mixer`_ for an simple example of + setting up an update location. + +Mix setup +========== + +Follow these steps to create and initialize the mixer workspace. Complete +the setup before you create a mix. + +#. Create workspace. + + The mixer tool uses a simple workspace to contain all input and output in a + basic directory structure. The workspace is simply an empty folder from + which you execute the mixer commands. Each mix uses its own separate + workspace. + +#. Initialize the workspace and mix. + + Before you create a mix, you must explicitly initialize the mixer workspace. + During initialization, the mixer workspace is configured and the base for + your mix is defined. By default, your mix is based on the latest + upstream version and starts with the minimum set of bundles. Your first custom + mix version number starts at 10. Alternatively, you can select other + versions or bundle sets from which to start. + + Initialization creates the directory structure within the workspace and adds + the :file:`builder.conf` file, which is used to configure the mixer tool. + + View the `mixer.init man page`_ for more information on mixer + initialization. + + View the list of suitable `releases`_ from which to mix. + +#. Edit builder.conf. + + :file:`builder.conf` tells the mixer tool how to configure the mix. For + example, it allows you to configure where mixer output is located and where swupd update content will be located. + + At minimum, set the URL of your update server so your custom OS knows where to get update content. + + Refer to the `builder.conf`_ section for more information. + +Create a mix +============ + +A mix is created with the following steps: + +#. Add custom RPMs and set up local repo (optional). + + If you are adding custom RPMs to your mix, you must add the RPMs to + your mix workspace and set up a corresponding local repository. + + Go to the :ref:`autospec` guide to learn to build RPMs from + scratch. If the RPMs are not built on |CL|, make sure your + configuration and toolchain builds them correctly for |CL|. Otherwise there + is no guarantee they will be compatible. + + Refer to the :ref:`autospec` guide for more information on using autospec to + build RPMs. + +#. Update and build bundles. + + Add, edit, or remove bundles that will be part of your content and build + them. mixer automatically updates the :file:`mixbundles` file when you + update the bundles in your mix. + + View the `mixer.bundle man page`_ for more information on configuring bundles + in a mix. + + View the `mixer.build man page`_ for more information on building bundles. + + View the `Bundles`_ section for more information on how mixer manages + bundles. + +#. Create the update content. + + mixer creates update content with this step. Zero-packs are created + automatically, and delta-packs can be optionally created at the same time + (for all builds after version 0). + + A zero-pack is the full set of content needed to go from mix version 0 + (nothing) to the mix version for which you just built content. + + A delta-pack provides the content *delta* between a `PAST_VERSION` to a + `MIX_VERSION` that allows the transition from one mix version to another. + + View :ref:`swupd-guide` for more information on update content. + +#. Create image. + + mixer creates a bootable image from your updated content using + the `clr-installer`_ tool. In this step you can specify which bundles you want + *preinstalled* in the image. Users can later install other bundles available + in your mix. + +#. Make update available. + + Deploy update content and images to your update server. + + View the `Example 5: Deploy updates to target`_ for a simple deployment + scenario. + +Maintain or modify mix +====================== + +Update or modify your content to a new version by following the steps to +create a mix. Increment the mix version number for the next mix. + +Examples +******** + +The following examples are designed to work together and in order. The examples +use: + +* A stock installation of |CL|. +* A web server that comes with |CL| to host the content updates. +* A simple VM that updates against the locally produced content created in + Example 2. + +Complete all `Prerequisites`_ before using these examples. + +Example 1: Mix set up +===================== + +This example shows the basic steps for the first-time setup of +mixer for a new mix. + +#. Create a directory to use as a workspace for mixer: + + .. code-block:: bash + + mkdir ~/mixer + +#. In your mixer workspace, generate an initial mix based on the latest + upstream |CL| version, with minimum bundles. In the initialization + output, be aware that your initial mix version is set to 10 and that the + minimum bundles have been added. + + .. code-block:: bash + + cd ~/mixer + mixer init + + .. note:: + + If you want to add all upstream bundles in your mix, + initialize your mix as shown below. + + .. code-block:: bash + + mixer init --all-upstream + +#. Look up your IP address: + + .. code-block:: bash + + networkctl status + +#. Copy the IP “Address”, from above, for the next step. + + .. note:: + + In this example, we put `mixer` and `nginx` on the same system. In a production environment, they would likely reside on different systems. + +#. Edit :file:`builder.conf`. Paste the IP address from the previous step + as the value after \http:// for CONTENTURL and VERSIONURL. For example: + + .. code-block:: console + + CONTENTURL="http://192.168.25.52" + VERSIONURL="http://192.168.25.52" + +#. `Set up a nginx web server for mixer`_. + + +Example 2: Create a simple mix +============================== + +This example shows how to create a simple custom mix using upstream content. +We'll create an image for a QEMU virtual machine that we can use later to +test our mix. + +We can use the default bundles that were added during initialization, but +these include the :command:`native-kernel` bundle that is intended to be +used on a bare metal system instead of a VM. So we will modify the default +bundle set to get a smaller kernel image, which will also be faster to load. + +.. note:: + + The only bundles available to :command:`swupd` for a given release are + those that were added to the mix during build time. A mix doesn’t + automatically inherit all upstream bundles. + +#. Ensure that you have run `mixer init`, shown in Example 1. + +#. Update bundles in mix: + + .. code-block:: bash + + mixer bundle remove kernel-native + mixer bundle add kernel-kvm + + .. note:: + The mixer bundle commands operate on the bundle description files but not on the bundle contents. To remove bundle contents and their tracking completely, follow `Example 6: Remove a bundle from client system`_, Advanced. + +#. In this case, we will add the `editors` bundle from upstream, but we will + remove the :command:`joe` editor. + + .. code-block:: bash + + mixer bundle add editors + mixer bundle edit editors + +#. Use an editor and manually remove `joe` from the bundle definition. + + .. code-block:: bash + + $EDITOR ./local-bundles/editors + +#. List the bundles in the mix again to confirm removal of :command:`joe`. + + .. code-block:: bash + + mixer bundle list --tree + +#. Build bundles: + + .. code-block:: bash + + sudo mixer build bundles + +#. First, browse to web server from Example 1. The web page appears yet + has no update content. Build the update content: + + .. code-block:: bash + + sudo mixer build update + + After that is completed, on your web server, you can see the update + content for mix version 10. + +Example 3: Create an update for your mix +======================================== + +Next, let’s create a new version of the mix. We’ll add a new bundle. + +#. Create a new version of your mix, for the live image to + update to. Increment your mix version by 10: + + .. code-block:: bash + + mixer versions update + +#. Add the upstream :command:`curl` bundle to version 20 of the mix: + + .. code-block:: bash + + mixer bundle add curl + +#. Build your next mix version that incorporates the new bundle. + + .. code-block:: bash + + sudo mixer build bundles + sudo mixer build update + +#. Optionally, you can build delta-packs, which help reduce client update + time: + + .. code-block:: bash + + sudo mixer build delta-packs --from 10 --to 20 + +Refresh your web server to see the update content for mix version 20. + +You can also look in ~/mixer/update/www/ to see the update +content in your workspace. + +Example 4: Build an image +========================= + +This example shows how to build a bootable image containing the +:command:`kernel-kvm`, :command:`os-core`, and the :command:`os-core-update` +bundles from `Example 2: Create a simple mix`_. Complete that example before starting this one. + +Underneath, mixer uses `clr-installer`_ to generate the image. + +#. Change directory into your mix. + +#. Configure image. + + Create a YAML configuration file to specify aspects of your image + such as image name, target media, bundles, etc. See `Installer YAML Syntax`_ + for more information on clr-installer configuration YAML syntax. + + For this example, we will download a sample YAML and modify it. + + .. code-block:: bash + + curl -O https://raw.githubusercontent.com/clearlinux/clr-installer/master/scripts/kvm.yaml + + Make the following revisions to :file:`kvm.yaml`: + + * Reduce overall image size and root partition size by 5GB. + * Remove these bundles from the image: ``editors``, ``network-basic``, + ``openssh-server``, ``sysadmin-basic`` + * Add ``version: 10`` to tell :command:`mixer` to generate an image based + on mix version 10 + + .. note:: + + When creating an image, it is not necessary to include all of the bundles + that are in your entire mix. Once you have a working image, you can use + :command:`swupd` to add them as needed. + + Your :file:`kvm.yaml` should look like below: + + .. code-block:: console + :linenos: + :emphasize-lines: 11,26,29-33,44 + + #clear-linux-config + + # switch between aliases if you want to install to an actuall block device + # i.e /dev/sda + block-devices: [ + {name: "bdevice", file: "kvm.img"} + ] + + targetMedia: + - name: ${bdevice} + size: "3.54G" + type: disk + children: + - name: ${bdevice}1 + fstype: vfat + mountpoint: /boot + size: "512M" + type: part + - name: ${bdevice}2 + fstype: swap + size: "32M" + type: part + - name: ${bdevice}3 + fstype: ext4 + mountpoint: / + size: "3G" + type: part + + bundles: [ + bootloader, + os-core, + os-core-update, + ] + + autoUpdate: false + postArchive: false + postReboot: false + telemetry: false + + keyboard: us + language: en_US.UTF-8 + kernel: kernel-kvm + + version: 10 + +#. Build the image. + + .. code-block:: bash + + sudo mixer build image --template $PWD/kvm.yaml + + The output from this step will be :file:`kvm.img`, which is a live + image. + +Example 5: Deploy updates to target +=================================== + +The image created in Example 4 is directly bootable in QEMU. In this example, +we'll boot the image and verify it. Then we'll update the image from +mix version 10 to mix version 20. + +#. Set up the QEMU environment. + + Install the :command:`kvm-host` bundle to your |CL|: + + .. code-block:: bash + + sudo swupd bundle-add kvm-host + +#. Get the virtual EFI firmware, download the image launch script, and make + it executable: + + .. code-block:: bash + + curl -O https://download.clearlinux.org/image/OVMF.fd + curl -O https://download.clearlinux.org/image/start_qemu.sh + chmod +x start_qemu.sh + +#. Start your VM image (created in Example 4): + + .. code-block:: bash + + sudo ./start_qemu.sh kvm.img + +#. Log in as root and set a password. + +#. By default, the :command:`swupd` client is designed to communicate with an + HTTPS server. For development purposes, the swupd client can talk to + an HTTP server if you add the flag ``allow-insecure-http``. + + To avoid adding a flag each time when invoking :command:`swupd`, enter: + + .. code-block:: bash + + mkdir -p /etc/swupd + cat > /etc/swupd/config << EOF + [GLOBAL] + allow_insecure_http=true + EOF + +#. Try out your mix. + + a. Show the version and update URLs + + .. code-block:: bash + + swupd info + + #. List the bundles installed in your mix: + + .. code-block:: bash + + swupd bundle-list + + #. List available bundles on your update server. + + .. code-block:: bash + + swupd bundle-list -a + + #. Now we will add the :command:`editors` bundle that we modified. + + .. code-block:: bash + + swupd bundle-add editors + + #. Try to start the :command:`joe` editor. + + .. code-block:: bash + + joe + + It should not work because we removed it from the original + :command:`editors` bundle. + + #. Next we will update from version 10 to 20 to capture the + newly-available bundles. + + .. code-block:: bash + + swupd check-update + swupd update + swupd bundle-list -a + + #. Now your mix should be at version 20 and :command:`curl` is available. + Try using :command:`curl`. This will fail because it is not yet installed. + + .. code-block:: console + + curl: command not found + To install curl use: swupd bundle-add curl + + #. Add the new bundle from your update server to your VM. Retry :command:`curl`. + It works! + + .. code-block:: bash + + swupd bundle-add curl + curl -O https://download.clearlinux.org/image/start_qemu.sh + +#. Shutdown your VM: + + .. code-block:: bash + + poweroff + +Example 6: Remove a bundle from client system +============================================= + +Removing a bundle in a future release requires more steps than deleting the +bundle description file, as shown in Example 2. After a bundle is built in +the mix, you must assure all of the files that are part of the bundle are +removed from the client where that bundle is installed. To do this, create a +version of this bundle in which all of its content is marked for deletion. + +In the following example, we show how to remove the contents of the `editors` +bundle that we added to our mix in Example 2. + +#. First update your mix version. This will set the mix to the next version. + + .. code-block:: bash + + mixer versions update + + .. note:: + Run this command every time that you want to build a new version. + +#. Navigate to local-bundles: + + .. code-block:: bash + + cd local-bundles + +#. Open the `editors` bundle with an editor and delete + **all lines** that follow after the `[MAINTAINERS]` line. + +#. Afterward, it should look like this: + + .. code-block:: console + + # [TITLE]: editors + # [DESCRIPTION]: Run popular terminal text editors. + # [STATUS]: Active + # [CAPABILITIES]: + # [TAGS]: Tools and Utilities, Editor + # [MAINTAINER]: Developer + +#. Save and exit. + +#. Next, run a build to capture recently edited bundles and update your mix. + + .. code-block:: bash + + sudo mixer build all + + .. note:: + :command:`mixer build all` runs both :command:`mixer build bundles` and :command:`mixer build update` in one step. + +At this point the new mix, version 30, is complete. All the content of the +editors bundles is marked as deleted. If any clients of this mix upgraded to +mix build version 30, the content of the editors bundle would be removed. +Note that the bundle still exists and is being tracked by :command:`swupd`, +but it contains no files. + +Example 7: Execute a format bump +================================ + +As a maintainer of your mix, you must execute a format bump if you wish to: + +* Track upstream’s format bump on your downstream derivative +* Delete any custom bundles that were added + +Follow the appropriate use case below depending on your needs. + +Basic +----- + +If you maintain your own downstream derivative and you want to track +upstream, you need to do a format bump when one occurs on upstream. This +method helps you track the latest changes on upstream; however, it does not +change any local content that was added or deleted. For example, if you +deprecated bundles, this method will **not remove the bundle tracking**. +Refer to `Advanced`_ for help on managing your local mix and removing bundle +tracking. + +In this example, we show a mix version that was initialized to upstream +version 29740 (format 27). You need to update your mix to upstream version +30700 (format 28). To do so, you will go through a format bump. + +#. Change to your mix location and verify the current version of the mix and + its format. + + .. code-block:: bash + + mixer versions + +#. Update to upstream version, which has a newer format. + + .. code-block:: bash + + mixer versions update --upstream-version 30700 + + The output will look like this: + + .. code-block:: console + + Old mix: 10 + Old upstream: 29740 (format: 27) + + New mix: 20 + New upstream: 30700 (format: 28) + [...] + + Read the output carefully: + + * The Old mix shows the current version (10) of your mix. + + * The Old upstream shows the version and format (27) on which it’s based. + + * The New mix shows the new version (20) of your mix. + + * The New upstream shows the version and format (28) on which it’s based. + +#. Given that the format in the output differs, you need to run a + format bump: + + .. code-block:: bash + + sudo mixer build upstream-format --new-format 28 + + .. note:: + + You specify the :command:`--new-format` to indicate the format (28) to which you transition. + +#. Your mix is now synchronized with the new format (28); however, you must + still advance to the desired or latest version. + + .. code-block:: bash + + mixer versions update --upstream-version 30700 + +Advanced +-------- + +To properly remove a bundle from being tracked by :command:`swupd`, +do a manual format bump. This process can also be used to perform +customizations during the update, such as: + +* Adjustment in the command parameters + +* Change the content of the chroot + +Follow the `afb.sh reference script`_ to learn how to do a manual format bump. The `afb.sh reference script`_ shows an example of how to: + +* Create a mix + +* Add a bundle + +* Deprecate a bundle + +* Do a format bump to remove the deprecated bundle + +References +********** + +Reference the `mixer man page`_ for details regarding mixer commands and options. + +.. contents:: + :local: + :depth: 1 + +.. rst-class:: content-collapse + +builder.conf +============ + +mixer initialization creates a :file:`builder.conf` that stores the basic +configuration for the mixer tool. The items of primary interest are CONTENTURL +and VERSIONURL, which will be used by systems updating against your custom +content. + +.. code-block:: console + + #builder.conf + + #VERSION 1.2 + + [Builder] + CERT = "/home/clr/mix/Swupd_Root.pem" + SERVER_STATE_DIR = "/home/clr/mix/update" + VERSIONS_PATH = "/home/clr/mix" + YUM_CONF = "/home/clr/mix/.yum-mix.conf" + + [Swupd] + BUNDLE = "os-core-update" + CONTENTURL = "" + VERSIONURL = "" + COMPRESSION = ["external-xz"] + UPSTREAM_BUNDLES_URL = "https://github.com/clearlinux/clr-bundles/archive/" + + [Server] + DEBUG_INFO_BANNED = "true" + DEBUG_INFO_LIB = "/usr/lib/debug" + DEBUG_INFO_SRC = "/usr/src/debug" + + [Mixer] + LOCAL_BUNDLE_DIR = "/home/clr/mix/local-bundles" + LOCAL_REPO_DIR = "/home/clr/mix/local-yum" + LOCAL_RPM_DIR = "/home/clr/mix/local-rpms" + OS_RELEASE_PATH = "" + +Additional explanation of variables in :file:`builder.conf` is provided in +Table 1. + +.. list-table:: **Table 1**: Variables in builder.conf + :widths: 50, 50 + :header-rows: 1 + + * - **Variable** + - **Description** + + * - `CERT` + - Sets the path where mixer stores the certificate file used to sign + content for verification. mixer automatically generates the + certificate if you do not provide the path to an existing one, and + signs the :file:`Manifest.MoM` file to provide security for the + updated content you create. + + chroot-builder uses the certificate file to sign the root :file:` + Manifest.MoM` file to provide security for content verification. + swupd uses this certificate to verify the :file:`Manifest.MoM` file's + signature. + + For now, we strongly recommend that you do not modify this variable, + as swupd expects a certificate with a very specific configuration to sign and verify properly. + + * - `CONTENTURL` and `VERSIONURL` + - Set these variables to the IP address of the web server hosting the + update content. + + VERSIONURL is the IP address where the swupd client + looks to determine if a new version is available. + + CONTENTURL is the location from which swupd pulls content updates. If + the web server is on the same machine as the SERVER_STATE_DIR + directory, you can create a symlink to the directory in your web + server's document root to easily host the content. + + These URLs are embedded in the images created by mixer. + + * - `LOCAL_BUNDLE_DIR` + - Sets the path where mixer stores the local bundle definition files. + The bundle definition files include any new, original bundles you + create, along with any edited versions of upstream bundles. + + * - `SERVER_STATE_DIR` + - Sets the path to which mixer outputs content. By default, mixer + automatically sets the path. + + * - `VERSIONS_PATH` + - Sets the path for the mix version and upstream version's two state + files: :file:`mixversion` and :file:`upstreamversion`. mixer creates + both files for you when you set up the workspace. + + * - `YUM_CONF` + - Sets the path where mixer automatically generates the + :file:`.yum-mix.conf` file. The yum configuration file points the + chroot-builder to where the RPMs are stored. + ++-------------------------------+----------------------------------------------------------+ +| **Variable** | **Explanation** | ++-------------------------------+----------------------------------------------------------+ +| `CERT` | Sets the path where mixer stores the certificate file | +| | used to sign content for verification. mixer | +| | automatically generates the certificate if you do not | +| | provide the path to an existing one, and signs the | +| | :file:`Manifest.MoM` file to provide security for the | +| | updated content you create. | +| | | +| | chroot-builder uses the certificate file to sign | +| | the root :file:`Manifest.MoM` file to provide | +| | security for content verification. | +| | | +| | swupd uses this certificate to verify the | +| | :file:`Manifest.MoM` file's signature. | +| | | +| | For now, we strongly recommend that you do not modify | +| | this variable, as swupd expects a certificate with a | +| | very specific configuration to sign and verify | +| | properly. | ++-------------------------------+----------------------------------------------------------+ +| `CONTENTURL` and `VERSIONURL` | Set these variables to the IP address of the web server | +| | hosting the update content. | +| | | +| | VERSIONURL is the IP address where the swupd client | +| | looks to determine if a new version is available. | +| | | +| | CONTENTURL is the location from which swupd pulls | +| | content updates. | +| | | +| | If the web server is on the same machine as the | +| | SERVER_STATE_DIR directory, you can create a symlink to | +| | the directory in your web server's document root to | +| | easily host the content. | +| | | +| | These URLs are embedded in the images created by mixer. | ++-------------------------------+----------------------------------------------------------+ +| `LOCAL_BUNDLE_DIR` | Sets the path where mixer stores the local bundle | +| | definition files. The bundle definition files include | +| | any new, original bundles you create, along with any | +| | edited versions of upstream bundles. | ++-------------------------------+----------------------------------------------------------+ +| `SERVER_STATE_DIR` | Sets the path to which mixer outputs content. By | +| | default, mixer automatically sets the path. | ++-------------------------------+----------------------------------------------------------+ +| `VERSIONS_PATH` | Sets the path for the mix version and upstream version's | +| | two state files: :file:`mixversion` and | +| | :file:`upstreamversion`. mixer creates both files for | +| | you when you set up the workspace. | ++-------------------------------+----------------------------------------------------------+ +| `YUM_CONF` | Sets the path where mixer automatically generates the | +| | :file:`.yum-mix.conf` file. | +| | | +| | The yum configuration file points the chroot-builder to | +| | where the RPMs are stored. | ++-------------------------------+----------------------------------------------------------+ +| **Table 1**: *Variables in builder.conf* | ++-------------------------------+----------------------------------------------------------+ + +Format version +-------------- + +Compatible versions of an OS are tracked with an OS *compatibility epoch*. +Versions of an OS within an epoch are fully compatible and can update to any +other version within that epoch. The compatibility epoch is set as the +`Format` variable in the :file:`mixer.state` file. Variables in the +:file:`mixer.state` are used by mixer between executions and should not be +manually changed. + +Format bump +----------- + +Mixer needs to produce content that is consumable by swupd. For swupd to +consume the content, it needs a consistent protocol that describes the +requirements of the Manifest. + +If the `Format` increments to a new epoch (a "format bump"), the underlying +`swupd` protocol has changed such that updating from one build version in an +old format to a new build version in a new format is **only** allowed if one +performs a corresponding format bump. + +Format bumps are “checkpoints” (see Figure 1). The first release (20) is +built on the previous format with a `swupd` that is capable of interpreting +the next format. The second release (30) has the same content, but it’s +built in the new format. + +Suppose you have build version 10, but you need the tools in build version +40. Whereas version 10 belongs to Format 27, version 40 belongs to Format +28. The swupd client needs to follow formats sequentially. First, you must +update to version 20, which effectively enables a format bump to version 30. +Doing a format bump bridges the gap so your mix can progress to build +version 40. + +.. figure:: ../../_figures/mixer/format-bump.png + :alt: Format bump + + Figure 1: Format bump + +.. note:: + if you update to build 20 and then check which format of the distro is + used, the new build version will show 30, and the new format will show 28. + +.. rst-class:: content-collapse + +Bundles +======= + +mixer stores information about the bundles included in a mix in a flat file +called :file:`mixbundles`, which is located in the path set by the +VERSIONS_PATH variable in :file:`builder.conf`. :file:`mixbundles` is +automatically created when the mix is initiated. mixer will refresh the file +each time you change the bundles in the mix. + +Bundles belong in one of two categories: upstream or local. Upstream +bundles are those provided by |CL|. Local bundles are either modified upstream bundles or new local bundles. + +Upstream bundles +---------------- + +mixer automatically downloads and caches upstream bundle definition files. +These definition files are stored in the upstream-bundles directory in the +workspace. Do not modify the files in this directory. This directory is +simply a mirror for mixer to use. mixer will automatically delete the +contents of this directory before repopulating it on-the-fly if a new +version must be downloaded. + +The mixer tool automatically caches the bundles for the |CL| version +configured in the :file:`upstreamversion` file. :command:`mixer` also +cleans up old versions once they are no longer needed. + +Local bundles +------------- + +Local bundles are bundles that you create, or are edited versions of upstream +bundles. Local bundle definition files are stored in the local-bundles +directory in the workspace. The LOCAL_BUNDLE_DIR variable sets the path of this directory in the :file:`builder.conf` file. + +*mixer always checks for local bundles first and the upstream bundles +second.* So bundles in the local-bundles directory will always take +precedence over any upstream bundles that have the same name. This +precedence enables you to copy upstream bundles locally, and edit into a +local variation. + + +Bundle definition files +----------------------- + +A ``bundle definition`` file consists of a header, followed by a list +of packages and directives. The header holds important meta-data, like +the TITLE, DESCRIPTION, and STATUS. Other meta-data include TAGS, which +define a bundle's function in the ecosystem, and MAINTAINER, which gives +contact information. + +Following the header are the directives, shown in Table 2. + +.. list-table:: **Table 2**: Bundle directives + :widths: 50,50 + :header-rows: 1 + + * - **Directive** + - **Description** + + * - ``include()`` + - Add with this bundle + + * - ``also-add()`` + - Add unless the option ``--skip-optional`` is used with ``swupd bundle-add``. + + * - ``content()`` + - Add the non-packaged content to the bundle. Refer to :ref:`swupd-3rd-party` for usage of this directive. + +Following is `cluster-tools`, an upstream bundle definition file. The +directives are highlighted, and the rest are packages. + +.. code-block:: bash + :emphasize-lines: 8-12 + + [TITLE]: cluster-tools + [DESCRIPTION]: Utilities to manage computer clusters + [STATUS]: Active + [CAPABILITIES]: HPC + [TAGS]: Tools and Utilities + [MAINTAINER]: Juro Bystricky + + include(curl) + include(libglib) + include(libX11client) + also-add(openmpi) + also-add(modules) + munge + pmix + pdsh + slurm + +Bundle configuration +-------------------- + +mixer provides commands to configure the bundles for a mix, such as to add a +bundle to a mix, to create a new bundle for a mix, or to remove a bundle from a mix. View the `mixer.bundle man page`_ for a full list of commands and more information on configuring bundles in a mix. + +Editing an existing local bundle is as simple as opening the bundle definition +file in your favorite editor, making the desired edits, and saving your changes. + +.. note:: + + Removing bundles from a mix: By default, removing a bundle will only + remove the bundle from the mix. The local bundle definition file will + still remain. To completely remove a bundle, including its local bundle definition file, use the :command:`--local` flag. + + If you remove the bundle definition file for a local, edited version of an + upstream bundle in a mix, the mix reverts to reference the original upstream version of the bundle. + +.. rst-class:: content-collapse + +.. _set-up-nginx-web-server-start: + +Set up a nginx web server for mixer +=================================== + +A web server is needed to host your update content. In this example, +the nginx web server is used. + +#. Install the :command:`nginx` bundle. + + .. code-block:: bash + + sudo swupd bundle-add nginx + +#. Create a symbolic link to the mixer update content directory. + + .. code-block:: bash + + sudo mkdir -p /var/www + + sudo ln -sf $HOME/mixer/update/www /var/www/mixer + +#. Set up nginx configuration files. + + .. code-block:: bash + + sudo mkdir -p /etc/nginx/conf.d + + sudo cp -f /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf + +#. Grant ``$USER`` permission to run the web server. + + .. code-block:: bash + + sudo tee -a /etc/nginx/nginx.conf << EOF + user $USER; + EOF + +#. Configure the mixer update server. + + .. code-block:: bash + + sudo tee -a /etc/nginx/conf.d/mixer-server.conf << EOF + server { + server_name localhost; + location / { + root /var/www/mixer; + autoindex on; + } + } + EOF + +#. Restart the daemon, enable nginx on boot, and start the service. + + .. code-block:: bash + + sudo systemctl daemon-reload + + sudo systemctl enable nginx --now + +#. Verify the web server is running at \http://. + If there's no mix content yet, the expected response from nginx will be + a ``404 Not Found``. + +.. _set-up-nginx-web-server-end: + +Related topics +************** + +* :ref:`autospec` +* :ref:`bundles-guide` +* :ref:`swupd-guide` +* :ref:`swupd-3rd-party` + +.. _mixer man page: https://github.com/clearlinux/mixer-tools/blob/master/docs/mixer.1.rst +.. _mixer.init man page: https://github.com/clearlinux/mixer-tools/blob/master/docs/mixer.init.1.rst +.. _mixer.bundle man page: https://github.com/clearlinux/mixer-tools/blob/master/docs/mixer.bundle.1.rst +.. _mixer.build man page: https://github.com/clearlinux/mixer-tools/blob/master/docs/mixer.build.1.rst +.. _releases: https://github.com/clearlinux/clr-bundles/releases +.. _afb.sh reference script: https://github.com/clearlinux/mixer-tools/blob/master/afb.sh +.. _clr-installer: https://github.com/clearlinux/clr-installer +.. _Installer YAML Syntax: + https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md + diff --git a/_sources/guides/clear/performance.rst.txt b/_sources/guides/clear/performance.rst.txt new file mode 100644 index 000000000..5caeadedf --- /dev/null +++ b/_sources/guides/clear/performance.rst.txt @@ -0,0 +1,241 @@ +.. _performance: + +Performance +########### + +|CL-ATTR| is built with optimizations across the whole stack for improved +performance. |CL| achieves its performance through a variety of design decisions +and software building techniques. + +.. contents:: :local: + :depth: 1 + +Overview +******** + +The |CL| philosophy is to do everything with performance in mind. The |CL| team +applies this philosophy in the project's codebase and operating culture. + +Below are some examples of the |CL| philosophy: + +**Consider performance holistically.** + Performance optimizations are considered across hardware and software. |CL| + shows the performance potential of a holistic approach on Linux, using Intel® + architecture with optimizations across the full stack. + +**Optimize for runtime performance.** + In general, |CL| will trade the one-time cost of longer build time and larger + storage footprint for the repeated benefit of improved runtime performance. + |CL| users benefit from the optimized software but aren't affected by the + increased build time because the |CL| team builds the software before + distributing it to |CL| clients. + +**Optimize performance for server and cloud use cases first.** + Design decisions that optimize performance for server and cloud also benefit + other use cases, such as IoT devices and desktop clients. + +|CL| has become well-known for the performance it can deliver. +`Phoronix publishes +Linux performance comparisons `_ +that include |CL|. + +Software build toolchain +************************ + +|CL| uses many techniques in its software build toolchain to improve software +performance, such as aggressive compiler flags and CPU-specific optimizations. +If maintained manually, these techniques can become complex to support due to +the volume of packages and the potential for technical drift of package +performance configurations. The |CL| team built the :ref:`autospec` tool to +manage this complexity and to apply the techniques used in the software build +toolchain across the entire project. autospec is available as part of the OS for +developers to use when they build their own projects on |CL|. + +Latest versions of compilers and low-level libraries +==================================================== + +|CL| is a rolling release distribution and follows upstream software +repositories, including compilers and libraries, for updates. |CL| includes +upstream source-level optimizations as soon as they're available. + +A benchmark approach to compiler performance +============================================ + +|CL| chooses the compiler used to build each software package on a case-by-case +basis to maximize performance. Typically, |CL| uses the open source `GNU Compiler +Collection `_ (GCC) with the standard low-level +libraries `Glibc `_ and +`libstdc++ `_ for C and C++ +programming languages. If there is a performance advantage, |CL| will build +packages with `Clang / LLVM `_. + +|CL| uses patched compilers and low-level libraries for exact control of the +software build. Patches include changes that default to more aggressive +optimizations or optimizations that haven't yet been merged upstream. + +View the full list of patches in the autospec repositories on GitHub: + +* https://github.com/clearlinux-pkgs/gcc +* https://github.com/clearlinux-pkgs/glibc +* https://github.com/clearlinux-pkgs/llvm + +Aggressive compiler flags +========================= + +|CL| uses aggressive +`compiler flags `_ to +optimize software builds for runtime performance. Some significant flags that +|CL| often implements are: + +`mtune and march `_ + Options used to tune generated code with optimized instructions for specific + CPU types instead of creating generic code for maximum compatibility. + + |CL| defines its minimum hardware requirements to be second-generation + Intel® microarchitecture code name Westmere (released in 2010) or later. + This enables compiler optimizations that are available only on newer + architectures. Whenever possible, |CL| tunes code for the Haswell generation + processors or newer. + + |CL| sets :command:`march=westmere` and :command:`mtune=haswell`. + + .. note:: + |CL| doesn't require Advanced Encryption Standard (AES), so it should + run on some Intel CPUs from the first generation of Intel® microarchitecture code name Nehalem (released in 2008). Refer to the + `recommended minimum system requirements `_ for specific requirements. + +`O3 `_ + The largest preset of compiler options optimizations for performance. O3 + favors runtime performance. + + View the "Optimize Options" section of the GCC man page for additional + information: :command:`man gcc` + +`LTO `_ + Link-time optimization that performs an optimization between compiled object + files and creation of executable binaries by adding extra information to the + compiled object to help the linker. + +`PGO `_ + Profile guided optimization or field guided optimization performs + optimization based on information sampled during the execution of the program. + + +Compiler flags are set at different levels in the |CL| build environment: + +User flags + The set of default flags used by |CL| when a user compiles software + from source. The flags are exported as system-wide environment variables from + the + `/usr/share/defaults/etc/profile `_ file to the user’s shell by default. These are the + standard variables read by the compiler, named :command:`*FLAGS`, depending + on the compiler. + + .. note:: + Source code may come with software build systems that + override these values. This will cause a difference in expected flags. + The |CL| autospec tooling will attempt to ignore these overrides, but + the build system may still need patching. A manual build will not ignore + the build system override values if they exist. + +Global flags + Compiler flags applied at a global level for all packages. The |CL| RPM + configuration (`clr-rpm-config `_) + contains global compiler flags. Search the :file:`macros` file for + :command:`global_cflags` and search the :file:`rpmrc` file for + :command:`optflags`. Global compiler flags may be overridden. + + .. note:: + |CL| doesn't use RPMs to install software. |CL| + distributes software in the form of :ref:`bundles-guide`. The RPM format + is only used during the |CL| build process as a way to resolve + dependencies. + +Per-package flags + Compiler flags applied at a per-package level. The package's autospec + repository contains the package-specific compiler flags. Search the + :file:`.spec` file for the + section starting with :command:`export CFLAGS`. + +Multiple builds of libraries with CPU-specific optimizations +============================================================ + +To fully use the capabilities in different generations of CPU hardware, |CL| +will perform multiple builds of libraries with CPU-specific optimizations. For +example, |CL| builds libraries with Intel® Advanced Vector Extensions 2 (Intel® +AVX2) and Intel® Advanced Vector Extensions 512 (Intel® AVX-512). |CL| can then +dynamically link to the library with the newest optimization based on the +processor in the running system. Runtime libraries used by ordinary applications +benefit from these CPU specific optimizations. + +The autospec repository for Python* shows an example of this optimization: +https://github.com/clearlinux-pkgs/python3 + +Kernel +****** + +A modern kernel with variants optimized for different platforms +=============================================================== + +|CL| is a rolling release distribution that uses the newest upstream Linux +kernel. The Linux kernel has frequent updates which can include performance +enhancements. It's a policy of the |CL| team to try to upstream any performance +enhancements in the Linux kernel for all to use. + +|CL| `builds different kernel variants `_ for compatibility with specific platforms. +For example, kernels meant to run on virtual machines skip support for much of +the physical hardware that doesn’t show up in VM environments and will slow down +boot. + +View the kernel configuration and patches to the default native kernel in the +autospec repository: https://github.com/clearlinux-pkgs/linux/ + +Utility to enforce kernel runtime parameters +============================================ + +The Linux kernel exposes parameters for tuning the behavior of drivers and +devices such as certain buffers and resource management strategies. |CL| uses a +small utility, `clr-power-tweaks `_, +to set and enforce kernel parameter values weighted towards performance upon +boot. View the set performance values by running :command:`sudo clr_power --debug`. + +Operating system +**************** + +Operating system and software build-time optimizations set the stage for high +performance. Decisions made after the installation of |CL| are equally as +important. + + +CPU performance governor +======================== + +|CL| uses the performance CPU governor which calls for the CPU to operate at +maximum clock frequency. In other words, P-state P0. The idea behind prioritizing +maximum CPU performance is that the faster a program finishes execution, the +faster the CPU can return to a low energy idle state. See the `CPU Power and +Performance documentation `_ +for further details. + +Restructured boot sequence +========================== + +To optimize boot speed, |CL| uses a restructured order for boot processes that +minimizes the time services wait on slow operations and the time boot processes +wait on each other. + +Systemd-bootchart is a tool for graphing the boot sequence and writes logs to a +file under :file:`/run/log`. The tool and corresponding log file make diagnosing slow +boot problems easier. All |CL| systems have `systemd-bootchart `_ enabled by default for every boot. systemd-bootchart configuration is +non-blocking to not materially slow down boot performance. + +Related topics +************** + +* :ref:`cpu-performance` +* `A Linux* OS for Linux Developers `_ +* `The Performance Race `_ +* `Boosting Python* from profile-guided to platform-specific optimizations `_ +* `Transparent use of library packages optimized for Intel® architecture `_ + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* diff --git a/_sources/guides/clear/security.rst.txt b/_sources/guides/clear/security.rst.txt new file mode 100644 index 000000000..0f125b241 --- /dev/null +++ b/_sources/guides/clear/security.rst.txt @@ -0,0 +1,158 @@ +.. _security: + +OS Security +########### + +|CL-ATTR| aims to make systemic and layered security-conscious decisions +that are both performant and practical. This security philosophy is rooted +within the project's codebase and operating culture. + +.. contents:: :local: + :depth: 1 + +Security in updates +******************* + +The |CL| team believes in the benefits of software security through open +sourcing, incremental updates, and rapidly resolving known security advisories. + +The latest Linux\* codebase +=========================== + +|CL| uses the newest version of the Linux kernel which allows the operating +system to leverage the latest features from the upstream Linux kernel, +including security fixes. + +Automated effective updating +============================ + +|CL| is incrementally updated multiple times per day. + +This `rolling release`_ model allows |CL| to consume the latest security fixes +of software packages as soon as they become available. There is no waiting for +major or minor releases on |CL|. + +An update is not effective if it is just simply downloaded onto a system. +It needs to be obtained *AND* ensured that the new patched copy is being +used; not an older copy loaded into memory. |CL| will let you know when a +service needs to be rebooted or do it for your automatically after +a software update, if desired. + +In |CL| updates are delivered automatically, efficiently, and effectively. For +more information about software updates in |CL|, refer to the :ref:`swupd-guide` +guide. + +Automated CVE scanning and remediation +====================================== + +The sheer number of software packages and security vulnerabilities is growing +exponentially. Repositories of Common Vulnerabilities and Exposures (CVEs) +and their fixes, if known, are published by :abbr:`NIST` in a +National Vulnerability Database \ |NVD|\ and at \ |MITRE|\ . + +|CL| employs a proactive and measured approach to addressing known +and fixable :abbr:`CVEs (Common Vulnerabilities and Exposures)`. +Packages are automatically scanned against CVEs daily, and security +patches are deployed as soon as they are available. + +These combined practices minimize the amount of time |CL| systems are exposed to unnecessary security risk. + +Security in software +********************* + +Minimized attack surface +======================== + +|CL| removes legacy, unneeded, or redundant standards and components as much as +possible to enable the use of best known security standards. Below are some +examples: + +* `RC4`, `SSLv3`, `3DES`, and `SHA-1` ciphers which have had known + vulnerabilities, have been explicitly disabled within many |CL| packages to + avoid their accidental usage. + +* Services and subsystems which expose sensitive system information + have been removed such as the `finger` and `tcpwrappers`. + +* `SFTP` has been disabled by default due to security considerations. + +Verified trust +============== + +|CL| encourages the use of secure practices such as encryption +and digital signature verification throughout the system and discourages blind +trust. Below are some examples: + +* All update operations from swupd are transparently encrypted and checked + against the |CL| maintainers' public key for authenticity. + More information about swupd security can be found in the + `Security for software update in Clear Linux* OS`_ blog post. + +* Before being built, packages available from |CL| verify checksums and + signatures provided by third party project codebases and maintainers. + +* |CL| features a unified certificate store, `clrtrust`_ which comes + ready to work with well-known Certificate Authorities out of the box. + clrtrust also offers an easy to use command line interface for managing + system-wide chains of trust, instead of ignoring foreign certificates. + +Compiled with secure options +============================ + +While |CL| packages are optimized for performance on Intel® architecture, +security conscious kernel and compiler options are sensibly taken advantage of. +Below are some examples: + +* Kernels shipped with |CL| are signed and disallow the usage of + custom kernel modules to maintain verifiable system integrity. + +* `Address space layout randomization (ASLR)`_ and + `Kernel address space layout randomization (KASLR)`_ are kernel features + which defend against certain memory based attacks. + More information about PIE executables can be found in the + `Recent GNU* C library improvements`_ blog post. + +Security in system design +************************* + +Simple, yet effective, techniques are used throughout the |CL| system design to +defend against common attack vectors and enable good security hygiene. Below are +some examples: + +* Full disk encryption using :abbr:`LUKS (Linux Unified Key Setup)` is available + during installation. Refer to `cryptsetup`_ for additional information about + LUKS. + +* |CL| uses the PAM cracklib module to harden user login and password + security resulting in: + + - No default username or root password set out of the box with + |CL|, you will be asked to set your own password immediately. + + - Simple password schemes, which are known to be easily compromised, + cannot be set in |CL|. + + - A password blacklist, to avoid system passwords being set to + passwords which have been compromised in the past. + +* `Tallow`_, a lightweight service which monitors and blocks suspicious SSH + login patterns, is installed with the :command:`openssh-server` bundle. + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _`Security for software update in Clear Linux* OS`: https://clearlinux.org/blogs/security-software-update-clear-linux-os-intel-architecture +.. _`Recent GNU* C library improvements`: https://clearlinux.org/blogs/recent-gnu-c-library-improvements +.. _`rolling release`: https://en.wikipedia.org/wiki/Rolling_release +.. _`clrtrust`: https://github.com/clearlinux/clrtrust +.. _`Address space layout randomization (ASLR)`: https://en.wikipedia.org/wiki/Address_space_layout_randomization +.. _`Kernel address space layout randomization (KASLR)`: https://lwn.net/Articles/569635/ +.. _`cryptsetup`: https://gitlab.com/cryptsetup/cryptsetup/ +.. _`Tallow`: https://github.com/clearlinux/tallow + +.. |NVD| raw:: html + + https://nvd.nist.gov/ + +.. |MITRE| raw:: html + + https://cve.mitre.org/ diff --git a/_sources/guides/clear/stateless.rst.txt b/_sources/guides/clear/stateless.rst.txt new file mode 100644 index 000000000..0c157854b --- /dev/null +++ b/_sources/guides/clear/stateless.rst.txt @@ -0,0 +1,149 @@ +.. _stateless: + +Stateless +######### + +In most operating systems, user data, system data, and configuration files +can become intermingled, which can make them challenging to manage. + +.. figure:: figures/stateless-1.png + :scale: 45% + :align: center + :alt: Stateless: User and system files mixed + + Figure 1: Without stateless, user and system files become mixed on the filesystem over time. + +|CL-ATTR| has a stateless design philosophy with the goal to provide an +:abbr:`OS (operating system)` that functions without excessive user +configuration or customization. Stateless in this context does *not* mean +ephemeral or non-persistent. + +.. contents:: :local: + :depth: 1 + +File-level separation +********************* + +To accomplish a stateless design, the |CL| filesystem hierarchy is separated +between user-owned areas and |CL|-owned areas. + +.. figure:: figures/stateless-2.png + :scale: 45% + :align: center + :alt: Stateless: User and system files separation + + Figure 2: With stateless, user and system files are separated on the filesystem. + +System area +=========== +Files under the :file:`/usr` directory are managed by |CL| as system files +(except :file:`/usr/local`). +Files written under the :file:`/usr` directory by users can get removed +through system updates with :ref:`swupd `. This operating +assumption allows |CL| to verify and maintain integrity of system files. + +User areas +========== +Files under the :file:`/usr/local`, :file:`/etc/`, :file:`/opt`, :file:`/home`, +and :file:`/var` directories are owned and managed by the user. A freshly +installed |CL| system will only have a minimal set of files in the +:file:`/etc/` directory and software installed by |CL| does not write to +:file:`/etc`. This operating assumption allows |CL| users to clearly identify +the configuration that makes their system unique. + + +Software configuration +********************** + +With stateless separation, default software configurations are read in order +from predefined source code, |CL| provided defaults, and user-provided +configuration. + +Default configurations +====================== + +Software in |CL| provides default configuration values so that it is +immediately functional, except for some that require additional configuration. + +If an upstream software puts default configurations in multiple locations +such as :file:`/usr/` and :file:`/etc`, it will be modified by the |CL| +distro to comply with the stateless design. Also, some default configurations +may be modified to close security loopholes. Defaults will reside +under :file:`/usr/share/defaults`. These files can be referenced as +templates for customization. + +For example, after installing the `httpd` bundle for Apache web server, its +default configurations appear in the :file:`/usr/share/defaults/httpd/` directory. + +Overriding configurations +========================= + +If a configuration needs to be changed, the appropriate file should be +modified by the user under :file:`/etc/`. If the configuration file does not +already exist, it can be created in the appropriate location. + +User-defined configuration files should contain the minimal set of desired +changes and rely on default configuration for the rest. + +For example, a customized Apache configuration can be used instead by: + +#. Install the Apache web server bundle. + + .. code-block:: bash + + sudo swupd bundle-add httpd + +#. Create the destination directory for the configuration. + + .. code-block:: bash + + sudo mkdir /etc/httpd + +#. Copy the default configuration as a reference template. + + .. code-block:: bash + + sudo cp /usr/share/defaults/httpd/httpd.conf /etc/httpd/ + +#. Make any desired modifications to the configurations. + + .. code-block:: bash + + sudoedit /etc/httpd/httpd.conf + +#. Reload the service or reboot the system to pickup any changes. + + .. code-block:: bash + + systemctl daemon-reload httpd && systemctl restart httpd + +This pattern can be used to modify the configurations of other programs too. +The `stateless man page`_ has application-specific examples. + +System reset +************ + +One advantage of the stateless design is that the system defaults can be +easily restored by simply deleting everything under :file:`/etc/` and +:file:`/var`. + +Running the commands below effectively performs a system reset as if it was +just installed: + +.. code-block:: bash + + sudo rm -rf /etc + sudo rm -rf /var + +In other Linux distributions, this can be a catastrophic action that may render +a system unable to boot and/or inaccessible. + +Additional information +********************** + +* `stateless man page`_ +* :ref:`firmware` + +.. _`stateless man page`: https://github.com/clearlinux/clr-man-pages/blob/master/stateless.7.rst + + diff --git a/_sources/guides/clear/swupd-3rd-party.rst.txt b/_sources/guides/clear/swupd-3rd-party.rst.txt new file mode 100644 index 000000000..aa87709e4 --- /dev/null +++ b/_sources/guides/clear/swupd-3rd-party.rst.txt @@ -0,0 +1,281 @@ +.. _swupd-3rd-party: + +swupd 3rd-party +############### + +Upstream |CL| offers a plethora of `bundles`_ to choose from.  + +For users who want access to additional software outside of the distro, +|CL| provides support for 3rd-party bundles. + +There are two components to 3rd-party bundles: + +* Use :command:`mixer` to create 3rd-party bundles + +* Use the :command:`swupd` subcommand :command:`3rd-party` to manage repos, + consume and manage bundles + +Follow this guide to set up a web server to host 3rd-party bundles, +build an example 3rd-party bundle, install and manage the bundle on a +client system. + +.. contents:: + :local: + :depth: 1 + +Also, see our `general guidelines`_ on sharing 3rd-party bundles. + +Prerequisite +************* + +* Familiarity with :command:`mixer` +* Familiarity with :command:`swupd` +* You must be running |CL| version 32570 or higher + +.. include:: ./mixer.rst + :start-after: set-up-nginx-web-server-start: + :end-before: set-up-nginx-web-server-end: + +Create directory to hold 3rd-party app +************************************** + +#. Create a top-level directory to hold all apps. + + .. code-block:: bash + + mkdir ~/my-3rd-party-apps && pushd $_ + +#. Create a directory for each app and put the content of your software in it. + + In this example, the `helloclear.sh` app simply prints + "Hello Clear!" when invoked. + + .. code-block:: bash + + # make helloclear directory + mkdir -p helloclear/usr/bin && pushd $_ + + # create helloclear.sh script + cat > helloclear.sh << EOF + #!/bin/bash + echo "Hello Clear!" + EOF + + # make script executable + chmod +x helloclear.sh + + popd + + .. note:: + + * You can put whatever you want in your app's directory. All of the content + within each directory will get copied onto the client system under + :file:`/opt/3rd-party/bundles//`. + + * To use a 3rd-party RPM, it is recommended to extract the content of the RPM + into a directory. Use :command:`rpm2cpio | sudo cpio -idv`. + +Create bundle of 3rd-party app with mixer +***************************************** + +Next, use :command:`mixer` to create a bundle for each of the apps from the previous +section. + +#. Install the mixer tool. + + .. code-block:: bash + + sudo swupd bundle-add mixer + +#. Create a mixer workspace. + + .. code-block:: bash + + mkdir ~/mixer && cd $_ + +#. Initialize a mix without any default bundles. + + .. code-block:: bash + + mixer init --no-default-bundles + +#. Configure :file:`builder.conf` to set the default bundle, CONTENTURL, and VERSIONURL. + For the "URL"s in this example, it will be IP address of the web server that was + set up earlier. + Substitute with the IP address of your host. + + .. code-block:: bash + + mixer config set Swupd.BUNDLE "os-core" + mixer config set Swupd.CONTENTURL "http://" + mixer config set Swupd.VERSIONURL "http://" + +#. Create an empty local `os-core` bundle. :command:`swupd` client expects the + `os-core` bundle to exist in a mix even if it’s empty. + + .. code-block:: bash + + mixer bundle create os-core --local + +#. Using the `helloclear` app as an example, create the `helloclear` bundle + and use the `content()` directive with the path to the `helloclear` directory in + the bundle definition. + + Refer to `bundle definition`_ for addition information on how to define a bundle. + + .. code-block:: bash + + mixer bundle create helloclear --local + echo "content($HOME/my-3rd-party-apps/helloclear/)" >> local-bundles/helloclear + +#. Add both bundles to the mix. + + .. code-block:: bash + + mixer bundle add os-core + mixer bundle add helloclear + +#. Build the bundles and generate the update content. + + .. code-block:: bash + + sudo mixer build bundles + sudo mixer build update + +Install and manage 3rd-party bundle on client system +**************************************************** + +Finally, use the :command:`swupd` client tool to install and +manage the bundle created with :command:`mixer` earlier. +All installed 3rd-party bundles reside in :file:`/opt/3rd-party/bundles//`. + +#. First, add a repo link to the web server. + The `os-core` bundle will be added automatically when adding a repo. + It contains items that mixer injected into the mix such as version information, + format, CONTENTURL, VERSIONURL, and certificate. + + .. code-block:: bash + + sudo swupd 3rd-party add my-3rd-party-repo \ + http:// --allow-insecure-http + + .. note:: + + By default, the :command:`swupd` client is designed to communicate + with an HTTPS server. For development purposes, the swupd client + can talk to an HTTP server if you add the flag ``--allow-insecure-http``. + + To avoid adding this flag each time when invoking :command:`swupd`, enter: + + .. code-block:: bash + + sudo mkdir -p /etc/swupd + + sudo tee -a /etc/swupd/config << EOF + [GLOBAL] + allow-insecure-http=true + EOF + +#. Query the list of bundles from the repo. + + .. code-block:: bash + + sudo swupd 3rd-party bundle-list -a + +#. Add the `helloclear` bundle. + + .. code-block:: bash + + sudo swupd 3rd-party bundle-add helloclear + +#. List installed 3rd-party bundles. + + .. code-block:: bash + + sudo swupd 3rd-party bundle-list + +#. Look in :file:`/opt/3rd-party` to confirm they were installed there. + + .. code-block:: bash + + tree /opt/3rd-party + + Example output: + + .. code-block:: console + + /opt/3rd-party/ + ├── bin + │   └── helloclear.sh + ├── bundles + │   └── my-3rd-party-repo + │   └── usr + │   ├── bin + │   │   └── helloclear.sh + │   ├── lib + │   │   └── os-release + │   └── share + │   ├── clear + │   │   ├── bundles + │   │   │   ├── helloclear + │   │   │   └── os-core + │   │   ├── update-ca + │   │   │   └── Swupd_Root.pem + │   │   ├── version + │   │   └── versionstamp + │   └── defaults + │   └── swupd + │   ├── contenturl + │   ├── format + │   └── versionurl + └── repo.ini + + 12 directories, 12 files + +Create more bundles and add to client +************************************* + +From here on, to add new bundles to your mix, follow these steps: + +#. Follow the steps above to add a new directory for each app and put content into it. + +#. In the mixer workspace, run :command:`mixer versions update`. + +#. Follow the remaining mixer process to add and build bundles. + +On the client side: + +#. Run :command:`sudo swupd 3rd-party update` to update to the latest version of your mix. + + .. note:: + + If `swupd autoupdate` is enabled, 3rd-party repositories will update + automatically as well during regular swupd update. + +#. Now, you can see and add the new bundles. + +Some limitations of 3rd-party bundles +************************************* + +#. You cannot upload your bundles to a shared community repo because bundles + are tied to your particular mix with its own certificate. + You have to host your own and share your repo. + +#. As with upstream bundles, 3rd-party bundles installation is simply the unpacking + of files onto your system. It cannot perform pre or post-installation actions such as + adding a favorite shortcut to the Gnome desktop dock, for example. + +Related topics +************** + +* :ref:`autospec` +* :ref:`mixer` +* :ref:`bundles` +* :ref:`swupd-guide` + +.. _bundles: + https://clearlinux.org/software +.. _bundle definition: + https://docs.01.org/clearlinux/latest/guides/clear/mixer.html#id16 +.. _general guidelines: + https://community.clearlinux.org/t/about-the-3rd-party-sw-category/4072 diff --git a/_sources/guides/clear/swupd.rst.txt b/_sources/guides/clear/swupd.rst.txt new file mode 100644 index 000000000..6a686aeca --- /dev/null +++ b/_sources/guides/clear/swupd.rst.txt @@ -0,0 +1,353 @@ +.. _swupd-guide: + +swupd +##### + +:command:`swupd` links a |CL-ATTR| installation with upstream updates and +software. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +:command:`swupd` has two main functions: + +#. Manage software and replace APT or YUM, by installing bundles + rather than packages. +#. Check for system updates and install them. + +:command:`swupd` manages overlapping dependencies behind the scenes, ensuring +that all software is compatible across the system. It can be used to verify +the OS, clean cached files, and fix issues. + +:ref:`Bundles ` contain everything needed to deliver a software +capability. They are the smallest granularity component that is +managed by |CL|. A bundle comes with all of its dependencies rather than +downloading a cascade of package dependencies when installing a piece of +software. + +Versioning +========== + +Using package managers to monitor software version compatibility or +compare multiple systems on many Linux distributions can be cumbersome. + +With |CL| :command:`swupd`, versioning happens at the individual file level. +This means |CL| generates an entirely new OS version with any set of software +changes to the system, including software downgrades or removals. This +rolling release versioning model is similar to :command:`git` internal version +tracking, where any of the individual file commits are tracked and move the +pointer forward when changed. + +A number that represents the **current** release of the OS describes the +versions of all the software on the OS. Each build is composed of a specific +set of bundles made from a particular version of packages. On a daily basis, +this matters to system administrators who need to determine which of their +systems do not have the latest security fixes, or which combinations of +software have been tested. Every release of the same number is guaranteed to +contain the same versions of software, so there's no ambiguity between two +systems running the same version of |CL|. + +Updating +======== + +|CL| enforces regular updating of the OS by default and automatically +checks for updates against a version server. The content server provides the +file and metadata content for all versions and can be the same as the +version server. The content url server provides metadata in the form of +*manifests*, which list and describe file contents, symlinks, +and directories. Additionally, the actual content is provided to clients +in the form of archive files. + +Software updates with |CL| are also efficient. Unlike package-based +distributions, :command:`swupd` only updates files that have changed, rather +than entire packages. For example, it is quite common for an OS security +patch to be as small as 15 KB. Using binary deltas, |CL| is able to +apply only what is needed. + +For details on how to generate update content for |CL|, see the +:ref:`mixer ` tool. + +How it works +************ + +Prerequisites +============= + +* The device is on a well-connected network. +* The device is able to connect to an update server. The default server is: + https://cdn.download.clearlinux.org/update/ + +Updates +======= + +|CL| updates are automatic by default, but can be set to occur only on +demand. :command:`swupd` makes sure that regular updates are simple and +secure. It can also check the validity of currently installed files and +software, and can correct any problems. + +Manifests +--------- + +The |CL| software update content consists of data and metadata. The data is +the files that end up in the OS. The metadata contains relevant information to +properly provision the data to the OS file system, as well as update the +system and add or remove additional content to the OS. + +The manifests are mostly long lists of hashes that describe content. +Each bundle gets its own manifest file. There is a master manifest +file that describes all manifests to tie it all together. + +Fullfiles, packs, and delta packs +--------------------------------- + +To speed up updates and optimize content delivery, update data provisioned to +a system is obtained by one of the following methods: + +* *Fullfiles* are always generated for every file in every release. This + allows any |CL| to obtain the exact copy of the content + for each version directly. This is used if the OS verification + needs to replace a single file, for instance. + +* *Packs* are available for some releases. They combine many files to speed + up the creation of installation media and large updates. + +* *Delta packs* are an optimized version of packs that only contain updates + (binary diffs). They cannot be used without having the original file content. + +Bundle search +============= + +:command:`swupd` searches download manifest data for +bundles that match the term. Enter only one term, or hyphenated term, per +search. Use the command :command:`man swupd` to learn more. + +Only the base bundle is returned. Bundles can contain other bundles via +includes. For more details, see `Bundle Definition Files`_ and its +subdirectory bundles. + +Bundles that are already installed are marked **(installed)** in search +results. + +Optionally, you can review our `bundles`_ on GitHub\*. + +Examples +******** + +Example 1: Disable and enable automatic updates +=============================================== + +|CL| updates are automatic by default, but can be set to occur only +on demand. + +#. Verify your current auto-update setting. + + .. code-block:: bash + + sudo swupd autoupdate + + Output: + + .. code-block:: console + + Enabled + +#. Disable automatic updates. + + .. code-block:: bash + + sudo swupd autoupdate --disable + + Output: + + .. code-block:: console + + Warning: disabling automatic updates may take you out of compliance with your IT policy + + Running systemctl to disable updates + Created symlink /etc/systemd/system/swupd-update.service → /dev/null. + Created symlink /etc/systemd/system/swupd-update.timer → /dev/null. + +#. Check manually for updates. + + .. code-block:: bash + + sudo swupd check-update + +#. Install an update after identifying one that you need. + + .. code-block:: bash + + sudo swupd update --version + +#. Re-enable automatic installs. + + .. code-block:: bash + + sudo swupd autoupdate --enable + +.. _swupd-guide-example-install-bundle: + +Example 2: Find and install Kata Containers\* +============================================= + +Kata Containers is a popular container implementation. Unlike other +container implementations, each Kata Container has its own +kernel instance and runs on its own :abbr:`VM (Virtual Machine)` for +improved security. + +|CL| makes it very easy to install, since you only need to add +one bundle to use `Kata Containers`_: `containers-virt`_, despite a +number of dependencies. Also, check out our tutorial: :ref:`kata`. + +#. Find the correct bundle. + + To return all possible matches for the search string, enter + :command:`swupd search`, followed by 'kata': + + .. code-block:: bash + + sudo swupd search kata + + The output should be similar to: + + .. code-block:: console + + Bundle with the best search result: + + containers-virt - Run container applications from Dockerhub in + lightweight virtual machines + + This bundle can be installed with: + + swupd bundle-add containers-virt + + Alternative bundle options are + + cloud-native-basic - Contains ClearLinux native software for Cloud + + .. note:: + + If your search does not produce results with a specific term, shorten + the search term. For example, use *kube* instead of *kubernetes*. + +#. Add the bundle. + + .. code-block:: bash + + sudo swupd bundle-add containers-virt + + .. note:: + + To add multiple bundles, add a space followed by the bundle name. + + The output of a successful installation should be similar to: + + .. code-block:: console + + Downloading packs... + + Extracting containers-virt pack for version 24430 + ...50% + Extracting kernel-container pack for version 24430 + ...100% + Starting download of remaining update content. This may take a while... + ...100% + Finishing download of update content... + Installing bundle(s) files... + ...100% + Calling post-update helper scripts. + Successfully installed 1 bundle + +Example 3: Verify and correct system file mismatch +================================================== + +:command:`swupd` can determine whether system directories and files have +been added to, overwritten, removed, or modified (e.g., permissions). + +.. code-block:: bash + + sudo swupd diagnose + +All directories that are watched by :command:`swupd` are verified according +to the manifest data. Hash mismatches are flagged as follows: + +.. code-block:: console + + Verifying version 23300 + Verifying files + ...0% + Hash mismatch for file: /usr/bin/chardetect + ... + ... + Hash mismatch for file: /usr/lib/python3.6/site-packages/urllib3/util/wait.py + ...100% + Inspected 237180 files + 423 files did not match + Verify successful + +In this case, Python\* packages that were installed on top of the default +install were flagged as mismatched. :command:`swupd` can be directed to +ignore or fix issues based on command line options. + +:command:`swupd` can correct any issues it detects. Additional directives +can be added including a white list of directories to be ignored. + +The following command repairs issues, removes unknown items, and +ignores files or directories matching :file:`/usr/lib/python`: + +.. code-block:: bash + + sudo swupd repair --picky --picky-whitelist=/usr/lib/python + +.. _swupd-quick-ref: + +Quick reference +*************** + +swupd info + Returns the currently installed version and update servers. + +swupd update + Updates to a specific version or updates to latest version if no + arguments are used. + +swupd bundle-list [--all] + Lists installed bundles. + +swupd search + Finds a bundle that contains your search term. + +swupd bundle-add + Adds a bundle. + +swupd bundle-remove + Removes a bundle. + +swupd --help + Lists additional :command:`swupd` commands. + +man swupd + Opens the :command:`swupd` man page. + +Refer to `swupd source documentation`_ on GitHub for more details. + +Related topics +************** + +* :ref:`autospec` +* :ref:`mixer` +* :ref:`bundles` + +.. _swupd source documentation: https://github.com/clearlinux/swupd-client/blob/master/docs/swupd.1.rst + +.. _Kata Containers: https://clearlinux.org/downloads/containers + +.. _containers-virt: https://github.com/clearlinux/clr-bundles/blob/master/bundles/containers-virt + +.. _Bundle Definition Files: https://github.com/clearlinux/clr-bundles + +.. _bundles: https://github.com/clearlinux/clr-bundles/tree/master/bundles diff --git a/_sources/guides/clear/telemetrics.rst.txt b/_sources/guides/clear/telemetrics.rst.txt new file mode 100644 index 000000000..42d152b8d --- /dev/null +++ b/_sources/guides/clear/telemetrics.rst.txt @@ -0,0 +1,894 @@ +.. _telem-guide: + +Telemetrics +########### + +This guide describes the |CL-ATTR| telemetry solution. + +.. important:: + + Telemetry in |CL| is **opt-in**. The telemetry client is **not** active + and sends **no** data until you explicitly enable it. + +.. note:: + + The telemetry functionality adheres to + `Intel privacy policies `_ + regarding the collection and use of :abbr:`PII (Personally Identifiable Information)` and is open source. + + No intentionally identifiable information about the user or system owner is + collected. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Telemetrics in |CL| is a client and server solution used to collect +data from running |CL| systems to help quickly identify and fix bugs in the +OS. Both client and server are customizable, and an API is available on the +client side for instrumenting your code for debug and analysis. + +Telemetry, one of the key features of |CL|, enables developers to observe and +proactively address issues in the OS before end users are impacted. + +Telemetrics is a +`portmanteau word `_ made from: + +* Telemetry, which is sensing and reporting data. +* Analytics, which is using visualization and statistical inferencing to make + sense of the reported data. + +|CL| telemetry reports system-level debug/crash information using specialized +probes. The probes monitor system tasks such as swupd, kernel oops, machine +error checks, and the BIOS error report table for unhandled hardware +failures. Telemetry enables real-time issue reporting to allow system +developers to focus quickly on an issue and monitor corrective actions. + +|CL| telemetry is fully customizable and can also be used during software +development for debugging purposes. You can use the libtelemetry library in +your code to create custom telemetry records. You can also use the +telem-record-gen utility in script files for light-touch record creation +where instrumenting code files doesn't make sense. For more information on +configuring the telemetry client, refer to section `Client Configuration`_. + +The |CL| telemetrics solution is an **opt-in** choice on the client side. +By default, the telemetry client is disabled until you choose to enable it. +Enabling the client is covered in this guide. + +Architecture +============ + +|CL| telemetry has two fundamental components, which are shown in Figure 1: + +* Client, which generates and delivers records to the backend server via the + network. + +* Backend, which receives records sent from the client and displays the + cumulative content through a specialized web interface. + +.. figure:: /_figures/telemetrics/telemetry-e2e.png + :alt: Figure 1, Telemetry Architecture + + Figure 1: :guilabel:`|CL| Telemetry Architecture` + +The telemetry client provides the front end of the telemetrics solution and +includes the following components: + +* telemprobd, which is a daemon that receives and prepares telemetry records + from probes and spools them to disk. +* telempostd, which is a daemon that manages spooled telemetry records and + delivers these records according to configurable settings. +* probes, which collect specific types of data from the operating system. +* libtelemetry, which is the API that telemetrics probes use to create + records. + +The telemetry backend provides the server-side component of the telemetrics +solution and consists of: + +* Nginx web server. +* Two Flask apps: + + * Collector, which is an ingestion web app for records received from client + probes. + * TelemetryUI, which is a web app that exposes different views to visualize + the telemetry data. +* PostgreSQL as the underlying database server. + +.. note:: + + The default telemetry backend server is hosted by the Intel |CL| + development team and is not viewable outside the Intel firewall. To + collect your own records, you must set up your own telemetry backend + server. + +How to use +********** + +From a workflow perspective, the |CL| telemetrics system is straightforward. +On the client side, the main decisions after installation and enabling +telemetry involve what to do with the record data generated by the probes. +You can send the data to the default telemetry server or a custom backend +server, keep the data local to the system, or both. The backend server has a +more complex setup, but once it's running, it is simple to configure and use. + +This section describes some of the possible scenarios for configuring +the |CL| telemetrics system, and suggests which ones make sense according to +your needs. + +For more information on configuring the telemetry client, refer to section +`Client Configuration`_. + +Scenarios +========= + +#. Enable telemetry: + + You must opt-in and start telemetry before probes can generate records. + You can configure the client before starting telemetry by creating a + custom :file:`telemetrics.conf` file that you place in the + :file:`/etc/telemetrics` directory. If you choose to use the built-in + default settings, records will be sent to the telemetrics backend server + managed by the |CL| development team at Intel. + +#. Save record data locally: + + You can configure the telemetry client to save records locally. This is + convenient when you want instant feedback during a development cycle, or + to track system issues if you believe there is a machine-specific problem. + The client can be set not to send records at all or to both keep the + records locally and send to the backend server. + +#. Set up a server to collect data: + + Whether you are managing a network of |CL| systems or you don't want to + send records to the default telemetry server, you can set up a backend + server to collect your records. The backend server can be installed on any + Linux system and provides the same dashboard as the default server. + + +#. Instrument your code with the libtelemetry API: + + The :command:`telemetrics` bundle includes the libtelemetry C library, + which exposes an API used by the telemprobd and telempostd daemons. You + can use these in your applications as well. The API documentation is + located in the :file:`telemetry.h` file in `Telemetrics client`_ + repository. + + +Examples +******** + +.. contents:: + :local: + :depth: 1 + +Enable or disable telemetry +=========================== + +#. Enabling during installation: + + During the initial installation of |CL|, you are requested to join the + stability enhancement program and allow |CL| to collect anonymous reports + to improve system stability. If you choose not to join this program, then + the telemetry software bundle is not added to your system. If you do + choose to join the program, the installer will automatically enable + telemetry on your system by installing the telemetrics bundle, creating + the file :file:`/etc/telemetrics/opt-in`, and enabling the telemetrics + systemd services to run after installation is complete and the system is + restarted. + +#. Enabling after install: + + To install telemetry on your system, run the following commands: + + .. code-block:: bash + + sudo swupd bundle-add telemetrics + sudo telemctl opt-in + sudo telemctl start + + This installs the necessary software, enables telemetry by creating the + file :file:`/etc/telemetrics/opt-in`, and starts the :command:`telemprobd` + and :command:`telempostd` daemons. Your system will begin to send + telemetry data to the backend server. + +#. Disabling after install: + + To disable both of the telemetry daemons, run the following command: + + .. code-block:: bash + + sudo telemctl stop + +#. Opt in to telemetry: + + To opt-in to the telemetry services, simply enter the opt-in command: + + .. code-block:: bash + + sudo telemctl opt-in + sudo telemctl start + + This creates the :file:`/etc/telemetrics/opt-in` file, if it doesn't + already exist. You will need to explicitly start the telemetry services + after you have opted in. + +#. Opt out of telemetry: + + To stop sending telemetrics data from your system, opt out of the + telemetry service: + + .. code-block:: bash + + sudo telemctl opt-out + + This removes the file :file:`/etc/telemetrics/opt-in` and stops the + telemetry services. + + +Saving data locally +=================== + +This example requires |CL| to be installed and telemetry to be enabled on the +system. + +To change how records are managed, copy the default +:file:`/usr/share/defaults/telemetrics/telemetrics.conf` file to +:file:`/etc/telemetrics/telemetrics.conf` and edit it. The changes in the +:file:`/etc/telemetrics/telemetrics.conf` file will override the built-in +defaults referenced in the +:file:`/usr/share/defaults/telemetrics/telemetrics.conf` file. +You will need root permissions to create and edit files in :file:`/etc`. For +each example, and for any time you make changes to the configuration file, +you must restart the client daemons to pick up the changes: + +.. code-block:: bash + + sudo telemctl restart + + +The :command:`telemctl journal` command gives you access to features and +options of the telemetry journal to assist with system analytics and debug. +:command:`telemctl journal` has a number of options to help filter records. +Use :command:`-h` or :command:`--help` to view usage options. + + +#. Keep a local copy and send records to backend server: + + To keep a local copy of the telemetry record and also send it on to the + backend server, we will need to change the + :guilabel:`record_retention_enabled` configuration key value to + :guilabel:`true`. + +#. Keep all records -- don't send to backend server: + + To keep records on the system without sending them to a backend server, set + the :guilabel:`record_server_delivery_enabled` key value to + :guilabel:`false`. Note that you will also need to ensure the + :guilabel:`record_retention_enabled` configuration key value is set to + :guilabel:`true` or the system will not keep local copies. + +#. Keep and send records to custom server: + + This assumes you have set up a custom server according to the next example. + + The server is identified by the :guilabel:`server` setting, and by default + records are sent to the |CL| server + :guilabel:`server=https://clr.telemetry.intel.com/v2/collector`. To change + this, you can use an IP address or fully qualified domain name. + + +Set up a backend server to collect telemetry records +==================================================== + +For this example, start with a clean installation of |CL| on a new system +using the :ref:`bare-metal-install-server` getting started guide and: + +#. Join the :guilabel:`Stability Enhancement Program` to install and + enable the telemetrics components. + +#. Select the manual installation method with the following settings: + + * Set the hostname to :guilabel:`clr-telem-server`, + * Create an administrative user named :guilabel:`clear` and add this user + to sudoers + +#. Log in with your administrative user, from your :file:`$HOME` directory, + run :command:`git` to clone the :guilabel:`telemetrics-backend` repository + into the :file:`$HOME/telemetrics-backend` directory: + + .. code-block:: console + + git clone https://github.com/clearlinux/telemetrics-backend + + .. note:: + + You may need to set up the :envvar:`https_proxy` environment variable if + you have issues reaching github.com. + +#. Change your current working directory to + :file:`telemetrics-backend/scripts`. + +#. Before you install the telemetrics backend with the :file:`deploy.sh` + script file in the next step, here is an explanation of the options to be + specified: + + * :command:`-a install` to perform an install + * :command:`-d clr` to install to a |CL| distro + * :command:`-H localhost` to set the domain to localhost + + .. caution:: + The :file:`deploy.sh` shell script has minimal error checking and makes + several changes to your system. Be sure that the options you define on + the cmdline are correct before proceeding. + +#. Run the shell script from the :file:`$HOME/telemetrics-backend/scripts` + directory: + + .. code-block:: console + + ./deploy.sh -H localhost -a install -d clr + + The script starts and lists all the defined options and prompts you for + the :guilabel:`PostgreSQL` database password. + + .. code-block:: console + + Options: + host: localhost + distro: clr + action: install + repo: https://github.com/clearlinux/telemetrics-backend + source: master + type: git + DB password: (default: postgres): + +#. For the :guilabel:`DB password:`, press the :kbd:`Enter` key to accept the + default password `postgres`. + + .. note:: + + The :file:`deploy.sh` script uses :command:`sudo` to run commands and + you may be prompted to enter your user password at any time while the + script is executing. If this occurs, enter your user password to + execute the :command:`sudo` command. + + +#. After all the server components have been installed, you are prompted to + enter the :guilabel:`PostgreSQL` database password to change it as + illustrated below: + + .. code-block:: console + + Enter password for 'postgres' user: + New password: + Retype new password: + passwd: password updated successfully + + Enter `postgres` for the current value of the password and then enter a new + password. Retype it to verify the new password and the + :guilabel:`PostgreSQL` database password will be updated. + +#. After the installation is complete, you can use your web browser to view + the new server by opening the browser on the system and typing in + :command:`localhost` in the address bar. You should see a web page similar + to the one shown in Figure 2 below. + + .. figure:: /_figures/telemetrics/telemetry-backend-1.png + :alt: Telemetry UI + + Figure 2: :guilabel:`Telemetry UI` + +Create records with telem-record-gen +==================================== + +The :command:`telemetrics` bundle provides a record generator tool called +`telem-record-gen`. This tool can be used to create records from shell +scripts or the command line when it is not desirable to write a probe in C. +Records are sent to the backend server, and can also be echoed to stdout. + +There are three ways to supply the payload to the record: + +#. On the command line, use the :command:`-p ` option: + + .. code-block:: bash + + telem-record-gen -c a/b/c -n -o -p 'payload goes here' + + .. code-block:: console + + record_format_version: 4 + classification: a/b/c + severity: 1 + machine_id: FFFFFFFF + creation_timestamp: 1539023189 + arch: x86_64 + host_type: innotek GmbH|VirtualBox|1.2 + build: 25180 + kernel_version: 4.14.71-404.lts + payload_format_version: 1 + system_name: clear-linux-os + board_name: VirtualBox|Oracle Corporation + cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz + bios_version: VirtualBox + event_id: 2236710e4fc11e4a646ce956c7802788 + + payload goes here + +#. Specify a file that contains the payload with the option + :command:`-P path/to/file`. + + .. code-block:: bash + + telem-record-gen -c a/b/c -n -o -P ./payload_file.txt + + .. code-block:: console + + record_format_version: 4 + classification: a/b/c + severity: 1 + machine_id: FFFFFFFF + creation_timestamp: 1539023621 + arch: x86_64 + host_type: innotek GmbH|VirtualBox|1.2 + build: 25180 + kernel_version: 4.14.71-404.lts + payload_format_version: 1 + system_name: clear-linux-os + board_name: VirtualBox|Oracle Corporation + cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz + bios_version: VirtualBox + event_id: d73d6040afd7693cccdfece479df9795 + + payload read from file + +#. If the :command:`-p` or :command:`-P` options are absent, the tool reads + from stdin so you can use it in a :file:`heredoc` in scripts. + + .. code-block:: bash + + #telem-record-gen -c a/b/c -n -o << HEOF + payload read from stdin + HEOF + + .. code-block:: console + + record_format_version: 4 + classification: a/b/c + severity: 1 + machine_id: FFFFFFFF + creation_timestamp: 1539023621 + arch: x86_64 + host_type: innotek GmbH|VirtualBox|1.2 + build: 25180 + kernel_version: 4.14.71-404.lts + payload_format_version: 1 + system_name: clear-linux-os + board_name: VirtualBox|Oracle Corporation + cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz + bios_version: VirtualBox + event_id: 2f070e8e71679f2b1f28794e3a6c42ee + + payload read from stdin + + +Set a static machine id +======================= + +The machine id reported by the telemetry client is rotated every three days +for privacy reasons. If you wish to have a static machine id for testing +purposes, you can opt in by creating a file named +:file:`opt-in-static-machine-id` in the directory :file:`/etc/telemetrics/`. + +#. Create a directory :file:`telemetrics`. + + .. code-block:: bash + + sudo mkdir -p /etc/telemetrics + + +#. Create the file and replace the "unique machine ID" with your desired + static machine ID. + + .. code-block:: bash + + echo "unique machine ID" | sudo tee /etc/telemetrics/opt-in-static-machine-id + +.. note:: + + The machine ID is different from the system hostname. + +Instrument your code with the libtelemetry API +============================================== + +Prerequisites +------------- + +Confirm that the telemetrics header file is located on the system at +:file:`usr/include/telemetry.h`. The `latest version`_ of the file can also +be found on github for reference, but installing the :command:`telemetrics` +bundle will install the header file that matches your |CL| version. + +#. Includes and variables: + + You must include the following headers in your code to use the API: + + .. code-block:: console + + #define _GNU_SOURCE + #include + #include + #include + #include + + + Use the following code to create the variables needed to hold the data for + the record to be created: + + .. code-block:: console + + uint32_t severity = 1; + uint32_t payload_version = 1; + char classification[30] = "org.clearlinux/hello/world"; + struct telem_ref *tm_handle = NULL; + char *payload; + int ret = 0; + + + + Severity: + Type: uint32_t + Value: Severity field value. Accepted values are in the range 1-4, with + 1 being the lowest severity and 4 being the highest severity. Values + provided outside of this range are clamped to 1 or 4 [low, med, high, + crit]. + + Payload_version: + Type: uint32_t + Value: Payload format version. The only currently supported value is 1, + which indicates that the payload is a freely-formatted (unstructured) + string. Values greater than 1 are reserved for future use. + + Classification: + Type: char array + Value: It should have the form, DOMAIN/PROBENAME/REST: DOMAIN is the + reverse domain to use as a namespace for the probe (e.g. org.clearlinux), + PROBENAME is the name of the probe, and REST is an arbitrary value that + the probe should use to classify the record. The maximum length for the + classification string is 122 bytes. Each sub-category may be no longer + than 40 bytes long. Two \'/\' delimiters are required. + + Tm_handle: + Type: Telem_ref struct pointer + Value: Struct pointer declared by the caller. The struct is initialized + if the function returns success. + + Payload: + Type: char pointer + Value: The payload to set. + +#. For this example, we'll set the payload to “hello” by using + :command:`asprintf()`: + + .. code-block:: console + + if (asprintf(&payload, "hello\n") < 0) { + exit(EXIT_FAILURE); + } + + The functions :command:`asprintf()` and :command:`vasprintf()` are analogs + of :command:`sprintf(3)` and :command:`vsprintf(3)`, except that they + allocate a string large enough to hold the output including the + terminating null byte ('\0'), and return a pointer to it via the first + argument. This pointer should be passed to :command:`free(3)` to release + the allocated storage when it is no longer needed. + +#. Create the new telemetry record: + + The function :command:`tm_create_record()` initializes a telemetry + record and sets the severity and classification of that record, as well as + the payload version number. The memory needed to store the telemetry + record is allocated and should be freed with :command:`tm_free_record()` + when no longer needed. + + .. code-block:: console + + if ((ret = tm_create_record(&tm_handle, severity, classification, payload_version)) < 0) { + printf("Failed to create record: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } + +#. Set the payload field of a telemetrics record: + + The function :command:`tm_set_payload()` attaches the provided telemetry + record data to the telemetry record. The current maximum payload size is + 8192b. + + .. code-block:: console + + if ((ret = tm_set_payload(tm_handle, payload)) < 0) { + printf("Failed to set record payload: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } + free(payload); + + The :command:`free()` function frees the memory space pointed to by `ptr`, + which must have been returned by a previous call to :command:`malloc()`, + :command:`calloc()`, or :command:`realloc()`. Otherwise, or if + :command:`free(ptr)` has already been called before, undefined behavior + occurs. If `ptr` is NULL, no operation is performed. + +#. Send a record to the telemetrics daemon: + + The function :command:`tm_send_record()` delivers the record to the local + :command:`telemprobd(1)` service. Since the telemetry record was allocated + by the program it should be freed with :command:`tm_free_record()` when it + is no longer needed. + + .. code-block:: console + + if ((ret = tm_send_record(tm_handle)) < 0) { + printf("Failed to send record to daemon: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } else { + printf("Successfully sent record to daemon.\n"); + ret = 0; + } + fail: + tm_free_record(tm_handle); + tm_handle = NULL; + + return ret; + + +#. A full sample application with compiling flags: + + Create a new file :file:`test.c` and add the following code: + + .. code-block:: console + + #define _GNU_SOURCE + #include + #include + #include + #include + + int main(int argc, char **argv) + { + uint32_t severity = 1; + uint32_t payload_version = 1; + char classification[30] = "org.clearlinux/hello/world"; + struct telem_ref *tm_handle = NULL; + char *payload; + + int ret = 0; + + if (asprintf(&payload, "hello\n") < 0) { + exit(EXIT_FAILURE); + } + + if ((ret = tm_create_record(&tm_handle, severity, classification, payload_version)) < 0) { + printf("Failed to create record: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } + + if ((ret = tm_set_payload(tm_handle, payload)) < 0) { + printf("Failed to set record payload: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } + + free(payload); + + if ((ret = tm_send_record(tm_handle)) < 0) { + printf("Failed to send record to daemon: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } else { + printf("Successfully sent record to daemon.\n"); + ret = 0; + } + fail: + tm_free_record(tm_handle); + tm_handle = NULL; + + return ret; + } + + + + Compile with the gcc compiler, using this command: + + .. code-block:: bash + + gcc test.c -ltelemetry -o test_telem + + + Test to ensure the program is working: + + .. code-block:: bash + + ./test_telem + Successfully sent record to daemon. + + .. note:: + + A full example of the `heartbeat probe`_ in C is documented in the + source code. + +Reference +********* + +.. contents:: + :local: + :depth: 1 + +The telemetry API +================= + +Installing the :command:`telemetrics` bundle includes the libtelemetry C +library, which exposes an API used by the telemprobd and telempostd daemons. +You can use these in your applications as well. The API documentation is found +in the :file:`telemetry.h` file in `Telemetrics client`_ repository. + +Client configuration +==================== + +The telemetry client will look for the configuration file located at +:file:`/etc/telemetrics/telemetrics.conf` and use it if it exists. If the +file does not exist, the client will use the default configuration defined +at build time. There is a sample configuration file located at +:file:`/usr/share/defaults/telemetrics/telemetrics.conf` and represents the +default values that are used when the programs are built. To modify or +customize the configuration, copy the file from +:file:`/usr/share/defaults/telemetrics/telemetrics.conf` to the file +:file:`/etc/telemetrics/telemetrics.conf` and edit it to add your +customizations. + +.. code-block:: bash + + sudo mkdir -p /etc/telemetrics + cp /usr/share/defaults/telemetrics/telemetrics.conf /etc/telemetrics/telemetrics.conf + +.. note:: + + Telemetrics configuration is a layered mechanism since the defaults are + defined at build time and each field can be overwritten individually. + Therefore you only need to add the specific field that you want to change + from the default value to your customized value in the + :file:`/etc/telemetrics/telemetrics.conf` file. + +Configuration options +--------------------- + +The client can use the following configuration options from the config file: + +server + This specifies the web server to which telempostd sends the telemetry + records. +socket_path + This specifies the path of the unix domain socket on which telemprobd + listens for connections from the probes. +spool_dir + This configuration option is related to spooling. If the daemon is not + able to send the telemetry records to the backend server due to reasons + such as the network availability, then it stores the records in a spool + directory. This option specifies the path of the spool directory. This + directory should be owned by the same user as the daemon. +record_expiry + This is the time, in minutes, after which the records in the spool + directory are deleted by the daemon. +spool_process_time + This specifies the time interval, in seconds, that the daemon waits + before checking the spool directory for records. The daemon picks up the + records in the order of modification date and tries to send the record to + the server. It sends a maximum of 10 records at a time. If it was able to + send a record successfully, it deletes the record from the spool. If the + daemon finds a record older than the "record_expiry" time, then it deletes + that record. The daemon looks at a maximum of 20 records in a single spool + run loop. +rate_limit_enabled + This determines whether rate-limiting is enabled or disabled. When + enabled, there is a threshold on both records sent within a window of + time, and record bytes sent within a window a time. +record_burst_limit + This is the maximum amount of records allowed to be passed by the daemon + within the record_window_length of time. If set to -1, the rate-limiting + for record bursts is disabled. +record_window_length + The time, in minutes (0-59), that establishes the window length for the + record_burst_limit. For example, if record_burst_window=1000 and + record_window_length=15, then no more than 1000 records can be passed + within any given fifteen-minute window. +byte_burst_limit + This is the maximum amount of bytes that can be passed by the daemon + within the byte_window_length of time. If set to -1, the rate-limiting + for byte bursts is disabled. +byte_window_length + This is the time, in minutes (0-59), that establishes the window length + for the byte_burst_limit. +rate_limit_strategy + This is the strategy chosen once the rate-limiting threshold has been + reached. Currently the options are 'drop' or 'spool', with spool being the + default. If spool is chosen, records will be spooled and sent at a later + time. +record_retention_enabled + When this key is enabled (true), the daemon saves a copy of the payload on + disk from all valid records. To avoid the excessive use of disk space, + only the latest 100 records are kept. The default value for this + configuration key is false. +record_server_delivery_enabled + This key controls the delivery of records to the server; when enabled + (default value), the record will be posted to the address in the + configuration file. If this configuration key is disabled (false), + records will not be spooled or posted to backend. This configuration key + can be used in combination with record_retention_enabled to keep copies + of telemetry records locally only. + + .. note:: + + Configuration options may change as the telemetry client evolves. + Please use the comments in the default file itself as the most accurate + reference for configuration. + + +Client run-time options +======================= + +The |CL| telemetry client provides an admin tool called :guilabel:`telemctl` +for managing the telemetry services and probes. The tool is located in +:file:`/usr/bin`. Running it with no argument results in the following: + +.. code-block:: bash + + sudo telemctl + +.. code-block:: console + + /usr/bin/telemctl - Control actions for telemetry services + stop Stops all running telemetry services + start Starts all telemetry services + restart Restarts all telemetry services + is-active Checks if telemprobd and telempostd are active + opt-in Opts in to telemetry, and starts telemetry services + opt-out Opts out of telemetry, and stops telemetry services + journal Prints telemetry journal contents. Use -h argument for more + options + +start/stop/restart +------------------ + +The commands to start, stop, and restart the telemetry services manage all +required services and probes on the system. There is no need to separately +start/stop/restart the two client daemons telemprobd and telempostd. +The :command:`restart` command option will call :command:`telemctl stop` +followed by :command:`telemctl start` . + +is-active +--------- + +The :command:`is-active` option reports whether the two client daemons are +active. This is useful to verify that the :command:`opt-in` and +:command:`opt-out` options have taken effect, or to ensure that telemetry is +functioning on the system. Note that both daemons are verified. + +.. code-block:: bash + + sudo telemctl is-active + +.. code-block:: console + + telemprobd : active + telempostd : active + + +.. _Telemetrics client: https://github.com/clearlinux/telemetrics-client/ +.. _latest version: https://github.com/clearlinux/telemetrics-client/tree/master/src +.. _heartbeat probe: https://github.com/clearlinux/telemetrics-client/tree/master/src/probes/hello.c diff --git a/_sources/guides/index.rst.txt b/_sources/guides/index.rst.txt new file mode 100644 index 000000000..53c3a583b --- /dev/null +++ b/_sources/guides/index.rst.txt @@ -0,0 +1,49 @@ +.. _guides: + +Guides +###### + +The following guides provide step-by-step instructions on using |CL|. + +.. note:: + + As of 22 May 2019 :file:`mixin` is no longer supported. + +.. _cl-guides: + +Clear Linux +=========== + +.. toctree:: + :maxdepth: 1 + :glob: + + clear/* + +Maintenance +=========== + +.. toctree:: + :maxdepth: 1 + :glob: + + maintenance/* + +Network +======= + +.. toctree:: + :maxdepth: 1 + :glob: + + network/* + +Kernel +======= + +.. toctree:: + :maxdepth: 1 + :glob: + + kernel/* + diff --git a/_sources/guides/kernel/change-kernel-boot.rst.txt b/_sources/guides/kernel/change-kernel-boot.rst.txt new file mode 100644 index 000000000..860464a9a --- /dev/null +++ b/_sources/guides/kernel/change-kernel-boot.rst.txt @@ -0,0 +1,234 @@ +.. _change-kernel-boot: + +Change Kernel Boot +######################## + +This tutorial explains the process of change kernel boot entry |CL-ATTR|. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +For this tutorial, you will modify your kernel list to boot with the kernel you want to use. This process is valid when you cannot compile third-party kernel modules and need to come back to old, or if you compile your custom kernel. + + +Get the current boot status +*************************** + +.. code-block:: bash + + bootctl status + +This is an example output: + +.. code-block:: bash + + System: + Firmware: UEFI 2.70 (HP 265.256) + Firmware Arch: x64 + Secure Boot: disabled + TPM2 Support: yes + Measured UKI: no + Boot into FW: supported + + Current Boot Loader: + Product: systemd-boot 255 + Features: ✓ Boot counting + ✓ Menu timeout control + ✓ One-shot menu timeout control + ✓ Default entry control + ✓ One-shot entry control + ✓ Support for XBOOTLDR partition + ✓ Support for passing random seed to OS + ✓ Load drop-in drivers + ✓ Support Type #1 sort-key field + ✓ Support @saved pseudo-entry + ✓ Support Type #1 devicetree field + ✓ Enroll SecureBoot keys + ✓ Retain SHIM protocols + ✓ Menu can be disabled + ✓ Boot loader sets ESP information + ESP: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5 + File: └─/EFI/org.clearlinux/loaderx64.efi + + Random Seed: + System Token: set + Exists: yes + + Available Boot Loaders on ESP: + ESP: /boot (/dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5) + File: ├─/EFI/systemd/systemd-bootx64.efi (systemd-boot 255) + └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 255) + + Boot Loaders Listed in EFI Variables: + Title: Linux bootloader + ID: 0x0007 + Status: active, boot-order + Partition: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5 + File: └─/EFI/org.clearlinux/bootloaderx64.efi + + Title: Linux Boot Manager + ID: 0x0001 + Status: active, boot-order + Partition: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5 + File: └─/EFI/systemd/systemd-bootx64.efi + + Title: Windows Boot Manager + ID: 0x0000 + Status: active, boot-order + Partition: /dev/disk/by-partuuid/48d8a9eb-d84d-4a62-8302-edff383290e5 + File: └─/EFI/Microsoft/Boot/bootmgfw.efi + + Boot Loader Entries: + $BOOT: /boot (/dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5) + token: clear-linux-os + + Default Boot Loader Entry: + type: Boot Loader Specification Type #1 (.conf) + title: Clear Linux OS (Clear-linux-native-6.8.10-1434.conf) + id: Clear-linux-native-6.8.10-1434.conf + source: /boot//loader/entries/Clear-linux-native-6.8.10-1434.conf + linux: /boot//EFI/org.clearlinux/kernel-org.clearlinux.native.6.8.10-1434 + initrd: /boot//EFI/org.clearlinux/freestanding-00-early-ucode.cpio + /boot//EFI/org.clearlinux/initrd-org.clearlinux.native.6.8.10-1434 + /boot//EFI/org.clearlinux/freestanding-clr-init.cpio.gz + /boot//EFI/org.clearlinux/freestanding-i915-firmware.cpio + options: root=UUID=67e7ac9a-f7a1-4d5e-bbd6-012f5fa81cb5 rd.luks.uuid=abe6aaf2-3425-4eb1-b7f5-3f36746426fa quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests init=/usr/bin/initra-desktop initcall> + lines 20-71/71 (END) + ✓ Support @saved pseudo-entry + ✓ Support Type #1 devicetree field + ✓ Enroll SecureBoot keys + ✓ Retain SHIM protocols + ✓ Menu can be disabled + ✓ Boot loader sets ESP information + ESP: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5 + File: └─/EFI/org.clearlinux/loaderx64.efi + + Random Seed: + System Token: set + Exists: yes + + Available Boot Loaders on ESP: + ESP: /boot (/dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5) + File: ├─/EFI/systemd/systemd-bootx64.efi (systemd-boot 255) + └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 255) + + Boot Loaders Listed in EFI Variables: + Title: Linux bootloader + ID: 0x0007 + Status: active, boot-order + Partition: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5 + File: └─/EFI/org.clearlinux/bootloaderx64.efi + + Title: Linux Boot Manager + ID: 0x0001 + Status: active, boot-order + Partition: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5 + File: └─/EFI/systemd/systemd-bootx64.efi + + Title: Windows Boot Manager + ID: 0x0000 + Status: active, boot-order + Partition: /dev/disk/by-partuuid/48d8a9eb-d84d-4a62-8302-edff383290e5 + File: └─/EFI/Microsoft/Boot/bootmgfw.efi + + Boot Loader Entries: + $BOOT: /boot (/dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5) + token: clear-linux-os + + Default Boot Loader Entry: + type: Boot Loader Specification Type #1 (.conf) + title: Clear Linux OS (Clear-linux-native-6.8.10-1434.conf) + id: Clear-linux-native-6.8.10-1434.conf + source: /boot//loader/entries/Clear-linux-native-6.8.10-1434.conf + linux: /boot//EFI/org.clearlinux/kernel-org.clearlinux.native.6.8.10-1434 + initrd: /boot//EFI/org.clearlinux/freestanding-00-early-ucode.cpio + /boot//EFI/org.clearlinux/initrd-org.clearlinux.native.6.8.10-1434 + /boot//EFI/org.clearlinux/freestanding-clr-init.cpio.gz + /boot//EFI/org.clearlinux/freestanding-i915-firmware.cpio + options: root=UUID=67e7ac9a-f7a1-4d5e-bbd6-012f5fa81cb5 rd.luks.uuid=abe6aaf2-3425-4eb1-b7f5-3f36746426fa quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests init=/usr/bin/initra-desktop initcall_debug intel_iommu=igfx_off kvm-intel.nested=1 no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 rootfstype=ext4,btrfs,xfs,f2fs tsc=reliable rw module.sig_unenforce rootflags=x-systemd.device-timeout=0 + +Get the kernel list installed +***************************** + +.. code-block:: bash + + bootctl list + +And example output: + +.. code-block:: bash + + type: Boot Loader Specification Type #1 (.conf) + title: Clear Linux OS (Clear-linux-preempt_rt-6.1.38-105.conf) + id: Clear-linux-preempt_rt-6.1.38-105.conf + source: /boot//loader/entries/Clear-linux-preempt_rt-6.1.38-105.conf + linux: /boot//EFI/org.clearlinux/kernel-org.clearlinux.preempt_rt.6.1.38-105 + initrd: /boot//EFI/org.clearlinux/freestanding-00-early-ucode.cpio + /boot//EFI/org.clearlinux/freestanding-clr-init.cpio.gz + /boot//EFI/org.clearlinux/freestanding-i915-firmware.cpio + options: root=UUID=67e7ac9a-f7a1-4d5e-bbd6-012f5fa81cb5 rd.luks.uuid=abe6aaf2-3425-4eb1-b7f5-3f36746426fa quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests init=/usr/bin/initra-desktop initcall_debug intel_iommu=igfx_off kvm-intel.nested=1 no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 rootfstype=ext4,btrfs,xfs t> + + type: Boot Loader Specification Type #1 (.conf) + title: Clear Linux OS (Clear-linux-native-6.9.1-1436.conf) + id: Clear-linux-native-6.9.1-1436.conf + source: /boot//loader/entries/Clear-linux-native-6.9.1-1436.conf + linux: /boot//EFI/org.clearlinux/kernel-org.clearlinux.native.6.9.1-1436 + initrd: /boot//EFI/org.clearlinux/freestanding-00-early-ucode.cpio + /boot//EFI/org.clearlinux/initrd-org.clearlinux.native.6.9.1-1436 + /boot//EFI/org.clearlinux/freestanding-clr-init.cpio.gz + /boot//EFI/org.clearlinux/freestanding-i915-firmware.cpio + options: root=UUID=67e7ac9a-f7a1-4d5e-bbd6-012f5fa81cb5 rd.luks.uuid=abe6aaf2-3425-4eb1-b7f5-3f36746426fa quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests init=/usr/bin/initra-desktop initcall_debug intel_iommu=igfx_off kvm-intel.nested=1 no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 rootfstype=ext4,btrfs,xfs,f> + + type: Boot Loader Specification Type #1 (.conf) + title: Clear Linux OS (Clear-linux-native-6.8.10-1434.conf) (default) (selected) + id: Clear-linux-native-6.8.10-1434.conf + source: /boot//loader/entries/Clear-linux-native-6.8.10-1434.conf + linux: /boot//EFI/org.clearlinux/kernel-org.clearlinux.native.6.8.10-1434 + initrd: /boot//EFI/org.clearlinux/freestanding-00-early-ucode.cpio + /boot//EFI/org.clearlinux/initrd-org.clearlinux.native.6.8.10-1434 + /boot//EFI/org.clearlinux/freestanding-clr-init.cpio.gz + /boot//EFI/org.clearlinux/freestanding-i915-firmware.cpio + options: root=UUID=67e7ac9a-f7a1-4d5e-bbd6-012f5fa81cb5 rd.luks.uuid=abe6aaf2-3425-4eb1-b7f5-3f36746426fa quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests init=/usr/bin/initra-desktop initcall_debug intel_iommu=igfx_off kvm-intel.nested=1 no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 rootfstype=ext4,btrfs,xfs,f> + + type: Automatic + title: Reboot Into Firmware Interface + id: auto-reboot-to-firmware-setup + source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f + +Set default kernel to boot +************************** + +You can check the id from the latest command: + +.. code-block:: bash + + bootctl list |grep id: |cut -f 2 -d ":" + id: Clear-linux-preempt_rt-6.1.38-105.conf + id: Clear-linux-native-6.9.1-1436.conf + id: Clear-linux-native-6.8.10-1434.conf + id: auto-reboot-to-firmware-setup + + +Set the kernel + +.. code-block:: bash + + sudo bootctl set-default ID + +For example to set 6.9.1 entry: + +.. code-block:: bash + + sudo bootctl set-default Clear-linux-native-6.9.1-1436.conf + +Just reboot + +.. code-block:: bash + + sudo systemctl reboot + +You will boot with the kernel set before. diff --git a/_sources/guides/kernel/firmware.rst.txt b/_sources/guides/kernel/firmware.rst.txt new file mode 100644 index 000000000..7ae7a8258 --- /dev/null +++ b/_sources/guides/kernel/firmware.rst.txt @@ -0,0 +1,107 @@ +.. _firmware: + +Firmware +######## + +This guide shows how |CL-ATTR| handles firmware and microcode loading. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Many devices and system components require firmware or microcode, software +that runs directly on the device, to function correctly. Because firmware +loading requires privileged hardware access, the kernel is involved in the +process. + +Firmware does not typically come with source code. Instead, firmware is +provided as binary blobs which are licensed for free or non-free use. + +In |CL| firmware is loaded during device initialization which typically +happens at boot time. + +.. _firmware-included-begin: + +Included firmware +***************** + +The Linux kernel project contains a repository for firmware binaries that are +licensed to allow free redistribution. The Linux kernel's firmware repository +can be found here: +https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git + +If the firmware for your device is included upstream, no action is required +for it to be automatically detected and loaded. + +|CL| packages these firmware binaries +in the `linux-firmware bundles +`_ and +automatically includes them with the kernel. + +You can double-check the linux-firmware bundle is installed with the commands below: + + .. code-block:: bash + + sudo swupd bundle-add linux-firmware + find /lib/firmware/ + + + + +Additional firmware loading +*************************** + +Some device hardware manufacturers have a license that limits redistribution +of firmware. This means |CL| is unable to distribute those firmware and you +must manually obtain them from the manufacturer or another source. + +You can place additional firmware in :file:`/etc/firmware`. |CL| reads this +directory for additional firmware files in conjunction with the typical +:file:`/lib/firmware` path to provide a :ref:`stateless design `. + + +#. Create the :file:`/etc/firmware` directory + + .. code-block:: bash + + sudo mkdir -p /etc/firmware + +#. Obtain the additional firmware binary from a trusted source. + +#. Copy the firmware files including any subdirectories to + :file:`/etc/firmware`. It is important to place the firmware files in + expected path for proper loading. + + .. code-block:: bash + + sudo cp -Rv /. /etc/firmware + + +CPU microcode loading +********************* + +Microcode is low level code for processors loaded during the boot process that +contain stability and security updates. + +Microcode updates can be updated by motherboard firmware however this is not +always feasible or does not happen in a timely fashion. The `Linux microcode +loader`_ included in the Linux kernel allows for more flexibility and more +frequent updates. + +|CL| uses the *early loading* mechanism described in the `Linux microcode +loader`_ documented by which the CPU microcode is loaded as early as possible +in the boot process by using an initial RAM disk (initrd). + + +Troubleshooting +*************** + +Look at the output of :command:`sudo dmesg` to see device initialization and +expected firmware paths + + + +.. _`Linux microcode loader`: https://www.kernel.org/doc/Documentation/x86/microcode.txt diff --git a/_sources/guides/kernel/kernel-boot-msg.rst.txt b/_sources/guides/kernel/kernel-boot-msg.rst.txt new file mode 100644 index 000000000..061bba82c --- /dev/null +++ b/_sources/guides/kernel/kernel-boot-msg.rst.txt @@ -0,0 +1,69 @@ +.. _kernel-boot-msg: + +Capture Kernel Boot Messages in the Journal +########################################### + +By default |CL| does not capture kernel boot messages in the journal logs, +where they're reported as "Missed" messages. This design decision was made +to provide a faster boot performance. On the other hand, if you wish to +see the messages, follow this guide. + +Here's an example a journal log with "Missed" messages: + +.. code-block:: console + :linenos: + :emphasize-lines: 4 + + -- Reboot -- + Apr 10 19:55:43 kernel systemd-journald[300]: Journal started + Apr 10 19:55:43 kernel systemd-journald[300]: Runtime Journal (/run/log/journal/d01862ca79d1064ea379cd715cfdd53a) is 5.8M, max 47.0M, 41.1M free. + Apr 10 19:55:43 kernel systemd-journald[300]: Missed 2233 kernel messages + Apr 10 19:55:43 kernel systemd[1]: Started Journal Service. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* `systemd-journald` version 245 and higher + +Enable journaling of kernel boot messages +***************************************** + +#. Open a terminal window. + +#. Create a base journald configuration file. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/journald.conf.d + sudo cp /usr/lib/systemd/journald.conf.d/clear.conf /etc/systemd/journald.conf.d/ + +#. Append :command:`BootKMsg=true` to it. + + .. code-block:: bash + + echo "BootKMsg=true" | sudo tee -a /etc/systemd/journald.conf.d/clear.conf + +#. Reboot. + +.. tip:: + + If you need to increase the kernel buffer length (for example, 1M), do this: + + .. code-block:: bash + + sudo mkdir -p /etc/kernel/cmdline.d/ + echo "log_buf_len=1M" | sudo tee /etc/kernel/cmdline.d/log_buf_len.conf + sudo clr-boot-manager update + +Alternative +*********** + +An alternative is to use :command:`dmesg`. + +.. code-block:: bash + + sudo dmesg diff --git a/_sources/guides/kernel/kernel-development.rst.txt b/_sources/guides/kernel/kernel-development.rst.txt new file mode 100644 index 000000000..9049e031e --- /dev/null +++ b/_sources/guides/kernel/kernel-development.rst.txt @@ -0,0 +1,472 @@ +.. _kernel-development: + +Kernel development +################## + +This guide shows how to obtain and compile a Linux\* kernel source using +|CL-ATTR| development tooling. + +.. contents:: + :local: + :depth: 1 + :backlinks: top + +Overview +******** + +The :ref:`compatible-kernels` available in |CL| aim to be performant and +practical. In some cases, it may be necessary to modify the kernel to suit +your specific needs or test new kernel code as a developer. + +`Source RPMs (SRPMS)`_ are also available for all |CL| kernels, and can be +used for development instead. + +Request changes be included with the |CL| kernel +************************************************ + +If the kernel modification you need is already open source and likely to be +useful to others, consider submitting a request to include it in the +|CL| kernels. If your change request is accepted, you do not need to maintain +your own modified kernel. + +Make enhancement requests to the |CL| `Distribution Project`_ on GitHub\*. + +Set up kernel development environment +************************************* + +In some cases, it may be necessary to modify the kernel to suit your specific +needs or to test new kernel code. + +You can build and install a custom kernel; however you must: + +* Disable Secure Boot +* Maintain any updates to the kernel going forward + +To create a custom kernel, start with the |CL| development environment. +Then make changes to the kernel, build it, and install it. + + +Install the |CL| development tooling framework +============================================== + +.. include:: ../clear/autospec.rst + :start-after: install-tooling-after-header: + :end-before: install-tooling-end: + +Clone the kernel package +======================== + +Clone the existing kernel package repository from |CL| as a starting point. + +#. Clone the Linux kernel package from |CL|. Using the + :command:`make clone_` command in the + :file:`clearlinux/` directory clones the package from the + `clearlinux-pkgs`_ repo on GitHub. + + .. code-block:: bash + + cd ~/clearlinux + make clone_linux + +#. Navigate into the cloned package directory. + + .. code-block:: bash + + cd ~/clearlinux/packages/linux + + +The "linux" package is the kernel that comes with |CL| in the +:command:`kernel-native` bundle. Alternatively, you can use a different kernel +variant as the base for modification. For a list of kernel package names which +you can clone instead, see the `clearlinux-pkgs`_ repo on GitHub. + +.. note:: + + The latest version of the |CL| kernel package is pulled as a starting + point. An older version can pulled by switching to different git tag by using + :command:`git checkout tag/`. + +Change the kernel version +========================= + +|CL| tends to use the latest kernel available from `kernel.org`_, the Linux +upstream. The kernel version that will be built can be changed in the +RPM SPEC file. While most packages in Clear Linux are typically packaged +using :ref:`autospec`, the kernel is not. This means control files +provided by autospec are not available and changes must be made manually. + +#. Open the Linux kernel package RPM SPEC file in an editor. + + .. code-block:: bash + + $EDITOR linux.spec + +#. Modify the Version, Release, and Source0 URL entries at the top of the + file to change the version of Linux kernel that will be compiled. + + A list of current and available kernel release can be found on + `kernel.org`_. + + .. code-block:: spec + :linenos: + :emphasize-lines: 1-3,12 + + Name: linux + Version: 4.20.8 + Release: 696 + License: GPL-2.0 + Summary: The Linux kernel + Url: http://www.kernel.org/ + Group: kernel + Source0: https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.20.8.tar.xz + Source1: config + Source2: cmdline + + %define ktarget native + + .. note:: + - Consider changing the Name from *linux* in the RPM spec file to easily + identify a modified kernel. + + - Consider changing the ktarget from *native* in the RPM spec file to + easily identify a modified kernel. + +#. Commit and save the changes to the file. + +.. _pull-copy-kernel-source: + +Pull a copy of the Linux kernel source code +=========================================== + +Obtain a local copy of the source code to make modifications against. + +#. Run make sources to pull the kernel source code specified in the RPM + SPEC file. In the example, it downloads the :file:`linux-4.20.8.tar.xz` + file. + + .. code-block:: bash + + make sources + + +#. Extract the kernel source code archive. This will create a working copy + of the Linux source that you can modify. + + .. code-block:: bash + + tar -xvf linux-4.20.8.tar.xz + +#. Navigate to the extracted directory. In this example, it has been + extracted into a :file:`linux-4.20.8` directory. + + .. code-block:: bash + + cd linux-4.20.8/ + + +Customize the Linux kernel source +********************************* + +After the kernel sources have been obtained, customizations to the kernel +configuration or source code can be made for inclusion with the kernel +build. These customizations are optional. + +Modify kernel configuration +=========================== + +The kernel source has many configuration options available to pick support for +different hardware and software features. + +These configuration values must be provided in the :file:`.config` file at +compile time. You will need to make modifications to the :file:`.config` +file, and include it in the kernel package. + + +#. Make sure you have followed the steps to :ref:`pull-copy-kernel-source` + and are in the kernel source working directory. + + +#. If you have an existing :file:`.config` file from an old kernel, copy it + into the working directory as :file:`.config` for comparison. + Otherwise, use the |CL| kernel configuration file as template + + .. code-block:: bash + + cp ~/clearlinux/packages/linux/config .config + + +#. Make any desired changes to the :file:`.config` using a kernel + configuration tool. Below are some popular options: + + - :command:`$EDITOR .config` - the .config file can be directly edited + for simple changes with names that are already known. + + - :command:`make config` - a text-based tool that asks questions + one-by-one to decide configuration options. + + - :command:`make menuconfig` - a terminal user interface that provides + menus to decide configuration options. + + - :command:`make xconfig` - a graphical user interface that provides + tree views to decide configuration options. + + + More configuration tools can be found by looking at the make help: + :command:`make help | grep config` + +#. Commit and save the changes to the :file:`.config` file. + +#. Copy the :file:`.config` file from the kernel source directory into + the kernel package directory as :file:`config` for inclusion in the build. + + .. code-block:: bash + + cp .config ../config + +Modify kernel source code +========================= + +Changes to kernel code are applied with patch files. Patch files are +formatted git commits that can be applied to the main source code. + +You will need to obtain a copy of the source code, +make modifications, generate patch file(s), and add them to the RPM SPEC +file for inclusion during the kernel build. + +If you have a large number of patches or a more complex workflow, +consider using a patch management tool in addition to Git such as +`Quilt`_. + + +#. Make sure you have followed the steps to :ref:`pull-copy-kernel-source` and + are in the kernel source working directory. + + +#. Initialize the kernel source directory as a new git repo and create a + commit with all the existing source files to begin tracking changes. + + .. code-block:: bash + + git init + git add -A + git commit -m "Initial commit of Linux kernel source" + + +#. Apply patches provided by the |CL| kernel package to the kernel source + in the working directory. + + .. code-block:: bash + + git am ../*.patch + + +#. Make any of your desired code changes to the Linux source code files. + + +#. Track and commit your changes to the local git repo. + + .. code-block:: bash + + git add + git commit -m "My patch for driver A" + + +#. Generate a patch file based on your git commits. + represents the number of local commits to create patch file. + See the `git-format-patch`_ documentation for detailed information + on using :command:`git format-patch` + + .. code-block:: bash + + git format-patch - + +#. Copy the patch files from the patches directory in the linux + source tree to the RPM build directory. + + .. code-block:: bash + + cp *.patch ~/clearlinux/packages/linux/ + + +#. Navigate back to the RPM build directory. + + .. code-block:: bash + + cd ~/clearlinux/packages/linux/ + +#. Open the Linux kernel package RPM SPEC file in an editor. + + .. code-block:: bash + + $EDITOR linux.spec + +#. Locate the section of the SPEC file that contains existing patch + variable definitions and append your patch file name. Ensure the + patch number does not collide with an existing patch. + In this example, the patch file is called + :file:`2001-my-patch-for-driver-A.patch` + + .. code-block:: spec + :linenos: + :emphasize-lines: 13 + + # + # Small Clear Linux Tweaks + # + Patch0501: 0501-zero-extra-registers.patch + Patch0502: 0502-locking-rwsem-spin-faster.patch + + #Serie1.name WireGuard + #Serie1.git https://git.zx2c4.com/WireGuard + #Serie1.tag 00bf4f8c8c0ec006633a48fd9ee746b30bb9df17 + Patch1001: 1001-WireGuard-fast-modern-secure-kernel-VPN-tunnel.patch + #Serie1.end + + Patch2001: 2001-my-patch-for-driver-A.patch + + +#. Locate the section of the SPEC file further down that contains + patch application and append your patch file number used in the step above. + In this example, patch2001 is added. + + .. code-block:: spec + :linenos: + :emphasize-lines: 11 + + # + # Small tweaks + # + %patch0501 -p1 + %patch0502 -p1 + + #Serie1.patch.start + %patch1001 -p1 + #Serie1.patch.end + + %patch2001 -p1 + + +#. Commit and save the changes to the RPM SPEC file. + +Modify kernel boot parameters +============================= +The kernel boot options are passed from the bootloader to the kernel with +command-line parameters. + +While temporary changes can be made to kernel parameters on a running +system or on a during boot, you can also modify the default parameters that +are persistent and distributed with a customized kernel. + + +#. Open the kernel :file:`cmdline` file in an editor. + + .. code-block:: bash + + $EDITOR cmdline + + +#. Make any desired change to the kernel parameters. + For example, you can remove the :command:`quiet` parameter to see more + verbose output of kernel log messages during the boot process. + +#. Commit and save the changes to the :file:`cmdline` file. + +See the `kernel parameters`_ documentation for a list of available +parameters. + +Build and install the kernel +**************************** +After changes have been made to the kernel source and RPM SPEC file, +the kernel is ready to be compiled and packaged into an RPM. + +The |CL| development tooling makes use of :command:`mock` environments to +isolate building of packages in a sanitized workspace. + +#. Start the compilation process by issuing the :command:`make build` + command. This process is typically resource intensive and will take a + while. + + .. code-block:: bash + + make build + + .. note:: + The mock plugin `ccache`_ can be enabled to help speed up any future + rebuilds of the kernel package by caching compiler outputs and reusing + them. + + +#. The result will be multiple :file:`.rpm` files in the :file:`rpms` + directory as output. + + .. code-block:: bash + + ls rpms/ + + The kernel RPM will be named + :file:`linux--.x86_64.rpm` + + +#. The kernel RPM file can be input to the :ref:`mixer` to create a + custom bundle and mix of |CL|. + +Alternatively, the kernel RPM bundle can be installed manually on a local +machine for testing. This approach works well for individual development or +testing. For a more scalable and customizable approach, consider using the +:ref:`mixer` to provide a custom kernel with updates. + +#. Install the kernel onto the local system by extracting the RPM with the + :command:`rpm2cpio` command. + + .. code-block:: bash + + rpm2cpio linux--.x86_64.rpm | (cd /; sudo cpio -i -d -u -v); + +#. Optionally, increase the bootloader timeout to make interrupting the boot + process and choosing a different kernel easier.This can be helpful to if + you encounter a kernel that does not boot gracefully. + + .. code-block:: bash + + sudo clr-boot-manager set-timeout 20 + + +#. Update the |CL| boot manager to use the new kernel using + :command:`clr-boot-manager` and reboot. + + .. code-block:: bash + + sudo clr-boot-manager update + sudo clr-boot-manager list-kernels + sudo clr-boot-manager set-kernel org.clearlinux..- + + sudo reboot + + +#. After a reboot, verify the customized kernel is running. + + .. code-block:: bash + + uname -a + +Related topics +************** + +* :ref:`kernel-modules` +* :ref:`mixer` + +.. _Distribution Project: https://github.com/clearlinux/distribution/issues/new/choose + +.. _Source RPMs (SRPMS): https://cdn.download.clearlinux.org/current/source/SRPMS/ + +.. _Quilt: http://savannah.nongnu.org/projects/quilt + +.. _clearlinux-pkgs: https://github.com/clearlinux-pkgs + +.. _kernel.org: https://www.kernel.org/ + +.. _kernel parameters: https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt + +.. _ccache: https://fedoraproject.org/wiki/Mock/Plugin/CCache?rd=Subprojects/Mock/Plugin/CCache + +.. _git-format-patch: https://git-scm.com/docs/git-format-patch diff --git a/_sources/guides/kernel/kernel-modules-dkms.rst.txt b/_sources/guides/kernel/kernel-modules-dkms.rst.txt new file mode 100644 index 000000000..3d7ea95d5 --- /dev/null +++ b/_sources/guides/kernel/kernel-modules-dkms.rst.txt @@ -0,0 +1,316 @@ +.. _kernel-modules-dkms: + +Add kernel modules with DKMS +############################ + +This guide describes how to add kernel modules with +:abbr:`DKMS (Dynamic Kernel Module System)`. + +.. contents:: :local: + :depth: 1 + :backlinks: top + +Overview +******** + +Certain kernel modules are enabled by default in |CL-ATTR|. To use additional +kernel modules that are not part of the Linux source tree, you may need to +build out-of-tree kernel modules. Use this guide to add kernel modules with +DKMS or refer to :ref:`kernel-modules`. + +Description +*********** + +Kernel modules are additional pieces of software capable of being inserted +into the Linux kernel to add functionality, such as a hardware driver. +Kernel modules may already be part of the Linux source tree (in-tree) or may +come from an external source, such as directly from a vendor (out-of-tree). + +DKMS is a framework that facilitates the building and installation of kernel +modules. DKMS allows |CL| to provide hooks that automatically rebuild modules +against new kernel versions. + +.. include:: kernel-modules.rst + :start-after: kernel-modules-availability-begin: + :end-before: kernel-modules-availability-end: + +Install DKMS +************ + +.. _kernel-modules-dkms-install-begin: + +The :command:`kernel-native-dkms` bundle provides the DKMS program and Linux +kernel headers, which are placed under :file:`/usr/lib/modules/$(uname +-r)/build/include/` and are required to compile kernel modules. + +The :command:`kernel-native-dkms` bundle also: + +* Adds a `systemd` update trigger + (:file:`/usr/lib/systemd/system/dkms-new-kernel.service`) to automatically + run DKMS to rebuild modules after a kernel upgrade occurs with :ref:`swupd + update `. + +* Disables kernel module signature verification by appending a kernel + command-line parameter (:command:`module.sig_unenforce`) from the + :file:`/usr/share/kernel/cmdline.d/clr-ignore-mod-sig.conf` file. + +* Adds a notification to the Message of the Day (MOTD) indicating kernel + module signature verification is disabled. + +.. warning:: + + We recommend that you always review the :command:`swupd update` output + to make sure kernel modules were successfully rebuilt against the new + kernel. This is especially important for systems where a successful boot + relies on a kernel module. + +.. _kernel-modules-dkms-install-begin-alt: + +Install the :command:`kernel-native-dkms` or :command:`kernel-lts-dkms` +bundle. + +#. Determine which kernel variant is running on |CL|. Only the *native* + and *lts* kernels are enabled to build and load out-of-tree kernel modules + with DKMS. + + .. code-block:: console + + $ uname -r + 5.XX.YY-ZZZZ.native + + Ensure *.native* or *.lts* is in the kernel name. + +#. Install the DKMS bundle corresponding to the installed kernel. Use + :command:`kernel-native-dkms` for the native kernel or + :command:`kernel-lts-dkms` for the lts kernel. + + .. code-block:: bash + + sudo swupd bundle-add kernel-native-dkms + + or + + .. code-block:: bash + + sudo swupd bundle-add kernel-lts-dkms + + +#. Update the |CL| bootloader and reboot, and + ensure that you can start the new kernel. + + .. code-block:: bash + + sudo clr-boot-manager update + reboot + +.. _kernel-modules-dkms-install-end: + +Build, install, and load an out-of-tree module +********************************************** + +Follow the steps in this section if you are an individual user or testing, +and you need an out-of-tree kernel module that is not available through +|CL|. For a more scalable and customizable approach, we recommend using +:ref:`mixer` to provide a custom kernel and updates. + +Prerequisites +============= + +Before you begin, you must: + +* Disable Secure Boot in UEFI/BIOS. The loading of new out-of-tree modules + modifies the signatures that Secure Boot relies on for trust. + +* Obtain a kernel module package in the form of source code or + pre-compiled binaries. + +Obtain kernel module source +=========================== + +A required :file:`dkms.conf` file inside of the kernel module's source code +directory informs DKMS how the kernel module should be compiled. + +Kernel modules may come packaged as: + +- Source code without a :file:`dkms.conf` file +- Source code with a premade :file:`dkms.conf` file +- Source code with a premade :file:`dkms.conf` file and precompiled module + binaries +- Precompiled module binaries only (without source code) + +Of the package types listed above, only precompiled kernel module binaries +will not work, because |CL| requires kernel modules to be built against the +same kernel source tree before they can be loaded. If you are only able to +obtain source code without a :file:`dkms.conf` file, you must manually create +a :file:`dkms.conf` file, described later in this document. + +#. Download the kernel module's source code. + + * Review the available download options. Some kernel modules provide + separate archives that are specifically enabled for DKMS support. + + * Review the README documentation, because it often provides required + information to build the module with DKMS support. + + .. code-block:: bash + + curl -O http://.tar.gz + tar -xvf .tar.gz + cd / + cat README + +Build kernel module with an existing dkms.conf +============================================== + +If the kernel module maintainer packaged the source archive with the +:command:`dkms mktarball` command, the entire archive can be passed to the +:command:`dkms ldtarball` which completes many steps for you. + +The archive contains the required :file:`dkms.conf` file, and may contain +a :file:`dkms_source_tree` directory and a :file:`dkms_binaries_only` +directory. + +#. Run the :command:`dkms ldtarball` command against the kernel + module archive. + + .. code-block:: bash + + dkms ldtarball .tar.gz + + + :command:`dkms ldtarball` places the kernel module source under + :file:`/usr/src/-/`, builds it if necessary, + and adds the module into the DKMS tree. + + +#. Verify the kernel module is detected by checking the output of the + :command:`dkms status` command. + + .. code-block:: bash + + dkms status + + +#. Install the kernel module. + + .. code-block:: bash + + dkms install -m -v + +Build kernel module without an existing dkms.conf +================================================= + +If the kernel module source does not contain a :file:`dkms.conf` file or the +:command:`dkms ldtarball` command encounters errors, you must manually +create the file. + +Review the kernel module README documentation for guidance on what needs to be +in the :file:`dkms.conf` file, including special variables that may be +required to build successfully. + +Here are some additional resources that can be used for reference: + +* DKMS manual page (:command:`man dkms`) shows detailed syntax in the + DKMS.CONF section. + +* Ubuntu community wiki entry for the `Kernel DKMS Package`_ shows an example + where a single package contains multiple modules. + +* Sample `dkms.conf`_ file in the GitHub\* repository for the DKMS project. + +.. note:: + + :command:`AUTOINSTALL=yes` must be set in the dkms.conf for the module to + be automatically recompiled with |CL| updates. + +The instructions below show a generic example: + +#. Create or modify the :file:`dkms.conf` file inside of the extracted source + code directory. + + .. code-block:: ShellSession + + $ EDITOR dkms.conf + + MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build" + CLEAN="make -C src/ clean" + BUILT_MODULE_NAME=custom_module + BUILT_MODULE_LOCATION=src/ + PACKAGE_NAME=custom_module + PACKAGE_VERSION=1.0 + DEST_MODULE_LOCATION=/kernel/drivers/other + AUTOINSTALL=yes + + This example identifies a kernel module named *custom_module* with version + *1.0*. + +#. Copy the kernel module source code into the :file:`/usr/src/` directory. + + .. code-block:: bash + + sudo mkdir /usr/src/- + sudo cp -Rv . /usr/src/- + + .. note:: + + ** and ** must match the entries in the + :file:`dkms.conf` file. + +#. Add the kernel module to the DKMS tree so that it is tracked by DKMS. + + .. code-block:: bash + + sudo dkms add -m + +#. Build the kernel module using DKMS. If the build encounters errors, + you may need to edit the :file:`dkms.conf` file. + + .. code-block:: bash + + sudo dkms build -m -v + +#. Install the kernel module using DKMS. + + .. code-block:: bash + + sudo dkms install -m -v + +Load kernel module +================== + +By default, DKMS installs modules "in-tree" under :file:`/lib/modules` so the +:command:`modprobe` command can be used to load them. + +#. Load the installed module with the :command:`modprobe` command. + + .. code-block:: bash + + sudo modprobe + +#. Validate the kernel module is loaded. + + .. code-block:: bash + + lsmod | grep + +Examples +******** + +.. include:: kernel-modules.rst + :start-after: kernel-modules-autoload-begin: + :end-before: kernel-modules-autoload-end: + +Related topics +************** + +* `Dynamic Kernel Module System (DKMS)`_ + +* `Dell Linux Engineering Dynamic Kernel Module Support: From Theory to Practice `_ + +* `Linux Journal: Exploring Dynamic Kernel Module Support `_ + +.. _Dynamic Kernel Module System (DKMS): https://github.com/dell/dkms + +.. _Kernel DKMS Package: https://help.ubuntu.com/community/Kernel/DkmsDriverPackage#Configure_DKMS + +.. _dkms.conf: https://github.com/dell/dkms/blob/master/sample.conf diff --git a/_sources/guides/kernel/kernel-modules.rst.txt b/_sources/guides/kernel/kernel-modules.rst.txt new file mode 100644 index 000000000..992767f9d --- /dev/null +++ b/_sources/guides/kernel/kernel-modules.rst.txt @@ -0,0 +1,228 @@ +.. _kernel-modules: + +Add kernel modules manually +########################### + +This guide describes how to add kernel modules manually. + +.. contents:: :local: + :depth: 1 + :backlinks: top + +Overview +******** + +Certain kernel modules are enabled by default in |CL-ATTR|. To use additional +kernel modules that are not part of the Linux source tree, you may need to +build out-of-tree kernel modules. Use this guide to add kernel modules +manually, or refer to :ref:`kernel-modules-dkms`. + +Description +*********** + +Kernel modules are additional pieces of software capable of being inserted +into the Linux kernel to add functionality, such as a hardware driver. +Kernel modules may already be part of the Linux source tree (in-tree) or may +come from an external source, such as directly from a vendor (out-of-tree). + + +.. _kernel-modules-availability-begin: + +Kernel module availability +************************** + +|CL| comes with many upstream kernel modules available for use. Using an +existing module is significantly easier to maintain and retains signature +verification of the |CL| kernel. For more information on |CL| security +practices, see the :ref:`security` page. + +Before continuing, check if the kernel module you're looking for is already +available in |CL| or submit a request to add the module. + + +Check if the module is already available +======================================== + + +You can search for kernel module file names, which end with the :file:`.ko` +file extension, using the :command:`swupd search` command, as shown in the +following example. See :ref:`swupd-guide` for more information. + +.. code-block:: bash + + sudo swupd search ${module_name}.ko + + +Submit a request to add the module +================================== + +If the kernel module you need is already open source (for example, in the +Linux kernel upstream) and likely to be useful to others, consider submitting +a request to add or enable it in the |CL| kernel. + +Make enhancement requests to the |CL| `Distribution Project on GitHub +`_. + +.. _kernel-modules-availability-end: + + +Build, install, and load an out-of-tree module +********************************************** + +Follow the steps in this section if you are an individual user or testing, and +you need an out-of-tree kernel module that is not available through |CL|. For +a more scalable and customizable approach, we recommend using the +:ref:`mixer` to provide a custom kernel and updates. + + +Prerequisites +============= + +Before you begin, you must: + +* Disable Secure Boot. +* Disable kernel module integrity checking. +* Have a kernel module package in the form of source code. +* Rebuild the module against new versions of the Linux kernel. + +.. note:: + + Any time the kernel is upgraded on your Clear Linux system, you must + rebuild your out-of-tree modules. + + +Build and install kernel module +=============================== + +#. Determine which kernel variant is running on |CL|. In the example below, + the *native* kernel is in use. + + .. code-block:: bash + + $ uname -r + 5.XX.YY-ZZZZ.native + +#. Install the kernel dev bundle corresponding to the installed kernel. The + kernel dev bundle contains the kernel headers, which are placed under + :file:`/usr/lib/modules/$(uname -r)/build/include/` and are required to + compile kernel modules. For example: + + * :command:`linux-dev` for developing against the native kernel. + * :command:`linux-lts-dev` for developing against the LTS kernel. + + .. code-block:: bash + + sudo swupd bundle-add linux-dev + + + +#. Follow instructions from the kernel module source code to compile the + kernel module. For example: + + .. code-block:: bash + + curl -O http://.tar.gz + tar -xvf .tar.gz + cd / + cat README + + + +Load kernel module +================== + +#. Disable Secure Boot in your system's UEFI settings, if you have enabled + it. The loading of new out-of-tree modules modifies the signatures that + Secure Boot relies on for trust. + +#. Disable signature checking for the kernel by modifying the kernel boot + parameters and reboot the system. + + All kernel modules from |CL| have been signed to enforce kernel security. + However, out-of-tree modules break this chain of trust so this mechanism + needs to be disabled. + + .. code-block:: bash + + sudo mkdir -p /etc/kernel/cmdline.d + echo "module.sig_unenforce" | sudo tee /etc/kernel/cmdline.d/allow-unsigned-modules.conf + +#. Update the boot manager and reboot the system to implement the changed + kernel parameters. + + .. code-block:: bash + + sudo clr-boot-manager update + sudo reboot + + .. note:: + + If successful, the :command:`clr-boot-manager update` command does not + return any console output. + +#. After rebooting, manually load out-of-tree modules using the + :command:`insmod` command. + + .. code-block:: bash + + sudo insmod + +Examples +******** + +.. _kernel-modules-autoload-begin: + +Optional: Specify module options and aliases +============================================ + +Use the :command:`modprobe` command to load a module and set options. + +:command:`modprobe` may add or remove more than one module due to module +interdependencies. You can specify which options to use with individual +modules, by using configuration files under the :file:`/etc/modprobe.d` +directory. + +.. code-block:: bash + + sudo mkdir /etc/modprobe.d + +All files underneath the :file:`/etc/modprobe.d` directory that end with the +:file:`.conf` extension specify module options to use when loading. You can +use :file:`.conf` files to create convenient aliases for modules or to +override the normal loading behavior altogether for those with special +requirements. + +Learn more about :command:`modprobe` on the modprobe.d manual page: + +.. code-block:: bash + + man modprobe.d + +Optional: Configure kernel modules to load at boot +================================================== + +Use the :file:`/etc/modules-load.d` configuration directory to specify kernel +modules to load automatically at boot. + +.. code-block:: bash + + sudo mkdir /etc/modules-load.d + +All files underneath the :file:`/etc/modules-load.d` directory that end with +the :file:`.conf` extension contain a list of module names of aliases (one per +line) to load at boot. + +Learn more about module loading in the modules-load.d manual page: + +.. code-block:: bash + + man modules-load.d + + +.. _kernel-modules-autoload-end: + +Related topic +************* + +* :ref:`kernel-modules-dkms` + diff --git a/_sources/guides/maintenance/architect-lifecycle.rst.txt b/_sources/guides/maintenance/architect-lifecycle.rst.txt new file mode 100644 index 000000000..3f3b9e69d --- /dev/null +++ b/_sources/guides/maintenance/architect-lifecycle.rst.txt @@ -0,0 +1,78 @@ +.. _architect-lifecycle: + +Architect the life-cycle of |CL-ATTR| +##################################### + +This guide describes the basic, recommended infrastructure and workflow for +maintaining a |CL-ATTR| derivative. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* A repository with software RPM artifacts and a CI/CD system with a |CL| + machine for building `mixes` + +* Experience using :ref:`mixer ` to create a |CL|-based distro + +* Experience using :ref:`swupd ` for maintaining the |CL| + build environment + +* Familiarity with |CL| architecture and reuse of its content in releases + +Description +*********** + +Maintaining a |CL| derivative requires: + +* Monitoring upstream |CL| for new releases +* Building software packages and staging +* Employing CI/CD automation for building releases +* Integrating Quality Assurance for testing and validation + +Coordinated infrastructure is deployed to automate the life-cycle +of your |CL| derivative. We divide deployment of this infrastructure in two +parts: *Content Workflow*; and *Release Workflow*, shown in Figure 1. + +.. figure:: figures/architect-lifecycle-1.png + :scale: 100% + :alt: Architect the life-cycle + + Figure 1: Architect the life-cycle + +Content Workflow +**************** + +The Content Workflow (Figure 1) orchestrates the processes used to manage +the creation of content for the distribution. This includes everything from +detecting a new release in a custom software repository to generating RPM +package files. The RPM files serve as intermediary artifacts that track software +dependencies and provide file-level data consumed in a Release Workflow. The +`Watcher Pipeline`_ checks |CL| and a content provider, such as Koji, to +determine if a new release is necessary. + +Release Workflow +**************** + +The Release Workflow (Figure 1) gathers the content of the RPMs and +ensures it can be consumed by :ref:`mixer `. A content web server +hosts the |CL| derivative, to which targets connect for updating their OSes. +As an integral part of this toolchain, the `Release Pipeline`_ enables these +derivatives to incorporate |CL| content into their own custom +content. The Watcher Pipeline triggers the Release Pipeline to create +new releases. + +Implementation +************** + +The |CL| Distro Factory manages the Release Workflow. For detailed information +about Distro Factory deployment, refer to the `clr-distro-factory`_ GitHub\* repo. + +.. _clr-distro-factory: https://github.com/clearlinux/clr-distro-factory/wiki#clear-linux-distro-factory + +.. _Release Pipeline: https://github.com/clearlinux/clr-distro-factory/wiki/Release + +.. _Watcher Pipeline: https://github.com/clearlinux/clr-distro-factory/wiki/Watcher diff --git a/_sources/guides/maintenance/configure-hugepages.rst.txt b/_sources/guides/maintenance/configure-hugepages.rst.txt new file mode 100644 index 000000000..4925ba20f --- /dev/null +++ b/_sources/guides/maintenance/configure-hugepages.rst.txt @@ -0,0 +1,74 @@ +.. _enable-huge-pages: + +Configure Huge Pages +######################## + +In |CL| hugepages are enabled by default. The default hugepage size is 2MB. +The total number of hugepages is set to 0 by default. This guide shows you how +to add hugepages to the system and how to change the default hugepage size. + +#. To check the enabled state, run the following command. + + .. code-block:: bash + + cat /sys/kernel/mm/transparent_hugepage/enabled + + The output will look like + + .. code-block:: console + + [always] madvise never + + .. note:: + + The active option is enclosed in brackets. In this case, always is active, + which means hugepages are enabled for every process. The `madvise` + option means that hugepages are enabled for processes that explicitly + call `madvise`_. + +#. To check the size of hugepages, run the below command. + + .. code-block:: bash + + cat /proc/meminfo | grep Huge + + The output should look similar to the following. Although hugepages is + enabled, there are no hugepages available to allocate. + + .. code-block:: console + + AnonHugePages: 624640 kB + ShmemHugePages: 0 kB + FileHugePages: 0 kB + HugePages_Total: 0 + HugePages_Free: 0 + HugePages_Rsvd: 0 + HugePages_Surp: 0 + Hugepagesize: 2048 kB + Hugetlb: 0 kB + +#. If you need 1GB (1,048,576 bytes) of hugepages enabled, then `HugePages_Total` + should be set to 512. Enable it temporarily using the following. + + .. code-block:: bash + + echo 512 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages + + To view the change, run the command in the previous setp again. + +#. Changing hugepages from the default 2MB to 1GB must be done at system boot + through kernel boot parameters. In this example, we configure the size and + number of allocatable huge pages at boot. + + .. code-block:: bash + + sudo mkdir -p /etc/kernel/cmdline.d + cat << EOF | sudo tee -a /etc/kernel/cmdline.d/hugepages.conf + default_hugepagesz=1G + hugepagesz=1G + hugepages=10 + EOF + sudo clr-boot-manager update + sudo reboot + + .. _madvise: https://linux.die.net/man/2/madvise diff --git a/_sources/guides/maintenance/container-image-modify.rst.txt b/_sources/guides/maintenance/container-image-modify.rst.txt new file mode 100644 index 000000000..8aed8d9c2 --- /dev/null +++ b/_sources/guides/maintenance/container-image-modify.rst.txt @@ -0,0 +1,469 @@ +.. _container-image-modify: + +Modify a |CL|-based container image +################################### + +This guide describes how to customize |CL-ATTR|-based container +`images on Docker Hub`_, which include popular applications and runtimes. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Most of these images utilize a Docker build feature called a `multi-stage +build to reduce image size`_ while some use single-stage build Dockerfiles. An +official base `clearlinux image on Docker Hub`_ is also available. To create a +generic |CL| container image, see :ref:`our guide `. + +Prerequisites +************* + +* Set up a functional Docker environment as described in :ref:`docker`. + +* Download the |CL| microservice Dockerfile repo with the following + command: + + .. code-block:: bash + + git clone https://github.com/clearlinux/dockerfiles.git + +* Navigate to and operate from the cloned :file:`dockerfiles` directory. + + .. code-block:: bash + + cd dockerfiles/ + + +Example 1: Add a bundle +*********************** + +In this example, we add :command:`wget` to the **clearlinux/redis** +Dockerfile. + +#. Enter :command:`swupd search wget` to discover which |CL| bundle includes + the software. The output should tell you that :command:`wget` is available + in the *wget* bundle. + +#. Open a an editor to modify the Dockerfile. + + .. code-block:: bash + + $EDITOR redis/Dockerfile + +#. Append the :command:`wget` bundle to the :command:`--bundles=` parameter + of the :command:`swupd os-install` command. + +#. Run :command:`git diff`. + + The output shows the edits made after adding :command:`wget` in the + clearlinux/redis Dockerfile. + + .. code-block:: diff + + diff --git a/redis/Dockerfile b/redis/Dockerfile + index af977cb..b1effab 100644 + --- a/redis/Dockerfile + +++ b/redis/Dockerfile + @@ -15,7 +15,7 @@ RUN source /os-release && \ + mkdir /install_root \ + && swupd os-install -V ${VERSION_ID} \ + --path /install_root --statedir /swupd-state \ + - --bundles=redis-native,findutils,su-exec --no-boot-update + + --bundles=redis-native,findutils,su-exec,wget --no-boot-update + +#. Build the Dockerfile and apply a unique tag name. In this this example, + we use :command:`wget_added` and add proxies. + + .. code-block:: bash + + docker build \ + --no-cache \ + --build-arg http_proxy=$http_proxy \ + --build-arg https_proxy=$https_proxy \ + --tag clearlinux/redis:wget_added \ + redis/ + +#. Run the Dockerfile with the `wget --version` command to verify that + :command:`wget` has been added to the image. + + .. code-block:: bash + + docker run clearlinux/redis:wget_added wget --version + +#. The output shows: + + .. code-block:: console + + GNU Wget 1.20.3 built on linux-gnu. + + -cares +digest -gpgme +https +ipv6 -iri +large-file -metalink +nls + -ntlm +opie -psl +ssl/openssl + +Example 2: Change |CL| version (single-stage build) +*************************************************** + +This example shows how to rebuild single-stage containers against a specific +OS version, :file:``, by adding a new argument to the Docker build +command line. + +#. Rebuild the :file:`clearlinux/machine-learning-ui`. Add an extra build + argument :command:`swupd_args="-m "`; in this case, the build + version is 31110. + + .. code-block:: bash + :linenos: + :emphasize-lines: 5 + + docker build \ + --no-cache \ + --build-arg http_proxy=$http_proxy \ + --build-arg https_proxy=$https_proxy \ + --build-arg swupd_args="-m 31110" \ + --tag clearlinux/machine-learning-ui:31110 \ + machine-learning-ui/ + +#. Run the docker container image: + + .. code-block:: bash + + docker run clearlinux/machine-learning-ui:31110 swupd info + +#. Sample output shows: + + .. code-block:: console + + Distribution: Clear Linux OS + Installed version: 31110 + Version URL: https://cdn.download.clearlinux.org/update + Content URL: https://cdn.download.clearlinux.org/update + + +Example 3: Change |CL| version (multi-stage build) +************************************************** + +This example shows how to rebuild the cgit Dockerfile to use a specific |CL| +version. The clearlinux/cgit Dockerfile has a multi-stage build with multiple +layers: *os-core*, *httpd*, and *cgit*. This can be used as reference for +building other multi-stage images with any number of layers. + + +.. important:: + + All upper layers of multi-stage Dockerfiles inherit the |CL| version from + the base layer. Rebuild the all underlying base layers against the desired + OS version. In this example, four base layers must be rebuilt. + + +First layer: os-core +-------------------- + +#. Rebuild the first layer, *os-core*. Add an extra build argument + :command:`swupd_args="-m "`; in this case, the build + version is 31110. + + .. code-block:: bash + :linenos: + :emphasize-lines: 5 + + docker build \ + --no-cache \ + --build-arg http_proxy=$http_proxy \ + --build-arg https_proxy=$https_proxy \ + --build-arg swupd_args="-m 31110" \ + --tag clearlinux/os-core:31110 \ + os-core/ + +#. Verify the version-specific image is available: + + .. code-block:: bash + + docker images clearlinux/os-core:31110 + + +Second layer: httpd +------------------- + +The next layer is :file:`clearlinux/httpd`. + +#. Change the :file:`httpd/Dockerfile` to use the version-specific + *os-core:31110* image that was previously built. + + .. code-block:: bash + + $EDITOR httpd/Dockerfile + +#. Run :command:`git diff`. + + The output shows a diff of a modified :file:`clearlinux/httpd` Dockerfile + that uses the previously built clearlinux/os-core:31110. + + .. code-block:: diff + + diff --git a/httpd/Dockerfile b/httpd/Dockerfile + index 6b2a6bf..9df89e4 100644 + --- a/httpd/Dockerfile + +++ b/httpd/Dockerfile + @@ -7,7 +7,7 @@ RUN swupd update --no-boot-update $swupd_args + + # Grab os-release info from the minimal base image so + # that the new content matches the exact OS version + -COPY --from=clearlinux/os-core:latest /usr/lib/os-release / + +COPY --from=clearlinux/os-core:31110 /usr/lib/os-release / + + # Install additional content in a target directory + # using the os version from the minimal base + @@ -26,7 +26,7 @@ COPY --from=clearlinux/os-core:latest / / + os_core_install/ + RUN cd / && \ + find os_core_install | sed -e 's/os_core_install/install_root/' | xargs rm -d &> /dev/null || true + + -FROM clearlinux/os-core:latest + +FROM clearlinux/os-core:31110 + +#. Build Dockerfile. + + .. code-block:: bash + + docker build \ + --no-cache \ + --build-arg http_proxy=$http_proxy \ + --build-arg https_proxy=$https_proxy \ + --tag clearlinux/httpd:31110 \ + httpd/ + +Third layer: cgit +----------------- + +The next layer is :file:`clearlinux/cgit`. + +#. Change the :file:`cgit/Dockerfile` to use the desired OS + version; in this case, the build version is 31110. + + .. code-block:: bash + + $EDITOR cgit/Dockerfile + +#. Run :command:`git diff`. + + The output shows: + + .. code-block:: diff + + diff --git a/cgit/Dockerfile b/cgit/Dockerfile + index 9a3796d..59260fe 100644 + --- a/cgit/Dockerfile + +++ b/cgit/Dockerfile + @@ -7,7 +7,7 @@ RUN swupd update --no-boot-update $swupd_args + + # Grab os-release info from the minimal base image so + # that the new content matches the exact OS version + -COPY --from=clearlinux/httpd:latest /usr/lib/os-release / + +COPY --from=clearlinux/httpd:31110 /usr/lib/os-release / + + # Install additional content in a target directory + # using the os version from the minimal base + @@ -22,11 +22,11 @@ RUN source /os-release && \ + # file exists on different layers. To minimize docker + # image size, remove the overlapped files before copy. + RUN mkdir /os_core_install + -COPY --from=clearlinux/httpd:latest / /os_core_install/ + +COPY --from=clearlinux/httpd:31110 / /os_core_install/ + RUN cd / && \ + find os_core_install | sed -e 's/os_core_install/install_root/' | xargs rm -d &> /dev/null || true + + -FROM clearlinux/httpd:latest + +FROM clearlinux/httpd:31110 + +#. Build Dockerfile. + + .. code-block:: bash + + docker build \ + --no-cache \ + --build-arg http_proxy=$http_proxy \ + --build-arg https_proxy=$https_proxy \ + --tag clearlinux/cgit:31110 \ + cgit/ + +#. Verify the installed OS version by noting the :command:`VERSION_ID` value + in the :file:`/usr/lib/os-release` file in the container filesystem. + + .. code-block:: bash + :linenos: + :emphasize-lines: 6 + + docker run clearlinux/cgit:31110 cat /usr/lib/os-release + NAME="Clear Linux OS" + VERSION=1 + ID=clear-linux-os + ID_LIKE=clear-linux-os + VERSION_ID=31110 + PRETTY_NAME="Clear Linux OS" + ANSI_COLOR="1;35" + HOME_URL="https://clearlinux.org" + SUPPORT_URL="https://clearlinux.org" + BUG_REPORT_URL="mailto:dev@lists.clearlinux.org" + PRIVACY_POLICY_URL=http://www.intel.com/privacy + + +Example 4: Customize an application image at runtime +**************************************************** + +This section describes how to modify a published |CL| container at runtime. +In this example, we add Tensorflow\* into a :command:`clearlinux/python` +container. This approach can help accelerate the feature development process. + +In this example, three separate console windows are used to easily interact +inside and outside of the container. + +First console: Start the container +---------------------------------- + +#. Launch the clearlinux/python container. + + .. code-block:: bash + + docker run -it --rm clearlinux/python + Python 3.7.3 (default, Jun 17 2019, 00:47:04) + [GCC 9.1.1 20190616 gcc-9-branch@272336] on linux + Type "help", "copyright", "credits" or "license" for more information. + +#. Try to import Tensorflow inside the container using the command: + :command:`import tensorflow as tf`. The example below shows the expected + error message because the Docker image does not yet include the Tensorflow + module. + + .. code-block:: bash + + >>> import tensorflow as tf + Traceback (most recent call last): + File "", line 1, in + ModuleNotFoundError: No module named 'tensorflow' + >>> + +Second console: Add a bundle +---------------------------- + +#. In another console, find the :command:`` of + clearlinux/python launched. This example Container ID is d4ce9d526fa6. + + .. code-block:: bash + + docker ps + +#. The output shows: + + .. code-block:: console + + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + d4ce9d526fa6 clearlinux/python python3 About a minute ago Up About a minute amazing_villani + +#. Connect to the running clearlinux/python container. + + .. code-block:: bash + + docker exec -it d4ce9d526fa6 /usr/bin/bash + root@d4ce9d526fa6/ # + + +#. Use :command:`swupd` to install the machine-learning-tensorflow bundle. + + .. code-block:: bash + + root@d4ce9d526fa6/ # swupd bundle-add machine-learning-tensorflow + Loading required manifests... + Downloading packs (692.32 Mb) for: + - machine-learning-tensorflow + … … + ...100% + Finishing packs extraction... + No extra files need to be downloaded + Installing bundle(s) files... + ...100% + Calling post-update helper scripts. + Successfully installed 1 bundle + +#. After the machine-learning-tensorflow bundle is installed in the + container, in the first console, import Tensorflow, which will be + successful now. You could also save the updated container using the + command :command:`docker commit `. + + .. code-block:: bash + + >>> import tensorflow as tf + >>> tf.__version__ + '1.13.1' + +Third console: Save the modified container +------------------------------------------ + +#. In a third console, save the container with a new tag. Our example uses + the tag `tensorflow_added` to identify our modified container. + + .. code-block:: bash + + docker commit d4ce9d526fa6 clearlinux/python:tensorflow_added + +#. Launch the modified container, and then import Tensorflow with success. + + .. code-block:: bash + + docker run -it clearlinux/python:tensorflow_added + Python 3.7.3 (default, Jun 17 2019, 00:47:04) + [GCC 9.1.1 20190616 gcc-9-branch@272336] on linux + Type "help", "copyright", "credits" or "license" for more information. + + .. code-block:: bash + + >>> import tensorflow as tf + >>> tf.__version__ + '1.13.1' + >>> + +Background +********** + +Multi-stage Dockerfiles contain more than one :command:`FROM` directive. All +of the multi-stage Clear Linux OS Dockerfiles share a common base layer +called :command:`clearlinux/os-core:latest`. All of the higher level layers +inherit the Clear Linux OS version from this base layer. + +For details on how we leveraged multi-stage Docker builds, see the article +`Minimizing Clear Linux OS container sizes`_. + +#. :command:`clearlinux/os-core` is built once per day. It is a container + containing a minimal Linux userspace. + +#. The target container image uses either :command:`clearlinux/os-core` as a + base layer or another container image :command:`clearlinux/` as a base + layer. + +#. Bundle(s) containing the application are downloaded during the first stage + of the build process using :command:`swupd`. + +#. The final container image is a composition of its base layer and the + specific feature layer, via :command:`FROM clearlinux/:latest + , such as: os-core, httpd, and via :command:`COPY --from=builder / + install_root /`. Using this method, the target container images are kept + up to date without file duplication. For application-centric containers, + `os-core-update` is excluded to improve size optimization. + +Related topics +************** + +* :ref:`docker` +* :ref:`container-image-new` + +.. _images on Docker Hub: https://hub.docker.com/u/clearlinux +.. _GitHub\*: https://github.com/clearlinux/dockerfiles +.. _clearlinux image on Docker Hub: https://hub.docker.com/_/clearlinux +.. _clearlinux microservice dockerfile repo: https://github.com/clearlinux/dockerfiles + +.. _multi-stage build: https://docs.docker.com/develop/develop-images/multistage-build/ + +.. _Minimizing Clear Linux OS container sizes: https://clearlinux.org/blogs-news/minimizing-clear-linux-os-container-sizes + +.. _multi-stage build to reduce image size: https://clearlinux.org/blogs-news/minimizing-clear-linux-os-container-sizes diff --git a/_sources/guides/maintenance/container-image-new.rst.txt b/_sources/guides/maintenance/container-image-new.rst.txt new file mode 100644 index 000000000..73e80b1ec --- /dev/null +++ b/_sources/guides/maintenance/container-image-new.rst.txt @@ -0,0 +1,324 @@ +.. _container-image-new: + +Build a new |CL|-based container image +###################################### + +This guide describes how to build a new |CL-ATTR|-based container image. The +official base |CL-ATTR| container image is published on Docker\* Hub and is +updated on a regular basis. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* You must perform these steps on a |CL| system because the + :abbr:`swupd (software updater)` is used to manage bundles in the + container. +* You must install the :file:`containers-basic` bundle on the |CL| system + or Docker will not work. +* You have a basic understanding of Docker. + +Build the base container image +****************************** + +#. Log in and get root privileges. + + .. code-block:: bash + + sudo -s + +#. Verify Docker is installed and running. + + .. code-block:: bash + + docker info + + If Docker is installed and running, the output is similar to + this example: + + .. code-block:: console + + Containers: 0 + Running: 0 + Paused: 0 + Stopped: 0 + Images: 4 + Server Version: 17.05.0-ce + Storage Driver: overlay + Backing Filesystem: extfs + Supports d_type: true + Logging Driver: json-file + Cgroup Driver: cgroupfs + Plugins: + Volume: local + Network: bridge host macvlan null overlay + Swarm: inactive + Runtimes: runc + Default Runtime: runc + Init Binary: docker-init + containerd version: (expected: 9048e5e50717ea4497b757314bad98ea3763c145) + runc version: N/A (expected: 9c2d8d184e5da67c95d601382adf14862e4f2228) + init version: N/A (expected: ) + Kernel Version: 4.12.7-377.native + Operating System: Clear Linux OS for Intel Architecture + OSType: linux + Architecture: x86_64 + CPUs: 4 + Total Memory: 15.62GiB + Name: clr-os + ID: XQHJ:DYEM:3Q4D:DKLM:JOA4:RUSF:GAFR:DLPA:HOJP:W5FF:ULEE:7HZ3 + Docker Root Dir: /var/lib/docker + Debug Mode (client): false + Debug Mode (server): false + Registry: https://index.docker.io/v1/ + Experimental: false + Insecure Registries: + 127.0.0.0/8 + Live Restore Enabled: false + + If Docker is not installed, enter the commands: + + .. code-block:: bash + + swupd bundle-add containers-basic + systemctl start docker + +#. Use :command:`os-install` to download and install the bundles. + + .. code-block:: bash + + swupd os-install --url https://cdn.download.clearlinux.org/update --statedir "$PWD"/swupd-state --no-boot-update -B os-core-update,editors,network-basic base + + + The swupd example uses the following flags: + + * :command:`os-install` tells swupd to download and install. + * :command:`--url` specifies the URL of the bundles repository. + * :command:`--statedir` specifies the state directory where downloaded bundles and any state information are stored. + * :command:`--no-boot-update` tells swupd to skip updating boot files because + boot files are not required for a container. + + For more information on swupd flags, enter the :command:`swupd os-install -h` + command. + + Example output: + + .. code-block:: console + + swupd-client software verify 3.12.2 + Copyright (C) 2012-2017 Intel Corporation + + Verifying version 17870 + Attempting to download version string to memory + Downloading packs... + + Extracting python-basic pack for version 17820 + ...14% + Extracting perl-basic pack for version 17790 + ...28% + Extracting openssh-server pack for version 17660 + ...42% + Extracting editors pack for version 17850 + ...57% + Extracting network-basic pack for version 17650 + ...71% + Extracting os-core pack for version 17870 + ...85% + Extracting os-core-update pack for version 17870 + ...100% + Adding any missing files + ...88% + Inspected 33982 files + 33974 files were missing + 33974 of 33974 missing files were replaced + 0 of 33974 missing files were not replaced + Calling post-update helper scripts. + WARNING: boot files update skipped due to --no-boot-update argument + Fix successful + + .. note:: + + The WARNING message is expected and can be ignored. + +#. Create a tarball and compress it. + + .. code-block:: bash + + tar -C base -cf base.tar . + xz -v -T0 base.tar + +#. Create the Dockerfile to build the image. + + .. code-block:: bash + + cat > Dockerfile << EOF + FROM scratch + MAINTAINER First Last + ADD base.tar.xz / + CMD ["/bin/bash"] + EOF + +#. Build the |CL| container image. + + .. code-block:: bash + + docker build -t my-custom-clear-linux-container . + + Example output: + + .. code-block:: console + + Sending build context to Docker daemon 806.5MB + Step 1/4 : FROM scratch + ---> + Step 2/4 : MAINTAINER First Last + ---> Running in 7238f35abcd0 + ---> ec5064287c60 + Removing intermediate container 7238f35abcd0 + Step 3/4 : ADD base.tar.xz / + ---> 2723b7d20716 + Removing intermediate container 16e3ed0df8da + Step 4/4 : CMD /bin/bash + ---> Running in efa893350647 + ---> 5414c3a12993 + Removing intermediate container efa893350647 + Successfully built 5414c3a12993 + Successfully tagged my-custom-clear-linux-container:latest + +#. List the newly created |CL| container image. + + .. code-block:: bash + + docker images + + Example output: + + .. code-block:: console + + REPOSITORY TAG IMAGE ID CREATED SIZE + my-custom-clear-linux-container latest 5414c3a12993 About a minute ago 616MB + +#. Launch the built |CL| container. + + .. code-block:: bash + + docker run -it my-custom-clear-linux-container + +Manage bundles in a container +***************************** + +You can add and remove bundles from a |CL| container using the +:command:`RUN swupd` command in the Dockerfile. + +Add a bundle +============ + +This example Dockerfile adds the :file:`pxe-server` bundle to an existing |CL| +Docker image: + +.. code-block:: bash + + cat > Dockerfile << EOF + FROM my-customer-clear-linux-container + MAINTAINER First Last + RUN swupd bundle-add pxe-server + CMD ["/bin/bash/bash"] + EOF + +Example output: + +.. code-block:: console + + docker build -t my-clearlinux-with-pxe-server-bundle . + + Sending build context to Docker daemon 806.5MB + Step 1/4 : FROM my-custom-clear-linux-container + ---> 5414c3a12993 + Step 2/4 : MAINTAINER First Last + ---> Running in 19b4411cf4bd + ---> 08d400baffde + Removing intermediate container 19b4411cf4bd + Step 3/4 : RUN swupd bundle-add pxe-server + ---> Running in 3e634d6e0792 + swupd-client bundle adder 3.12.2 + Copyright (C) 2012-2017 Intel Corporation + + Attempting to download version string to memory + Downloading packs... + + Extracting pxe-server pack for version 17820 + . + Installing bundle(s) files... + .............................................................................. + .............................................................................. + .............................................................................. + .............................................................................. + .............................................................................. + .............................................................................. + Calling post-update helper scripts. + WARNING: systemctl not operable, unable to run systemd update triggers + Bundle(s) installation done. + ---> 8ead5f2c0c33 + Removing intermediate container 3e634d6e0792 + Step 4/4 : CMD /bin/bash + ---> Running in 0ceae320279b + ---> dcd9adb40611 + Removing intermediate container 0ceae320279b + Successfully built dcd9adb40611 + Successfully tagged my-clearlinux-with-pxe-server-bundle:latest + +.. note:: + + The WARNING message can be ignored because systemd does not run inside + a container. + +Remove a bundle +=============== + +This example Dockerfile removes the :file:`pxe-server` bundle from an existing +|CL| Docker image: + +.. code-block:: bash + + cat > Dockerfile << EOF + FROM my-clearlinux-with-pxe-server-bundle + MAINTAINER First Last + RUN swupd bundle-remove pxe-server + CMD ["/bin/bash/bash"] + EOF + +Example output: + +.. code-block:: console + + docker build -t my-clearlinux-remove-pxe-server-bundle . + + Sending build context to Docker daemon 806.5MB + Step 1/4 : FROM my-clearlinux-with-pxe-server-bundle + ---> dcd9adb40611 + Step 2/4 : MAINTAINER First Last + ---> Running in 71b60f15003e + ---> 742192751c1a + Removing intermediate container 71b60f15003e + Step 3/4 : RUN swupd bundle-remove pxe-server + ---> Running in ad28a3390ecc + swupd-client bundle remover 3.12.2 + Copyright (C) 2012-2017 Intel Corporation + + Removing bundle: pxe-server + Deleting bundle files... + Total deleted files: 92 + Untracking bundle from system... + Success: Bundle removed + 1 bundle(s) were removed successfully + ---> d6ee7903e14d + Removing intermediate container ad28a3390ecc + Step 4/4 : CMD /bin/bash + ---> Running in 7694989e97de + ---> ec23189ef954 + Removing intermediate container 7694989e97de + Successfully built ec23189ef954 + Successfully tagged my-clearlinux-remove-pxe-server-bundle:latest diff --git a/_sources/guides/maintenance/cpu-performance.rst.txt b/_sources/guides/maintenance/cpu-performance.rst.txt new file mode 100644 index 000000000..828a0f00c --- /dev/null +++ b/_sources/guides/maintenance/cpu-performance.rst.txt @@ -0,0 +1,273 @@ +.. _cpu-performance: + +CPU Power and Performance +######################### + +This guide explains the CPU power and performance mechanisms in |CL-ATTR|. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Modern x86 :abbr:`CPUs (central processing units)` employ a number of features +to balance performance, energy, and thermal efficiency. + +By default, |CL| prioritizes maximum CPU performance, assuming that +the faster the program finishes execution, the faster the CPU can return to a +low energy idle state. It is important to understand and evaluate the impact +of each feature when troubleshooting or considering changing the defaults. + +.. contents:: + :local: + :depth: 1 + +CPU power saving mechanisms +*************************** + +C-states and P-states are both CPU power saving mechanisms that are entered +under different operating conditions. The tradeoff is a slightly longer time +to exit these states when the CPU is needed. + +.. _c-states-section: + +C-states (idle states) +====================== + +Hardware enters a C-state when the CPU is idle and not executing instructions. +C-states decrease power utilization by reducing clock frequency, +voltages, and features in each state. Although C-states can typically be +limited or disabled in a system's UEFI or BIOS configuration, these settings +are overridden when the `intel_idle driver`_ is in use. + +To view the current ``cpuidle`` driver run this command in a terminal: + +.. code-block:: bash + + cat /sys/devices/system/cpu/cpuidle/current_driver + +For troubleshooting, C-states can be limited with a kernel command line boot +parameter by adding :command:`processor.max_cstate=N intel_idle.max_cstate=N` +or completely disabled with :command:`idle=poll`. + +.. note:: + + * :command:`processor.max_cstate=0` is changed to a valid value by the + kernel: :command:`processor.max_cstate=1`. + + * :command:`intel_idle.max_cstate=0` disables the Intel Idle driver rather + than set it to C-state 0. + +.. _p-states-section: + +P-states (performance states) +============================= + +The CPU can enter a P-state, also known as Intel SpeedStep® technology on +Intel processors or AMD\* Cool'n'Quiet\* technology, while it is active +and executing instructions. P-states reduce power utilization by adjusting CPU +clock frequency and voltages based on CPU demand. P-states can typically be +limited or disabled in a system's firmware (UEFI/BIOS). + +Turbo boost +----------- + +`Intel® Turbo Boost Technology`_, found on some modern Intel CPUs, allows +cores on a processor to temporarily operate at a higher than rated CPU clock +frequency to accommodate demanding workloads if the CPU is under defined power +and thermal thresholds. Intel Turbo Boost Technology is an extension of +P-states, so it can be impacted by limiting C-states or P-states. + +Intel Turbo Boost Technology can be disabled in a system's UEFI/BIOS or in +|CL|: + +.. code-block:: bash + + echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo + +Linux CPU clock frequency scaling +********************************* + +The ``CPUFreq`` subsystem in Linux allows the OS to control +:ref:`C-states ` and :ref:`P-states ` +via CPU drivers and governors that provide algorithms that define how and when +to enter these states. + +Scaling driver +============== + +Linux uses the `Intel P-state driver`_, :command:`intel_pstate`, for +modern Intel processors from the Sandy Bridge generation or newer. Other +processors may default to the :command:`acpi-cpufreq` driver which reads +values from the systems UEFI or BIOS. + +To view the current CPU frequency scaling driver, run this command in a +terminal: + +.. code-block:: bash + + cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver + +Scaling governor +================ + +|CL| sets the CPU governor to ``performance`` which calls for the CPU to +operate at maximum clock frequency. In other words, P-state P0. While this may +sound wasteful at first, it is important to remember that power utilization +does not increase significantly simply because of a locked clock frequency +without a workload. + +To view the current CPU frequency scaling governor, run this command in a +terminal: + +.. code-block:: bash + + cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor + +Each core will report its own status. Your output should look similar to this +example with four cores: + +.. code-block:: console + + performance + performance + performance + performance + +The list of all governors can be found in the Linux kernel documentation on +`CPUFreq Governors`_. + +.. note:: + + The intel_pstate driver only supports *performance* and *powersave* governors. + +There are 2 ways to change the CPU frequency scaling governor: + +#. Disable |CL| enforcement of certain power and performance settings: + + .. code-block:: bash + + sudo systemctl mask clr-power.timer + +#. Change the governor value in :file:`/sys/devices`. In the example below, + the governor is set to *performance*: + + .. code-block:: bash + + echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor + +Thermal management +****************** + +`thermald`_ is a Linux thermal management daemon used to prevent platforms +from overheating. :command:`thermald` forces a C-state by inserting CPU sleep +cycles and adjusting any available cooling methods. This can be especially +desirable for laptops. + +:command:`thermald` is disabled by default in |CL| and starts automatically +if it detects battery power. Enable :command:`thermald` manually by using +the systemd service by running the command: + +.. code-block:: bash + + sudo systemctl enable --now thermald + +For more information, see the :command:`thermald` man page: + +.. code-block:: bash + + man thermald + +`ThermalMonitor`_ is a GUI application that can visually graph and log +temperatures from :command:`thermald`. To use ThermalMonitor, add the +:command:`desktop-apps-extras` bundle and add your user account to the power +group: + +.. code-block:: bash + + sudo swupd bundle-add desktop-apps-extras + sudo usermod -a -G power + ThermalMonitor + +.. note:: + + After adding a new group, you must log out and log back in for the new group + to take effect. + +Enhanced thermal configuration +=============================== + +Better thermal control and performance can be achieved by providing platform +specific configuration to :command:`thermald`. + +`Linux DPTF Extract Utility`_ is a companion tool to :command:`thermald`, +This tool uses Intel® Dynamic Platform and Thermal Framework (Intel® DPTF) +technology and can convert to the :file:`thermal_conf.xml` configuration format +used by :command:`thermald`. Closed-source projects, like this one, cannot be +packaged as a bundle in |CL|, so you must install it manually: + +#. Make sure your machine's BIOS has DPTF feature and is enabled. It will usually be in the :guilabel:`Advanced` or :guilabel:`Advanced>Power` section of the BIOS. + + .. figure:: /_figures/cpu-perf-guide/dptf_bios.png + + .. note:: + + Intel DPTF requires BIOS support and is typically only available on + laptops. + +#. Generate thermal configuration. :command:`thermald` configuration files + will be generated and saved to :file:`/etc/thermal/` folder. + + .. code-block:: bash + + sudo swupd bundle-add acpica-unix2 # install acpi tools + git clone https://github.com/intel/dptfxtract.git + cd dptfxtract + sudo acpidump > acpi.out + acpixtract -a acpi.out + sudo ./dptfxtract *.dat + +#. Restart :command:`thermald` service to take effect. + + .. code-block:: bash + + sudo systemctl restart thermald.service + +#. Check whether the configuration is in use. + + .. code-block:: bash + + sudo systemctl status thermald.service + +The following output means the configuration has already been applied: + +.. code-block:: console + + thermald[*]: [WARN]Using generated /etc/thermald/thermal-conf.xml.auto + +*Intel® Turbo Boost Technology requires a PC with a processor with Intel Turbo +Boost Technology capability. Intel Turbo Boost Technology performance varies +depending on hardware, software and overall system configuration. Check with +your PC manufacturer on whether your system delivers Intel Turbo Boost Technology. +For more information, see http://www.intel.com/technology/turboboost* + +*Intel, Intel SpeedStep, and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + + +.. _`Intel P-state driver`: https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt + +.. _`CPUFreq Governors`: https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt + +.. _thermald: https://01.org/linux-thermal-daemon + +.. _`intel_idle driver`: https://github.com/torvalds/linux/blob/master/drivers/idle/intel_idle.c + +.. _`ThermalMonitor`: https://github.com/intel/thermal_daemon/tree/master/tools/thermal_monitor + +.. _`Intel® Turbo Boost Technology`: https://www.intel.com/content/www/us/en/architecture-and-technology/turbo-boost/turbo-boost-technology.html + +.. _`Linux DPTF Extract Utility`: https://github.com/intel/dptfxtract + +.. _`Intel DPTF`: https://software.intel.com/en-us/articles/2-in-1-tablet-mode-game-performance-with-intel-dynamic-platform-and-thermal-framework-intel diff --git a/_sources/guides/maintenance/deploy-at-scale.rst.txt b/_sources/guides/maintenance/deploy-at-scale.rst.txt new file mode 100644 index 000000000..617b265e1 --- /dev/null +++ b/_sources/guides/maintenance/deploy-at-scale.rst.txt @@ -0,0 +1,255 @@ +.. _deploy-at-scale: + +Deploy at Scale +############### + +This guide describes deployment considerations and strategies when deploying +|CL-ATTR| at scale in your environment. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +In this guide the term *endpoint* refers to a system targeted for |CL| +installation, whether that is a datacenter system or unit deployed in field. + +.. note:: + + This guide is not a replacement or blueprint for designing your own IT + operating environment. + + Implementation details for a scale deployment are beyond the scope of this + guide. + + Your |CL| deployment should complement your existing environment and + available tools. It is assumed core IT dependencies of your environment, + such as your network, are healthy and scaled to suit the deployment. + +Pick a usage and update strategy +******************************** + +Different business scenarios call for different deployment methodologies. +|CL| offers the flexibility to continue consuming the upstream |CL| +distribution or the option to fork away from the |CL| distribution and +act as your own :abbr:`OSV (Operating System Vendor)`. + +Below is an overview of some considerations. + +Create your own Linux distribution (mix) +======================================== + +This approach forks away from the |CL| upstream and has you act as your own +:abbr:`OSV (Operating System Vendor)` by leveraging the :ref:`mixer` process to +create customized images based on |CL|. This is a level of responsibility +that requires having more infrastructure and processes to adopt. In return, +this approach *offers you a high degree of control and customization*. Consider: + +* Development systems that generate bundles and updates should have + sufficient performance for the task and be separate from the swupd update + webservers that serve update content to production machines. + +* swupd update webservers that serve update content to production machines + should be appropriately scaled. Specific implementation details for a scalable, + resilient web server are beyond the scope of this document. + + (See :ref:`mixer` for more information about update servers.) + +Adopt an agile methodology +========================== + +The cloud, and other scaled deployments, are all about flexibility and speed. +It only makes sense that any |CL| deployment strategy should follow suit. + +Manually rebuilding your own bundles or mix for every release is not +sustainable at a large scale. A |CL| deployment pipeline should be agile +enough to validate and produce new versions with speed. Whether or not those +updates actually make their way to your production can be separate +business decision. However this *ability to frequently roll new versions* of +software to your endpoints is an important prerequisite. + +You own the validation and lifecycle of the OS and should treat it like any +other software development lifecycle. Below are some pointers: + +* Thoroughly understand the custom software packages that you will need to + integrate with |CL| and maintain along with their dependencies. + +* Setup a path to production for building |CL| based images. At minimum this + should include: + + * A development clr-on-clr environment to test building packages and + bundles for |CL| systems. + + * A pre-production environment to deploy |CL| versions to before + production + +* Employ a continuous integration and continuous deployment (CI/CD) + philosophy in order to: + + - Automatically pull custom packages as they are updated from their + upstream projects or vendors. + + - Generate |CL| bundles and potentially bootable images with your + customizations, if any. + + - Measure against metrics and indicators which are relevant to your + business (e.g. performance, power, etc) from release to release. + + - Integrate with your organization's governance processes, such as change + control. + +Versioning infrastructure +========================= + +|CL| version numbers are very important as they apply to the whole +infrastructure stack from OS components to libraries and applications. + +Good record keeping is important, so you should keep a detailed registry and +history of previously deployed versions and their contents. + +With a glance at the |CL| version numbers deployed, you should be able to +tell if your Clear systems are patched against a particular security +vulnerability or incorporate a critical new feature. + +Pick an image distribution strategy +*********************************** + +Once you have decided on a usage and update strategy, you should understand +*how* |CL| will be deployed to your endpoints. In a large scale deployment, +interactive installers should be avoided in favor of automated installations +or prebuilt images. + +There are many well-known ways to install an operating system at scale. Each +have their own benefits, and one may lend itself easier in your environment +depending on the resources available to you. + +See the available :ref:`image-types`. + +Below are some common ways to install |CL| to systems at scale: + +Bare metal +========== + +Preboot Execution Environments (PXE) or other out-of-band booting options are +one way to distribute |CL| to physical bare metal systems on a LAN. + +This option works well if your customizations are fairly small in size +and infrastructure can be stateless. + +The |CL| `Downloads`_ page offers a live image that can be deployed as +a PXE boot server if one doesn't already exist in your environment. Also see +documentation on how to :ref:`bare-metal-install-server`. + +Cloud instances or virtual machines +=================================== + +Image templates in the form of cloneable disks are an effective way to +distribute |CL| for virtual machine environments, whether on-premises or +hosted by a Cloud Solution Provider (CSP). + +When used in concert with cloud VM migration features, this can be a good option +for allowing your applications a degree of high availability and workload +mobility; VMs can be restarted on a cluster of hypervisor host or moved between +datacenters transparently. + +The |CL| `Downloads`_ page offers example prebuilt VM images and is readily +available on popular CSPs. Also see documentation on how to +:ref:`virtual-machine-install`. + +Containers +========== + +Containerization platforms allow images to be pulled from a repository and +deployed repeatedly as isolated containers. + +Containers with a |CL| image can be a good option to blueprint and ship +your application, including all its dependencies, as an artifact while +allowing you or your customers to dynamically orchestrate and scale +applications. + +|CL| is capable of running a Docker host, has a container image which can +be pulled from DockerHub, or can be built as a customized container. +For more information visit the `Containers`_ page. + +Considerations with stateless systems +************************************* + +An important |CL| concept is statelessness and partitioning of system data +from user data. This concept can change the way you think about an at scale +deployment. + +Backup strategy +=============== + +A |CL| system and its infrastructure should be considered a commodity and +be easily reproducible. Avoid focusing on backing up the operating system +itself or default values. + +Instead, focus on backing up what's important and unique - the application +and data. In other words, only focus on backing up critical areas like +:file:`/home`, :file:`/etc`, and :file:`/var`. + +Meaningful logging & telemetry +============================== + +Offload logging and telemetry from endpoints to external servers, so it is +persistent and can be accessed on another server when an issue occurs. + +* Remote syslogging in |CL| is available through the + `systemd-journal-remote.service`_ + +* |CL| offers a :ref:`telem-guide`, which can be a powerful tool + for a large deployment to quickly crowdsource issues of interest. Take + advantage of this feature with careful consideration of the target audience + and the kind of data that would be valuable, and expose events + appropriately. + + Like any web server, the telemetry server should be appropriately scaled and + resilient. Specific implementation details for a scalable, resilient web + server are beyond the scope of this document. + +Orchestration and configuration management +========================================== + +In cloud environments, where systems can be ephemeral, being able to +configure and maintain generic instances is valuable. + +|CL| offers an efficient cloud-init style solution, `micro-config-drive`_, +through the *os-cloudguest* bundles which allow you to configure many Day 1 +tasks such as setting hostname, creating users, or placing +SSH keys in an automated way at boot. For more information on +automating configuration during deployment of |CL| endpoints see the +:ref:`ipxe-install` guide. + +A configuration management tool is useful for maintaining consistent system +and application-level configuration. Ansible\* is offered through the +*sysadmin-hostmgmt* bundle as a configuration management and automation +tool. + +Cloud-native applications +========================= + +An Infrastructure OS can design for good behavior, but it is ultimately up +to applications to make agile design choices. Applications deployed +on |CL| should aim to be host-aware but not depend on any specific host to +run. References should be relative and dynamic when possible. + +The application architecture should incorporate an appropriate tolerance for +infrastructure outages. Don't just keep stateless design as a noted feature. +Continuously test its use; Automate its use by redeploying |CL| and +application on new hosts. This naturally minimizes configuration drift, +challenges your monitoring systems, and business continuity plans. + +.. _`Downloads`: https://clearlinux.org/downloads/ +.. _`Containers`: https://clearlinux.org/downloads/containers +.. _`systemd-journal-remote.service`: https://www.freedesktop.org/software/systemd/man/systemd-journal-remote.service.html +.. _`micro-config-drive`: https://github.com/clearlinux/micro-config-drive + +.. |WEB-SERVER-SCALE| replace:: + There are many well-known ways to achieve a scalable and resilient web + server for this purpose, however implementation details are not in the + scope of this document. In general, they should be close to your + endpoints, highly available, and easy to scale with a load balancer when + necessary. diff --git a/_sources/guides/maintenance/developer-workstation.rst.txt b/_sources/guides/maintenance/developer-workstation.rst.txt new file mode 100644 index 000000000..5333fedce --- /dev/null +++ b/_sources/guides/maintenance/developer-workstation.rst.txt @@ -0,0 +1,225 @@ +.. _developer-workstation: + +Developer Workstation +##################### + +This guide helps you find the minimum set of bundles needed to start your +|CL-ATTR| development project. + +Before continuing, review the :ref:`swupd ` guide to learn more +about the swupd tool and how |CL| simplifies software versioning compared to +other Linux\* distributions. + +.. contents:: + :local: + :depth: 1 + +Workstation Setup +***************** + +After installing the minimum set of bundles required to get started, you can +add more bundles relevant to your specific use case. + +To run any process required for |CL| development, you can add the large +bundle :ref:`*os-clr-on-clr* `. However, you may want to deploy a leaner OS with only bundles relevant to your project. + +Use the **Developer Profiles** tabs to start installing *suggested bundles* +based on your role or project. Installing any ``dkms`` bundle gives all the +tools you need to start. Consider these profiles as a starting point. + +.. tip:: + + Click on a bundle to learn how to install it using :command:`swupd`. + +.. tabs:: + + .. tab:: AI/ML Engineer + + .. list-table:: + :widths: 50, 50 + :header-rows: 1 + + * - Function + - Bundle + + * - Build machine learning applications with a full suite of libraries. + - `machine-learning-basic `_ + + * - Build machine learning applications with PyTorch, an optimized tensor library for deep learning. + - `machine-learning-pytorch `_ + + * - Build machine learning applications using Tensorflow, a library for numerical computation using deep neural networks. + - `machine-learning-tensorflow `_ + + * - Web-based, interactive tools for machine learning. + - `machine-learning-web-ui `_ + + * - Machine learning Docker container. + - `machine-learning `_ + + * - Pre-built Python libraries for Data Science. + - `python-extras `_ + + * - API helper for cloud access. + - `cloud-api `_ + + .. tab:: Computer Vision Engineer + + .. list-table:: + :widths: 50, 50 + :header-rows: 1 + + * - Function + - Bundle + + * - Build computer vision applications. + - `computer-vision-basic `_ + + * - Work with deep learning and edge-optimized models. + - `computer-vision-models `_ + + * - API helper for cloud access. + - `cloud-api `_ + + * - Run container applications from Dockerhub in lightweight virtual machines. + - `containers-virt `_ + + * - All content for pkgconfig file opencv.pc. + - `devpkg-opencv `_ + + * - *Refer also to Cloud Orchestration Engineer* + - + + .. tab:: Cloud Orchestration Engineer + + .. list-table:: + :widths: 50, 50 + :header-rows: 1 + + * - Function + - Bundle + + * - Contains Clear Linux\* OS native software for cloud. + - `ethtool `_ + + * - Utilities for controlling TCP/IP networking and traffic control. + - `iproute2 `_ + + * - API helper for cloud access. + - `cloud-api `_ + + * - C++ runtime support. + - `libstdcpp `_ + + * - Load and enumerate PKCS#11 modules. + - `p11-kit `_ + + .. tab:: Kernel Developer + + .. list-table:: + :widths: 50, 50 + :header-rows: 1 + + * - Function + - Bundle + + * - Installs kernel, initrd, kernel config, system map; creates a bootloader entry. + - `kernel-install `_ + + * - Support module for building/loading via Dynamic Kernel Module System (DKMS) in LTS kernel. + - `kernel-lts-dkms `_ + + * - Support module for building/loading via Dynamic Kernel Module System (DKMS) in native kernel. + - `kernel-native-dkms `_ + + * - Support module for building/loading via Dynamic Kernel Module System (DKMS) in AWS kernel. + - `kernel-aws-dkms `_ + + * - Run the Kernel-based Virtual Machine (KVM) with |CL| as a guest under KVM. + - `kernel-kvm `_ + + * - Linux Test Project. + - `ltp `_ + + .. tab:: Maker Developer + + .. list-table:: + :widths: 50, 50 + :header-rows: 1 + + * - Function + - Bundle + + * - Basic tools for makers and experimenters. + - `maker-basic `_ + + * - GIS/Mapping tools for makers. + - `maker-gis `_ + + * - Electronic Design Tool. + - `Fritzing `_ + + * - Open-source electronics prototyping platform. + - `arduino-ide `_ + + .. tab:: System Administrator + + .. list-table:: + :widths: 50, 50 + :header-rows: 1 + + * - Function + - Bundle + + * - Run popular terminal text editors. + - `editors `_ + + * - Run network utilities and modify network settings. + - `network-basic `_ + + * - Run a secure shell (SSH) server for access from remote machines. + - `openssh-server `_ + + * - Run an HTTP server. + - `nginx `_ + + * - Run an application server via HTTP. + - `application-server `_ + + * - Run a SQLite database. + - `sqlite `_ + + * - Bundle to automatically launch the GUI upon boot. + - `desktop-autostart `_ + +swupd search +************ + +We recommend learning about :ref:`swupd `, to learn the +commands to search for and add bundles relevant to your project. + +The guide provides an :ref:`example ` +that shows you how to: + +* Use swupd to search for bundles +* Use swupd to add bundles + +Core Concepts +************* + +We recommend that you understand these core concepts in |CL| *before* +developing your project. + +* :ref:`Software update ` +* :ref:`Mixer ` +* :ref:`Autospec ` + +Related topics +-------------- + +* `Developer Tooling Framework`_ for |CL| +* `Bundle Definition Files`_ + +.. _Bundle Definition Files: https://github.com/clearlinux/clr-bundles + +.. _Developer Tooling Framework: https://github.com/clearlinux/common diff --git a/_sources/guides/maintenance/download-verify-decompress.rst.txt b/_sources/guides/maintenance/download-verify-decompress.rst.txt new file mode 100644 index 000000000..9142bc348 --- /dev/null +++ b/_sources/guides/maintenance/download-verify-decompress.rst.txt @@ -0,0 +1,176 @@ +.. _download-verify-decompress: + +Download, verify, and decompress a |CL-ATTR| image +################################################## + +This guide describes the available types of |CL| images, where to +download them, how to verify their integrity, and how to decompress them. +Follow the steps for your OS. + +.. contents:: + :local: + :depth: 1 + + +.. include:: ../../reference/image-types.rst + :start-after: image-types-content: + :end-before: incl-image-filename-end: + +.. _download-verify-decompress-linux: + +Linux OS steps +************** + +.. _verify-linux: + +Verify the integrity of the |CL| image +====================================== + +Before you use a downloaded |CL| image, verify its integrity. This action +eliminates the small chance of a corrupted image due to download issues. To +support verification, each released |CL| image has a corresponding SHA512 +checksum file designated with the suffix `-SHA512SUMS`. + +#. Download the corresponding SHA512 checksum file of your |CL| `image`_. +#. Open a Terminal. +#. Go to the directory with the downloaded image and checksum files. +#. Verify the integrity of the image and compare it to its original checksum + with the command: + + .. code-block:: bash + + sha512sum -c ./clear-[version number]-[image type].[compression type]-SHA512SUMS + +If the checksum of the downloaded image is different than the original +checksum, a warning is displayed with a message indicating the computed +checksum does **not** match. Otherwise, the name of the image is printed on +the screen followed by `OK`. + +For a more in-depth discussion of image verification including checking the +certificate see :ref:`image-content-validation`. + +.. incl-decompress-image: + +Decompress the |CL| image +========================= + +Released |CL| images are compressed with either GNU zip (*.gz*) or XZ +(*.xz*). The compression type depends on the target platform or +environment. To decompress the image, follow these steps: + +#. Open a Terminal. +#. Go to the directory with the downloaded image. + + To decompress an XZ image, enter: + + .. code-block:: bash + + unxz clear-[version number]-[image type].xz + + To decompress a GZ image, enter: + + .. code-block:: bash + + gunzip clear-[version number]-[image type].gz + +.. incl-decompress-image-end: + +.. _download-verify-decompress-mac: + +macOS\* steps +************* + +.. _verify-mac: + +Verify the integrity of the |CL| image +====================================== + +Before you use a downloaded |CL| image, verify its integrity. This action +eliminates the small chance of a corrupted image due to download issues. To +support verification, each released |CL| image has a corresponding SHA512 +checksum file designated with the suffix `-SHA512SUMS`. + +#. Download the corresponding SHA512 checksum file of your |CL| `image`_. +#. Open a Terminal. +#. Go to the directory with the downloaded image and checksum files. +#. Verify the integrity of the image and compare it to its original checksum + with the command: + + .. code-block:: bash + + shasum -a512 clear-[version number]-[image type].[compression type] | diff clear-[version number]-[image type].[compression type]-SHA512SUMS - + +If the checksum of the downloaded image is different than the original +checksum, the differences will be displayed. Otherwise, an empty output indicates +a match and your downloaded image is good. + +Decompress the |CL| image +========================= + +We compress all released |CL| images by default with either GNU zip +(`.gz`) or xz (`.xz`). The compression type we use depends on the target +platform or environment. To decompress the image, follow these steps: + +#. Open a Terminal. +#. Go to the directory with the downloaded image. +#. Use the :command:`gunzip` command to decompress either compression type. For example: + + .. code-block:: bash + + gunzip clear-[version number]-[image type].xz + gunzip clear-[version number]-[image type].gz + +.. _download-verify-decompress-windows: + +Windows\* OS steps +****************** + +.. _verify-windows: + +Verify the integrity of the |CL| image +====================================== + +Before you use a downloaded |CL| image, verify its integrity. This action +eliminates the small chance of a corrupted image due to download issues. To +support verification, each released |CL| image has a corresponding SHA512 +checksum file designated with the suffix `-SHA512SUMS`. + +#. Download the corresponding SHA512 checksum file of your |CL| `image`_. +#. Start Command Prompt. +#. Go to the directory with the downloaded image and checksum files. +#. Get the SHA512 checksum of the image with the command: + + .. code-block:: bash + + CertUtil -hashfile ./clear-[version number]-[image type].[compression type] SHA512 + +#. Manually compare the output with the original checksum value shown in + the downloaded checksum file and make sure they match. + +Decompress the |CL| image +========================= + +Released |CL| images are compressed with either GNU zip (*.gz*) or XZ +(*.xz*). The compression type depends on the target platform or +environment. To decompress the image, follow these steps: + +#. Download and install `7-Zip`_. +#. Go to the directory with the downloaded image and right-click it. +#. From the pop-up menu, select :guilabel:`7-Zip` and select + :guilabel:`Extract Here` as shown in Figure 1. + + .. figure:: figures/download-verify-decompress-windows-fig-1.png + :scale: 80 % + :alt: 7-Zip extract file + + Figure 1: Windows 7-Zip extract file. + +.. _7-Zip: http://www.7-zip.org/ + +Image types +*********** + +.. include:: ../../reference/image-types.rst + :start-after: incl-image-filename-end: + +.. _image: https://clearlinux.org/downloads diff --git a/_sources/guides/maintenance/enable-systemd-boot-menu.rst.txt b/_sources/guides/maintenance/enable-systemd-boot-menu.rst.txt new file mode 100644 index 000000000..54d5d3a31 --- /dev/null +++ b/_sources/guides/maintenance/enable-systemd-boot-menu.rst.txt @@ -0,0 +1,23 @@ +.. _enable-systemd-boot-menu: + +Enable systemd-boot Menu +######################## + +The default installation of |CL| does not set a timeout value for the systemd-boot +bootloader. At boot time, you will not be presented with the systemd-boot menu. Without +a menu, you cannot interact with systemd-boot such as selecting a different kernel, +editing kernel command line parameters, etc. + +To set a timeout value for the systemd-boot menu, follow these steps: + +#. Boot up |CL|. + +#. Log in. + +#. Set a timeout (for example: 20 seconds). + + .. code-block:: bash + + sudo clr-boot-manager set-timeout 20 + +#. Reboot. diff --git a/_sources/guides/maintenance/enable-user-space.rst.txt b/_sources/guides/maintenance/enable-user-space.rst.txt new file mode 100644 index 000000000..e51fa59e6 --- /dev/null +++ b/_sources/guides/maintenance/enable-user-space.rst.txt @@ -0,0 +1,103 @@ +.. _enable-user-space: + +Create and enable a new user space +################################## + +This guide provides steps to complete the following basic setup tasks for +a newly installed |CL-ATTR| system: + +.. contents:: + :local: + :depth: 1 + +Create a new user +***************** + +To create a new user and set a password for that user, enter the following +commands as a root user: + +.. code-block:: bash + + useradd + passwd + +Replace the with the name of the user account you want to create +including the password for that user. The :command:`passwd` command prompts +you to enter a new password. Retype the new password for the new user +account just created. + +Add the new user to the *wheel* group +************************************* + +Before logging off as root and logging into your new user account, +enable the :command:`sudo` command for your new . + +To be able to execute all applications with root privileges, add the + to the `wheel group`_. + +#. Add to the wheel group: + + .. code-block:: bash + + usermod -G wheel -a + +#. Log out of root and into the new . + + To log off as root, enter :command:`exit`. + +#. Enter the new and the password created earlier. + + You will now be in the home directory of . + +Install and update the OS software to its current version +********************************************************* + +The |CL| software utility :ref:`swupd ` allows you to perform +system updates while reaping the benefits of upstream development. + +To update your newly installed OS, run: + +.. code-block:: bash + + sudo swupd update + +Add a bundle +************ + +Software applications are installed as bundles using the command +:command:`swupd bundle-add`. Experienced Linux users might compare swupd +to running :command:`apt-get` or :command:`yum install` for package +management. However |CL| manages packages at the level of bundles, which +are integrated stacks of packages. + +For example, the :command:`sysadmin-basic` bundle installs the majority of +applications useful to a system administrator. To install it, enter: + +.. code-block:: bash + + swupd bundle-add sysadmin-basic + +View a full list of bundles and packages installed with the `sysadmin-basic`_ +bundle. You can also view all `bundles`_ for |CL|, active or deprecated. + +Expand your knowledge of :command:`swupd` and check out our developer resources: + +* :ref:`swupd-guide` +* :ref:`developer-workstation` + +Next steps +********** + +Check out our guides and tutorials. + +* :ref:`guides` +* :ref:`tutorials` + +.. _`sysadmin-basic`: + https://github.com/clearlinux/clr-bundles/blob/master/bundles/sysadmin-basic + +.. _`bundles`: + https://github.com/clearlinux/clr-bundles/tree/master/bundles + +.. _`wheel group`: + https://en.wikipedia.org/wiki/Wheel_(Unix_term) diff --git a/_sources/guides/maintenance/fix-broken-install.rst.txt b/_sources/guides/maintenance/fix-broken-install.rst.txt new file mode 100644 index 000000000..0baa6f425 --- /dev/null +++ b/_sources/guides/maintenance/fix-broken-install.rst.txt @@ -0,0 +1,117 @@ +.. _fix-broken-install: + +Fix a broken installation +######################### + +This guide explains how to fix a broken installation of |CL-ATTR| using a live +desktop image on a USB. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +This guide assumes you have installed |CL| on a target system, but the OS +does not boot or function properly. + +The process described in this guide can only verify and fix files that +:ref:`swupd` owns in :file:`/usr` and :file:`/var`. Files outside +of this path, such as :file:`/home/`, :file:`/etc`, etc., cannot be +repaired by this process. + +Prerequisites +************* + +* Download and burn the live desktop image on a USB. + See :ref:`bare-metal-install-desktop` for instructions. + +Boot a live desktop image to fix target system +********************************************** + +#. Boot the |CL| live desktop image. + +#. Select |CL| in the boot menu. + +Mount root partition, verify, and fix +************************************* + +#. Ensure the system is connected to the Internet in order to access the + the |CL| update server. + +#. Open a terminal window. + +#. Find the |CL| root partition by using the :command:`lsblk` command with + these options: ``-o NAME,LABEL,PARTTYPE,PARTLABEL``. + + .. code-block:: bash + + lsblk -o NAME,LABEL,PARTTYPE,PARTLABEL + + Example output: + + .. code-block:: console + :emphasize-lines: 9 + + NAME SIZE LABEL PARTTYPE PARTLABEL + /dev/loop0 643.6M + /dev/sda 14.3G CLR_ISO + ├─/dev/sda1 835M CLR_ISO 0x0 + └─/dev/sda2 100M "CLEAR_EFI" 0xef + /dev/sdb 74.5G + ├─/dev/sdb1 142M boot c12a7328-f81f-11d2-ba4b-00a0c93ec93b EFI + ├─/dev/sdb2 244M swap 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f linux-swap + └─/dev/sdb3 74.2G root 4f68bce3-e8cd-4db1-96e7-fbcaf984b709 / + + In the example above, ``/dev/sdb3/`` is the root partition. + +#. Next, mount the root partition. + + .. code-block:: bash + + sudo mount /dev/sdb3 /mnt + +#. Verify that you mounted the correct root partition by verifying the content + of ``/mnt/usr/lib/os-release`` looks similar to the example below. + + .. code-block:: bash + + cat /mnt/usr/lib/os-release + + Example output: + + .. code-block:: console + + NAME="Clear Linux OS" + VERSION=1 + ID=clear-linux-os + ID_LIKE=clear-linux-os + VERSION_ID=32150 + PRETTY_NAME="Clear Linux OS" + ANSI_COLOR="1;35" + HOME_URL="https://clearlinux.org" + SUPPORT_URL="https://clearlinux.org" + BUG_REPORT_URL="mailto:dev@lists.clearlinux.org" + PRIVACY_POLICY_URL="http://www.intel.com/privacy" + +#. Next, run :command:`swupd repair` to fix any issues on the target system. + + .. code-block:: bash + + sudo swupd repair --picky --path=/mnt --statedir=/mnt/var/lib/swupd + + :ref:`Learn more about how swupd works `. + +#. After the process is complete, unmount the root partition. + + .. code-block:: bash + + sudo umount /mnt + +#. Reboot the system, remove the live desktop USB drive, + and boot into the repaired system. + + .. code-block:: bash + + sudo reboot diff --git a/_sources/guides/maintenance/hostname.rst.txt b/_sources/guides/maintenance/hostname.rst.txt new file mode 100644 index 000000000..ce0c225ca --- /dev/null +++ b/_sources/guides/maintenance/hostname.rst.txt @@ -0,0 +1,81 @@ +.. _hostname: + +Modify hostname +############### + +This guide describes how to modify and view the hostname of your |CL-ATTR| +system. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +By default, |CL| installations have a machine generated name, which is a +long string of letters and numbers. The generated name is fine for computers +but is not human-friendly. Administrators and users will often want to rename +their machines with a name that is easier to remember, type, and search +for. Renaming a machine also makes it easier to identify, by including +meaningful data in the name. The following examples show human-friendly machine +names: + +* *regression-test* +* *sally-test-box1* +* *az-bldg2-lab* + +Set your hostname +***************** + +|CL| uses the :command:`hostnamectl` command to display and modify the machine +name. :command:`hostnamectl` is part of the :command:`os-core` bundle, which +provides a basic Linux\* user space and utilities. + +This example sets the hostname to *telemetry-test-2-h15*, to identify a +|CL| telemetry test machine on the second floor at grid location H15. +Make sure to reboot after setting a new hostname. + +.. code-block:: bash + + sudo hostnamectl set-hostname telemetry-test-2-h15 + sudo reboot + +.. note:: + + There are three types of hostname: *static*, *transient*, and *pretty*. + The most common is the static hostname. Static hostnames must be between + two and 63 characters long, must start and end with a letter or number, + and may contain letters (case-insensitive), numbers, dashes, or dots. + + If the static hostname exists, it is used to generate the transient hostname, + which is maintained by the kernel. The transient hostname can be changed + by DHCP or mDNS at runtime. + + The pretty hostname is a free-form UTF8 name used for presentation to the user. + +View your hostname +****************** + +View your current hostname using the following command: + +.. code-block:: bash + + hostnamectl + +You should see output similar to: + +.. code-block:: console + + Static hostname : telemetry-test-2-h15 + Pretty hostname : telemetry-test-2-h15 + Icon name : computer-desktop + Chassis : desktop + Machine ID : 4d0d60207a904ebbab96680a51ac1339 + Boot ID : 98d3514e5a984e8cbbdf46a2f0d6b397 + Operating System : Clear Linux OS + Kernel : Linux 4.18.8-632.native + Architecture : x86-64 + + +**Congratulations!** You successfully modified the hostname of your |CL| system. diff --git a/_sources/guides/maintenance/increase-virtual-disk-size.rst.txt b/_sources/guides/maintenance/increase-virtual-disk-size.rst.txt new file mode 100644 index 000000000..f2f22719b --- /dev/null +++ b/_sources/guides/maintenance/increase-virtual-disk-size.rst.txt @@ -0,0 +1,182 @@ +.. _increase-virtual-disk-size: + +Increase Virtual Disk Size of an Image +###################################### + +|CL-ATTR| pre-built images come in different sizes, ranging from 300 MB to 20 +GB. This guide describes how to increase the disk size of your pre-built +image if you need more capacity. We will use the :ref:`KVM image` as +an example to demonstrate the process of increasing disk size and expanding +the last partition to take up the added space. + +.. contents:: + :local: + :depth: 1 + +Determine disk size and list of partitions +****************************************** + +There are two methods to find the disk size and the list of partitions of +a pre-built |CL| image. + +Method 1: Use :command:`lsblk` on the VM +======================================== + +The first method is to boot up your VM and execute the :command:`lsblk` +command as shown below: + +.. code-block:: bash + + lsblk + +An example output of the :command:`lsblk` command: + +.. code-block:: console + :emphasize-lines: 4,7 + + NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT + fd0 2:0 1 4K 0 disk + sr0 11:0 1 1024M 0 rom + vda 254:0 0 8.6G 0 disk + ├─vda1 254:1 0 510M 0 part + ├─vda2 254:2 0 33M 0 part [SWAP] + └─vda3 254:3 0 8G 0 part / + +An example of this can also be seen in Figure 1. + +Method 2: Look at the image configuration YAML file +=================================================== + +The second method to look at the image configuration YAML file that was +used to produce the image. + +For example, to find the size of the KVM image version number 31880, +follow these steps: + +#. Go to the `releases`_ repository. +#. Drill down into the `31880 > clear > config > image` directory. +#. Download and open the :file:`kvm.yaml` file. +#. Locate the `targetMedia` section. + + The example shows a total disk size of 8.54 GB, 512 MB for the EFI + partition, 32 MB for the swap partition, and 8 GB for the root partition. + + .. code-block:: console + :linenos: + :emphasize-lines: 3,9,13,18 + + targetMedia: + - name: ${bdevice} + size: "8.54G" + type: disk + children: + - name: ${bdevice}1 + fstype: vfat + mountpoint: /boot + size: "512M" + type: part + - name: ${bdevice}2 + fstype: swap + size: "32M" + type: part + - name: ${bdevice}3 + fstype: ext4 + mountpoint: / + size: "8G" + type: part + +Increase virtual disk size +************************** + +Before you can expand the last partition of your image, you must make +space available by increasing the virtual disk size. After that, you +can resize the last partition and finally resize the filesystem. +Follow these steps: + +Increase virtual disk size +========================== + +#. Shut down your VM. +#. Use the process defined by your hypervisor or cloud provider to increase + the virtual disk size of your |CL| VM. +#. Power up your VM. + +Resize the last partition of the virtual disk +============================================= + +#. Log in. +#. Open a terminal window. +#. Add the :command:`storage-utils` bundle to install the + :command:`parted` and :command:`resize2fs` tools. + + .. code-block:: bash + + sudo swupd bundle-add storage-utils + +#. Launch the :command:`parted` tool. + + .. code-block:: bash + + sudo parted + +#. In the `parted` tool, perform these steps: + + a. Press :command:`p` to print the partitions table. + #. If the warning message below is displayed, enter :command:`Fix`. + + .. code-block:: console + + Warning: Not all of the space available to :file:`/dev/sda` appears + to be used, you can fix the GPT to use all of the space (an extra ... + blocks) or continue with the current setting? + + Fix/Ignore? + + #. Enter :command:`resizepart ` where + ** is the number of the partition to modify. + #. Enter the new `End` size. + + .. note:: + + If you want a partition to take up the remaining disk space, then + enter the total size of the disk. When you print the partitions + table with the :command:`p` command, the total disk size is shown + after the :guilabel:`Disk` label. + + An example of this can be seen in Figure 1. + + #. Enter :command:`q` to exit `parted` when you are finished resizing the + partition. + + Figure 1 depicts the described steps to resize the partition of the + virtual disk from 8.5 GB to 30 GB. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/increase-virtual-disk-size/01-increase-virtual-disk-size.png + :scale: 100 % + :alt: Increase root partition size + + Figure 1: Increase root partition size + +Resize the filesystem +===================== + +#. Enter :command:`sudo resize2fs -p /dev/` where + ** is the partition that was changed in the `parted` + tool. + +#. Run :command:`lsblk` to verify that the filesystem size has increased. + + Figure 2 depicts the described steps to resize the filesystem of the virtual + disk from 8.5 GB to 30 GB. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/increase-virtual-disk-size/02-increase-virtual-disk-size.png + :scale: 100 % + :alt: Increase root filesystem with resize2fs + + Figure 2: Increase root filesystem with :command:`resize2fs` + +.. _releases: https://cdn.download.clearlinux.org/releases/ diff --git a/_sources/guides/maintenance/query-upstream.rst.txt b/_sources/guides/maintenance/query-upstream.rst.txt new file mode 100644 index 000000000..65bd614f9 --- /dev/null +++ b/_sources/guides/maintenance/query-upstream.rst.txt @@ -0,0 +1,226 @@ +.. _query-upstream: + +Query package info from upstream repository +########################################### + +This guide describes how to query package information from the |CL| upstream +repositories. This guide is intended for developers and advanced users. + +.. contents:: + :local: + :depth: 1 + :backlinks: top + +Overview +******** + +In |CL-ATTR|, the :ref:`swupd` tool manages software +dependencies and installs bundles instead of packages. Although a bundle is +a collection of one or more packages, |CL| does not work with packages on +the client side. However, on the upstream/factory side, |CL| does work with +packages using a process called *mixing*. + +Currently, :command:`swupd` does not report which packages are installed, +provide package version information, or return other package details. This +guide describes a method for retrieving package information from the |CL| +upstream repositories using :abbr:`DNF(Dandified Yum)` commands. + +Prerequisites +************* + +This guide assumes you have installed |CL| on your host system. +For detailed instructions on installing |CL| on a bare metal system, visit +the :ref:`bare metal installation guide `. + +Before you install any new packages, update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +Configure DNF +************* + +#. Install the DNF bundle with the command: + + .. code-block:: bash + + sudo swupd bundle-add dnf + +#. Create a :file:`dnf.conf` file with the commands: + + .. code-block:: bash + + sudo mkdir -p /etc/dnf + sudo curl -L https://github.com/clearlinux/common/raw/master/conf/dnf.conf --output /etc/dnf/dnf.conf + + +#. Edit the :file:`/etc/dnf/dnf.conf` file and set the **baseurl** variable + for binary and source RPMs as shown in lines 3 and 9 in the following + example. + + .. code-block:: bash + :linenos: + :emphasize-lines: 3,9 + + [clear] + name=Clear + baseurl=https://cdn.download.clearlinux.org/releases/$releasever/clear/x86_64/os/ + enabled=1 + gpgcheck=0 + [clear-source] + name=Clear sources + failovermethod=priority + baseurl=https://cdn.download.clearlinux.org/releases/$releasever/clear/source/SRPMS/ + enabled=1 + gpgcheck=0 + +#. Initialize the RPM database with the command: + + .. code-block:: bash + + sudo rpm --initdb + + +DNF command usage examples +************************** + +.. contents:: :local: + :depth: 1 + :backlinks: top + +List all binary and source RPMs in the current release +====================================================== + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=current + +Sample output: + +.. code-block:: console + + Clear 5.1 MB/s | 13 MB 00:02 + Clear sources 1.8 MB/s | 1.7 MB 00:00 + AVB-AudioModules-0:4.1.0-1.src + AVB-AudioModules-0:4.1.0-1.x86_64 + AVB-AudioModules-data-0:4.1.0-1.x86_64 + AVB-AudioModules-dev-0:4.1.0-1.x86_64 + AVB-AudioModules-lib-0:4.1.0-1.x86_64 + AVB-AudioModules-license-0:4.1.0-1.x86_64 + AVBStreamHandler-0:1.1.0-21.src + AVBStreamHandler-0:1.1.0-21.x86_64 + AVBStreamHandler-abi-0:1.1.0-21.x86_64 + AVBStreamHandler-bin-0:1.1.0-21.x86_64 + AVBStreamHandler-data-0:1.1.0-21.x86_64 + AVBStreamHandler-dev-0:1.1.0-21.x86_64 + AVBStreamHandler-lib-0:1.1.0-21.x86_64 + AVBStreamHandler-license-0:1.1.0-21.x86_64 + ... + + +Show version information for a package in current release +========================================================= + +This example queries version information for the zstd package. + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=current zstd + +Sample output: + +.. code-block:: console + + Last metadata expiration check: 0:02:30 ago on Tue 16 Jul 2019 03:03:34 PM PDT. + zstd-0:1.4.0-46.src + zstd-0:1.4.0-46.x86_64 + + +Show version information for a package in a specific release +============================================================ + +This example queries version information for the zstd package in release +21000. + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=21000 zstd + +Sample output: + +.. code-block:: console + + Clear + 2.7 MB/s | 3.9 MB 00:01 + Clear sources + 628 kB/s | 559 kB 00:00 + zstd-0:1.3.3-20.src + zstd-0:1.3.3-20.x86_64 + +Show only version and release information for a package in a specific release +============================================================================= + +This example queries version and release information for the zstd package in +release 15000. + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=15000 --qf="%{VERSION}\n%{RELEASE}" zstd + +Sample output: + +.. code-block:: console + + Clear + 3.4 MB/s | 3.9 MB 00:01 + Clear sources + 345 kB/s | 528 kB 00:01 + 1.1.4 + 5 + +Show the binary package for a specified binary file +=================================================== + +This example returns the binary package that contains the +:file:`/usr/bin/zip` binary file. + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=current --whatprovides /usr/bin/zip + +Sample output: + +.. code-block:: console + + Last metadata expiration check: 0:04:47 ago on Tue 16 Jul 2019 03:03:34 PM PDT. + zip-bin-0:3.0-23.x86_64 + +Show the source package for a specified binary file +=================================================== + +This example returns the source package that contains the +:file:`/usr/bin/zip` binary file. + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=current --whatprovides /usr/bin/zip --srpm + +Sample output: + +.. code-block:: console + + Last metadata expiration check: 0:05:50 ago on Tue 16 Jul 2019 03:03:34 PM PDT. + zip-0:3.0-23.src diff --git a/_sources/guides/maintenance/resource-limits.rst.txt b/_sources/guides/maintenance/resource-limits.rst.txt new file mode 100644 index 000000000..670aff68f --- /dev/null +++ b/_sources/guides/maintenance/resource-limits.rst.txt @@ -0,0 +1,114 @@ +.. _resource-limits: + +Resource limits +############### + +Linux systems employ limiting or quota mechanisms to provide quality of +service for system resources and contain rogue processes. + +These limits are layered at the system-level and user-level. If these limits +need to be modified, it is useful to understand the different limit +configurations. + +.. contents:: :local: + :depth: 2 + + +System-wide limits +================== + +Some global resource limits are implemented in the Linux kernel and are +controllable with kernel parameters. + +For example, a global limit for the maximum number of open files is set with +the *fs.file-max* parameter. This limit applies to all processes and users an +cannot be exceeded other limit values. + +Checking limit +************** + +You can check a current value with :command:`sysctl -n `. For +example: + +.. code:: bash + + sysctl -n fs.file-max + + +This *fs.file-max* value is set intentionally high on |CL| systems by +default. You can check the maximum value supported by the system with: + +.. code:: + + cat /proc/sys/fs/file-max + + +Overriding limit +**************** + +You can override a value with :command:`sysctl -w `. For +example: + +.. code:: bash + + sudo sysctl -w fs.file-max= + +If needed permanently, the value can be set by creating a +:file:`/etc/sysctl.d/*.conf` file (see :command:`man sysctl.d` for details). +For example: + +.. code:: bash + + sudo mkdir -p /etc/sysctl.d/ + + sudo tee /etc/sysctl.d/fs-file-max.conf > /dev/null <<'EOF' + fs.file-max= + EOF + + + + + +Per-user limits +=============== + +For processes not managed by systemd, resource limits can be set for PAM +logins on a per-user basis with upper and lower limits in the +:file:`/etc/security/limits.conf` file. + +You can set temporary values and check the current values with the +:command:`ulimit` command. For example, to change the soft limit of maximum +number of open file descriptors for the current user: + +.. code:: + + ulimit -S -n + +See :command:`man limits.conf` for details. + + +Service limits +============== + +Resource limits for services started with systemd units do not follow normal +user limits because the process is started in a separate `Linux control group +(cgroup) `_ Linux +cgroups associate related process groups and provide resource accounting. + +Resource limits for individual systemd services can be controlled inside their +unit files or its configuration drop-in directory with the resource Limit +directives. See `process properties section of the systemd.exec man page +`_. + +Resource limits for all systemd services can be controlled with a file in the +:file:`/etc/systemd/system.conf.d/` directory. For example, to have no +restriction on the number of open files: + +.. code:: + + sudo mkdir -p /etc/systemd/system.conf.d/ + + sudo tee /etc/systemd/system.conf.d/50-nfiles.conf > /dev/null <<'EOF' + [Manager] + DefaultLimitNOFILE=infinity + EOF diff --git a/_sources/guides/maintenance/restart.rst.txt b/_sources/guides/maintenance/restart.rst.txt new file mode 100644 index 000000000..ddd4a17ce --- /dev/null +++ b/_sources/guides/maintenance/restart.rst.txt @@ -0,0 +1,164 @@ +.. _restart: + +Restart system services after an OS update +########################################## + +This guide describes how to use the :command:`clr-service-restart` tool. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +|CL-ATTR| includes a :command:`clr-service-restart` tool that shows which +system daemons require a restart. + +:command:`clr-service-restart` reads various files in the :file:`procfs` +filesystem provided by the kernel and relies on :command:`systemd` to +determine which services to restart. + + +How it works +************ + +:command:`clr-service-restart` implements a whitelist to identify which +daemons can be restarted. As a system administrator, you can customize the +default |CL| OS whitelist using :command:`allow` or :command:`disallow` options +for restarting system services. When a software update occurs, +:command:`clr-service-restart` consults the whitelist to see if a service daemon +is allowed to be restarted or not. + + +Basic options +************* + +:command:`clr-service-restart` has three basic options: :command:`allow`, +:command:`disallow`, and :command:`default`. + +allow +===== + +The :command:`allow` option identifies a daemon to restart after an OS software +update. The :command:`clr-service-restart` daemon creates a symlink in +:file:`/etc/clr-service-restart` as a record. The example below tells +:command:`clr-service-restart` to restart the *tallow* daemon after an +OS software update. + +.. code-block:: bash + + sudo clr-service-restart allow tallow.service + +disallow +======== + +The :command:`disallow` option tells :command:`clr-service-restart` not to +restart the specified daemon even if the OS defaults permit the daemon to be +restarted. The :command:`clr-service-restart` daemon creates a symlink in +:file:`/etc/clr-service-restart` that points to :file:`/dev/null` as a +record. The example below tells :command:`clr-service-restart` not to +restart the *rngd* daemon after an OS software update. + +.. code-block:: bash + + sudo clr-service-restart disallow rngd + +default +======= + +The :command:`default` option makes :command:`clr-service-restart` revert back +to the OS defaults and delete any symlink in :file:`/etc/clr-service-restart`. +The example below tells :command:`clr-service-restart` to restart *rngd* +automatically again, because *rngd* is whitelisted for automatic service +restarts by default in |CL|. + +.. code-block:: bash + + sudo clr-service-restart default rngd + +Monitor options +*************** + +:command:`clr-service-restart` works in the background and is invoked with +:command:`swupd` automatically. Review the journal output to verify that +services are restarted after an OS software update. + +If you pass both options (:command:`-a` and :command:`-n`) described below, +:command:`clr-service-restart` displays a complete list of system services +that require a restart. Use both options to verify that all desired daemons +are restarted. + + +-n option +========= + +The :command:`-n` option makes :command:`clr-service-restart` perform no restarts. +Instead it displays the services that could potentially be restarted. When used, +:command:`clr-service-restart` outputs a list of messages showing: + +* Which service needs a restart. +* What unit it is. +* Why it needs a restart. +* Which command is required to restart the unit. + +-a option +========= + +The :command:`-a` option makes :command:`clr-service-restart` consider all system +services, not only the ones that are whitelisted. Because the default whitelist +in |CL| is relatively short, you can use this option to restart all impacted +services when you log in on the system. + +Example +******* + +In the example below, :command:`clr-service-restart` is invoked with both the +:command:`-a` and :command:`-n` options, which displays a complete list of system +services that require a restart. + +Command: + +.. code-block:: bash + + sudo clr-service-restart -a -n + +Sample output: + +.. code-block:: console + + upower.service: needs a restart (a library dependency was updated) + /usr/bin/systemctl --no-ask-password try-restart upower.service + NetworkManager.service: needs a restart (a library dependency was + updated) + /usr/bin/systemctl --no-ask-password try-restart NetworkManager.service + .... + +Telemetry +********* + +:command:`clr-service-restart` may cause problems such as a short service +outage when a daemon is being restarted, or if a daemon fails to properly +restart. To minimize issues, :command:`clr-service-restart` creates a +telemetry record and sends it to the optional |CL| telemetry service if both +conditions below are met: + +* If a unit fails to automatically restart after an OS update. +* If that unit resides in the system location :file:`/usr/lib/systemd/system`. + +If you do not install the |CL| telemetrics bundle, the data is discarded. If +you install the telemetrics bundle and you opt to send telemetry, then the +system unit name is sent to the |CL| telemetry service. We evaluate the +report and update the whitelist to remove services that are not safe to +restart. + + +Conclusion +********** + +The |CL| team enjoys coming up with simple and efficient solutions to make +your work easier. We made a GitHub\* project of :command:`clr-service-restart` +and we invite you to look at the code, share your thoughts, and work with us +on improving the project. You can find the project at: + +https://github.com/clearlinux/clr-service-restart diff --git a/_sources/guides/maintenance/validate-signatures.rst.txt b/_sources/guides/maintenance/validate-signatures.rst.txt new file mode 100644 index 000000000..f9d2fd21c --- /dev/null +++ b/_sources/guides/maintenance/validate-signatures.rst.txt @@ -0,0 +1,139 @@ +.. _validate-signatures: + +Validate signatures +################### + + +This guide describes how to validate the contents of a |CL-ATTR| image. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Validating the contents of an image is a manual process and is the same process +that :ref:`swupd-guide` performs internally. + +|CL| offers a way to validate the content of an image or an update. All +validation of content works by creating and signing a hash. A valid signature +creates a chain of trust. A broken chain of trust, seen as an invalid +signature, means the content is not valid. + + +.. _image-content-validation: + +Image content validation +************************ + +In the steps below, we used the installer image of the latest release +of |CL|. You may use any image of |CL| you choose. + +#. Download the image, the signature of the SHA512 sum of the image, and the + |CL| certificate used for signing the SHA512 sum. + + .. code-block:: console + + # Image + curl -O https://cdn.download.clearlinux.org/current/clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz + # Signature of SHA512 sum of image + curl -O https://cdn.download.clearlinux.org/current/clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz-SHA512SUMS.sig + # Certificate + curl -O https://cdn.download.clearlinux.org/releases/$(curl https://cdn.download.clearlinux.org/latest)/clear/ClearLinuxRoot.pem + +#. Generate the SHA256 sum of the |CL| certificate. + + .. code-block:: console + + sha256sum ClearLinuxRoot.pem + +#. Ensure the generated SHA256 sum of the |CL| certificate matches the + following SHA256 sum to verify the integrity of the certificate. + + .. code-block:: console + + 4b0ca67300727477913c331ff124928a98bcf2fb12c011a855f17cd73137a890 ClearLinuxRoot.pem + +#. Generate the SHA512 sum of the image and save it to a file. + + .. code-block:: console + + sha512sum clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz > sha512sum.out + +#. Ensure the signature of the SHA512 sum of the image was created using the + |CL| certificate. This confirms that the image is trusted and has not + been modified. + + .. code-block:: console + + openssl smime -verify -purpose any -in clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz-SHA512SUMS.sig -inform der -content sha512sum.out -CAfile ClearLinuxRoot.pem + + .. note:: + + The :command:`-purpose any` option is required when using OpenSSL 1.1. + If you use an earlier version of OpenSSL, omit this option to perform + signature validation. The :command:`openssl version` command may be used + to determine the version of OpenSSL in use. + +#. The output should contain "Verification successful". If the output + contains "bad_signature" anywhere, then the image is not trustworthy. + +Update content validation +************************* + +**swupd** validates all update content automatically before applying the +update content. The process swupd follows internally is illustrated here +with manual steps using the latest |CL| release. There is no need to perform +these steps manually when performing a :command:`swupd update`. + +#. Download the :abbr:`MoM (top-level manifest)`, the signature of the MoM, + and the Swupd certificate used for signing the signature of the MoM. + + .. code-block:: console + + # MoM + curl -O https://cdn.download.clearlinux.org/update/$(curl https://cdn.download.clearlinux.org/latest)/Manifest.MoM + # Signature of MoM + curl -O https://cdn.download.clearlinux.org/update/$(curl https://cdn.download.clearlinux.org/latest)/Manifest.MoM.sig + # Swupd certificate + curl -O https://cdn.download.clearlinux.org/releases/$(curl https://cdn.download.clearlinux.org/latest)/clear/Swupd_Root.pem + +#. Generate the SHA256 sum of the swupd certificate. + + .. code-block:: console + + sha256sum Swupd_Root.pem + +#. Confirm that the generated SHA256 sum of the swupd certificate matches the + SHA256 sum shown below to verify the integrity of the certificate. + + .. code-block:: console + + ff06fc76ec5148040acb4fcb2bc8105cc72f1963b55de0daf3a4ed664c6fe72c Swupd_Root.pem + +#. Confirm that the signature of the MoM was created using the Swupd + certificate. This signature validates the update content is trustworthy and + has not been modified. + + .. code-block:: console + + openssl smime -verify -purpose any -in Manifest.MoM.sig -inform der -content Manifest.MoM -CAfile Swupd_Root.pem + + .. note:: + + The :command:`-purpose any` option is required when using OpenSSL 1.1. + If you use an earlier version of OpenSSL, omit this option to perform + signature validation. The :command:`openssl version` command may be used + to determine the version of OpenSSL in use. + + .. note:: + + The SHA512 sum of the MoM is not generated and then signed. Instead, the + MoM is signed directly because it is small in size compared to an image of + |CL|. + +#. The output should contain "Verification successful". If the output + contains "bad_signature" anywhere, then the MoM cannot be trusted. + Because the MoM contains a list of hashes for bundle manifests, if the MoM + cannot be trusted, then the bundle content cannot be trusted. diff --git a/_sources/guides/network/assign-static-ip.rst.txt b/_sources/guides/network/assign-static-ip.rst.txt new file mode 100644 index 000000000..6c259afee --- /dev/null +++ b/_sources/guides/network/assign-static-ip.rst.txt @@ -0,0 +1,184 @@ +.. _assign-static-ip: + +Assign a static IP address +########################## + + +This guide explains how to assign a static IP address. This may be helpful in +scenarios such as a network with no DHCP server. + +.. contents:: + :local: + :depth: 1 + +Identify which program is managing the interface +************************************************ + +New installations of |CL-ATTR| use NetworkManager as the default network +interface manager for all network connections. + +.. note:: + + * The cloud |CL| images continue to use `systemd-networkd` to manage + network connections. + + * In earlier |CL| versions, `systemd-network` was used to manage Ethernet + interfaces and NetworkManager was used for wireless interfaces. + + +Before defining a configuration for assigning a static IP address, verify +which program is managing the network interface. + +#. Check the output of :command:`nmcli device` to see if NetworkManager is + managing the device. + + .. code-block:: bash + + nmcli device status + + If the STATE column for the device shows *connected* or *disconnected*, the + network configuration is being managed by NetworkManager, then use the + instructions for :ref:`using NetworkManager `. + + If the STATE column for the device shows *unmanaged*, then check if the + device is being managed by systemd-networkd. + + +#. Check the output of :command:`networkctl list` to see if + `systemd-networkd` is managing the device. + + .. code-block:: bash + + networkctl list + + If the SETUP column for the device shows *configured*, the network + configuration is being managed by `systemd-networkd`, then use the + instructions for :ref:`using systemd-networkd `. + + +.. _nm-static-ip: + +Using NetworkManager +******************** + +Network connections managed by NetworkManager are stored as files with the +:file:`.nmconnection` file extension in the +:file:`/etc/NetworkManager/system-connections/` directory. + +A few tools exists to aid to manipulate network connections managed by +NetworkManager: + +* nmcli - a command-line tool + +* nmtui - a text user interface that provides a pseudo graphical menu in the + terminal + +* nm-connection-editor - a graphical user interface + +The method below uses the command line tool nmcli to modify network +connection. + + +#. Identify the existing connection name: + + .. code:: bash + + nmcli connection show + + Sample output: + + .. code:: bash + + NAME UUID TYPE DEVICE + Wired connection 1 00000000-0000-0000-0000-000000000000 802-3-etherneten01 + + If a connection does not exist, create it with the + :command:`nmcli connection add` command. + + +#. Modify the connection to use a static IP address. Replace the variables in + brackets with the appropriate values. Replace *[CONNECTION_NAME]* with the + NAME from the command above. + + .. code:: + + sudo nmcli connection modify "[CONNECTION_NAME]" \ + ipv4.method "manual" \ + ipv4.addresses "[IP_ADDRESS]/[CIDR_NETMASK]" \ + ipv4.gateway "[GATEWAY_IP_ADDRESS]" \ + ipv4.dns "[PRIMARY_DNS_IP],[SECONDARY_DNS_IP]" + + + See the `nmcli developer page `_ for more + configuration options. For advanced configurations, the + :file:`/etc/NetworkManager/system-connections/*.nmconnection`. can be edited + directly. + + +#. Restart the NetworkManager server to reload the DNS servers: + + .. code-block:: bash + + sudo systemctl restart NetworkManager + + +#. Verify your static IP address details have been set: + + .. code-block:: bash + + nmcli + + + +.. _networkd-static-ip: + +Using systemd-networkd +********************** + +Network connections managed by systemd-networkd are stored as files with the +:file:`.network` file extension the :file:`/etc/systemd/network/` directory. + +Files to manipulate network connections managed by systemd-networkd must be +created manually. + +#. Create the :file:`/etc/systemd/network` directory if it does not already exist: + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/network + +#. Create a :file:`.network` file and add the following content. Replace the + variables in brackets with the appropriate values. Replace *[INTERFACE_NAME]* + with LINK from the output of the :command:`networkctl list` command that was + run previously. + + .. code-block:: bash + + sudo $EDITOR /etc/systemd/network/70-static.network + + [Match] + Name=[INTERFACE_NAME] + + [Network] + Address=[IP_ADDRESS]/[CIDR_NETMASK] + Gateway=[GATEWAY_IP_ADDRESS] + DNS=[PRIMARY_DNS_IP] + DNS=[SECONDARY_DNS_IP] + + See the `systemd-network man page + `_ + for more configuration options. + +#. Restart the `systemd-networkd` service: + + .. code-block:: bash + + sudo systemctl restart systemd-networkd + + +#. Verify your static IP address details have been set: + + .. code-block:: bash + + networkctl status + diff --git a/_sources/guides/network/dpdk.rst.txt b/_sources/guides/network/dpdk.rst.txt new file mode 100644 index 000000000..5072c4ad0 --- /dev/null +++ b/_sources/guides/network/dpdk.rst.txt @@ -0,0 +1,352 @@ +.. _dpdk: + +Use DPDK to send packets between platforms +########################################## + +This guide describes how to send packets between two platforms. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Figure 1 shows how to send packets between two platforms in a simple +configuration. The example uses the :abbr:`Data Plane Development Kit (DPDK)`, +which is a set of libraries, drivers, sample applications, and tools for fast +packet processing. + +.. figure:: ./figures/pktgen_lw3fd.png + :align: center + :alt: Platform A and B + + Figure 1: Environment for l3fwd DPDK application + +This example uses the following DPDK components: + +* pktgen: Traffic generator. See `pktgen`_ documentation for details. +* l3fwd: Layer 3 forwarding example application. See + `l3fwd`_ documentation for details. + +Prerequisites +************* + +* Two platforms using |CL-ATTR| release `31130`_ or higher. +* Both images must include the :command:`kernel-native` bundle. +* Install the following packages: + + .. code-block:: bash + + sudo swupd bundle-add network-basic-dev dpdk devpkg-dpdk + +* Each platform must have at least one :abbr:`NIC (Network Interface Card)`. + Check the `DPDK project`_ for the list of supported `dpdk.org NICs`_. + +* Two network cables. + +Install dpdk and build l3fwd example (Platform B) +************************************************* + +#. Change to the :file:`l3fwd` example directory. + + .. code-block:: bash + + sudo cd /usr/share/dpdk/examples/l3fwd + +#. Assign :envvar:`RTE_SDK` variable to the makefiles path. + + .. code-block:: bash + + sudo export RTE_SDK=/usr/share/dpdk/ + +#. Assign :envvar:`RTE_TARGET` variable to the location of the gcc\* config + file. + + .. code-block:: bash + + sudo export RTE_TARGET=x86_64-native-linux-gcc + +#. Build the `l3fwd` application and add the configuration header to + the :makevar:`CFLAGS` variable. + + .. code-block:: bash + + sudo make + + +Build pktgen (Platform A) +************************* + +#. Download the `pktgen tar package`_ v3.1.2 or newer. + +#. Decompress packages and move to uncompressed source directory. + +#. Assign :envvar:`RTE_SDK` variable to the path where makefiles are located. + + .. code-block:: bash + + sudo export RTE_SDK=/usr/share/dpdk/ + +#. Assign :envvar:`RTE_TARGET` to the location of the gcc config file. + + .. code-block:: bash + + sudo export RTE_TARGET=x86_64-native-linux-gcc + +#. Build the `pktgen` project and set the :makevar:`CONFIG_RTE_BUILD_SHARED_LIB` variable + to "n". + + .. code-block:: bash + + sudo make CONFIG_RTE_BUILD_SHARED_LIB=n + +Bind NICs to DPDK kernel drivers (Platforms A and B) +**************************************************** + +The `l3fwd` application uses two NICs. The DPDK includes tools for binding +NICs to DPDK modules to run DPDK applications. + +#. Load the DPDK I/O kernel module. + + .. code-block:: bash + + sudo modprobe vfio-pci + +#. Check the NIC status to determine which network cards are not + busy. When another application is using them, the status shows "Active", + and those NICs cannot be bound. + + .. code-block:: bash + + sudo dpdk-devbind --status + +#. Bind two available NICs. The general syntax for binding is: + :command:`dpdk-devbind --bind=vfio-pci `. + A working example is shown below: + + .. code-block:: bash + + sudo dpdk-devbind --bind=vfio-pci 01:00.0 + +#. Check the NIC status to verify that the NICs are bound correctly. If + successful, `drv` displays the value `igb_uio`, which confirms + that the NICs are using the DPDK modules. + + +Set hugepages (Platforms A and B) +********************************* + +|CL| supports `hugepages` for the large memory pool allocation used for +packet buffers. + +#. Set the number of hugepages. + + .. code-block:: bash + + echo 1024 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages + +#. Allocate pages on NUMA machines. + + .. code-block:: bash + + echo 1024 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages + echo 1024 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages + +#. Make memory available for DPDK. + + .. code-block:: bash + + sudo mkdir -p /mnt/huge $ mount -t hugetlbfs nodev /mnt/huge + + For more information, refer to the `DPDK guide`_ System Requirements + section. + + +Set up the physical environment (Platforms A and B) +*************************************************** + +Connect the NICs on Platform A to the NICs on Platform B using the network +cables as shown in figure 2. + +.. figure:: ./figures/pyshical_net.png + + Figure 2: Physical network environment + + +Run l3fwd application (Platform B) +********************************** + +The `l3fwd` application is one of the DPDK examples available when you +install the :file:`dpdk-dev` bundle. `l3fwd` forwards packets from one +NIC to another. For details, refer to the `l3fwd`_ documentation. + +#. Open the l3fwd example directory. + + .. code-block:: bash + + sudo cd /usr/share/dpdk/examples/l3fwd + +#. **This step is very important.** + + #. DPDK needs poll mode drivers to operate. + #. Poll mode drivers are shared objects in :file:`/usr/lib64`. + #. See the full list of supported NICs at `dpdk.org NICs`_. + #. You must know which kernel module each NIC is using and choose a poll + mode driver that corresponds to your NICs. + +#. NIC binding and `pktgen` configuration depends upon network use cases and + available system resources. Use the :command:`-d` flag to set the poll mode + driver. + + The following example assumes that the NICs use the `e1000` network driver + and the `e1000` poll mode driver. The :file:`librte_pmd_e1000.so` is + located in :file:`/usr/lib64` in |CL|. + + .. code-block:: bash + + sudo ./build/l3fwd -c 0x3 -n 2 -d librte_pmd_e1000.so -- -p 0x3 --config="(0,0,0),(1,0,1)" + +#. The `l3fwd` application shows port initialization details at startup. + After port 0 initialization completes, `l3fwd` shows a MAC address and + information for port 1. + + Save the MAC address for configuring the `pktgen` project. + +Run pktgen application (Platform A) +*********************************** + +`pktgen` is a network traffic generator included in the DPDK. + +#. `pktgen` configuration depends upon the network setup and the + available system resources. The following example shows a basic + configuration. + + .. code-block:: bash + + sudo ./app/app/x86_64-native-linux-gcc/pktgen -c 0xf -n 4 -- -p 0xf -P -m "1.0, 2.1" + +#. Enable active colorful output (optional). + + .. code-block:: bash + + Pktgen> theme enable + +#. Use the MAC addresses shown by the `l3fwd` application during initialization. + The command to set the MAC addresses in `pktgen` has the format: + + .. code-block:: bash + + set mac + + Here is a working example: + + .. code-block:: bash + + Pktgen> set mac 0 00:1E:67:CB:E8:C9 + Pktgen> set mac 1 00:1E:67:CB:E8:C9 + +#. Send packets. + + .. code-block:: bash + + Pktgen> start 0-1 + +For more details, see the `pktgen`_ documentation. + +Appendix A: Use pass-through for virtual machines +************************************************* + +This section explains how to set up a virtual environment where virtual +machines control the NICs on the host. + +#. Create a new directory and move to it. + +#. Download or create a :file:`start_qemu.sh` script for running a kvm virtual + machine: + + .. code-block:: bash + + sudo curl -O https://cdn.download.clearlinux.org/image/start_qemu.sh + +#. Download a bare-metal image of |CL| and rename it as :file:`clear.img`. + +#. Look for an Ethernet\* device entry that contains vendor and device ID: + + .. code-block:: bash + + sudo lspci -nn | grep Ethernet + + An example output: + + .. code-block:: console + + 03:00.0 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] + + where `03:00.0` is the device entry and `8086:1521` is the `vendor:device + ID`. Record this information, because you need it to unbind the NICs from a + host. + + +#. Unbind the NICs from the host to do pass-through with virtual machines. |CL| + supports this action. The commands take the format: + + .. code-block:: bash + + echo "vendor device_ID" > /sys/bus/pci/drivers/pci-stub/new_id + echo "entry for device" > /sys/bus/pci/drivers/igb/unbind + echo "entry for device" > /sys/bus/pci/drivers/pci-stub/bind + echo "vendor device_ID" > /sys/bus/pci/drivers/pci-stub/remove_id + + Here is a working example: + + .. code-block:: bash + + echo "8086 1521" | sudo tee /sys/bus/pci/drivers/pci-stub/new_id + echo "0000:03:00.0" | sudo tee /sys/bus/pci/drivers/igb/unbind + echo "0000:03:00.0" | sudo tee /sys/bus/pci/drivers/pci-stub/bind + echo "8086 1521" | sudo tee /sys/bus/pci/drivers/pci-stub/remove_id + +#. Assign the unbound NICs to the KVM virtual machine (guest). + Modify the :file:`start_qemu.sh` script in `qemu-system-x86_64` arguments, and + add the lines with the host's NICs information in the format: + + .. code-block:: bash + + -device pci-assign,host="",id=passnic0,addr=03.0 + -device pci-assign,host="",id=passnic1,addr=04.0 + + Here is a working example: + + .. code-block:: bash + + -device pci-assign,host=03:00.0,id=passnic0,addr=03.0 \ + -device pci-assign,host=03:00.3,id=passnic1,addr=04.0 \ + +#. Add more NUMA machines to the virtual machine by adding lines to the + Makefile boot target in the format: + + .. code-block:: bash + + -numa node,mem=,cpus= + + Here is a working example for a virtual machine with 4096 memory and four + CPUs: + + .. code-block:: bash + + -numa node,mem=2048,cpus=0-1 \ + -numa node,mem=2048,cpus=2-3 \ + + .. note:: Each NUMA machine must use the same quantity of memory. + +#. Run the :file:`start_qemu.sh` script. + + +.. _31130: https://cdn.download.clearlinux.org/releases/31130/clear/ +.. _DPDK project: http://dpdk.org +.. _dpdk.org NICs: http://dpdk.org/doc/nics +.. _pktgen tar package: http://dpdk.org/browse/apps/pktgen-dpdk/refs +.. _DPDK guide: http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html +.. _l3fwd: http://dpdk.org/doc/guides/sample_app_ug/l3_forward.html +.. _pktgen: http://pktgen-dpdk.readthedocs.io/en/latest/index.html diff --git a/_sources/guides/network/firewall.rst.txt b/_sources/guides/network/firewall.rst.txt new file mode 100644 index 000000000..fe8fd4465 --- /dev/null +++ b/_sources/guides/network/firewall.rst.txt @@ -0,0 +1,201 @@ +.. _firewall: + +Firewall +######### + +Firewalls control access to and from systems based on network packet +attributes like IP address, port, payload and more. + +The `Netfilter `_ framework in the Linux kernel +performs packet filtering and provides the means for implementing a software +firewall in Linux. |CL-ATTR| has a couple different firewall front-end options +for managing the Linux firewall. + + +.. contents:: :local: + :depth: 2 + + +Default ruleset +*************** + +|CL| does not impose a firewall policy out of the box. All traffic is allowed +inbound and all traffic is allowed outbound. However, `tallow`_ is installed +by default and may dynamically create a rule temporarily restricting access +from external hosts. + +.. warning:: + + Changing firewall configuration can cause abrupt network disconnection. If + this happens on a remote host, local recovery may be required. + + Be sure to test your firewall configuration before committing it + permanently to ensure your system will remain accessible remotely, if + required. + +Firewall software +***************** + +iptables +======== + +:command:`iptables` is a well-known user-space administration tool for +configuring IPv4 Linux firewall rules. :command:`ip6tables` is the +complimentary tool for configuring IPv6 Linux firewall rules. + +Below is information on using :command:`iptables` on |CL|: + +#. Make sure the *iptables* bundle is installed + + .. code:: bash + + sudo swupd bundle-add iptables + + +#. Define new iptables rules/chains for the running configuration using the + :command:`iptables` command. See :command:`man iptables` for iptables + concepts and configuration options. + + Below is a common restrictive firewall configuration which denies all + incoming connections, unless the connection was initiated by the host. + + .. code:: bash + + # Set default chain policies + sudo iptables -P INPUT DROP + sudo iptables -P FORWARD DROP + sudo iptables -P OUTPUT ACCEPT + + # Accept on localhost loopback device + sudo iptables -A INPUT -i lo -j ACCEPT + sudo iptables -A OUTPUT -o lo -j ACCEPT + + # Allow established sessions to receive traffic + sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT + + +#. Test the running firewall configuration to make sure it behaving as + you expect. + +#. Run the *iptables-save* service to make the running configuration + persistent. This will perform a one-time save of the running configuration + to :file:`/etc/iptables.rules` : + + .. code:: bash + + sudo systemctl start iptables-save + +#. Enable the *iptables-resolve* service the iptables rules to be + automatically applied at boot from the :file:`/etc/iptables.rules` file: + + .. code :: bash + + sudo systemctl enable iptables-restore.service + + +ipset +===== + +`ipset `_ is a framework in the Linux kernel for +storing and efficiently indexing combinations of IP addresses, networks, +(TCP/UDP) port numbers, MAC addresses, and interface names. + +IP sets makes writing network policy rules simpler and processing them against +a large and/or changing sets of hosts more efficient. + +By themselves, IP sets do not enforce network traffic rules but can be used to +extend iptables rules for matching. It is important to note that the ipset +must be defined before a netfilter rule can match against it. + +* Running IP sets can be manipulated with the :command:`ipset` utility. + +* Custom IP sets can be stored in the :file:`/etc/ipset.conf` file + +* IP sets in :file:`/etc/ipset.conf` can be automatically applied at boot by + enabling the *ipset* service with the command :command:`sudo systemctl + enable ipset`. + +See :command:`man ipset` to learn more about using ipsets. + + +firewalld +========= + +`firewalld `_ is based on nftables, the successor to +iptables and parts of the netfilter framework. The description of firewalld +helps highlight some of the differences compared to iptables: + + firewalld provides a dynamically managed firewall with support for + network/firewall zones to define the trust level of network connections or + interfaces. It has support for IPv4, IPv6 firewall settings and for + ethernet bridges and has a separation of runtime and permanent + configuration options. It also supports an interface for services or + applications to add firewall rules directly. + +See :command:`man firewalld` for more information. + +Below is information on using :command:`firewalld` on |CL|: + +#. Install he *firewalld* bundle: + + .. code:: bash + + sudo swupd bundle-add firewalld + + +#. Disable *iptables* and *ipset* services as they conflict with firewalld: + + .. code:: + + sudo systemctl mask iptables-restore ipset + + +#. :command:`firewall-cmd` can be used to configure the running or permanent + firewall configuration. See the `firewalld documentation + `_ to learn more about + firewalld concepts and configuration options. + + Below is a common example to allow HTTPS traffic in public zones: + + .. code:: + + sudo firewall-cmd --permanent --zone=public --add-service=https + + +#. Enable the *firewalld* service the so that the firewalld daemon is + automatically started and rules applied at boot from the + :file:`/etc/firewalld/*` file: + + .. code :: bash + + sudo systemctl enable --now firewalld.service + + +#. Verify that firewalld is running: + + .. code :: bash + + sudo firewall-cmd --state + + + +Troubleshooting +*************** + +When troubleshooting connectivity issues that may be related to firewall +rules. + +* Consider restrictions at the physical network level. + +* For inbound connections, make sure your application is listening on the + network port you're expecting with :command:`lsof` or :command:`netstat`. + +* For outbound connections, make sure the destination host is responding to + the network port you're expecting with :command:`nc`. If the connection is + refused, then there may be a problem with the destination server. + +* If you're using firewalld, check the daemon status with the command: + :command:`systemctl status firewalld`. + + +.. _`tallow`: https://github.com/clearlinux/tallow diff --git a/_sources/guides/network/network-bonding.rst.txt b/_sources/guides/network/network-bonding.rst.txt new file mode 100644 index 000000000..41ba15b9f --- /dev/null +++ b/_sources/guides/network/network-bonding.rst.txt @@ -0,0 +1,130 @@ +.. _network-bonding: + +Combine multiple interfaces with network bonding +################################################ + +This guide describes how to configure systemd to use the :command:`bonding` +driver. + +Network bonding combines multiple network interfaces into a single logical +interface to provide redundancy and bandwidth aggregation. + +|CL-ATTR| includes the Linux `Bonding driver`_ and `Team driver`_ . + +The example demonstrates how to: + +* Bond all four ports of a quad-port NIC in 802.3ad mode. + +* Enable jumbo frames to optimize large data transfers on the local network. + +Your NICs and network switch must support 802.3ad mode and jumbo frames. The +example explains how to configure your NICs for both features. Your switch may +require additional configuration. See your switch documentation for details. + +.. note:: + + You must run all commands in this guide as root. + +#. Log in and get root privileges. + + .. code-block:: console + + sudo -s + +#. Create the :file:`/etc/systemd/network` directory. + + .. code-block:: bash + + mkdir -p /etc/systemd/network + + The :file:`/etc/systemd/network` directory contains configuration files and + network settings for the virtual device and its underlying physical + interfaces. + +#. Configure systemd to create a virtual network device called `bond1`. Use a + text editor to create a file named :file:`30-bond1.netdev`. + + .. code-block:: console + + [NetDev] + Name=bond1 + Kind=bond + + [Bond] + Mode=802.3ad + TransmitHashPolicy=layer3+4 + MIIMonitorSec=1s + LACPTransmitRate=fast + + Refer to the `systemd.netdev`_ manpage for :file:`30-bond1.netdev` file + syntax. This example is based on Example 9 on the manpage. Modify the + example for your configuration. + +#. Configure the slave interfaces. Create a text file named + :file:`30-bond1-enp1s0.network`. Assign the slave interfaces to the virtual + `bond1` device and use the syntax shown in `systemd.network`_. + + .. code-block:: console + + [Match] + Name=enp1s0f* + + [Network] + Bond=bond1 + + [Link] + MTUBytes=9000 + + The example bonds all four ports of a quad-port NIC as a slave of `bond1`. + The example uses a wildcard match because the NIC names are in the range + `enp1s0f0-enp1s0f3`. If your NIC names are not wildcard-compatible, create + a separate :file:`.network` file for each NIC. + + For best results, do not assign addresses or DHCP support to the individual + NICs. + + The `MTUBytes` setting enables jumbo frames of up to 9000 bytes. Your + switch may require additional configuration to support this setting. + +#. Configure the bonded interface in a file named :file:`30-bond1.network`. + + .. code-block:: console + + [Match] + Name=bond1 + + [Network] + BindCarrier=enp1s0f0 enp1s0f1 enp1s0f2 enp1s0f3 + Address=192.168.1.201/24 + + [Link] + MTUBytes=9000 + + `bond1` is a virtual interface with no physical link status. + + `BindCarrier` indicates that the `bond1` link status is determined by the + status of the listed slave devices. + + `Address` contains an IP address that you assign to the logical interface. + DHCP bonded interfaces are complex and outside the scope of this example. + + `MTUBytes` must be set to 9000 on all slave interfaces and on the bonded + interface for successful jumbo frames operation. If `MTUBytes` is not the + same on all interfaces, then the lowest value is used. + +#. Apply the new network configuration with the command: + + .. code-block:: bash + + systemctl restart systemd-networkd + + The `MTUBytes` settings do not take effect until you reboot or manually + apply the settings with a utility such as ifconfig. + +.. _Bonding driver: https://www.kernel.org/doc/Documentation/networking/bonding.txt + +.. _Team driver: https://www.kernel.org/doc/Documentation/networking/team.txt + +.. _systemd.netdev: https://www.freedesktop.org/software/systemd/man/systemd.netdev.html + +.. _systemd.network: https://www.freedesktop.org/software/systemd/man/systemd.network.html diff --git a/_sources/guides/network/openssh-server.rst.txt b/_sources/guides/network/openssh-server.rst.txt new file mode 100644 index 000000000..664ff6e3f --- /dev/null +++ b/_sources/guides/network/openssh-server.rst.txt @@ -0,0 +1,159 @@ +.. _openssh-server: + +Enable and configure SSH service +################################ + +This guide describes how to set up the SSH service. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +The :command:`openssh-server` bundle provides the OpenSSH package that +enables an SSH service in |CL-ATTR|. Remote users require an SSH service to be +able to use an encrypted login shell. The SSH daemon has all of its configuration built in and no template configuration file is present on the file system. + +|CL| enables the `sshd.socket` unit, which listens on port 22 by default +and starts the OpenSSH service as required. The first time OpenSSH starts, it +generates the server SSH keys needed for the service. + +Prerequisites +************* + +Ensure the :command:`openssh-server` bundle is installed. + +To list all bundles on your host, enter: + +.. code-block:: bash + + sudo swupd bundle-list + +To add the :command:`openssh-server` bundle, enter: + +.. code-block:: bash + + sudo swupd bundle-add openssh-server + +Change default port +******************* + +Perform the following steps to change the default listening port for the +OpenSSH service. + +#. Open the :file:`sshd.socket` file: + + .. code-block:: bash + + sudo systemctl edit sshd.socket + +#. Add the `[Socket]` section and `ListenStream` option to the sshd.socket + file as shown below. The first `ListenStream` entry removes the |CL| + default listen port value. The second `ListenStream` entry sets the new + default listen port value. In this example, we set the new default port + to 4200: + + .. code-block:: console + + [Socket] + ListenStream= + ListenStream=4200 + + + Make sure to include a new line after the last line of text in the :file:`sshd.socket` file. + +#. Verify your changes: + + .. code-block:: bash + + cat /etc/systemd/system/sshd.socket.d/override.conf + + The following output is displayed: + + .. code-block:: console + + [Socket] + ListenStream= + ListenStream=4200 + +#. Reload the systemd daemon configurations: + + .. code-block:: bash + + sudo systemctl daemon-reload + +#. Restart the sshd.socket unit: + + .. code-block:: bash + + sudo systemctl restart sshd.socket + +#. Confirm the sshd.socket unit is listening on your new port: + + .. code-block:: bash + + sudo systemctl status sshd.socket + + .. note:: + + Output should show :guilabel:`Active:` as `active(listening)`. + +Enable SFTP +*********** + +|CL| *disables* the :abbr:`SFTP (SSH File Transfer Protocol)` subsystem by +default due to security considerations. To enable the SFTP subsystem, you can +configure the :file:`/etc/ssh/sshd_config` file. + +#. Create the following file, if it does not already exist: + :file:`/etc/ssh/sshd_config` + +#. Add the the SFTP subsystem in :file:`/etc/ssh/sshd_config`: + + .. code-block:: console + + subsystem sftp /usr/libexec/sftp-server + + +Congratulations! The SFTP subsystem is enabled. You do not need to restart the sshd service. + +Enable root login +***************** + +To enable root login via SSH, perform the following steps: + + +#. Create the following file, if it does not already exist: + :file:`/etc/ssh/sshd_config` + +#. Set the configuration variable in :file:`/etc/ssh/sshd_config`: + + .. code-block:: console + + PermitRootLogin yes + +You have now enabled root login on your system. You do not need to restart the sshd service. + +Enable X11-forwarding +********************* + +X11 forwarding allows you to securely run graphical applications (that is, X +clients) over the SSH connection. This enables remote GUI apps without the need +for full VNC or remote desktop setup. To enable X11-forwarding via SSH, +perform the following steps: + +#. Create the following file, if it does not already exist: + :file:`/etc/ssh/sshd_config` + +#. Set the following configuration variables. + + .. code-block:: bash + + AllowTcpForwarding yes + X11UseLocalhost yes + X11DisplayOffset 10 + X11Forwarding yes + +You have now enabled X11-forwarding! You do not need to restart the sshd service. diff --git a/_sources/guides/network/proxy.rst.txt b/_sources/guides/network/proxy.rst.txt new file mode 100644 index 000000000..b4c1f448f --- /dev/null +++ b/_sources/guides/network/proxy.rst.txt @@ -0,0 +1,116 @@ +.. _proxy: + +Proxy Configuration +################### + +When working behind a corporate proxy server, one typically has to configure +proxy settings for applications to reach the Internet. |CL-ATTR| has +implemented an :ref:`autoproxy` feature to try and eliminate manual +configurations as much as possible. However, there are still some applications +that cannot take full advantage of the :ref:`autoproxy` feature due to their +own ways of configuring proxy settings. This guide shows you how to configure +proxy settings for some of the known applications manually. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* You have installed |CL| on your host system. + + For detailed instructions on installing |CL| on a bare metal system, visit + the :ref:`bare metal installation guide `. + +General proxy settings for many applications +============================================ + +#. First, apply these general proxy settings which should work for many + applications. If they do not work for a specific application, such as the + ones listed below, apply application-specific proxy settings as needed. + + Proxy settings: + + .. code-block:: none + + export http_proxy=http:// + export https_proxy=http:// + export ftp_proxy=http:// + export socks_proxy=http:// + export no_proxy=",localhost" + export HTTP_PROXY=$http_proxy + export HTTPS_PROXY=$https_proxy + export FTP_PROXY=$ftp_proxy + export SOCKS_PROXY=$socks_proxy + export NO_PROXY=$no_proxy + + * *User-specific*, put them in :file:`$HOME/.bashrc`. + + * *For all users*, put them in :file:`/etc/profile.d/proxy.conf`. + +#. For the proxies to take effect, either :command:`source` the file manually + or log out and log back in. + +Docker\* +======== + +Please refer the official Docker links on how to configure proxies: + +* `Docker client`_ +* `Docker daemon`_ + +git over SSH +============ + +Add the following to your :file:`~/.ssh/config` file: + +.. code-block:: none + + host github.com + port 22 + user git + ProxyCommand connect-proxy -S %h %p + +.. note:: + + Though :command:`netcat` is included with |CL|, it is not the BSD version, + which is the one usually used to enable git over SSH. + +autospec/mock +============= + +:ref:`autospec` uses mock to do builds. Configure mock's proxy settings with +these steps: + +#. Override the general mock configuration file with a custom one, otherwise + your settings will get overwritten each time autospec is updated. + + .. code-block:: bash + + sudo mkdir -p /etc/mock + sudo cp ~/clearlinux/projects/common/conf/clear.cfg /etc/mock/clear-custom.cfg + +#. :command:`sudoedit` :file:`/etc/mock/clear-custom.cfg` and add the highlighted + lines. + + .. code-block:: none + :emphasize-lines: 3-5 + + ... + config_opts['use_bootstrap_container'] = False + config_opts['http_proxy'] = ':' + config_opts['https_proxy'] = ':' + config_opts['no_proxy'] = ',192.168.0.0/16,localhost,127.0.0.0/8' + +Kubernetes +========== + +See :ref:`Setting proxy servers for Kubernetes `. + +.. _Docker client: + https://docs.docker.com/network/proxy/#configure-the-docker-client + +.. _Docker daemon: + https://docs.docker.com/config/daemon/systemd/#httphttps-proxy + diff --git a/_sources/guides/network/time.rst.txt b/_sources/guides/network/time.rst.txt new file mode 100644 index 000000000..e30e3d8b8 --- /dev/null +++ b/_sources/guides/network/time.rst.txt @@ -0,0 +1,59 @@ +.. _time: + +Set system time +############### + +This guide describes how to reset the time in your |CL-ATTR| system when +the default :abbr:`NTP (Network Time Protocol)` servers cannot be reached. + +|CL| uses the `systemd-timesyncd.service` daemon to synchronize time. + + +#. Install the :command:`sysadmin-basic` bundle. + + .. code-block:: bash + + sudo swupd bundle-add sysadmin-basic + +#. Set your time zone. This example uses Los Angeles. + + .. code-block:: bash + + timedatectl set-timezone America/Los_Angeles + + .. note:: + + To see a list of time zones, use the command: + :command:`timedatectl list-timezones | grep ` + +#. Create a :file:`/etc/systemd/` directory. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/ + +#. Create a new file named :file:`/etc/systemd/timesyncd.conf` and enter the + following text. + + .. code-block:: console + + [Time] + NTP= + FallbackNTP= + +#. Enable the `systemd-timesyncd` service. + + .. code-block:: bash + + sudo timedatectl set-ntp true + +.. note:: + + To check the service status, use the :command:`timedatectl status` command. + + To restart the `timesyncd` daemon, enter :command:`systemctl restart + systemd-timesyncd` into your terminal emulator. + +**Congratulations!** You successfully set up the time in your |CL| system. + + diff --git a/_sources/guides/network/vnc.rst.txt b/_sources/guides/network/vnc.rst.txt new file mode 100644 index 000000000..c7c11ba9c --- /dev/null +++ b/_sources/guides/network/vnc.rst.txt @@ -0,0 +1,780 @@ +.. _vnc: + +Remote-desktop to a host using VNC +################################## + +This guide describes how to use :abbr:`VNC (Virtual Network Computing)` to +connect to a remote |CL-ATTR| host. + +VNC is a client-server GUI-based tool that allows you to connect via +remote-desktop to your |CL| host. + +.. contents:: + :local: + :depth: 1 + +Install the VNC server and misc. components on your host +******************************************************** + +To configure VNC to work on your |CL| host, install these bundles: + +* :command:`desktop-autostart`: Installs :abbr:`GDM (Gnome Desktop Manager)`, sets + it to start automatically on boot, and installs TigerVNC Viewer. +* :command:`vnc-server`: Installs the TigerVNC server. + +Follow these steps: + +#. Open a terminal window. + +#. Install the |CL| bundles. + + .. code-block:: bash + + sudo swupd bundle-add desktop-autostart vnc-server + +#. Reboot your |CL| host. + +Configure a VNC-server-start method on your host +************************************************ + +There are three methods you can use to configure and start the VNC server on +your |CL| host: + +.. list-table:: Table 1: VNC-server-start Configuration Methods + :widths: 10,20,20,20 + :header-rows: 1 + + * - Attribute + - Method 1: Manually start a VNC session + - Method 2: Automatically start a VNC session via a systemd service script + - Method 3: Create multi-user logins with authentication through GDM + * - Description + - This is the traditional method where you SSH into the |CL| host, manually + start a VNC session to get a display ID, and connect to it by + supplying the display ID. + - The system administrator sets up a systemd service script for you with + a pre-assigned display ID. You make a VNC connection and supply + your pre-assigned display ID. + - The system administrator configures GDM to accept connection requests. + When you make a VNC connection to the |CL| host, you see + the GDM login screen and authenticate as if you are local. + * - Who configures VNC settings? + - You + - System administrator + - System administrator + * - Who starts VNC session? + - You + - Set to start automatically on boot by system administrator + - Set to start automatically on boot by system administrator + * - Who ends VNC session? + - You + - You + - System administrator can disable VNC service altogether + * - Requires VNC password to authenticate? + - Yes + - Yes + - No. Use |CL| account username and password through GDM + + +Although all three methods can coexist on the same |CL| host, we recommend +you pick a method that suits your needs. + +For simplicity, the rest of this guide refers to these methods as +Method 1, Method 2, and Method 3. + +Method 1: Manually start a VNC session +====================================== + +You (and each user) must perform these steps to initialize your VNC settings. + +#. Log in. + +#. Open a terminal window. + +#. Start VNC with the :command:`vncserver` command. Since this is your + first time starting VNC, it adds default configuration files and asks you + to set a VNC password. + + .. code-block:: bash + + vncserver + + Example output: + + .. code-block:: console + + You will require a password to access your desktops. + + Password: + Verify: + Would you like to enter a view-only password (y/n)? n + xauth: file /home/vnc-user-a/.Xauthority does not exist + + New 'clr-linux:2 (vnc-user-a)' desktop is clr-linux:2 + + Creating default startup script /home/vnc-user-a/.vnc/xstartup + Creating default config /home/vnc-user-a/.vnc/config + Starting applications specified in /home/vnc-user-a/.vnc/xstartup + Log file is /home/vnc-user-a/.vnc/clr-linux:2.log + + Upon completion, you can find the default configuration files and the + password file hidden in the :file:`.vnc` directory in your home directory. + + A VNC session starts and shows a unique display ID, which is the + number following the hostname and the colon ":". In the above example, the + display ID is 2. In a later step, you will supply the display ID to + your VNC viewer app for connection. + +#. Kill the active VNC session for the time being with the + :command:`vncserver -kill :[display ID]` command. Substitute [display ID] + with your active VNC session display ID. For example: + + .. code-block:: bash + + vncserver -kill :2 + + .. note:: + + If you do not recall the active session display ID, use the + :command:`vncserver -list` command to find it. + +#. Optional configurations: + + * To customize settings such as screen size, security type, etc., + modify the :file:`$HOME/.vnc/config` file. + * To customize the applications to run at startup, modify the + :file:`$HOME/.vnc/xstartup` file. + +Method 2: Automatically start a VNC session via a systemd service script +======================================================================== + +To configure VNC for this method, you must have root privileges. You will +set up a systemd service file for all intended VNC users with their own +preassigned unique display ID. + +#. Log in. + +#. Make sure the user accounts already exist. Use the following command to + list all users. + + .. code-block:: bash + + sudo cut -d: -f1 /etc/passwd + +#. Create the path :file:`/etc/systemd/system`. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/system + +#. Create a systemd service script file :file:`vncserver@:[X].service`, + where [X] is the display ID, for each user in :file:`/etc/systemd/system` + Each user must be assigned a unique display ID. Be sure the correct + username is entered in the :guilabel:`User` field. The example below shows user + vnc-user-b who is assigned the display ID 5. + + .. code-block:: bash + + sudo tee -a /etc/systemd/system/vncserver@:5.service << EOF + + [Unit] + Description=VNC Remote Desktop Service for "vnc-user-b" with display ID "5" + After=syslog.target network.target + + [Service] + Type=simple + User=vnc-user-b + PAMName=login + PIDFile=/home/%u/.vnc/%H%i.pid + ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' + ExecStart=/usr/bin/vncserver %i -geometry 2000x1200 -alwaysshared -fg + ExecStop=/usr/bin/vncserver -kill %i + + [Install] + WantedBy=multi-user.target + + EOF + +#. Have each user log into their account and set a VNC password with + the :command:`vncpasswd` command before proceeding to the next step. + +#. Start the VNC service script and set it to start automatically on + boot for each user. Replace the [X] with the display ID. + + .. code-block:: bash + + sudo systemctl daemon-reload + sudo systemctl enable vncserver@:[X].service + sudo systemctl start vncserver@:[X].service + +#. After starting the services, verify they are running. + + .. code-block:: bash + + systemctl | grep vnc + + The example below shows 2 VNC sessions that were successfully started for + users vnc-user-b with display ID 5 and vnc-user-c with display ID 6. + + .. code-block:: console + + systemctl | grep vnc + + vncserver@:5.services loaded active running VNC Remote Desktop Service for "vnc-user-b" with display ID "5" + vncserver@:6.services loaded active running VNC Remote Desktop Service for "vnc-user-c" with display ID "6" + system-vncserver.slice loaded active active system-vncserver.slice + +Method 3: Multi-user logins with authentication through GDM +=========================================================== + +For this method, VNC is configured as a systemd service that listens on port +5900 and GDM is configured to accept access requests from VNC. When you +make a VNC connection to your |CL| host, you are presented with the GDM login +screen and you authenticate as if you are local. You must have root privileges +to perform this configuration. + +#. Log in. + +#. Create the path :file:`/etc/systemd/system`. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/system + +#. Create a systemd socket file :file:`xvnc.socket` with the following content: + + .. code-block:: bash + + sudo tee -a /etc/systemd/system/xvnc.socket << EOF + + [Unit] + Description=XVNC Server on port 5900 + + [Socket] + ListenStream=5900 + Accept=yes + + [Install] + WantedBy=sockets.target + + EOF + +#. Create a systemd service file :file:`xvnc@.service` with the following content: + + .. code-block:: bash + + sudo tee -a /etc/systemd/system/xvnc@.service << EOF + + [Unit] + Description=Daemon for each XVNC connection + + [Service] + ExecStart=-/usr/bin/Xvnc -inetd -query localhost -geometry 2000x1200 -once -SecurityTypes=None + User=nobody + StandardInput=socket + StandardError=syslog + + EOF + +#. Create the path :file:`/etc/gdm`. + + .. code-block:: bash + + sudo mkdir -p /etc/gdm + + +#. Create a GDM :file:`custom.conf` file with the following content: + + .. code-block:: bash + + sudo tee -a /etc/gdm/custom.conf << EOF + + [xdmcp] + Enable=true + Port=177 + + EOF + +#. Start the VNC socket script and set it to start automatically on boot. + + .. code-block:: bash + + sudo systemctl daemon-reload + sudo systemctl enable xvnc.socket + sudo systemctl start xvnc.socket + +#. After starting the socket, verify it is running. + + .. code-block:: bash + + systemctl | grep vnc + + The example below shows the xvnc.socket is running. + + .. code-block:: console + + systemctl | grep vnc + + xvnc.socket loaded active listening XVNC Server on port 5900 + system-xvnc.slice loaded active active system-xvnc.slice + +See the vncserver Man page for additional information. + +Install a VNC viewer app and an SSH client on your client system +**************************************************************** + +You need a VNC viewer app on your client system to connect to your |CL| host. +An SSH client is only needed if you chose to use Method 1 or you plan to +encrypt your VNC traffic, which is discussed later in this guide. + +Perform the steps below to add these apps to your client system. + +Install a VNC viewer app +======================== + +On |CL|: + +.. code-block:: bash + + sudo swupd bundle-add desktop-autostart + +On Ubuntu\*, Mint\*: + +.. code-block:: bash + + sudo apt-get install xtightvncviewer + +On Fedora\*: + +.. code-block:: bash + + sudo dnf install tigervnc + +On Windows\*: + +* Install `RealVNC for Windows`_ + +On macOS\*: + +* Install `RealVNC for macOS`_ + +Install an SSH client +===================== + +* On most Linux distros (|CL|, Ubuntu, Mint, Fedora, etc.) and macOS, + SSH is built-in so you don't need to install it. +* On Windows, you can install `Putty`_. + +Establish a VNC connection to your host +*************************************** + +Depending on the VNC-server-configuration method chosen, use the appropriate VNC +connection: + +* If you chose Method 1, you must take a few extra steps by using SSH to connect + to your |CL| host and then manually launching VNC. + +* If you chose Method 2, get your preassigned VNC display ID from your system + administrator first and then proceed to the :ref:`connect-to-vnc-session` + section below. + +* If you chose Method 3, proceed to the :ref:`connect-to-vnc-session` below. + + +SSH into your host and launch VNC +================================= + +#. SSH into your |CL| host + + a. On Linux distros and macOS: + + .. code-block:: bash + + ssh [username]@[clear-linux-host-ip-address] + + #. On Windows: + + i. Launch Putty. + #. Under the :guilabel:`Category` section, select :guilabel:`Session`. + See Figure 1. + #. Enter the IP address of your |CL| host in the + :guilabel:`Host Name (or IP address)` field. + #. Set the :guilabel:`Connection type` option to :guilabel:`SSH`. + #. Click the :guilabel:`Open` button. + + .. figure:: ../../_figures/vnc/vnc-1.png + :scale: 90 % + :alt: Putty - configure SSH session settings + + Figure 1: Putty - configure SSH session settings + +#. Log in with your |CL| username and password. Do not use your VNC password. +#. Start a VNC session. + + .. code-block:: bash + + vncserver + + Example output: + + .. code-block:: console + + New 'clr-linux:3 (vnc-user-c)' desktop is clr-linux:3 + + Starting applications specified in /home/vnc-user-c/.vnc/xstartup + Log file is /home/vnc-user-c/.vnc/clr-linux:3.log + +#. Take note of the generated display ID because you will input it into + the VNC viewer app to establish the connection. The above example shows + the display ID is 3. + + .. note:: + + VNC automatically picks a unique display ID unless you specify one. + To specify a display ID, enter a unique number that is not already + in use after the colon. For example: + + .. code-block:: bash + + vncserver :8 + +#. You can now end the SSH connection by logging out. This does + not terminate your active VNC session. + +.. _connect-to-vnc-session: + +Connect to your VNC session +=========================== + +For Method 1 and Method 2, you must connect to a specific active session +or display ID using one of two options: + +* Use a fully-qualified VNC port number, which consists of the default VNC + server port (5900) plus the display ID +* Use the display ID + +For example, if the display ID is 3, it can be specified as 5903 or just +as 3. For Method 3, VNC does not expect a display ID. Use 5900. For simplicity, +the instructions below use the fully-qualified VNC port number. + +**On Linux distros:** + +#. Open a terminal window and enter: + + .. code-block:: bash + + vncviewer [clear-linux-host-ip-address]:[fully-qualified VNC port number] + +#. Enter your credentials. + + * For Method 1 and Method 2, enter your VNC password. No username is + required. + * For Method 3, enter your |CL| account username and password through + GDM. + + .. note:: + + With Method 3, you cannot remotely log into your |CL| host through + VNC if you are logged in locally and vice versa. + +**On Windows and macOS using RealVNC app:** + +#. Start the RealVNC viewer app. See Figure 2. +#. Enter the IP address of the |CL| host and the fully-qualified + VNC port number. + + The following screenshot shows connecting to |CL| host + 192.168.25.54 with a fully-qualified VNC port number 5902. + + .. figure:: ../../_figures/vnc/vnc-2.png + :scale: 90 % + :alt: RealVNC Viewer + + Figure 2: RealVNC Viewer + +#. Press the :kbd:`Enter` key. + +#. Enter your credentials. + + * For Method 1 and Method 2, enter your VNC password. No username is + required. + * For Method 3, enter your |CL| account username and password through + GDM. + + .. note:: + + With Method 3, you cannot remotely log into your |CL| host through + VNC if you are logged in locally and vice versa. + +Optional: Configure RealVNC Image Quality +----------------------------------------- + +To increase the RealVNC viewer image quality, manually change the :guilabel:`ColorLevel` +value. Follow these steps: + +#. Right-click a connection node and select :guilabel:`Properties...`. + See Figure 3. + + .. figure:: ../../_figures/vnc/vnc-3.png + :scale: 90 % + :alt: RealVNC Viewer - change connection node properties + + Figure 3: RealVNC Viewer - change connection node properties + +#. Select the :guilabel:`Expert` tab. See Figure 4. + +#. Select the :guilabel:`ColorLevel` setting and change it to your + preferred setting. + + .. figure:: ../../_figures/vnc/vnc-4.png + :scale: 90 % + :alt: RealVNC Viewer - change ColorLevel + + Figure 4: RealVNC Viewer - change :guilabel:`ColorLevel` + +Terminate a VNC connection to your host +*************************************** + +For Method 1 and Method 2, once started, a VNC session remains active +on your |CL| host even if you close your VNC viewer app. If you want to +truly terminate an active VNC session, follow these steps: + +#. SSH into your |CL| host. +#. Open a terminal window. +#. Find the active VNC session display ID with the command + :command:`vncserver -list`. + + .. code-block:: bash + + vncserver -list + +#. Terminate it with the :command:`vncserver -kill` command followed by a + colon and the display ID. + + .. code-block:: bash + + vncserver -kill :[display ID] + +#. For Method 3, only the system administrator can stop and disable the + VNC service by using these commands: + + .. code-block:: bash + + sudo systemctl stop xvnc.socket + sudo systemctl disable xnvc.socket + + +Encrypt VNC traffic through an SSH tunnel +***************************************** + +By default, VNC traffic is not encrypted. Figure 5 shows an example warning +from RealVNC Viewer. + +.. figure:: ../../_figures/vnc/vnc-6.png + :scale: 90 % + :alt: RealVNC Viewer - Connection not encrypted warning + + Figure 5: RealVNC Viewer - Connection not encrypted warning + +To add security, VNC traffic can be routed through an SSH tunnel. This is +accomplished by following these steps: + +#. Configure the VNC server to only accept connection from localhost by + adding the :command:`-localhost` option. +#. Set up an SSH tunnel between your client system and your |CL| host. + Your client system will forward traffic from the localhost (the client) + destined for a specified fully-qualified VNC port number (on the client) + to your |CL| host with the same port number. +#. The VNC viewer app on your client system will now connect to localhost, + instead of the IP address of your |CL| host. + +Configure VNC to only accept connection from localhost +====================================================== + +For Method 1: + +#. Edit the :file:`config` file located in :file:`$HOME/.vnc` and uncomment + the `# localhost` line. It should look like this: + + .. code-block:: console + + ## Supported server options to pass to vncserver upon invocation can be listed + ## in this file. See the following manpages for more: vncserver(1) + Xvnc(1). + ## Several common ones are shown below. Uncomment and modify to your liking. + ## + # securitytypes=vncauth,tlsvnc + # desktop=sandbox + # geometry=2000x1200 + localhost + # alwaysshared + +#. If an active session exists, kill it, and then restart it. + +For Method 2: + +#. Edit the systemd service script :file:`vncserver@:[X].service` located in + :file:`/etc/systemd/system` and add :command:`-localhost` to the `ExecStart` + line. The example below uses vncserver@:5.service: + + .. code-block:: console + + [Unit] + Description=VNC Remote Desktop Service for "vnc-user-b" with display ID "5" + After=syslog.target network.target + + [Service] + Type=simple + User=vnc-user-b + PAMName=login + PIDFile=/home/%u/.vnc/%H%i.pid + ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' + ExecStart=/usr/bin/vncserver %i -geometry 2000x1200 -localhost -alwaysshared -fg + ExecStop=/usr/bin/vncserver -kill %i + + [Install] + WantedBy=multi-user.target + +#. Restart the service script: + + .. code-block:: bash + + sudo systemctl daemon-reload + sudo systemctl restart vncserver@:5.service + +For Method 3: + +#. No change is needed to the :file:`xvnc@service` script. + + After you have restarted your VNC session, you can verify that it only + accepts connections from localhost by using the :command:`netstat` + command like this: + + .. code-block:: bash + + netstat -plant + + .. note:: + + Add the |CL| :command:`network-basic` bundle to get the :command:`netstat` + command. + +Figure 6 shows two VNC sessions (5901 and 5905) accepting connections from +any host as specified by the `0.0.0.0`'s. This is before the +:command:`-localhost` option was used. + +.. figure:: ../../_figures/vnc/vnc-7.png + :scale: 100 % + :alt: VNC session accepting connection from any host + + Figure 6: VNC sessions (5901 and 5905) accepting connections from any host + +Figure 7 shows two VNC sessions (5901 and 5905) only accepting connections from +localhost as specified by `127.0.0.1`'s. This is after the +:command:`-localhost` option was used. + +.. figure:: ../../_figures/vnc/vnc-8.png + :scale: 100 % + :alt: VNC session only accepting connection from localhost + + Figure 7: VNC sessions (5901 and 5905) only accepting connections from localhost + +Set up an SSH tunnel from your client system to your |CL| host +============================================================== + +**On Linux distros and macOS:** + +#. Open terminal window and enter: + + .. code-block:: bash + + ssh -L [client port number]:localhost:[fully-qualified VNC port number] \ + -N -f -l [username] [clear-linux-host-ip-address] + +#. Enter your |CL| account password (not your VNC password). + + .. note:: + + * `-L` specifies that [client port number] on the localhost (on the + client side) is forwarded to [fully-qualified VNC port number] + (on the server side). + * Replace `[client port number]` with an available client port number + (for example: 1234). For simplicity, you can make the + `[client port number]` the same as the `[fully-qualified VNC port number]`. + * Replace `[fully-qualified VNC port number]` with 5900 (default VNC + port) plus the display ID. For example, if the display ID is 2, + the fully-qualified VNC port number is is 5902. + * `-N` tells SSH to only forward ports and not execute a remote + command. + * `-f` tells SSH to go into the background before command execution. + * `-l` specifies the username to log in as. + +**On Windows:** + +#. Launch Putty. +#. Specify the |CL| VNC host to connect to. + + a. Under the :guilabel:`Category` section, select :guilabel:`Session`. + See Figure 1. + #. Enter the IP address of your |CL| host in the + :guilabel:`Host Name (or IP address)` field. + #. Set the :guilabel:`Connection type` option to :guilabel:`SSH`. + +#. Configure the SSH tunnel. See Figure 8 for an example. + + a. Under the :guilabel:`Category` section, go to + :guilabel:`Connection` > :guilabel:`SSH` > :guilabel:`Tunnels`. + + #. In the :guilabel:`Source port` field, enter an available client + port number (for example: 1234). For simplicity, you can make the + `Source port` the same as the fully-qualified VNC port number. + + #. In the :guilabel:`Destination` field, enter + `localhost:` plus the fully-qualified VNC port number. + + #. Click the :guilabel:`Add` button. + + .. figure:: ../../_figures/vnc/vnc-9.png + :scale: 100 % + :alt: Putty - configure SSH tunnel + + Figure 8: Putty - configure SSH tunnel + +#. Click the :guilabel:`Open` button. +#. Enter your |CL| account password (not your VNC password). + +Connect to a VNC session through an SSH tunnel +============================================== + +After you have set up an SSH tunnel, follow these instructions to connect to +your VNC session. + +**On Linux distros:** + +#. Open terminal window and enter: + + .. code-block:: bash + + vncviewer localhost:[client port number] + +**On Windows and macOS using `RealVNC`:** + +#. Start the RealVNC viewer app. +#. Enter `localhost` and the fully-qualified VNC port number. See Figure 9 + for an example. + + .. figure:: ../../_figures/vnc/vnc-10.png + :scale: 100 % + :alt: RealVNC viewer app connecting to localhost:1234 + + Figure 9: RealVNC viewer app connecting to `localhost:1234` + + .. note:: + + RealVNC will still warn that the connection is not encrypted even + though its traffic is going through the SSH tunnel. You can ignore + this warning. + +.. _RealVNC for Windows: https://www.realvnc.com/en/connect/download/viewer/windows/ +.. _RealVNC for macOS: https://www.realvnc.com/en/connect/download/viewer/macos/ +.. _Putty: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html diff --git a/_sources/guides/network/wifi.rst.txt b/_sources/guides/network/wifi.rst.txt new file mode 100644 index 000000000..bb8dd525e --- /dev/null +++ b/_sources/guides/network/wifi.rst.txt @@ -0,0 +1,293 @@ +.. _wi-fi: + +Configure Wi-Fi +############### + +We recommend using `NetworkManager +`_ to +manage wireless network connections. If you choose to connect to Wi-Fi while +using the :ref:`live installer ` image, your Wi-Fi +settings will be added to your system during the installation process. + +NetworkManager provides three simple methods for configuring Wi-Fi: Desktop, +CLI, and TUI. NetworkManager uses :command:`wpa_supplicant`, which can also be +used on its own for a more lightweight installation. + +.. contents:: + :local: + :depth: 1 + +Using Network Manager +********************* + +Desktop GUI (Graphical User Interface) +====================================== + +1. Click anywhere on the icons at the right side of the top of the screen to + bring up a menu and click on :guilabel:`Wi-Fi Not Connected` then choose + :guilabel:`Select Network`. + + .. figure:: /_figures/wifi/wifi-1.1.png + +2. Scroll through the list and select the network you'd like to connect to and + click :guilabel:`Connect`. + + .. figure:: /_figures/wifi/wifi-2.png + +3. Enter the password and click :guilabel:`Connect`. + + .. figure:: /_figures/wifi/wifi-3.png + +4. The Wi-Fi icon should now show the signal strength of the connection. + + .. figure:: /_figures/wifi/wifi-4.png + +5. If you are installing using the live image, resume the + :ref:`installation process ` now. Your Wi-Fi + configuration will automatically be included in the install. + + .. figure:: /_figures/wifi/wifi-5.png + +CLI (Command Line Interface) +============================ + +#. List the available Wi-Fi networks + + .. code-block:: bash + + nmcli device wifi list + + .. code-block:: console + + IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY + 1st Network Infra 1 54 Mbit/s 65 ▂▄▆_ -- + 2nd Network Infra 1 130 Mbit/s 52 ▂▄__ -- + 3rd Network Infra 10 195 Mbit/s 29 ▂___ WPA2 + +#. Join the network. + + .. code-block:: bash + + nmcli device wifi connect $SSID password $password + + .. code-block:: console + + Device 'wlp1s0' successfully activated with 'f2501e67-27a3-4cf2-a8d9-cce3d029b788'. + +.. note:: + + To avoid having the Wi-Fi password stored in bash history, consider using the TUI. + +.. _wifi-nm-tui: + +TUI (Text-based User Interface) +=============================== + +#. Launch the NetworkManager Text User Interface + + .. code-block:: bash + + nmtui + +#. Select :guilabel:`Activate a connection` and hit :kbd:`return`. + + .. figure:: /_figures/wifi/nmtui_1.png + +#. Use the arrow keys to select your network and then select + :guilabel:`Activate` and hit :kbd:`return`. + + .. figure:: /_figures/wifi/nmtui_2.png + +#. Enter your password and hit :kbd:`return` to select :guilabel:`OK`. + + .. figure:: /_figures/wifi/nmtui_3.png + +#. Select :guilabel:`Back` and hit :kbd:`return`. + + .. figure:: /_figures/wifi/nmtui_4.png + +#. Select :guilabel:`Quit` and hit :kbd:`return` to exit. + + .. figure:: /_figures/wifi/nmtui_5.png + + +Using wpa_supplicant +******************** + +wpa_suppliant can be used directly, without NetworkManager, to associate a +wireless adapter with an access point. After association is established, an IP +address needs to be assigned or obtained. + + +Associate with a wireless access point +====================================== + +#. Make sure NetworkManager is stopped and disabled by masking the service. + + .. code-block:: bash + + sudo systemctl stop NetworkManager.service + sudo systemctl mask NetworkManager.service + + +#. Stop the wpa_supplicant.service, which may have been started by NetworkManager. + + .. code-block:: bash + + sudo systemctl stop wpa_supplicant.service + +#. Create a ``wpa_supplicant`` configuration directory. + + .. code-block:: bash + + sudo mkdir -p /etc/wpa_supplicant + +#. Determine your wireless interface name. + + .. code-block:: bash + + iw dev + + Use the name following "Interface" on the first line (eg. wlp1s0) + + .. code-block:: console + :emphasize-lines: 1 + + Interface wlp1s0 + ifindex 3 + wdev 0x1 + addr 00:xx:xx:38:34:7a + type managed + txpower 0.00 dBm + + Set the $INTERFACE_NAME environment variable to take advantage of copying + and pasting commands. + + .. code-block:: bash + + export INTERFACE_NAME=wlp1s0 + +#. Create a minimal configuration file called + :file:`/etc/wpa_supplicant/wpa_supplicant-$INTERFACE_NAME.conf` + and add the following: + + .. code-block:: bash + + sudo tee /etc/wpa_supplicant/wpa_supplicant-$INTERFACE_NAME.conf > /dev/null <<'EOF' + ctrl_interface_group=wheel + ctrl_interface=/run/wpa_supplicant + update_config=1 + EOF + +#. Start the wpa_supplicant service to complete the configuration process. + + .. code-block:: bash + + sudo systemctl start wpa_supplicant@$INTERFACE_NAME.service + +#. Use :command:`wpa_cli` (interactive mode) to scan for available networks. + In this example, our network is named *Network1*. + + .. code-block:: bash + :emphasize-lines: 1,2,5,7 + + sudo wpa_cli + > scan + OK + <3>CTRL-EVENT-SCAN-STARTED + <3>CTRL-EVENT-SCAN-RESULTS + > scan_results + bssid / frequency / signal level / flags / ssid + 00:xx:xx:73:7b:46 5180 -55 [WPA2-PSK-CCMP][ESS] Network1 + 00:xx:xx:83:fa:70 5240 -76 [WPA2-EAP-CCMP][ESS] Network2 + 00:xx:xx:4f:e9:2c 2412 -67 [WPA2-PSK-CCMP][ESS][P2P] Printer + 00:xx:xx:af:fe:3e 5765 -79 [WPA2-PSK-CCMP][ESS] Network3 + 00:xx:xx:e9:eb:29 2412 -76 [WPA2-PSK-CCMP][ESS] Network4 + 00:xx:xx:26:4a:b9 2412 -79 [WPA2-PSK-CCMP][ESS][P2P] Printer2 + 00:xx:xx:b9:0d:d4 2462 -79 [WPA2-PSK-CCMP][ESS] Network5 + +#. Set up your network connection replacing *Network1* with your wireless + SSID name and *Network1Password* with the password for your network. + + .. code-block:: bash + :emphasize-lines: 1,3,5,7 + + > add_network + 0 + > set_network 0 ssid "Network1" + OK + > set_network 0 psk "Network1Password" + OK + > enable_network 0 + OK + <3>CTRL-EVENT-SCAN-STARTED + <3>CTRL-EVENT-SCAN-RESULTS + <3>SME: Trying to authenticate with 00:xx:xx:5d:d9:26 (SSID='Network1' freq=5180 MHz) + <3>Trying to associate with 00:xx:xx:5d:d9:26 (SSID='Network1' freq=5180 MHz) + <3>Associated with 00:xx:xx:5d:d9:26 + <3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 + <3>WPA: Key negotiation completed with 00:xx:xx:5d:d9:26 [PTK=CCMP GTK=CCMP] + <3>CTRL-EVENT-CONNECTED - Connection to 00:xx:xx:5d:d9:26 completed [id=0 id_str=] + +#. Save the configuration and quit out of :command:`wpa_cli`. + + .. code-block:: bash + + > save_config + OK + > quit + +.. note:: + + The network password is saved as plaintext in + :file:`/etc/wpa_supplicant/wpa_supplicant-$INTERFACE_NAME.conf`. Use + `wpa_passphrase + `_ + for a more secure method. + +Assign an IP address +==================== + +After the wireless adapter has been associated with wireless access point, an +IP address needs to be assigned for access to the network. + +The example below uses ``systemd-networkd`` to request an IP address from the +access point via DHCP. Another network manager can be used if preferred. If +there is a static IP address you'd like to assign, see the +:ref:`assign-static-ip` documentation. + +#. Create the :file:`/etc/systemd/network` directory + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/network + +#. Create a :file:`/etc/systemd/network/25-wireless-$INTERFACE_NAME.network` file + with a Match and Network section. + + .. code-block:: bash + + printf "[Match]\nName=$INTERFACE_NAME\n\n[Network]\nDHCP=ipv4" | sudo tee /etc/systemd/network/25-wireless-$INTERFACE_NAME.network + +#. Restart the ``systemd-networkd.service``. + + .. code-block:: bash + + sudo systemctl restart systemd-networkd.service + + +#. Enable the ``systemd-networkd`` and ``wpa_supplicant`` services to start automatically + on future boots. + + .. code-block:: bash + + sudo systemctl enable --now systemd-networkd.service + sudo systemctl enable --now wpa_supplicant@$INTERFACE_NAME.service + + +Other resources +*************** + +* NetworkManager CLI `documentation `_. +* Additional CLI `examples `_. +* wpa_supplicant `advanced usage documentation `_ diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 000000000..05e93e1c3 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,72 @@ +.. _clear-linux: + +|CL-PRJ| Documentation +############################################# + +.. container:: multicolumns + + .. container:: column verticalcard + + .. rst-class:: colh2 + + Highlights + + :ref:`autospec` + **autospec** is a tool to assist in the automated creation and + maintenance of RPM packaging in Clear Linux OS. + + :ref:`docker` + Clear Linux OS supports multiple containerization platforms, + including a Docker solution. + + :ref:`developer-workstation` + Developer Workstation helps you find the Bundles you need to start + your Clear Linux OS development project. + + .. container:: column verticalcard + + .. rst-class:: colh2 + + Quicklinks + + :ref:`get-started` + Get up and running fast with Clear Linux\* OS. Use these step-by-step + instructions to guide you through the installation of Clear Linux OS + from bare metal to live image. + + :ref:`bare-metal-install-desktop` + These instructions guide you through the installation of Clear Linux + OS on bare metal using a bootable USB drive. + + :ref:`architect-lifecycle` + This guide provides DevOps with a model to architect the life-cycle + of a Clear Linux OS derivative that integrates custom software and + content using distinct workflows. + + :ref:`bundles` + Useful bundle commands for working with bundles on the Clear Linux OS. + + .. container:: column featurecard + + **Community** + + | `Clear Linux Forum `_ + | `irc.libera.chat IRC: #clearlinux `_ + + +.. container:: video + + .. raw:: html + + + +.. toctree:: + :hidden: + + get-started/index + about + guides/index + tutorials/index + reference/index + FAQ/index + collaboration/collaboration diff --git a/_sources/reference/bundles/bundles.rst.txt b/_sources/reference/bundles/bundles.rst.txt new file mode 100644 index 000000000..7572e4a6f --- /dev/null +++ b/_sources/reference/bundles/bundles.rst.txt @@ -0,0 +1,18 @@ +.. _bundles: + +Available bundles +################# + +This document provides a current list of available bundles. View the `clr-bundles repo`_ on GitHub\*, or select the bundle +:file:`Name` for more details. + +To learn more about how |CL-ATTR| uses bundles for software deployment, visit +:ref:`bundles-guide`. + +Bundle list +=========== + +.. raw:: html + :file: bundles.html.txt + +.. _clr-bundles repo: https://github.com/clearlinux/clr-bundles/tree/master/bundles diff --git a/_sources/reference/compatible-hardware.rst.txt b/_sources/reference/compatible-hardware.rst.txt new file mode 100644 index 000000000..9acca6d4b --- /dev/null +++ b/_sources/reference/compatible-hardware.rst.txt @@ -0,0 +1,114 @@ +.. _compatible-hardware: + +Compatible Hardware +################### + +This document describes hardware that has been tested and confirmed as +compatible with |CL-ATTR|. This list is not comprehensive and will continue to +grow. + +.. list-table:: **Table 1. Compatible Hardware** + :widths: 20, 20 + :header-rows: 1 + + * - Processor + - Platform + + * - Intel® Core™ i5-6260U processor + - + + * - Intel® Core™ i5-6560U processor + - Dell XPS\* 13 9350 + + * - Intel® Celeron® J3455 processor + - NUC6CAYS + + * - Intel® Core™ i5-4250U processor + - + + * - Intel® Core™ i7-5557U processor + - + + * - Intel® Core™ i9-7900X X-series processor + - Gigabyte\* X299 + + * - Intel® Core™ i3-4130 processor + - Lenovo Thinkserver\* TS140 + + * - Intel® Core™ i7-7567U processor + - NUC7i7BNH + + * - Intel® Core™ i7-8809G processor + - NUC8i7HVK + + * - Intel® Core™ i5-7260U processor + - NUC7i5BNH + + * - Intel® Core™ i7-8650U processor + - NUC7i7DNKE + + * - Intel® Core™ i5-7300U processor + - NUC7i5DNHE + + * - Intel® Xeon® Gold 6138 processor + - + + * - Intel® Xeon® E5-2699A v4 processor + - Dell PowerEdge\* R630 + + * - Intel® Xeon® E5-2620 v3 processor + - + + * - Intel® Core™ i5-6600 processor + - Gigabyte\* Z170X-UD5 + + * - Intel® Core™ i5-4250U processor + - D54250WYK + + * - Intel® Xeon® E5-2699 v3 processor + - S2600WT2 + + * - Intel Atom™ J3455 processor + - NUC6CAYB + + * - Intel® Xeon® Bronze 3104 processor + - 0W23H8 + + * - Intel Atom™ C2750 processor + - SuperMicro\* A1SAi + + * - Intel Atom™ E3825 processor + - CircuitCo MinnowBoard MAX\* + + * - Intel® Core™ i7-8700 processor + - Gigabyte\* H370 WIFI + + * - Intel® Core™ i7-3667U processor + - Lenovo ThinkPad\* X1 Carbon laptop + + * - Intel® Core™ i5-4210U processor + - Dell XPS\* 13 laptop + + * - Intel® Celeron® J3455 processor + - NUC6CAYB + + * - Intel® Core™ i7-4790 processor + - Gigabyte\* desktop + + * - Intel® Core™ i5-6260U processor + - NUC6I6SYH + + * - Intel® Core™ i7-5557U processor + - NUC5I7RYH + + * - Intel® Core™ i7-4700MQ processor + - Lenovo ThinkPad\* T540p + + * - Intel® Core™ i7-5557U processor + - NUC5I7RYB + + * - Intel® Core™ i5-6260U processor + - NUC6I5SYH + +*Intel, Celeron, Xeon, Intel Atom, and Intel Core are trademarks of Intel +Corporation or its subsidiaries.* \ No newline at end of file diff --git a/_sources/reference/image-types.rst.txt b/_sources/reference/image-types.rst.txt new file mode 100644 index 000000000..6d661f09d --- /dev/null +++ b/_sources/reference/image-types.rst.txt @@ -0,0 +1,80 @@ +.. _image-types: + +|CL-ATTR| image types +######################### + +.. _image-types-content: + +|CL-ATTR| offers many types of `images`_ for different platforms and environments. + +.. _incl-image-filename: + +The naming convention of a |CL| image filename is: + +.. code-block:: console + + clear-[version number]-[image type].[compression type] + +* The *[version number]* field specifies the version number. + +* The *[image type]* field specifies the type of image and its corresponding + file format. + +* The *[compression type]* field specifies the compression type. Two types of + compression methods are used: GNU\* zip (*.gz*) and XZ (*.xz*). + +.. _incl-image-filename-end: + +Table 1 lists the currently available images that are platform independent. +Table 2 lists the currently available images that are platform specific. + +.. list-table:: Table 1: Types of platform-independent |CL| images + :widths: 15, 85 + :header-rows: 1 + + * - Image Type + - Description + + * - live-desktop.img or live-desktop.iso + - Image for booting to GNOME\* desktop to preview or install the OS. + + * - live-server.img or live-server.iso + - Image for booting to server command prompt to preview or install the OS. + +.. list-table:: Table 2: Types of platform-specific |CL| images + :widths: 15, 85 + :header-rows: 1 + + * - Image Type + - Description + + * - aws.img + - Image suitable for use with Amazon\* AWS\*. + + * - cloudguest.img + - Image with generic cloud guest virtual machine (VM) requirements + installed. + + * - gce.tar + - Image with the Google Compute Engine (GCE) specific kernel. + + * - azure-hyperv.vhd + - Image for Microsoft* Azure and Hyper-V generation 1 VMs. Includes + :ref:`optimized kernel ` for Hyper-V. + + * - kvm.img + - Image for booting in a simple VM with start_qemu.sh. Includes + :ref:`optimized kernel ` for KVM. + + * - kvm-legacy.img + - Image for booting in a simple VM using legacy BIOS, if using + start_qemu.sh make sure to remove -bios parameter. + + * - pxe.tar + - Image suitable for use with PXE server. + + * - vmware.vmdk + - Virtual Machine Disk for VMware\* platforms including Player, + Workstation, and ESXi. + +.. _images: https://clearlinux.org/downloads diff --git a/_sources/reference/index.rst.txt b/_sources/reference/index.rst.txt new file mode 100644 index 000000000..a498527b0 --- /dev/null +++ b/_sources/reference/index.rst.txt @@ -0,0 +1,17 @@ +.. _reference: + +Reference +######### + +This section provides additional information on the |CL| project and +features. + +.. toctree:: + :maxdepth: 1 + + compatible-hardware + bundles/bundles + system-requirements + image-types + man-pages + tutorial-ratings diff --git a/_sources/reference/man-pages.rst.txt b/_sources/reference/man-pages.rst.txt new file mode 100644 index 000000000..7a70b49ab --- /dev/null +++ b/_sources/reference/man-pages.rst.txt @@ -0,0 +1,95 @@ +.. _man-pages: + +Man pages +######### + +These pages are generated from `Clear Linux\* tool +repositories `__. Updated |today|. + + +`clr-man-pages `__ +=============================================================== + +.. toctree:: + :maxdepth: 1 + + manpages/os-core.7.rst + manpages/os-format.7.rst + manpages/stateless.7.rst + +`clr-power-tweaks `__ +===================================================================== + +.. toctree:: + :maxdepth: 1 + + manpages/clr_power.1.rst + manpages/clr-power-tweaks.conf.5.rst + +`clrtrust `__ +===================================================== + +.. toctree:: + :maxdepth: 1 + + manpages/clrtrust.1.rst + +`micro-config-drive `__ +========================================================================= + +.. toctree:: + :maxdepth: 1 + + manpages/ucd.1.rst + manpages/ucd-data-fetch.1.rst + manpages/cloud-config.5.rst + +`mixer-tools `__ +=========================================================== + +.. toctree:: + :maxdepth: 1 + + manpages/mixer.add-rpms.1.rst + manpages/mixer.init.1.rst + manpages/mixer.config.1.rst + manpages/mixer.versions.1.rst + manpages/mixer.build.1.rst + manpages/mixer.bundle.1.rst + manpages/mixer.1.rst + manpages/mixer.repo.1.rst + +`swupd-client `__ +============================================================= + +.. toctree:: + :maxdepth: 1 + + manpages/update-triggers.target.4.rst + manpages/swupd-update.service.4.rst + manpages/swupd-update.timer.4.rst + manpages/swupd.1.rst + +`tallow `__ +================================================= + +.. toctree:: + :maxdepth: 1 + + manpages/tallow.conf.5.rst + manpages/tallow.patterns.5.rst + manpages/tallow.1.rst + +`telemetrics-client `__ +========================================================================= + +.. toctree:: + :maxdepth: 1 + + manpages/telem-record-gen.1.rst + manpages/telemctl.1.rst + manpages/telemetry.3.rst + manpages/telemetrics.conf.5.rst + manpages/telempostd.1.rst + manpages/telemprobd.1.rst + diff --git a/_sources/reference/manpages/cloud-config.5.rst.txt b/_sources/reference/manpages/cloud-config.5.rst.txt new file mode 100644 index 000000000..0c239e22a --- /dev/null +++ b/_sources/reference/manpages/cloud-config.5.rst.txt @@ -0,0 +1,273 @@ +cloud-config +============ + +`cloud-config(5) `__ – User data format used by `ucd(1) `__ + +SYNOPSIS +-------- + +``user-data`` + +``#cloud-config`` + +cloud-config data is provided by the cloud infrastructure to a cloud +instance. This data is parsed by ``cloud-init(1)`` which then configures +the cloud instance based on the information in the cloud-config. + +DESCRIPTION +----------- + +The user-data as provided can be of several formats. ``cloud-init(1)`` +supports the ``cloud-config`` format, but also supports generic shell +scripts. If the user-data starts with ``#!``, it is assumed that the +user-data is a generic shell script, and ``cloud-init`` will attempt to +execute the data as a script. If the user-data starts with the +``#cloud-config`` stanza, it is assumed the user-data is in the +``cloud-config`` format, described below. + +The ``cloud-config`` format is used to structure configuration data +provided to the cloud instance. This data is structured in the YAML +format (``http://yaml.org``). Note that ``cloud-init``\ (1) uses the +libyaml library, which supports YAML version 1.1. + +In the YAML content, the root node (the document) contains a sequence of +directives. These directives inform cloud-init that the content of the +directive are processed by a directive-specific handler, or “module”. + +cloud-init includes many modules, each expecting a specifically +constructed content. This document lists the correct format and +organization of each data section for the supported modules, describes +their effect, and states various parameters for each option. + +Table of implemented directives. Column 3 (“Ref”) and column 4 +(“CoreOS”) list whether the reference specification or the CoreOS +implementation support these directives. Note that implementation +details may differ, due to the underlying differences in Operating +Systems. + +:: + + Directive |Description |Ref. |CoreOS. + --------------------|-------------------------------------|-----|------- + groups |Configure user account groups |yes |no + package_upgrade |Perform a software update |yes |no + packages |Install additional software |yes |no + runcmd |Execute system commands |yes |no + service |Perform system service configuration |no |no + ssh_authorized_keys |Provision SSH public keys |yes |yes + users |Configure user accounts |yes |yes + write_files |Write content to arbitrary files |yes |yes + hostname |Define the system's hostname |yes |yes + envar |Set environment variables |no |no + bootcmd |Execute system commands on first boot|no |no + wait_for_network |Halt execution until network is up |no |no + +OPTIONS +------- + +For each of the directives listed in the table above, zero or more +options may be provided. The list below documents the implemented +options per directive. The “Type” field values are: + +TYPES +~~~~~ + +:: + + Type |Description + -----------|------------------------------------------------------------------- + boolean |Either true, false, yes, no, 0 or 1 (upper case and initial capitol + |letter versions treated identical) + string |A generic string encoded value. Can be multiline or YAML encoded + |content + integer |A string encoded decimal integer value + octal |A string encoded octal integer value + hex |A string encoded hexadecimal integer value + [] |if a type is listed with [] appended, it means there may be zero or + |more values, lists of values or any arbitrary depth of these nested + * |Indicates this value isn't a separate key, but directly the + |associated value of the root node. This is applicable for directives + |that only have a single configuration parameter, + |e.g. "package_upgrade" + +groups +~~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + name |string[] |no |Create a new user account group and + | | |place listed user account names in + | | |that group + +package_upgrade +~~~~~~~~~~~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + * |boolean |yes |Enables or disables whether software + | | |update is performed + +This option implies the ``wait_for_network`` option. + +packages +~~~~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + name |string[] |no |Enables installation of software bundles + +This option implies the ``wait_for_network`` option. + +runcmd +~~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + * |string[] |no |Executes a command, if the item is a list, + | | |the list will be converted to a string + | | |and executed as a command line. + +hostname +~~~~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + * |string |yes |Defines the system's hostname + +service +~~~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + start |string[] |no |Start units + stop |string[] |no |Stop units + restart |string[] |no |Restart units + enable |string[] |no |Enable units to start automatically + disable |string[] |no |Disable units from starting automatically + reload |string[] |no |Reload service units + isolate |string[] |no |Change target to a new unit + mask |string[] |no |Prevent units from starting + unmask |string[] |no |Remove unit start prevention mask + +ssh_authorized_keys +~~~~~~~~~~~~~~~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + * |string[] |no |Specifies an SSH public key value, as + | | |string. This will be added to the default + | | |user account's SSH configuration + +users +~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + * |[] |no |This directive expects a list of user + | | |definitions. Each definition can + | | |additionally specify the following + | | |sub-options: + name |string |yes |A user account name to be created + gecos |string |no |A real user name, can be left empty + homedir |string |no |A home directory path. Default under "/home" + primary-group|string|no |A group name. + groups |string |no |Comma-separated list of group names or + | | |single group name. Specifies additional + | | |groups to put this user account into + lock-passwd|boolean |no |Lock the user account + inactive |boolean |no |Mark the user account as inactive + passwd |string |no |Password hash for the user account + no-create-home|boolean|no |Omits creating a home directory + no-user-group|boolean|no |Omits group creating for the account + no-log-init|boolean |no |Omits this account from lastlog/faillog + expiredate|string |no |A date at which to expire the password + ssh-authorized-keys|string[]|no |Add SSH public keys to ssh configuration + sudo |string[] |no |Add sudoers lines for this account, the account + | | |name is automatically prepended + system |boolean |no |Make the account a system account + +write_files +~~~~~~~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + * |[] |no |This directive expects a list of write_files + | | |definitions. Each definition itself contains the + | | |following options: + content |string |yes |The content to write to a file + path |string |yes |The full path and filename of the file to + | | |be written out + owner |string |no |Username and optionally group name, separated + | | |by ":" or ".". Defaults to "root.root" + permissions|octal |no |Octal value describing the file permissions + | | |default value is influenced according to + | | |`umask` + +envar +~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + * |string |yes |Add environment variables to /etc/profile.d/cloud-init.sh + | | |and to current cloud-init process + +bootcmd +~~~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + * |string[] |no |Similar to runcmd but bootcmd will run only on first boot + +wait_for_network +~~~~~~~~~~~~~~~~ + +:: + + Option |Type |Required |Function + ----------|---------|------------|----------------------------------- + * |boolean |no |Enable to force waiting for a functional network. + +This option makes the program wait until an active network is detected. +To prevent waiting, ensure that this option is disabled explicitly +disabled, before other options are used. This may be needed when using +the ``packages`` or ``package_upgrade`` options, which imply that this +option is used. + +COPYRIGHT +--------- + +- Copyright (C) 2017 Intel Corporation, License: CC-BY-SA-3.0 + +SEE ALSO +-------- + +``cloud-init``\ (1) + +NOTES +----- + +Creative Commons Attribution-ShareAlike 3.0 Unported + +- http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/_sources/reference/manpages/clr-power-tweaks.conf.5.rst.txt b/_sources/reference/manpages/clr-power-tweaks.conf.5.rst.txt new file mode 100644 index 000000000..8305ed208 --- /dev/null +++ b/_sources/reference/manpages/clr-power-tweaks.conf.5.rst.txt @@ -0,0 +1,93 @@ +clr-power-tweaks.conf +===================== + +:Manual section: 5 + +SYNOPSIS +-------- + +``clr-power-tweaks.conf`` is an optional configuration file for the +`clr_power(1) `__ utility. + +``/etc/clr-power-tweaks.conf`` + +DESCRIPTION +----------- + +``clr-power-tweaks.conf`` is an optional configuration file for the +`clr_power(1) `__ utility. The configuration file contains kernel and device +parameter values used by the `clr_power(1) `__ utility. + +Configuration parameter values placed in ``clr-power-tweaks.conf`` will +supersede the built-in defaults configured by `clr_power(1) `__. New +parameters can be added to the configuration to supplement the built-in +values. Built-in parameters can be changed by defining them in +``clr-power-tweaks.conf`` with a different value. Parameters can be +excluded from being modified by `clr_power(1) `__ by adding them in +``clr-power-tweaks.conf`` without a value. + +FILE FORMAT +----------- + +``clr-power-tweaks.conf`` uses a key-value pairs to define parameter +values. + +Each line contains one parameter-value pair, delimited by a space +character. + +Parameters are paths from the proc(5) filesystem. Parameters paths can +include glob(n) wildcards to match multiple paths. + +Acceptable values are determined by the parameter being set. Any +parameter listed in the configuration file without a value will be +excluded by `clr_power(1) `__ and the parameter will inherit the kernel’s +built-in default parameter value. + +EXAMPLES +-------- + +1. ``clr-power-tweaks.conf`` entry to override the default value in + `clr_power(1) `__ for CPU governor with **powersave**. All other values + built-in to `clr_power(1) `__ would still get applied. + + Note the globbing used with ``*`` to target all CPU cores. + + :: + + /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor powersave + +2. ``clr-power-tweaks.conf`` entry to exclude a parameter causing it to + use the kernel’s built-in default value (60). All other values + built-in to `clr_power(1) `__ would still get applied. + + Note the omission of a value. + + :: + + /proc/sys/vm/swappiness + +3. ``clr-power-tweaks.conf`` entry to add two new parameters to increase + UDP buffers All other values built-in to `clr_power(1) `__ would still get + applied. + + :: + + /proc/sys/net/ipv4/udp_rmem_min 8192 + /proc/sys/net/ipv4/udp_wmem_min 8192 + +BUGS +---- + +The default `clr-power-tweaks.conf(5) `__ aims to have reasonable defaults +for achieving power and performance efficiency. Default values may not +be optimal for all systems and environments. + +See GitHub Issues: https://github.com/clearlinux/clr-power-tweaks/issues + +SEE ALSO +-------- + +**clr_power.conf(5)**, **proc(5)**, **sysctl(2)** + +For parameters understood by the kernel, please see +https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html diff --git a/_sources/reference/manpages/clr_power.1.rst.txt b/_sources/reference/manpages/clr_power.1.rst.txt new file mode 100644 index 000000000..bf5cf4351 --- /dev/null +++ b/_sources/reference/manpages/clr_power.1.rst.txt @@ -0,0 +1,73 @@ +clr_power +========= + +:Manual section: 1 + +SYNOPSIS +-------- + +``clr_power`` is a utility to adjust power and performance settings in +the operating system. It is configurable and can enforce power and +performance policies. + +**clr_power** [**-d**\ \|\ **–debug**] + +DESCRIPTION +----------- + +``clr_power`` adjusts power and performance in the operating system by +setting runtime kernel and device parameters in the proc(5) filesystem. +``clr_power`` operates with built-in default values. Values can be added +or changed in user-defined `clr-power-tweaks.conf(5) `__ file. + +``clr_power`` applies settings and immediately exits after it is +started. It can act as a daemon that enforces settings with the included +systemd files. + +The program handles server and desktop-like systems differently and will +set values based on whether a system is a server platform or a desktop +platform. Most systems will be assumed a server, and if it can’t be +determined what type of platform the system is, treated as a server +platform. By default, systems with CPU’s that identify as ``Core(TM)``, +``Celeron`` and ``Pentium`` are treated as desktop systems, and systems +with CPU’s that identify as ``Xeon`` are treated as server systems. + +Tunings applied will vary per system. To see what tunings are applied, +run the program with the ``--debug`` option. + +OPTIONS +------- + +``-d``, ``--debug`` Display debug/verbose output including built-in +values. + +``-S``, ``--server`` Treat the system as a server, and apply server +specific tunings. + +``-D``, ``--desktop`` Treat the system as a desktop, and apply desktop +specific tunings + +FILES +----- + +- *clr-power.service* systemd service unit that executes **clr_power**. + +- *clr-power.timer* systemd timer that periodically executes the + *clr-power.service* to enforce settings. + +- *clr-power-rfkill.service* systemd service that stops bluetooth + devices at boot to prevent power drain. + +- */etc/clr-power-tweaks.conf* Optional user-defined configuration file + to override or att values. See `clr-power-tweaks.conf(5) `__ for more + information. + +BUGS +---- + +See GitHub Issues: https://github.com/clearlinux/clr-power-tweaks/issues + +SEE ALSO +-------- + +`clr-power-tweaks.conf(5) `__, **proc(5)** diff --git a/_sources/reference/manpages/clrtrust.1.rst.txt b/_sources/reference/manpages/clrtrust.1.rst.txt new file mode 100644 index 000000000..41c2ea490 --- /dev/null +++ b/_sources/reference/manpages/clrtrust.1.rst.txt @@ -0,0 +1,185 @@ +clrtrust +======== + +:Manual section: 1 + +SYNOPSIS +-------- + +**clrtrust** is a tool for generating and managing a centralized trusted +certificate store. + +``clrtrust [-v|--verbose] [-h|--help] [-c|--internal-rehash] [options]`` + +DESCRIPTION +----------- + +A trust store contains a set of X.509 certificates which the operating +system and applications should consider trustworthy. + +The ``clrtrust`` tool provides a frontend for centralized trust store +management. It allows for adding (trusting) and removing (distrusting) +certificate authorities (CAs). It also provides maintenance commands for +viewing and re-generating the trust store. + +Certificates can be provided by the operating system for out-of-box +functionality. Certificates can also be provided and modified by +privileged users. + +It is up to each application to make use of the trust store generated by +``clrtrust``. + +OPTIONS +------- + +:: + + Usage: clrtrust [-v|--verbose] [-h|--help] [-c|--internal-rehash] [options] + + -v | --verbose Shows more details about execution + -c | --internal-rehash Forces use of internal implementation of c_rehash + -h | --help Prints this message + + Commands + generate generates the trust store + list list CAs + add add trust to a CA + remove remove trust to a CA + restore restore trust to previously removed CA + check sanity/consistency check of the trust store + + clrtrust --help to get help on specific command. + +**Commands that modify the trust store require root privileges.** + +- ``clrtrust generate [-f|--force]`` + + The ``generate`` command has no arguments and generates a unified + trust store composed of system-provided and user-provided + certificates, if any. The optional ``--force`` parameter will + forcibly generate the trust store, even if it results in an empty + store. See the FILES section for paths used for trust store + generation. + +- ``clrtrust list`` + + The ``list`` command has no arguments and outputs a list of trusted + certificates with the following fields: + + ``id`` uniquely identifies the certificate. It can be used as input + to other ``clrtrust`` commands such as ``remove`` or ``restore``. + + ``File`` contains the file path of the certificate in the trust + store. + + ``Authority`` shows the name of the organization that issued the + certificate. This field is extracted from the certificate file. + + ``Expires`` shows the expiration date of the certificate. This field + is extracted from the certificate file. + +- ``clrtust add [ ...] [-f|--force]`` + + The ``add`` command takes one or more certificates as required + argument(s). The certificate is identified by a file path. The + certificate file(s) must be PEM-encoded with only one certificate per + file. The optional ``--force`` parameter will forcibly add the + certificate to the trust store, even if it is not a root CA. + + Adding a root CA to the trust store allows applications using the + trust store to trust the root CA certificate, trust certificate + chains issued by the authority, verify the authenticity of peer’s + certificate, and establish a connection. + +- ``clrtrust remove [ ...]`` + + The ``remove`` command takes one or more certificates as required + argument(s). The certificate is identified by a file path or ``id``. + The argument can be an ``id`` of the certificate (see the ``list`` + command) or the file path of the certificate. + + Removing a root CA from the trust store distrusts the certificate for + applications using the trust store. Certificate chains issued by the + authority will no longer be trusted, authenticity of the peer’s + certificate will no longer be verified, and a connection will not be + established. + +- ``clrtrust check`` + + The ``check`` command has no arguments and validate the consistency + of a previously generated unified trust store. + +EXAMPLES +-------- + +View the list of trusted CAs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +``clrtrust list`` + +The command above outputs a list of trusted certificates in the format +below: + +:: + + id: FA:B7:EE:36:97:26:62:FB:2D:B0:2A:F6:BF:03:FD:E8:7C:4B:2F:9B + File: /var/cache/ca-certs/anchors/certSIGN_ROOT_CA.crt + Authority: /C=RO/O=certSIGN/OU=certSIGN ROOT CA + Expires: Jul 4 17:20:04 2031 GMT + +The certificate can be further inspected using the ``openssl x509`` +command. For example: + +:: + + openssl x509 -in /var/cache/ca-certs/anchors/certSIGN_ROOT_CA.crt -noout -text + +Add (trust) a root CA +~~~~~~~~~~~~~~~~~~~~~ + +``clrtrust add ~/PrivateCA.pem`` + +The command above will add a root CA certificate located in the +``~/PrivateCA.pem`` file. If the certificate file is not in the PEM +format, use ``openssl x509`` command to convert to PEM first. For +example: + +:: + + openssl x509 -in PrivateCA.cer -inform der -out PrivateCA.pem -outform pem + +Remove (distrust) a root CA +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +``clrtrust remove ~/PrivateCA.pem`` + +The command above will remove a root CA certificate located in the +``~/PrivateCA.pem`` file from the trust store and distrust it. + +FILES +----- + +*/var/cache/ca-certs* + +Generated directory of certificates and verification keys. Do not modify +contents outside of ``clrtrust``. + +*/usr/share/ca-certs/* + +Operating-system provided certificates and keys. Do not modify contents +outside of ``clrtrust``. + +*/etc/ca-certs/* + +Generated directory of user-supplied certificates and verification keys. +Do not modify contents outside of ``clrtrust``. + +BUGS +---- + +See GitHub Issues: https://github.com/clearlinux/clrtrust/issues + +SEE ALSO +-------- + +**openssl(1)** diff --git a/_sources/reference/manpages/mixer.1.rst.txt b/_sources/reference/manpages/mixer.1.rst.txt new file mode 100644 index 000000000..d6ca50ebf --- /dev/null +++ b/_sources/reference/manpages/mixer.1.rst.txt @@ -0,0 +1,149 @@ +===== +mixer +===== + +------------------------ +OS software update mixer +------------------------ + +:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``mixer [subcommand] `` + + +DESCRIPTION +=========== + +`mixer(1) `__ is a software update generator that uses input RPMs and bundle +definition files to create update metadata consumable by `swupd(1) `__. + +``mixer`` operates in a mix workspace using configuration files existing in the +workspace. The tool allows users to use RPMs from an upstream URL (default +download.clearlinux.org), provide their own RPMs, and use RPMs from other remote +repositories to build updates. Users can also define their own local bundle +definitions as well as use the default bundle definitions from the upstream URL. + +``mixer`` provides commands to manage local RPMs and bundle definitions and +configure remote RPM repositories. + +The output of ``mixer`` is a set of manifests readable by ``swupd`` as well as +all the OS content ``swupd`` needs to perform its update operations. The OS +content includes all the files in an update as well as zero- and delta-packs for +improved update performance. The content that ``mixer`` produces is tied to a +specific format so that ``swupd`` is guaranteed to understand it if the client +is using the right version of ``swupd``. See `swupd(1) `__ and `os-format(7) `__ +for more details. + + +OPTIONS +======= + +The following options are applicable to most subcommands, and can be +used to modify the core behavior and resources that ``mixer`` uses. + +- ``-h, --help`` + + Display general help information. If put after a subcommand, it will + display help specific to that subcommand. + +- ``--check`` + + Check all external dependencies needed by mixer. + +- ``-v, --version`` + + Displays the version information of the ``mixer`` program and exit. + +- ``--offline`` + + Skip caching upstream bundles and work entirely with local bundles. + Do not reach out over network to perform operations. + + +SUBCOMMANDS +=========== + +``add-rpms`` + + Add RPMs from the configured LOCAL_RPM_DIR to the local dnf repository. + See `mixer.add-rpms(1) `__ for more details. + +``build`` + + Build various pieces of OS content, including all metadata needed by + ``swupd`` to perform updates. ``mixer build`` is a complicated tool in + itself. See `mixer.build(1) `__ for more details. + +``bundle`` + + Perform various configuration actions on local and upstream bundles. The + user can add or remove bundles from their mix, create new bundle definitions, + or validate local bundle definition files. See `mixer.bundle(1) `__ for more details. + +``config`` + + Perform configuration related actions, including configuration file + validation and conversion from deprecated formats. See `mixer.config(1) `__ + for more details. + +``help`` + + Print help text for any ``mixer`` subcommand. + +``init`` + + Initialize ``mixer`` configuration and workspace. See `mixer.init(1) `__ for + more details. + +``repo`` + + Add, list, remove, or edit RPM repositories to be used by mixer. This + subcommand allows users to configure which remote or local repositories + mixer should use to look for RPMs. See `mixer.repo(1) `__ for more + information. + +``versions`` + + Manage mix and upstream versions. By itself the command will print the + current version of mix and upstream, and also report the latest version of + upstream available. Also allows the user to update mix and upstream + versions. See `mixer.versions(1) `__ for more details. + + +FILES +===== + +`/builder.conf` + + The mixer configuration file. + +`/.yum-mix.conf` + + The default location for the DNF configuration file. + + +EXIT STATUS +=========== + +On success, 0 is returned. A non-zero return code indicates a failure. + +SEE ALSO +-------- + +* `mixer.add-rpms(1) `__ +* `mixer.build(1) `__ +* `mixer.bundle(1) `__ +* `mixer.config(1) `__ +* `mixer.init(1) `__ +* `mixer.repo(1) `__ +* `mixer.versions(1) `__ +* `swupd(1) `__ +* `os-format(7) `__ +* https://github.com/clearlinux/mixer-tools +* https://github.com/clearlinux/swupd-client +* https://clearlinux.org/documentation/ diff --git a/_sources/reference/manpages/mixer.add-rpms.1.rst.txt b/_sources/reference/manpages/mixer.add-rpms.1.rst.txt new file mode 100644 index 000000000..56fd3ae4d --- /dev/null +++ b/_sources/reference/manpages/mixer.add-rpms.1.rst.txt @@ -0,0 +1,50 @@ +============== +mixer.add-rpms +============== + +--------------------- +Add local RPMs to mix +--------------------- + +:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``mixer add-rpms [flags]`` + + +DESCRIPTION +=========== + +Adds RPMs from the `LOCAL_RPM_DIR` (configured in the `builder.conf`) to the +local RPM repository to be used in creating a mix. + + +OPTIONS +======= + +In addition to the globally recognized ``mixer`` flags (see `mixer(1) `__ for +more details), the following options are recognized. + +- ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses the + default `builder.conf` in the mixer workspace if this option is not provided. + +- ``-h, --help`` + + Display ``add-rpm`` help information and exit. + + +EXIT STATUS +=========== + +On success, 0 is returned. A non-zero return code indicates a failure. + +SEE ALSO +-------- + +* `mixer(1) `__ diff --git a/_sources/reference/manpages/mixer.build.1.rst.txt b/_sources/reference/manpages/mixer.build.1.rst.txt new file mode 100644 index 000000000..4d3a3f384 --- /dev/null +++ b/_sources/reference/manpages/mixer.build.1.rst.txt @@ -0,0 +1,298 @@ +=========== +mixer.build +=========== + +----------------------------------- +Build varioius pieces of OS content +----------------------------------- + +:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``mixer build [command] [flags]`` + + +DESCRIPTION +=========== + +Builds various pieces of OS content and output update metadata to +`/update/www//`. This metadata can be published +directly to a web-server and consumed by client update systems via the +`swupd(1) `__ update tool. All steps can be run at once using ``build all`` or +the steps can be run individually using the subcommands. + + +OPTIONS +======= + +In addition to the globally recognized ``mixer`` flags (see `mixer(1) `__ for +more details), the following options are recognized across all ``build`` +subcommands. + +- ``--bundle-workers`` + + Number of parallel workers when building bundles, passing 0 or omitting this + flag defaults the number of workers to the number of CPUs on the system. + +- ``--delta-workers`` + + Number of parallel workers when creating deltas, passing 0 or omitting this + flag defaults the number of workers to the number of CPUs on the system. + +- ``--fullfile-workers`` + + Number of parallel workers when creating fullfiles, passing 0 or omitting this + flag defaults the number of workers to the number of CPUs on the system. + +- ``--skip-format-check`` + + Skip check for compatible upstream format when building on top of a new + upstream. + +- ``-h, --help`` + + Display ``build`` help information and exit. + + +SUBCOMMANDS +=========== + +``all`` + + Build all content for the mix. Implicitly runs ``build bundles`` followed by + ``build update``. In addition to the global options ``mixer build all`` + takes the following options. + + - ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses + the default `builder.conf` in the mixer workspace if this option is not + provided. + + - ``--format {number}`` + + Supply the format number to use for the build. + + - ``-h, --help`` + + Display ``build all`` help information and exit. + + - ``--increment`` + + Automatically increment the mix version post build. + + - ``--min-version {version}`` + + Supply minimum version for ``mixer`` to use old content from. This option + tells ``mixer`` to regenerate all mix content starting from a certain + version. ``mixer`` will not use any OS content from a version older than + the min-version passed here. + + - ``--no-signing`` + + Do not generate a certificate and do not sign the Manifest.MoM + + - ``--prefix {path}`` + + Supply the `path` to the file system where the ``swupd`` binaries live. + +``bundles`` + + Build the bundles for your mix. This is done by extracting dependency + information and file lists for each package in each bundle definition for the + mix. In addition to the global options ``mixer build bundles`` takes the + following options. + + - ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses + the default `builder.conf` in the mixer workspace if this option is not + provided. + + - ``-h, --help`` + + Display ``build bundles`` help information and exit. + + - ``--no-signing`` + + Do not generate a certificate and do not sign the Manifest.MoM + +``delta-packs`` + + Build packs to optimize ``swupd update``\s between versions. When a + ``swupd`` client updates a bundle it looks for a pack file from its current + version to the new version. If available ``swupd`` will download and apply + the pack content to the file system. Delta packs contain binary diff files + that describe changes between updates whenever possible and full files only + when necessary. Because of this delta packs are a significant performance + optimization for client updates. Because the client can fall back to full + files if a pack is not available, delta packs are not necessary for a + functional update. In addition to the global options ``mixer build + delta-packs`` takes the following options. + + - ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses + the default `builder.conf` in the mixer workspace if this option is not + provided. + + - ``--from {version}`` + + Generate packs from the specified `version`. + + - ``-h, --help`` + + Display ``build delta-packs`` help information and exit. + + - ``--previous-versions {number}`` + + Generate packs for `number` of previous versions. + + - ``--report`` + + Report reason each file in the `to` manifest was packed in the delta pack + or not. + + - ``--to {version}`` + + Generate packs targeting a specific `to` `version`. + +``delta-manifests`` + + Build manifest deltas to optimize ``swupd update``\s between versions. When a + ``swupd`` client update runs, it will first try to get a delta manifest file + if it exists and apply that on the bundle manifest file for the version + installed on their system (if it exists). This can save a large amount of + content being downloaded in the case of few files changing in a manifest. + Because the client can fall back to the full manifest file if a delta is not + available, delta manifests are not necessary for a functional update. In + addition to the global options ``mixer build delta-manifests`` takes the + following options. + + - ``--from {version}`` + + Generate packs from the specified `version`. + + - ``-h, --help`` + + Display ``build delta-manifests`` help information and exit. + + - ``--previous-versions {number}`` + + Generate packs for `number` of previous versions. + + - ``--to {version}`` + + Generate packs targeting a specific `to` `version`. + +``image`` + + Build an image from the mix content. In addition to the global options + ``mixer build image`` takes the following options. + + - ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses + the default `builder.conf` in the mixer workspace if this option is not + provided. + + - ``--format {number}`` + + Supply the format `number` used for the mix. + + - ``-h, --help`` + + Display ``build image`` help information and exit. + + - ``--template {path}`` + + Provide the `path` to the image template file to use. + +``update`` + + Build the update content for the mix. This command builds the actual update + metadata (manifests) and content (full files and zero packs) necessary for + ``swupd`` to perform updates on client systems. ``update`` relies on the + output of ``build bundles`` as the input for this step and expects the + output of ``build bundles`` to exist in the + `/update/image/` directory. In addition to the + global options ``mixer build update`` takes the following options. + + - ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses + the default `builder.conf` in the mixer workspace if this option is not + provided. + + - ``--format {number}`` + + Supply the format `number` used for the mix. + + - ``-h, --help`` + + Display ``build update`` help information and exit. + + - ``--increment`` + + Automatically increment the mix version post build. + + - ``--min-version {version}`` + + Supply minimum version for ``mixer`` to use old content from. This option + tells ``mixer`` to regenerate all mix content starting from a certain + version. ``mixer`` will not use any OS content from a version older than + the min-version passed here. + + - ``--no-signing`` + + Do not generate a certificate and do not sign the Manifest.MoM + + - ``--prefix {path}`` + + Supply the `path` to the file system where the ``swupd`` binaries live. + +``validate`` + + Compare two versions to validate that manifest file changes align with corresponding + package changes. Inconsistencies between manifest entries and package contents are + reported as errors. When no errors occur, package update statistics are displayed. + + - ``--from {version}`` + + Compare manifests ``from`` a specific version + + - ``--to {version}`` + + Compare manifests ``to`` a specific version + + - ``--from-repo-url {repo}={URL}`` + + Overrides the baseurl value for the provided repo in the DNF config file for the ``from`` version + + - ``--to-repo-url {repo}={URL}`` + + Overrides the baseurl value for the provided repo in the DNF config file for the ``to`` version + + - ``--table-width {width}`` + + Max width of package statistics table, defaults to terminal width and disabled by negative numbers + + - ``-h, --help`` + + Display ``build validate`` help information and exit. + + +EXIT STATUS +=========== + +On success, 0 is returned. A non-zero return code indicates a failure. + +SEE ALSO +-------- + +* `mixer(1) `__ +* `swupd(1) `__ diff --git a/_sources/reference/manpages/mixer.bundle.1.rst.txt b/_sources/reference/manpages/mixer.bundle.1.rst.txt new file mode 100644 index 000000000..3c3217228 --- /dev/null +++ b/_sources/reference/manpages/mixer.bundle.1.rst.txt @@ -0,0 +1,207 @@ +============ +mixer.bundle +============ + +------------------------------------------------ +Perform various configuration actions on bundles +------------------------------------------------ + +:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``mixer bundle [command] [flags]`` + + +DESCRIPTION +=========== + +Performs various configuration actions on upstream and local bundle definition +files. List and validate mix bundles. Validate local bundle definition files. + + +SUBCOMMANDS +=========== + +``add {bundle} [{bundle}...] [flags]`` + + Add local or upstream bundles to your mix by modifying the mix bundles list + at `/mixbundles`. In addition to the global options ``mixer + bundle add`` takes the following options. + + - ``--all-local`` + + Add all local bundles defined in `/local-bundles` to the + mix. This command takes precedence over bundle list. + + - ``--all-upstream`` + + Add all upstream bundles (cached in `/upstream-bundles` + to the mix. This command takes precedence over bundle list. + + - ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses + the default `builder.conf` in the mixer workspace if this option is not + provided. + + - ``--git`` + + Automatically apply a new git commit after modifying the mix bundles list + or bundle definitions. This is useful if your local bundles are kept under + version control. + + - ``-h, --help`` + + Display ``bundle add`` help information and exit. + +``create`` + + Create new bundles or copy existing bundles. + This command will locate the bundle by first looking in local-bundles, + and then in upstream-bundles. If the bundle is only found upstream, + the bundle file will be copied to your local-bundles directory. If the bundle is + not found anywhere, a blank template will be created with the correct name. + + Passing '--add' will also add the bundle(s) to your mix. Please note that + bundles are added after all bundles are created, and thus will not be added + if any errors are encountered earlier on. + + In addition to the global options ``mixer bundle create`` takes the following + options. + + - ``--add`` + + Add the bundle(s) to your mix after editing. + + - ``--local`` + + Skip upstream check and create empty local bundle(s). + + - ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses + the default `builder.conf` in the mixer workspace if this option is not + provided. + + - ``--git`` + + Automatically apply a new git commit after modifying the mix bundles list + or bundle definitions. This is useful if your local bundles are kept under + version control. + + - ``-h, --help`` + + Display ``bundle create`` help information and exit. + +``list [mix|local|upstream] [flags]`` + + List the bundles in the mix, the available local bundles, or the available + upstream bundles. In addition to the global options ``mixer bundle list`` + takes the following options. + + - ``mix`` + + List the bundles in the mix. + + - ``local`` + + List available locally-defined bundles. + + - ``upstream`` + + List available upstream bundles. + + - ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses + the default `builder.conf` in the mixer workspace if this option is not + provided. + + - ``-h, --help`` + + Display ``bundle list`` help information and exit. + + - ``--tree`` + + Pretty-print the bundle list as a tree showing include information. + +``remove`` + + Removes bundles from your mix by modifying the mix bundle list (stored in + the `/mixbundles` file). The mix bundle list is parsed, the + bundles are removed, and the resultant list is written back out in sorted + order. If bundles do not exist in the mix, they are skipped. In addition to + the global options ``mixer bundle remove`` takes the following options. + + - ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses + the default `builder.conf` in the mixer workspace if this option is not + provided. + + - ``--git`` + + Automatically apply a new git commit after modifying the mix bundles list + or bundle definitions. This is useful if your local bundles are kept under + version control. + + - ``-h, --help`` + + Display ``bundle remove`` help information and exit. + + - ``--local`` + + Also remove the bundle file from local-bundles. This action is + irrevocable. + + - ``--mix={bool}`` + + Remove bundle from the mix bundle list. This defaults to true. + +``validate`` + + Checks bundle definition files for validity. Only local bundle files are + checked; upstream bundles are trusted as valid. Valid bundles yield no + output. Any invalid bundles will yield a non-zero return code. + + Basic validation includes checking syntax and structure, and that the bundle + has a valid name. Commands like ``mixer bundle add`` run basic validation + automatically. + + In addition to the global options ``mixer bundle remove`` takes the + following options. + + - ``--all-local`` + + Run validation against all local bundles. + + - ``-c, --config {path}`` + + Optionally tell ``mixer`` to use the configuration file at `path`. Uses + the default `builder.conf` in the mixer workspace if this option is not + provided. + + - ``-h, --help`` + + Display ``bundle validate`` help information and exit. + + - ``--strict`` + + Perform strict validation to additionally check that the bundle header + fields are parse-able and non-empty, and that the header 'Title' is itself + valid and matches the bundle filename. + + +EXIT STATUS +=========== + +On success, 0 is returned. A non-zero return code indicates a failure. + +SEE ALSO +-------- + +* `mixer(1) `__ diff --git a/_sources/reference/manpages/mixer.config.1.rst.txt b/_sources/reference/manpages/mixer.config.1.rst.txt new file mode 100644 index 000000000..2333ac7f9 --- /dev/null +++ b/_sources/reference/manpages/mixer.config.1.rst.txt @@ -0,0 +1,79 @@ +============ +mixer.config +============ + +------------------------------------------ +Perform configuration manipulation actions +------------------------------------------ + +:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``mixer config [command]`` + + +DESCRIPTION +=========== + +Perform various configuration manipulation actions on the mixer configuration +files. + + +OPTIONS +======= + +In addition to the globally recognized ``mixer`` flags (see `mixer(1) `__ for +more details), the following options are recognized. + +- ``-h, --help`` + + Display ``config`` help information and exit. + + +SUBCOMMANDS +=========== + +``convert`` + + Convert an old config file to the new TOML format. The command will generate + a backup file of the old config and will replace it with the converted one. + Environment variables will not be expanded and the values will not be + validated. In addition to the global options ``mixer config convert`` takes + the following options. + + - ``-c, --config {path}`` + + The `path` to the configuration file to convert. + + - ``-h, --help`` + + Display ``config convert`` help and exit. + +``validate`` + + Parse a builder config file and display its properties. Properties + containing environment variables will be expanded. In addition to the + global options ``mixer config validate`` takes the following options. + + - ``-c, --config {path}`` + + The `path` to the configuration file to validate. + + - ``-h, --help`` + + Display ``config validate`` help and exit. + + +EXIT STATUS +=========== + +On success, 0 is returned. A non-zero return code indicates a failure. + +SEE ALSO +-------- + +* `mixer(1) `__ diff --git a/_sources/reference/manpages/mixer.init.1.rst.txt b/_sources/reference/manpages/mixer.init.1.rst.txt new file mode 100644 index 000000000..f9932f0e2 --- /dev/null +++ b/_sources/reference/manpages/mixer.init.1.rst.txt @@ -0,0 +1,89 @@ +========== +mixer.init +========== + +------------------------------ +Initialize mixer and workspace +------------------------------ + +:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``mixer init [flags]`` + + +DESCRIPTION +=========== + +Initialize the mixer configuration and mixer workspace by writing default +configuration files if necessary and building the proper directory structure. + +OPTIONS +======= + +In addition to the globally recognized ``mixer`` flags (see `mixer(1) `__ for +more details), the following options are recognized. + +- ``--all-local`` + + Initialize mix with all local bundles automatically included. + +- ``--all-upstream`` + + Initialize the mix with all upstream bundles automatically included. + +- ``--clear-version {version}`` + + Upstream version used to compose the mix. It must be either an integer or 'latest' (default "latest") + +- ``--config {path}`` + + Supply a specific configuration file at `path` to use for mixing. + +- ``--format {format}`` + + Supply the format version for the mix. + +- ``--git`` + + Track mixer's internal work directory with git. + +- ``-h, --help`` + + Display ``init`` help information and exit. + +- ``--local-rpms`` + + Create and configure local RPM directories. + +- ``--mix-version {version}`` + + Supply the mix version to build (default is 10) + +- ``--no-default-bundles`` + + Skip adding default bundles to the mix + +- ``--upstream-url {url}`` + + Supply an upstream URL to use for mixing (default is + "https://download.clearlinux.org") + +- ``--upstream-version {version}`` + + Alias to `--clear-version` (default is "latest") + + +EXIT STATUS +=========== + +On success, 0 is returned. A non-zero return code indicates a failure. + +SEE ALSO +-------- + +* `mixer(1) `__ diff --git a/_sources/reference/manpages/mixer.repo.1.rst.txt b/_sources/reference/manpages/mixer.repo.1.rst.txt new file mode 100644 index 000000000..2c5058432 --- /dev/null +++ b/_sources/reference/manpages/mixer.repo.1.rst.txt @@ -0,0 +1,85 @@ +========== +mixer.repo +========== + +--------------------------------------------------------------- +Perform various configuration actions on mixer RPM repositories +--------------------------------------------------------------- + +:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``mixer repo [command]`` + + +DESCRIPTION +=========== + +Perform various configuration actions on mixer RPM repositories. These RPM +repositories are used as content sources for mixer to build updates from. + + +OPTIONS +======= + +In addition to the globally recognized ``mixer`` flags (see `mixer(1) `__ for +more details), the following options are recognized. + +- ``-c, --config {path}`` + + The `path` to the configuration file to use. + +- ``-h, --help`` + + Display subcommand help information and exit. + + +SUBCOMMANDS +=========== + +``add {name} {url}`` + + Add the repo named `name` at the `url` url. In addition to the global + options ``mixer repo add`` takes the following options. + + - ``--priority`` + + Repo priority between 1 and 99, where 1 is highest. This flag defaults to 1. + +``init`` + + Initialize the DNF configuration file with the default `Clear` repository + enabled. + +``list`` + + List all RPM repositories configured in the DNF configuration file used by + mixer. + +``remove {name}`` + + Remove the repo `name` from the DNF configuration file used by mixer. + +``set-priority {name} {priority}`` + + Sets the priority for repo `name` to the provided `priority`. + +``set-url {name} {url}`` + + Sets the URL for repo `name` to the provided `url`. If `name` does not exist + the repo will be added to the configuration. + + +EXIT STATUS +=========== + +On success, 0 is returned. A non-zero return code indicates a failure. + +SEE ALSO +-------- + +* `mixer(1) `__ diff --git a/_sources/reference/manpages/mixer.versions.1.rst.txt b/_sources/reference/manpages/mixer.versions.1.rst.txt new file mode 100644 index 000000000..e0375ad8a --- /dev/null +++ b/_sources/reference/manpages/mixer.versions.1.rst.txt @@ -0,0 +1,92 @@ +============== +mixer.versions +============== + +-------------------------------- +Manage mix and upstream versions +-------------------------------- + +:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``mixer versions`` + +``mixer versions [command]`` + + +DESCRIPTION +=========== + +Manage mix and upstream versions. By itself the command will print the current +version of mix and upstream, and also report on the latest version of upstream +available. This command also allows the user to increment the mix version and +optionally the upstream version. + + +OPTIONS +======= + +In addition to the globally recognized ``mixer`` flags (see `mixer(1) `__ for +more details), the following options are recognized. + +- ``-h, --help`` + + Display subcommand help information and exit. + + +SUBCOMMANDS +=========== + +``update`` + + Increment the mix version to generate a new release. By default the mix + version is incremented by 10, following Clear Linux conventions to leave + room for intermediate versions if necessary. The increment can be configured + with the `--increment` flag. The ``update`` command also allows the user to + update the upstream version. + + In addition to the global options ``mixer versions update`` takes the + following options. + + - ``--clear-version {version}`` + + Alias to `--upstream-version` + + - ``-c, --config {path}`` + + Supply the `path` to the configuration file to use. + + - ``--increment {number}`` + + Amount to increment the current mix version (default is 10). + + - ``--mix-version {version}`` + + Set a specific mix `version`. + + - ``--upstream-version {version}`` + + Set a specific next upstream version (either version number or the default + "latest" string). + + - ``--skip-format-check`` + + Skip check for compatible upstream format when changing upstream version. + + This command will not update to an upstream version of a different format + ("format bumps"). At the moment this needs to be handled manually. + + +EXIT STATUS +=========== + +On success, 0 is returned. A non-zero return code indicates a failure. + +SEE ALSO +-------- + +* `mixer(1) `__ diff --git a/_sources/reference/manpages/os-core.7.rst.txt b/_sources/reference/manpages/os-core.7.rst.txt new file mode 100644 index 000000000..b71daa52c --- /dev/null +++ b/_sources/reference/manpages/os-core.7.rst.txt @@ -0,0 +1,37 @@ +======= +os-core +======= + +---------------------------------------------------- +Base files for Clear Linux OS for Intel Architecture +---------------------------------------------------- + +:Copyright: \(C\) 2017 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 7 + + +SYNOPSIS +======== + +* ``init`` +* ``root filesystem`` +* ``shell`` + + +DESCRIPTION +=========== + +os-core provides a minimal base for the Clear Linux OS for Intel +Architecture. It contains required utilities for running the init +program systemd, letting users log in and run bash shell commands. The +core also contains pieces of packages that are required to run any +other package in the distribution. + +This is the only required bundle for Clear Linux OS and can not be +removed as all other bundles depend upon it. + + +SEE ALSO +======== + +``_ diff --git a/_sources/reference/manpages/os-format.7.rst.txt b/_sources/reference/manpages/os-format.7.rst.txt new file mode 100644 index 000000000..1cb7b36b9 --- /dev/null +++ b/_sources/reference/manpages/os-format.7.rst.txt @@ -0,0 +1,55 @@ +========= +OS Format +========= + +-------------------------------------- +A summary of OS formats in Clear Linux +-------------------------------------- + +:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 7 + + +SYNOPSIS +======== + +``/usr/share/defaults/swupd/format`` + +DESCRIPTION +=========== + +A format defines a range of OS versions that have compatible update metadata and +content. An update client can update a system from the oldest version in the +format to the latest version in the format without worrying about compatibility +issues in the update content for the version it is updating to. + +A format bump occurs when the update metadata or content is changed in such a +way that will cause client updates to break. In this case the format number must +be incremented so clients will not attempt to update to the new versions in the +new format without crossing the format boundary. Update clients update only to +the latest build in their format. Once that update is complete the update client +may then update forward again because the last version in the current format has +identical content to the first version in the new format, including the new +update client needed to understand the new format. + +Because the update system in Clear Linux (``swupd``) has auto-update turned on +by default most users will never be aware of their system changing to a new +format. Those users who have disabled auto-update may occasionally see ``swupd`` +perform two updates in a row when they only invoked ``swupd update`` once. This +is because ``swupd`` detects when it crossed a format boundary and immediately +re-executes an update to carry it to the latest version in the new format. This +re-execution will actually invoke the new version of ``swupd`` that was +delivered in the first update. + +Format bumps are simply a way for Clear Linux to introduce breaking changes to +the OS without breaking user's update stream or workflow. + + +SEE ALSO +======== + +* `mixer(1) `__ +* `swupd(1) `__ +* https://clearlinux.org/documentation/ +* https://github.com/clearlinux/swupd-client/ +* https://github.com/clearlinux/mixer-tools/ diff --git a/_sources/reference/manpages/stateless.7.rst.txt b/_sources/reference/manpages/stateless.7.rst.txt new file mode 100644 index 000000000..ff3cadf14 --- /dev/null +++ b/_sources/reference/manpages/stateless.7.rst.txt @@ -0,0 +1,309 @@ +========= +stateless +========= + +--------------------------------------------------------------------------- +A guide to stateless configuration in Clear Linux OS for Intel Architecture +--------------------------------------------------------------------------- + +:Copyright: \(C) 2017 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 7 + + +SYNOPSIS +======== + +``/etc/`` + +``/usr/share/defaults/`` + +``/usr/share/defaults/etc/`` + +``/var/`` + +``/var/cache/`` + +``/usr/local/`` + +``/usr/src/`` + +``/usr/lib/kernel/`` + +``/usr/lib/modules/`` + + +DESCRIPTION +=========== + +The Clear Linux OS for Intel Architecture has a unique way of +providing customization and configuration to system administrators and +users. This man page aims to provide both an explanation of what this +method is and how users of Clear Linux can use it and benefit from it. + +The goal of "stateless" is to provide a system OS that functions +without user configuration. A system should not require editing of +configuration files by the end user before it is functional, nor should +it place lengthy and confusing configuration files automatically in +user-maintained file system areas (``/etc/``) by default. And +additionally, any configuration placed in user-maintained configuration +should be removable without breaking functionality. + +This is achieved by several methods, each of which implements a part +of the stateless goal. + + +* Removal of configuration files + +The first step taken to achieve stateless configuration is to embed +proper default configuration values in the software. Any missing +critical configuration value should have a built-in default value. + +* Providing of default configuration files outside of ``/etc/`` + +Software is adjusted to use a distribution provided default +configuration file in ``/usr/share/defaults``. If no configuration +file exists in ``/etc/`` for the software, the software must use the +distribution default configuration file. + +* Allowing the end user to provide configuration in ``/etc/`` + +If the user provides a properly formatted configuration file in +the ``/etc/`` filesystem area (or, wherever it is relevant for the +software), the software is instructed to use this configuration +file instead of any other. + + +Consequences for the system administrator (user) +------------------------------------------------ + +The user should create configuration files as needed and avoid +modifying distribution provided defaults. The filesystem folders and +all content under ``/etc/`` and ``/var/`` may be modified as needed, but +the content under ``/usr/``, ``/lib/``, ``/lib64/``, ``/bin/``, ``/sbin/`` should +never be modified, and will be overwritten by `swupd(1) `__ as needed. + +Some default configuration structure and data is automatically created +under ``/etc/`` and ``/var/``. The user may remove these file system +structures entirely - a reboot of the OS should properly restore the +system to its factory default. This may also provide the user with +a way to repair a defective system configuration. + +The user should, if user configuration of a service is needed, +attempt to place the configuration file in the ``/etc/`` structure as +the service requests. Often, template files for the configuration +format can be found under the ``/usr/share/defaults/`` file structure, +and these files can be copied to the ``/etc/`` file structure. + +To modify system service configuration (``systemd``\(1) service units), +the user should not touch or modify unit files under the ``/usr/`` +file structure directly, as changes in those files will be lost after +a system software update with `swupd(1) `__. + +A list of package specific hints and best practices is listed below. In +many cases, the man pages for the respective packages also provides +detailed information as to how to configure the software. Please +consult the relevant manual pages for the software to find information +on the specific syntax and options for each software. + + +Where can I install system-wide files then? +------------------------------------------- + +`swupd(1) `__ has a list of exempted locations where the system +administrator can place files that will not get overwritten or removed +at all. The default whitelisted directories are: + + ``/usr/lib/modules`` + ``/usr/lib/kernel`` + ``/usr/local`` + ``/usr/src`` + +Using these locations for your own software is highly recommended. Not +only do these locations provide a standard FHS compliant way of adding +local software, they are sufficiently separated from OS software that +maintaining them will be much more simple. + + +ldconfig +-------- + + ``ldconfig``\(8) + +The default paths that the linker searches includes only ``/usr/lib64`` +and paths below that. This explicitly omits ``/usr/local/``. If you +compile libraries manually and install them in other paths, you may +need to configure the ``ld.so``\(8) linker to find these before you run +``ldconfig``. For example: + + ``echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf`` + + ``sudo ldconfig`` + + +systemd +------- + + ``systemd``\(1) + +Unit files can be created under ``/etc/systemd/system`` as needed and +function normally. To override unit file options, the simplest method +is to have ``systemctl``\(1) copy it for you by invoking it as: + + ``systemctl edit --full foo.service`` + +This creates an exact copy of the default unit file and invokes the +editor for the user, allowing the user to override any part of the unit. + +Unit files can be started as normal with ``systemctl start ``. + +To enable services to start at boot time, use ``systemctl enable ``. + + +sshd +---- + + ``sshd``\(8) + ``sshd_config``\(5) + +The SSH daemon has all of its configuration built in and no template +configuration file is present on the file system. The man page for +``sshd_config``\(5) explains the format, and it suffices to put only a +single option in the file + + ``/etc/ssh/sshd_config`` + +For example, to enable X11 forwarding through sshd all one has to do is +add one line containing ``X11Forwarding yes``. Other often used options +include ``PermitRootLogin yes`` to allow root ssh login access, and the +following 3 lines to disable password authentication entirely: + + ``ChallengeResponseAuthentication no`` + + ``PasswordAuthentication no`` + + ``UsePAM no`` + +To modify the listening port of sshd, one needs to determine whether +``sshd.socket`` or ``sshd.service`` is enabled first, since the methods +for changing the port number depend on whether ``sshd``\(8) is controlling +the port number, or whether ``systemd``\(1) is: + + ``systemctl is-enabled sshd.socket`` + +If enabled, the ``sshd.socket`` unit should be edited to modify the port: + + ``systemctl edit --full sshd.socket`` + +And, the user should modify the port number at ``ListenStream=`` to the +desired new port number. + +If ``sshd.service`` is enabled, the user should create, and edit a new +``/etc/ssh/sshd_config`` file: + + ``mkdir -p /etc/ssh/`` + ``vi /etc/ssh/sshd_config`` + +And add a line in that file that reads: + + ``Port 10022`` + +to, for instance, change the port number sshd.service will listen on +to port 10022. + +Root login over SSH is disabled by default and should remain disabled +for most systemd. However, in some cases this is acceptable and it can +be easily enabled by adding the following line to ``/etc/ssh/sshd_config`` +that reads: + + ``PermitRootLogin yes`` + + +nginx +----- + +Nginx ships by default in a non-functional configuration. However, +an example configuration file is present that can be used to enable +a simple server. To use this template configuration, create: + + ``mkdir -p /etc/nginx/conf.d`` + +And then copy configuration templates over to this folder: + + ``cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf`` + ``cp /usr/share/nginx/conf/server.conf.example /etc/nginx/conf.d/server.conf`` + +Edit the file to assure options such as SSL and PHP are enabled in +the preferred method. In the default configuration, PHP is enabled +to run listening to ``/run/php-fpm.sock``. The template file has PHP +by default disabled, but the listed example lines can be uncommented +to make the nginx service process php documents. + + +php-fpm +------- + + ``php-fpm``\(8) + +Php's default configuration file doesn't allow us to provide an +alternative as it is programmed to only read the builtin file. If you +wish to have php-fpm use a different configuration, you must pass it a +startup option to tell it where it is. This can be done by ``systemctl +edit --full php-fpm.service``. That command copies the default php-fpm +service unit to ``/etc/systemd/system/`` and allows the user to override +any option. It spawns an editor with the copy. + +Then, the user should change the line: + + ``ExecStart=/usr/sbin/php-fpm --nodaemonize`` + +to: + + ``ExecStart=/usr/sbin/php-fpm --nodaemonize --fpm-config /etc/php-fpm.conf`` + +The template php-fpm.conf can be found at ``/usr/share/defaults/php/php-fpm.conf``. +One should copy this to a place in ``/etc/``: + + ``cp /usr/share/defaults/php/php-fpm.conf /etc/php-fpm.conf`` + +Then, the user should edit ``/etc/php-fpm.conf`` and assure that +configuration options are all properly set as needed. + +Care must be taken using the default ``pool`` configuration. If needed, +the user should also create ``/etc/php-fpm.d/`` and include pool +configuration files from either ``/usr/share/defaults/php/php-fpm.d/`` or +copy them and modify them as needed as well, as well as adjust the +``include`` configuration option in ``php-fpm.conf`` to point to a new +location for pool configuration files. + +Network interface management +---------------------------- + +Clear Linux has switched the network interface management model to be fully +managed by NetworkManager when installed on real hardware. Previously, Ethernet +interfaces were managed by systemd-networkd whereas Wi-Fi and others were +managed by NetworkManager. Clear Linux cloud images continue to use +systemd-networkd. + +When updating from previous versions of Clear Linux, the installation will be +reconfigured to continue with systemd-networkd managing the Ethernet interfaces. +Since the connectivity could be lost during the procedure, physical access to the +system is required. To switch to NetworkManager for all the interfaces, the +user should disable and stop systemd-networkd: + + ``sudo systemctl disable systemd-networkd`` + ``sudo systemctl stop systemd-networkd`` + +Then, remove the file ``/etc/NetworkManager/conf.d/systemd-networkd-unmanaged.conf`` + +Finally, restart NetworkManager + + ``sudo systemctl restart NetworkManager`` + +SEE ALSO +======== + +* `swupd(1) `__ +* ``systemd``\(1) +* https://clearlinux.org/documentation/ +* https://clearlinux.org/features/stateless +* https://github.com/clearlinux/swupd-client/ diff --git a/_sources/reference/manpages/swupd-update.service.4.rst.txt b/_sources/reference/manpages/swupd-update.service.4.rst.txt new file mode 100644 index 000000000..ea04b98bf --- /dev/null +++ b/_sources/reference/manpages/swupd-update.service.4.rst.txt @@ -0,0 +1,46 @@ +==================== +swupd-update.service +==================== + +--------------------- +Performs an OS update +--------------------- + +:Copyright: \(C) 2017 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 4 + + +SYNOPSIS +======== + +``swupd-update.service`` + +``/usr/lib/systemd/system/swupd-update.service`` + + +DESCRIPTION +=========== + +Instructs the ``systemd``\(1) system daemon how to start and control the +``swupd`` service to perform an update. + +When this unit runs, the output will be sent to the systemd journal, and +it can be inspected with the ``journalctl``\(1) command. + +The user can disable all background updates (either started through +timers or not) by executing the following command: + +``systemctl mask swupd-update.service`` + + +ENVIRONMENT +=========== + +This unit is a ``systemd``\(1) unit file. + + +SEE ALSO +======== + +`swupd(1) `__, `swupd-update.timer(4) `__ + diff --git a/_sources/reference/manpages/swupd-update.timer.4.rst.txt b/_sources/reference/manpages/swupd-update.timer.4.rst.txt new file mode 100644 index 000000000..a7b225177 --- /dev/null +++ b/_sources/reference/manpages/swupd-update.timer.4.rst.txt @@ -0,0 +1,40 @@ +================== +swupd-update.timer +================== + +---------------------------- +Schedules periodical updates +---------------------------- + +:Copyright: \(C) 2017 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 4 + + +SYNOPSIS +======== + +``swupd-update.timer`` + +``/usr/lib/systemd/system/swupd-update.timer`` + + +DESCRIPTION +=========== + +Instructs the ``systemd``\(1) system daemon when to periodically start a +system software update. The update itself may not execute if the +`swupd-update.service(4) `__ is disabled. See that manual page for +information on how to disable that unit. + + +ENVIRONMENT +=========== + +This unit is a ``systemd``\(1) unit file. + + +SEE ALSO +======== + +`swupd(1) `__, `swupd-update.service(4) `__ + diff --git a/_sources/reference/manpages/swupd.1.rst.txt b/_sources/reference/manpages/swupd.1.rst.txt new file mode 100644 index 000000000..75de4b056 --- /dev/null +++ b/_sources/reference/manpages/swupd.1.rst.txt @@ -0,0 +1,771 @@ +===== +swupd +===== + +-------------------------- +OS software update program +-------------------------- + +:Copyright: \(C) 2020 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``swupd [subcommand] `` + + +DESCRIPTION +=========== + +`swupd(1) `__ is an OS-level software update program that applies updates +to system software. + +The updates are fetched from a central software update server. If a +valid update is found on the server, it can be downloaded and applied. + +The ``swupd`` tool can also install and remove bundles, check for +updates without applying them, perform system-level diagnose of +the system software, and install an OS. + +A *version url* server provides version information. This server +notifies the program of available updates. + +A *content url* server (can be the same as *version url* server) +provides the file and metadata content for all versions. The content url +server provides metadata in the form of manifests. These Manifest files +list and describe file contents, symlinks, directories. Additionally, +the actual content is provided to clients in the form of archive files. + +``swupd`` consumes update artifacts generated by ``mixer`` in the specific +format the installed version of ``swupd`` understands. For more information +about how these artifacts are generated see `mixer(1) `__ and `os-format(7) `__. + +The ``swupd`` tool can also manage 3rd-party content, this allows users to +install, remove, and update bundles from 3rd-party repositories. + +OPTIONS +======= + +The following options are applicable to most subcommands, and can be +used to modify the core behavior and resources that swupd uses. + +-h, --help Display general help information. If put after a subcommand, it + will display help specific to that subcommand. + +-v, --version Displays the version information of the swupd program, and exit. + It also displays compile options and copyright information. + +-p , --path= Optionally set the top-level directory for the + swupd-managed system. This can be used to point to a chroot installation + of the OS or a custom mount. If not specified this will default to ``/``. + +-u , --url= Specify an RFC-3986 encoded url. The url will be used to + download version information and file content downloads. + +-P , --port= Specify the port number of the server to connect to. + Applies to both version and file content url server connections. + +-c , --contenturl= Specify an RFC-3986 encoded url. The url will be + used for file content downloads only. + +-v , --versionurl= Specify an RFC-3986 encoded url. The url will be + used to download version information. + +-F , --format= Specify the format suffix for + version file downloads. Is usually one of ``1``, ``2``, ``3``, etc. or + ``staging``. Software update formats may change regularly and normally + you should consult the swupd server data for the appropriate latest + version available. If that version is not supported by your version of + ``swupd``, you should subtract ``1`` from the number and try again until + it succeeds. + +-S , --statedir= Specify an alternate path for swupd cache and data directory. + Normally ``swupd`` uses ``/var/lib/swupd``. + +-K , --cachedir= Specify an alternate swupd cache directory. + Normally ``swupd`` uses ``/var/lib/swupd``. + +-Z , --datadir= Specify an alternate swupd data directory. + Normally ``swupd`` uses ``/var/lib/swupd``. + +-C , --certpath= Specify alternate path to swupd certificate store (pem file). + Default is /usr/share/clear/update-ca/Swupd_Root.pem + +-W , --max-parallel-downloads= Set the maximum number of parallel downloads. + +-r , --max-retries= Maximum number of retries for download failures. + +-d , --retry-delay= Initial delay in seconds between download retries, this will + be doubled for each retry until the download succeeds or the maximum + number of retries has been reached. + +-n, --nosigcheck Do not attempt to enforce certificate or signature checking. + +-n, --nosigcheck-latest Do not attempt to enforce signature checking when + retrieving the latest version number. + +-I, --ignore-time Ignore system/certificate time when validating signature. + +-t, --time Show verbose time output for swupd operations. + +-N, --no-scripts Do not run the post-update scripts and boot update tool. + +-b, --no-boot-update Do not update the boot files using clr-boot-manager. + +-j, --json-output Prints the swupd output as a machine readable JSON stream. + +-y, --yes Assume yes as answer to all prompts and run non-interactively. + +--allow-insecure-http For security reasons, swupd only allows system updates + using secure https connections by default. This option forces swupd + to allow updates over insecure http connections. + + ``Warning``: although it is not recommended, if an http server is + set up as the upstream server, the `allow_insecure_http=true` option will + need to be setup in the swupd configuration file for the autoupdate + command to continue to work. + +--quiet Sets `swupd` to print a minimal and more stable output that is easier + to parse for its commands. Only the most relevant information and errors + are printed out. + Output displayed when using this option is rarely going to change, so + this is a good option to use when writing scripts that use `swupd`. + +--verbose Enable verbosity for commands. + +--debug Print extra information to help debugging problems. + +--no-progress Don't print progress report on commands that informs the + percentage left in current operation. + +--wait-for-scripts Wait for the post-update scripts to complete. + +--assume= Sets an automatic response to all prompts and run + non-interactively. + + +SUBCOMMANDS +=========== + +info +---- + + Shows the current OS version and the URLs used for updates. + +autoupdate +---------- + + Enables or disables automatic updates, or reports current + status. Enabling updates does not cause an immediate update - + use ``swupd update`` to force one if desired. + +--enable Enable autoupdates +--disable Disable autoupdates + +check-update +------------ + + Checks whether an update is available and prints out the information + if so. Does not download update content. + +update +------ + + Performs a system software update. + + The program will contact the version server at the version url, and + check to see if a system software update is available. If an update + is available, the update content will be downloaded from the content + url and stored in the `/var/lib/swupd` state path. Once all content + is downloaded and verified, the update is applied to the system. + + In case any problem arises during a software update, the program + attempts to correct the issue, possibly by performing a ``swupd repair`` + operation, which corrects broken or missing files and other issues. + + After the update is applied, the system performs an array of + post-update actions. These actions are triggered through `systemd(1)` + and reside in the `update-triggers.target(4) `__ system target. + +-V , --version= Update to a specific version, also accepts 'latest' (default). + +-s, --status Do not perform an update, instead display whether an update is + available on the version url server, and what version number is + available. This is the same as running ``swupd check-update``. + +-k, --keepcache Do not delete the swupd state directory content after + updating the system. + +--download Do not perform an update, instead download all resources needed + to perform the update, and exit. + +--update-search-file-index Update the index used by search-file to speed up + searches. Don't enable this if you have download or space restrictions. + +--3rd-party If update is successfull, also update content from 3rd-party + repositories. + + +bundle-add +-------------------- + + Installs new software bundles. Any bundle name listed after ``bundle-add`` + will be installed in the system. A list of all existing bundles can be + displayed with the ``bundle-list --all`` command. + + The names can also be aliases that are not actual bundles names but instead + are names in an alias configuration file. See ``swupd-alias``\(7) + +--skip-optional Do not install optional bundles (`also-add` flag in + Manifests). + A bundle may include other bundles that will also get installed + when installing the bundle that includes them. This included bundles + can be either optional, or mandatory. Optional bundles can be skipped + at install time by using this option. + +--skip-diskspace-check Skip checking for available disk space before installing + a bundle. + By default, swupd attempts to determine if there is enough free + disk space to add the passed in bundle before attempting to install. + The current implementation will check free space in ``/usr/`` by default, + or it will check the passed in --path option with ``/usr/`` appended. + +bundle-remove +----------------------- + + Removes software bundles. Any bundle name listed after ``bundle-remove`` + will be removed from the system. If the bundle is required by another + bundle(s) on the system, a tree will be displayed to indicate which bundles + are blocking removal. + +-x, --force Removes a bundle along with all the bundles that depend on it. + + ``Warning``: This operation is dangerous and must be used with care since + it can remove many unexpected bundles. + +-R, --recursive Removes a bundle and its dependencies recursively, except for + bundle os-core. + + ``Warning``: This operation is dangerous and must be used with care since + it can remove many unexpected bundles. + +--orphans Removes all orphaned bundles. Orphan bundles are those that are no + longer required by any of the tracked bundles. + + ``Warning``: This operation is dangerous and must be used with care since + it can remove many unexpected bundles. + +bundle-list +----------- + + List all installed software bundles in the local system. Available bundles + can be listed with the ``--all`` option. + +-a, --all Lists all available software bundles, either installed or not, that + are available. + +-D , --has-dep= Displays a list of all bundles which include + the passed BUNDLE as a dependency. Combine with ``--all`` to report all + bundles including those not installed on the system. Combine with + ``--verbose`` to show a tree of those bundles. + +--status Show the installation status of the listed bundles. Bundles + installation status can be; "explicitly installed", meaning that they + were specifically requested to be installed by the user, or they can be + "implicitly installed", meaning they were installed as a dependency of + another explicitly installed bundle. + +--deps= Lists all bundle dependencies of the passed BUNDLE, + including recursively included bundles. + +--orphans List orphaned bundles. Orphan bundles are those that are installed + but no longer required by any tracked bundle. + +bundle-info +----------- + + Display detailed information about a bundle. + +-V , --version= Show the bundle info for the specified + version, it also accepts 'latest'.i It defaults to the current version + if no version is specified. + +--dependencies Show the bundle's direct and indirect dependencies as well as if + they are optional or mandatory dependencies. Direct dependencies are + those that are specifically included by the bundle in question, while + indirect dependencies are those that are included by the bundles that + are a direct dependency of the bundle in question. + +--files Show the files directly included in this bundle, in other words it + shows the files included in the bundle's manifest. If this option is used + along with the ``--dependencies`` option, all files installed by the + bundle are listed, including those files installed by the dependencies + of the bundle. + +search +------ + + Swupd search functionality is provided by the swupd-search binary, available + on os-core-search bundle. + + For more information run: + + ``$ swupd search --help`` + +search-file +-------------------- + + Search for matching paths in manifest data. The specified `{string}` + is matched in any part of the path listed in manifests, and all + matches are printed, including the name of the bundle in which the + match was found. + + If manifest data is not present in the state folder, it is + downloaded from the `content url`. + + Because this search consults all manifests, it normally requires to + download all manifests for bundles that are not installed, and may + result in the download of several mega bytes of manifest data. + +-V , --version= Search for a match of the given file in the + specified version version. + +-l, --library Restrict search to designated dynamic shared library paths. + +-B, --binary Restrict search to designated program binary paths. + +-T , --top= Only display the top specified number of + results for each bundle. + +-m, --csv Output the search results in a machine readable CSV format. + +-i, --init Just perform the collection and download of all required manifest + resources needed to perform the search, then exit. + +-o , --order= Sort the output in one of two ways: + + - Use 'alpha' to order alphabetically (default) + - Use 'size' to order by bundle size (smaller to larger) + +diagnose +-------- + + Perform system software installation verification. The program will + obtain all the manifests needed from version url and content url to + establish whether the system software is correctly installed and not + overwritten, modified, missing or otherwise incorrect (permissions, etc.). + + After obtaining the proper resources, all files that are under + control of the software update program are verified according to the + manifest data + +-V , --version= Diagnose against the specified manifest VERSION. + +-x, --force Attempt to proceed even if non-critical errors found. + +-q, --quick Omit checking hash values. Instead only looks for missing files + and directories and/or symlinks. + +-B , --bundles= Forces swupd to only diagnose the (comma separated) list of bundles provided. + + Examples: + + - ``--bundles xterm,vim`` + + Diagnoses only bundles `xterm` and `vim`. + +-Y, --picky Also list files which should not exist. Only files listed in the + manifests should exist. By default swupd only looks for these + files at ``/usr``, this path can be changed using ``--picky-tree``. + Some paths at ``/usr`` are skipped by default: + ``/usr/lib/modules``, ``/usr/lib/kernel``, ``/usr/local`` + and ``/usr/src``. These paths can be changed using + ``--picky-whitelist``. + +-X , --picky-tree= Changes the path where ``--picky`` and + ``--extra-files-only`` looks for extra files. To be specified as + absolute PATH. + The default path is ``/usr``. + +-w , --picky-whitelist= Any path matching the POSIX extended regular expression regex is ignored by ``--picky``. The given expression is always + wrapped in ``^(`` and ``)$`` and thus has to match the entire path. + Matched directories get skipped completely. + + The default is to ignore ``/usr/lib/kernel``, + ``/usr/lib/modules``, ``/usr/src`` and ``/usr/local``. + + Examples: + + - ``/var|/etc/machine-id`` + + Ignores ``/var`` or ``/etc/machine-id``, regardless of + whether they are directories or something else. In the + usual case that ``/var`` is a directory, also everything + inside it is ignored because the directory gets skipped + while scanning the directory tree. + + - empty string or ``^$`` + + Matches nothing, because `paths` are never empty. + +--extra-files-only Like ``--picky``, but it only looks for extra files. + It omits checking hash values, and for missing files, directories and/or + symlinks. + +--file Forces swupd to only diagnose the specified file or directory + (recursively). + +repair +------ + + Correct any issues found. This will overwrite incorrect file content, + add missing files and do additional corrections, permissions, etc. + +-V , --version= Repair against the specified manifest + version. + +-x, --force Attempt to proceed even if non-critical errors found. + +-q, --quick Omit repairing corrupt files. Instead only add missing files + and directories and/or symlinks. + +-B , --bundles= Forces swupd to only repair the (comma separated) list + of bundles provided. + + Examples: + + - ``--bundles xterm,vim`` + + Repairs only bundles `xterm` and `vim`. + +-Y, --picky Also removes files which should not exist. Only files listed + in the manifests should exist. By default swupd only looks for these + files at ``/usr``, this path can be changed using ``--picky-tree``. + Some paths at ``/usr`` are skipped by default: + ``/usr/lib/modules``, ``/usr/lib/kernel``, ``/usr/local`` + and ``/usr/src``. These paths can be changed using + ``--picky-whitelist``. + +-X , --picky-tree= Changes the path where ``--picky`` and + ``--extra-files-only`` looks for extra files. To be specified as + absolute PATH. The default path is ``/usr``. + +-w , --picky-whitelist= Any path matching the POSIX extended regular + expression regex is ignored by ``--picky``. The given expression is + always wrapped in ``^(`` and ``)$`` and thus has to match the entire + path. Matched directories get skipped completely. + + The default is to ignore ``/usr/lib/kernel``, + ``/usr/lib/modules``, ``/usr/src`` and ``/usr/local``. + + Examples: + + - ``/var|/etc/machine-id`` + + Ignores ``/var`` or ``/etc/machine-id``, regardless of + whether they are directories or something else. In the + usual case that ``/var`` is a directory, also everything + inside it is ignored because the directory gets skipped + while scanning the directory tree. + + - empty string or ``^$`` + + Matches nothing, because paths are never empty. + +--extra-files-only Like ``--picky``, but it only removes extra files. It omits + repairing corrupt files, and adding missing files, directories and/or + symlinks. + +--file Forces swupd to only repair the specified file or directory + (recursively). + +os-install +---------- + + Perform system software installation in the specified location. Install + all files into `{path}` as specified by the ``swupd os-install {path}`` + option. Useful to generate a new system root. The only bundle that will + be installed by default is ``os-core`` unless more bundles are specified + with the ``--bundles`` option. + +-V , --version= Install the specified version of the OS. + +-x, --force Attempt to proceed even if non-critical errors found. + +-B , --bundles= Include the (comma separated) list of + bundles with the base OS install. + + Examples: + + - ``--bundles xterm,vim`` + + Installs bundles `xterm` and `vim`, along with `os-core` + (installed by default). + +-s , --statedir-cache= After checking for content in the + `statedir`, check the `statedir-cache` before downloading it over the + network. + +--download Do not perform an install, instead download all resources + needed to perform the install, and exit. + +--skip-optional Do not install optional bundles (`also-add` flag in + Manifests). + A bundle may include other bundles that will also get installed + when installing the bundle that includes them. This included bundles + can be either optional, or mandatory. Optional bundles can be skipped + at install time by using this option. + +mirror +------ + + Configure a `mirror URL` for swupd to use instead of the defaults on the + system or compiled into the swupd binary. + +-s , --set= Set the `content` and `version URLs` to URL by adding + configuration files to ``/etc/swupd/mirror_contenturl`` and + ``/etc/swupd/mirror_versionurl`` + +-U, --unset Remove the `content` and `version URL` configuration by removing + ``/etc/swupd`` + +clean +----- + + Removes files cached by swupd. + + Note that removing these files may cause swupd to perform slower the next time + it is used since it may need to download some files from the update server + again. + +--all | Removes all the content including recent metadata. + +--dry-run Just prints files that would be removed. + +hashdump +-------- + + Calculates and print the Manifest hash for a specific file on disk. + +-n, --no-xattrs Ignore extended attributes when calculating hash. + +-p , --path= Specify the PATH to use for operations. This can be + used to point to a chroot installation of the OS or a custom mount. + +3rd-party +--------- + + Manages 3rd-party repositories and content installed from them. A 3rd-party + repository enables the distribution of user produced content. + + The following subcommands are available to manage `3rd-party repositories`: + + - ``add`` + + Adds a 3rd-party repository. + + - ``force`` + + Attempt to proceed with the removal of the repo even if non-critical + errors found. + + - ``remove`` + + Removes a 3rd-party repository along with all the content installed + from it from the system. + + - ``force`` + + Attempt to proceed with the removal of the repo even if non-critical + errors found. + + - ``list`` + + Lists the 3rd-party repositories available to the system. These + repositories must have been previously added using ``swupd 3rd-party add``. + + Most of the swupd subcommands used for managing `upstream` content are + supported to manage `3rd-party` content along with most of their options. + To use these subcommands for 3rd-party content, it is necessary to use the + ``3rd-party`` subcommand followed by the desired operation to be performed. + + This is the syntax for 3rd-party operations to manage content: + + ``$ swupd 3rd-party [option(s)]`` + + Example: + + - ``swupd 3rd-party bundle-add my_bundle`` + + Looks for the 3rd-party bundle `my_bundle` among all the available + 3rd-party repositories, and installs it in the system as long as + it is found in one, and only one, repository. If the bundle exists + in more than one 3rd-party repository, users are required to specify + the repository to install it from by using the ``--repo`` option. + + There is no need to specify the 3rd-party repository if the bundle + name is unique among 3rd-party repositories, even if a bundle with + the same name exists in the upstream update server. Bundles from + 3rd-party repositories are installed in a different location so they + don't clash with upstream bundles. + + - ``swupd 3rd-party update --repo my_repo`` + + Performs a software update for content installed from the 3rd-party + repository `my_repo`. If no repository is specified, content from + all 3rd-party repositories is updated. + + All 3rd-party content is installed in the following location: + ``/opt/3rd-party//`` + + The following subcommands are available to manage `3rd-party content`: + + - ``update`` + + Update to latest version of a 3rd-party repository. + For information about the options for this command please refer to + the ``swupd update`` section. + + - ``bundle-add`` + + Installs a bundle from a 3rd-party repository. + For information about the options for this command please refer to + the ``swupd bundle-add`` section. + + - ``bundle-remove`` + + Remove a bundle from a 3rd-party repository. + For information about the options for this command please refer to + the ``swupd bundle-remove`` section. + + - ``bundle-list`` + + List bundles from a 3rd-party repository. + For information about the options for this command please refer to + the ``swupd bundle-list`` section. + + - ``bundle-info`` + + Display information about a bundle in a 3rd-party repository. + For information about the options for this command please refer to + the ``swupd bundle-info`` section. + + - ``diagnose`` + + Verify content from a 3rd-party repository. + For information about the options for this command please refer to + the ``swupd diagnose`` section. + + - ``repair`` + + Repair local issues relative to a 3rd-party repository. + For information about the options for this command please refer to + the ``swupd repair`` section. + + - ``check-update`` + + Check if a new version of a 3rd-party repository is available. + For information about the options for this command please refer to + the ``swupd check-update`` section. + + - ``clean`` + + Clean cached files of a 3rd-party repository. + For information about the options for this command please refer to + the ``swupd clean`` section. + + +FILES +===== + +/usr/share/defaults/swupd + + Sometimes a set of flags is always used for one, or many swupd commands. The + ``swupd configuration file`` provides a convenient way of persistently define + these flags so they don't need to be specified every time a command is run. + + The configuration file is an INI type of file that consists of sections, each led + by a [section] header, followed by key/value entries separated by a '=' character. + Note that there should be no whitespace between key=value. The configuration + file may include comments, prefixed by either the '#' or the ';' characters. + + There can be one section for each swupd command (e.g. [bundle-add], [update], etc.) + and one for global options (e.g. [GLOBAL]). Global options can be specified in the + either in the GLOBAL section, in a command section, or in both. Global options + specified in the command section have higher precedence than those specified in the + GLOBAL section, so it is possible to define a GLOBAL option that will apply to all + swupd command except for that one overwritten in the command section. + + A sample swupd configuration file can be found at this location (this file should not + be modified): + `/usr/share/defaults/swupd` + + To use it, copy it to `/etc/swupd` where swupd reads the configuration from. + + +EXIT STATUS +=========== + +On success, ``0`` is returned. A ``non-zero`` return code signals a failure. + +If the subcommand ``check-update`` was specified, the program returns +``0`` if an update is available, ``1`` if no update available, and a +return value higher than ``1`` signals a failure. + +If the subcommand was ``autoupdate`` without options, then the program +returns ``0`` if automatic updating is enabled. + +If the subcommand was ``diagnose``, then the program returns ``0`` if the system +is consistent at the end of the process or ``1`` if there are invalid/missing +files in the system. + +The non-zero return codes for other operations are listed here: + +**2** A required bundle was removed or was attempted to be removed + +| **3** The specified bundle is invalid +| **4** Unable to download or read MoM manifest +| **5** Unable to delete a file +| **6** Unable to rename a directory +| **7** Unable to create a file +| **8** Unable to recursively load included manifests +| **9** Unable to obtain lock on state directory +| **10** Unable to rename a file +| **11** Unable to initialize curl agent +| **12** Initialization error +| **13** Bundle not tracked on system +| **14** Unable to load manifest into memory +| **15** Invalid command-line option +| **16** Unable to connect to update server +| **17** File download issue +| **18** Unable to untar a file +| **19** Unable to create required directory +| **20** Unable to determine current version of the OS +| **21** Unable to initialize signature verification +| **22** System time is off by a large margin +| **23** Pack download issue +| **24** Unable to verify server SSL certificate +| **25** There is not enough disk space left (or it cannot be determined) +| **26** The required path was not found in any manifest +| **27** Unexpected condition found +| **28** Unable to execute another program in a subprocess +| **29** Unable to list the content of a directory +| **30** An error occurred computing the hash of a file +| **31** Unable to get current system time +| **32** Unable to write a file +| **34** swupd ran out of memory +| **35** Unable to fix/replace/delete one or more files +| **36** Unable to execute binary, is either missing or invalid +| **37** Invalid 3rd-party repository (not found) +| **38** File is missing or invalid + + +SEE ALSO +======== + +| `swupd-update.service(4) `__, `swupd-update.timer(4) `__, `update-triggers.target(4) `__, `mixer(1) `__, `os-format(7) `__ + +| Official repository https://github.com/clearlinux/swupd-client/ +| Official documentation https://clearlinux.org/documentation/ diff --git a/_sources/reference/manpages/tallow.1.rst.txt b/_sources/reference/manpages/tallow.1.rst.txt new file mode 100644 index 000000000..d04c6b80e --- /dev/null +++ b/_sources/reference/manpages/tallow.1.rst.txt @@ -0,0 +1,63 @@ +tallow +====== + +Reduce log clutter due to ssh login attempts. + +SYNOPSIS +-------- + +``/usr/sbin/tallow`` + +DESCRIPTION +----------- + +``tallow`` is a daemon that watches the systemd journal for messages +from the ``sshd`` service. It parses the messages and looks for +attempted random logins such as failed logins to the root account and +failed logins to invalid user accounts, and various other obviously +malicious login attempts that try things as forcing old protocols, or +weak key systems. + +If such logins were detected, the offending IP address is stored in a +list. Items from this list are regularly purged, but if the amount of +times that a specific IP address is seen exceeds a threshold, an +ipset(1) entry is inserted in the ``tallow`` or ``tallow6`` ipset, and +further packets from that ip address will be blocked by an +``iptables(1)`` or ``ip6tables(1)`` rule that tallow creates at startup. +Additionally, certain types of login failure will trigger a short term +ban of further packets from the offending IP address immediately. + +The system administrator needs to assure that the tallow and tallow6 +ipsets are left alone and that the inserted iptables rules are properly +matching on packets. + +Care should be taken to assure that legitimate users are not blocked +inadvertently. You may wish to list any valid IP address with the +whitelist option in `tallow.conf(5) `__. Multiple addresses can be +whitelisted. + +OPTIONS +------- + +The ``tallow`` daemon itself has no runtime configuration. All +configuration is done through the `tallow.conf(5) `__ config file. + +SIGNALS +------- + +The ``USR1`` signal causes ``tallow`` to print out it’s internal +tracking table of IP addresses. This requires that tallow is compiled +with the ``-DDEBUG=1`` symbol passed to the compiler. + +SEE ALSO +-------- + +systemd-journald(1), iptables(1), ipset(1), `tallow.conf(5) `__, +`tallow.patterns(5) `__ + +BUGS +---- + +``tallow`` is ``NOT A SECURITY SOLUTION``, nor does it protect against +random password logins. A attacker may still be able to logon to your +systems if you allow password logins. diff --git a/_sources/reference/manpages/tallow.conf.5.rst.txt b/_sources/reference/manpages/tallow.conf.5.rst.txt new file mode 100644 index 000000000..7f8b5b0b3 --- /dev/null +++ b/_sources/reference/manpages/tallow.conf.5.rst.txt @@ -0,0 +1,92 @@ +tallow.conf +=========== + +The tallow configuration file + +NAME +---- + +tallow.conf - Tallow daemon configuration file + +SYNOPSIS +-------- + +``/etc/tallow.conf`` + +DESCRIPTION +----------- + +This file is read on startup by the `tallow(1) `__ daemon, and can be used to +provide options to the tallow daemon. If not present, tallow will +operate with built-in defaults. + +OPTIONS +------- + +``fwcmd_path``\ =\ ```` Specifies the location of the ipset(1) +firewall-cmd(1) programs. By default, tallow will look in “/usr/sbin” +for them. + +``ipt_path``\ =\ ```` Specifies the location of the ipset(1) +program and iptables(1) or ip6tables(1) programs. By default, tallow +will look in “/usr/sbin” for them. + +``expires``\ =\ ```` The number of seconds that IP addresses are +blocked for. Note that due to the implementation, IP addresses may be +blocked for much longer than this period. If IP addresses are seen, but +not blocked within this period, they are also removed from the watch +list. Defaults to 3600s. + +``whitelist``\ =\ ```` Specify an IP address or +``pattern`` that should never be blocked. Multiple IP addresses can be +included by repeating the ``whitelist`` option several times. By +default, 127.0.0.1, 192.168., and 10. are whitelisted. If you create a +manual whitelist, you must include these entries if you want to continue +them to be whitelisted as well, otherwise they will be omitted from the +whitelist. + +If the last character of the listed ip adress is a ``.`` or a ``:``, +then the matching is only performed on the leftmost characters of an IP +address against the whitelist entry. For instance, if you whitelist +``10.`` then all IP addresses in the ``10/8`` subnet mask will match +this whitelist entry and never be blocked. + +``ipv6``\ =\ ``<0|1>`` Enable or disable ipv6 (ip6tables) support. Ipv6 +is disabled automatically on systems that do not appear to have ipv6 +support and enabled when ipv6 is present. Use this option to explicitly +disable ipv6 support if your system does not have ipv6 or is missing +ip6tables. Even with ipv6 disabled, tallow will track and log ipv6 +addresses. + +``nocreate``\ =\ ``<0|1>`` Disable the creation of firewall rules and +ipset sets. By default, tallow will create new firewall-cmd(1) or +iptables(1) and ip6tables(1) rules when needed automatically. If set to +``1``, `tallow(1) `__ will not create any new firewall DROP rules or +ipset sets that are needed work. You should create them manually before +tallow starts up and remove them afterwards using the sets of commands +below. + +Use the following commands if you’re using iptables(1): + +:: + + ipset create tallow hash:ip family inet timeout 3600 + iptables -t filter -I INPUT 1 -m set --match-set tallow src -j DROP + + ipset create tallow6 hash:ip family inet6 timeout 3600 + ip6tables -t filter -I INPUT 1 -m set --match-set tallow6 src -j DROP + +Use the following commands if you’re using firewalld(1): + +:: + + firewall-cmd --permanent --new-ipset=tallow --type=hash:ip --family=inet --option=timeout=3600 + firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -m set --match-set tallow src -j DROP + + firewall-cmd --permanent --new-ipset=tallow6 --type=hash:ip --family=inet6 --option=timeout=3600 + firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 1 -m set --match-set tallow6 src -j DROP + +SEE ALSO +-------- + +`tallow(1) `__, `tallow.patterns(5) `__ diff --git a/_sources/reference/manpages/tallow.patterns.5.rst.txt b/_sources/reference/manpages/tallow.patterns.5.rst.txt new file mode 100644 index 000000000..f0f687246 --- /dev/null +++ b/_sources/reference/manpages/tallow.patterns.5.rst.txt @@ -0,0 +1,136 @@ +tallow.patterns +=============== + +Tallow pattern matching configuration files. + +SYNOPSIS +-------- + +`tallow(1) `__ uses regular expressions to match journal entries and extract +an IP address from them. JSON files are used to configure the patterns +and banning thresholds used by `tallow(1) `__. + +``/etc/tallow/*.json`` ``/usr/share/tallow/*.json`` + +DESCRIPTION +----------- + +`tallow(1) `__ uses regular expressions to match journal entries and extract +an IP address from them. JSON files are used to configure the patterns +and banning thresholds used by `tallow(1) `__. This adds the ability to +extend the patterns `tallow(1) `__ will recognize. Many JSON files can exist +for logical grouping. The `tallow(1) `__ daemon will read all JSON files in +the configuration directories at startup. + +`tallow(1) `__ operates with default pattern definitions +in\ ``/usr/share/tallow/*.json``. Users can add more patterns with their +own JSON files under ``/etc/tallow``. The default JSON files can be +overridden by creating the same file under ``/etc/tallow``. + +FILE FORMAT +----------- + +Pattern configuration files use the JavaScript Object Notation (JSON) +format. + +The JSON must be two levels deep and all properties are required. The +root object is an array containing objects with a ``filter`` key and an +``items`` key. + +- ``filter`` is a string that defines a field for filtering the journal + file. This helps make sure patterns are only matched to a subset of + journal entries. See systemd.journal-fields(7) for valid journal + fields. + +- ``items`` is an array of objects that contains three elements: + ``ban``, ``score``, and ``pattern``. + + - ``ban`` is an integer that defines the number of seconds to ban + originating IP for. If this value is > 0, the IP address get + banned immediately when a journal entry matches ``pattern``. + + - ``score`` is a double that defines a value to add to the + accumulated “score” of an originating IP address each time a + journal entry matches the ``pattern``. If the combined score is > + 1.0, tallow bans the originating IP for the default time of 1 + hour. The ``ban`` element value above is not used for bans made + due to ``score``. + + - ``pattern`` is a string that defines a Perl Compatible Regular + Expressions (PCRE) to match against the filtered journal entries. + The PCRE should extract exactly one substring: the originating IP + address for `tallow(1) `__. See systemd.journal-fields(7) for valid + journal fields. + +EXAMPLES +-------- + +1. The JSON below is a snippet from one of the default pattern + configuration files for blocking certain failed ``sshd`` connections. + + The first pattern will ban an IP address after it fails to login 6 + times causing it to reach a total score > 1.0. + + The second pattern will ban an IP address for 10 seconds every time a + login is attempted with an invalid user. Additionally, it will ban + the IP address for 1 hour if it attempts to login with an invalid + user 6 times causing it to reach a total score > 1.0. + + See the ``/usr/share/tallow/sshd.json`` file for more ``sshd`` + examples. + + :: + + [ + { + "filter": "SYSLOG_IDENTIFIER=sshd", + "items": [ + { + "ban": 0, + "score": 0.2, + "pattern": "MESSAGE=Failed .* for .* from ([0-9a-z:.]+) port \\d+ ssh2" + }, + { + "ban": 10, + "score": 0.2, + "pattern": "MESSAGE=Invalid user .* from ([0-9a-z:.]+) port \\d+" + } + ] + } + ] + +2. The JSON below defines a pattern for blocking connections based on + error logs from ``nginx-mainline`` if placed in a + ``/etc/tallow/nginx-mainline.json`` file. + + The pattern will ban an IP address for 15 seconds every time it + attempts to access a script that does not exist. Additionally, it + will ban the IP address for 1 hour if it attempts to access invalid + scripts 4 times causing it to reach a total score > 1.0. + + :: + + [ + { + "filter": "SYSLOG_IDENTIFIER=nginx-mainline", + "items": [ + { + "ban": 15, + "score": 0.3, + "pattern": ".Primary script unknown. while reading response header from upstream, client: ([0-9a-z:.]+)," + } + ] + } + ] + +SEE ALSO +-------- + +`tallow(1) `__, `tallow.conf(5) `__ + +BUGS +---- + +``tallow`` is ``NOT A SECURITY SOLUTION``, nor does it protect against +random password logins. An attacker may still be able to logon to your +systems if you allow password logins. diff --git a/_sources/reference/manpages/telem-record-gen.1.rst.txt b/_sources/reference/manpages/telem-record-gen.1.rst.txt new file mode 100644 index 000000000..702cc6e5d --- /dev/null +++ b/_sources/reference/manpages/telem-record-gen.1.rst.txt @@ -0,0 +1,81 @@ +================ +telem-record-gen +================ + +------------------------------ +Create custom telemetry record +------------------------------ + +:Copyright: \(C) 2017 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``telem-record-gen`` + + +DESCRIPTION +=========== + +Generate and attempt to send a telemetry record to `telemprobd(1) `__. This +program can be used to create a telemetry record from a shell script +or from another program using e.g. ``system()``. The program connects +to a local `telemprobd(1) `__ daemon to spool the record for delivery to +the actual collection service. + +The payload can be provided as standard input, as a file with the +``--payload-file`` option, or as a string argument with the ``--payload`` +option. If neither the ``--payload`` or ``--payload-file`` is provided, +the payload is assumed to be on . + +Each record is expected to have a class identifier, a record version +number, and a severity level. A class identifier is required to be +provided. + + +OPTIONS +======= + + * ``-h``, ``--help``: + Show help options. + + * ``-V``, ``--version``: + Print the program version. + + * ``-f``, ``--config-file`` : + Path to configuration file (not implemented yet). + + * ``-s``, ``--severity``: + Severity level (1-4) - (default 1). + + * ``-c``, ``--class``: + Classification ``level_1``/``level_2``/``level_3``. + + * ``-p``, ``--payload`` : + Record body (max size = 8k). + + * ``-P``, ``--payload-file`` : + File to read payload from. + + * ``-R``, ``--record-version`` : + Version number for format of payload (default 1). + + * ``-e``, ``--event-id`` : + Event id to use in the record. If not provided a randomly generated id will be assigned to record. + + + +RETURN VALUES +============= + +0 on success. A non-zero exit code indicates a failure occurred. + + +SEE ALSO +======== + +* `telemprobd(1) `__ +* https://github.com/clearlinux/telemetrics-client +* https://clearlinux.org/documentation/ diff --git a/_sources/reference/manpages/telemctl.1.rst.txt b/_sources/reference/manpages/telemctl.1.rst.txt new file mode 100644 index 000000000..0a003fc5b --- /dev/null +++ b/_sources/reference/manpages/telemctl.1.rst.txt @@ -0,0 +1,58 @@ +======== +telemctl +======== + +------------------------------------- +Telemetry service administration tool +------------------------------------- + +:Copyright: \(C) 2017 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``telemctl`` + +``/etc/telemetrics/opt-in`` + + +DESCRIPTION +=========== + +Control actions for telemetry services. The command can be used to start, +restart, or stop `telemprobd(1) `__ and `telempostd(1) `__, or to opt-in or opt-out of telemetry delivery of records to a central telemetry service. + + +OPTIONS +======= + + * ``start``|``stop``|``restart``: + Starts, stops or restarts all running telemetry services. + + * ``opt-in``: + Opts in to telemetry and the opt-in file ``/etc/telemetrics/opt-in`` + is created. Note: this is a one time required operation before + telemetry can be used the first time. + + * ``opt-out``: + Opts out of telemetry, and stops telemetry services. The opt-in file + ``/etc/telemetrics/opt-in`` is deleted. + + * ``is-active``: + Checks if telemetry client daemons are active (telemprobd and telempostd). + + +RETURN VALUES +============= + +0 on success. A non-zero exit code indicates a failure occurred. + + +SEE ALSO +======== + +* `telemprobd(1) `__ +* https://github.com/clearlinux/telemetrics-client +* https://clearlinux.org/documentation/ diff --git a/_sources/reference/manpages/telemetrics.conf.5.rst.txt b/_sources/reference/manpages/telemetrics.conf.5.rst.txt new file mode 100644 index 000000000..1d242ef8e --- /dev/null +++ b/_sources/reference/manpages/telemetrics.conf.5.rst.txt @@ -0,0 +1,109 @@ +================ +telemetrics.conf +================ + +------------------------------------ +Telemetry service configuration file +------------------------------------ + +:Copyright: \(C) 2017 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 5 + + +SYNOPSIS +======== + +``/etc/telemetrics/telemetrics.conf`` + +``/usr/share/defaults/telemetrics/telemetrics.conf`` + + +DESCRIPTION +=========== + +This file contains configuration parameters for the `telemprobd(1) `__ and `telempostd(1) `__ telemetry service daemons. The daemon reads this file at startup if it exists. + + +SYNTAX +====== + +The configuration file contains ``key=value`` pairs, formatted as plain +text, one option per line. Comments can be added by preceding them with the +``#`` character. All configuration options should be in a section marked +with ``[settings]``. + + +OPTIONS +======= + +- ``server=`` + + Server URL including protocol designator. + +- ``socket_path=`` + + Path to the socket that `telemprobd` will listen on. + +- ``cainfo=`` + + Certificate file to use for validation of SSL endpoint. + +- ``tidheader=
`` + + Telemetry ID in header format, usually ``tidheader=X-Telemetry-TID:`` + post header used to group records in ingestion service, which may be + ingesting for more than one set of clients. Can be set to any string. + +- ``record_expiry=`` + + Record expiry time in minutes. + +- ``spool_dir=`` + + Local spool directory used to store records being processed. + +- ``spool_max_size=`` + + maximum size of the spool directory in kB. A value of ``-1`` indicates + no limit. The block size of the files in this directory is considered, + and not the actual size of the record itself. + +- ``spool_process_time=`` + + Time in seconds for processing spool. Valid range: 120..300. Values + outside this range are clamped. + +- ``rate_limit_enabled=`` + + Enable rate limiting. If this is set to false then all rate-limiting + disabled. It is possible to disable each rate-limit individually below. + +- ``record_burst_limit=`` + + Rate limiting record burst limit. Valid Range: 0..``INT_MAX``, -1 = disabled. + +- ``record_window_length=`` + + Rate limiting record window length in minutes. Valid Range: 0..59. + +- ``byte_burst_limit=`` + + Rate limiting byte burst limit. Valid Range: 0..`INT_MAX`, -1 = disabled. + +- ``byte_window_length=`` + + Rate limiting byte window length in minutes. Valid Range: 0..59. + +- ``rate_limit_strategy=`` + + Rate limit strategy - what to do with record if rate-limiting prevents + delivery over network. Valid stategies: ``spool``, ``drop``. + + +SEE ALSO +======== + +* `telemprobd(1) `__ +* `telempostd(1) `__ +* https://github.com/clearlinux/telemetrics-client +* https://clearlinux.org/documentation/ diff --git a/_sources/reference/manpages/telemetry.3.rst.txt b/_sources/reference/manpages/telemetry.3.rst.txt new file mode 100644 index 000000000..096bf9d73 --- /dev/null +++ b/_sources/reference/manpages/telemetry.3.rst.txt @@ -0,0 +1,71 @@ +========= +telemetry +========= + +---------------------------------------------- +C programming interface for telemetrics-client +---------------------------------------------- + +:Copyright: \(C) 2017 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 3 + + +SYNOPSIS +======== + +``#include "telemetry.h"`` + +``struct telem_ref { struct telem_record *record; };`` + +``int tm_create_record(struct telem_ref **t_ref, uint32_t severity, char *classification, uint32_t payload_version)`` + +``int tm_set_payload(struct telem_ref *t_ref, char *payload)`` + +``int tm_send_record(struct telem_ref *t_ref)`` + +``void tm_free_record(struct telem_ref *t_ref)`` + +``int tm_set_config_file(const char *c_file)`` + +``int tm_is_opted_in(void)`` + + +DESCRIPTION +=========== + +The functions in the telemetry library facilitate the delivery of +telemetry data to the `telemprobd(1) `__ service. + +The function ``tm_create_record()`` initializes a telemetry record and +sets the severity and classification of that record, as well as the +payload version number. The memory needed to store the telemetry record +is allocated and should be freed with ``tm_free_record()`` when no longer +needed. + +The function ``tm_set_payload()`` attaches the provided telemetry record +data to the telemetry record. The current maximum payload size is 8192b. + +The function ``tm_send_record()`` delivers the record to the local +`telemprobd(1) `__ service. + +The function ``tm_set_config_file()`` can be used to provide an alternate +configuration path to the telemetry library. + +``tm_is_opted_in`` is a utility provided to check if the one time opt-in +has been performed. + +RETURN VALUES +============= + +All these functions return ``0`` on success, or a non-zero return value +if an error occurred. The function ``tm_free_record()`` does not return +any value. ``tm_is_opted_in`` returns ``1`` when telemetry is opted-in +otherwise ``0``. + + +SEE ALSO +======== + +* `telemprobd(1) `__ +* https://github.com/clearlinux/telemetrics-client +* https://clearlinux.org/documentation/ diff --git a/_sources/reference/manpages/telempostd.1.rst.txt b/_sources/reference/manpages/telempostd.1.rst.txt new file mode 100644 index 000000000..64b7d4c75 --- /dev/null +++ b/_sources/reference/manpages/telempostd.1.rst.txt @@ -0,0 +1,71 @@ +========== +telempostd +========== + +------------------------ +Telemetry client service +------------------------ + +:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``telempostd`` \ + +``/etc/telemetrics/telemetrics.conf`` + +``/usr/share/defaults/telemetrics/telemetrics.conf`` + +``/etc/telemetrics/opt-in-static-machine-id`` + + +DESCRIPTION +=========== + +The ``telempostd`` program delivers locally generated telemetry records to a remote +telemetry service. Telemetry data can be in any format, and is relayed as-is. + + +OPTIONS +======= + + * ``-f``, ``--config_file`` \[\\]: + Configuration file. This overrides the other parameters. + + * ``-h``, ``--help``: + Display this help message. + + * ``-V``, ``--version``: + Print the program version. + + +FILES +===== + +* ``/usr/share/defaults/telemetrics/telemetrics.conf`` + + If no custom configuration file is found, ``telempostd`` uses the + settings in this file. + +* ``/etc/telemetrics/telemetrics.conf`` + + Custom configuration file that ``telempostd`` reads. See `telemetrics.conf(5) `__. + + +EXIT STATUS +=========== + +0 when no errors occurred. A non-zero exit status indicates a failure occurred. + + +SEE ALSO +======== + +* `telemetry(3) `__ +* `telemetrics.conf(5) `__ +* https://github.com/clearlinux/telemetrics-client +* https://clearlinux.org/documentation/ + diff --git a/_sources/reference/manpages/telemprobd.1.rst.txt b/_sources/reference/manpages/telemprobd.1.rst.txt new file mode 100644 index 000000000..7bb2657cd --- /dev/null +++ b/_sources/reference/manpages/telemprobd.1.rst.txt @@ -0,0 +1,78 @@ +========== +telemprobd +========== + +------------------------ +Telemetry probes service +------------------------ + +:Copyright: \(C) 2017 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 1 + + +SYNOPSIS +======== + +``telemprobd`` \ + +``/etc/telemetrics/telemetrics.conf`` + +``/usr/share/defaults/telemetrics/telemetrics.conf`` + +``/etc/telemetrics/opt-in-static-machine-id`` + + +DESCRIPTION +=========== + +The ``telemprobd`` program handles communication between telemetry client and telemetry +probes. + + +OPTIONS +======= + + * ``-f``, ``--config_file`` \[\\]: + Configuration file. This overides the other parameters. + + * ``-h``, ``--help``: + Display this help message. + + * ``-V``, ``--version``: + Print the program version. + + +FILES +===== + +* ``/usr/share/defaults/telemetrics/telemetrics.conf`` + + If no custom configuration file is found, ``telemprobd`` uses the + settings in this file. + +* ``/etc/telemetrics/telemetrics.conf`` + + Custom configuration file that ``telemprobd`` reads. See `telemetrics.conf(5) `__. + + +* ``/etc/telemetrics/opt-in-static-machine-id`` + + If this file exists, the first line of this file will be sent to + the server as the machine ID. Otherwise, the machine ID will be + random and changed regularly. + + +EXIT STATUS +=========== + +0 when no errors occurred. A non-zero exit status indicates a failure occurred. + + +SEE ALSO +======== + +* `telemetry(3) `__ +* `telemetrics.conf(5) `__ +* https://github.com/clearlinux/telemetrics-client +* https://clearlinux.org/documentation/ + diff --git a/_sources/reference/manpages/ucd-data-fetch.1.rst.txt b/_sources/reference/manpages/ucd-data-fetch.1.rst.txt new file mode 100644 index 000000000..fdaba950a --- /dev/null +++ b/_sources/reference/manpages/ucd-data-fetch.1.rst.txt @@ -0,0 +1,53 @@ +ucd-data-fetch +============== + +`ucd-data-fetch(1) `__ – Fetch user-data and ssh keys from cloud services + +SYNOPSIS +-------- + +``/usr/bin/ucd-data-fetch `` + +DESCRIPTION +----------- + +``ucd-data-fetch`` is a helper agent program that fetches openstack +user-data from the http://169.254.*/ service, as well as the SSH pubkey +provided to the cloud instance. After fetching the two pieces of data, +ucd-data-fetch combines them into a valid ``#cloud-config`` user-data +text block and passes the output to `ucd(1) `__ for +processing/execution. + +The user-data file is currently only fetched for aws instances. + +OPTIONS +------- + +The only parameter supported is the name of the cloud service provider, +and can be ``aws``, ``oci`` or ``tencent``. It is required, and if not +passed as argument 1, will cause the program to terminate with an error +message. + +EXIT STATUS +----------- + +On success, 0 is returned, a non-zero failure code otherwise. The exit +code returned may be the exit code of the subsequent ``ucd`` program +execution. + +COPYRIGHT +--------- + +- Copyright (C) 2017-2019 Intel Corporation, License: CC-BY-SA-3.0 + +SEE ALSO +-------- + +`ucd(1) `__ + +NOTES +----- + +Creative Commons Attribution-ShareAlike 3.0 Unported + +- http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/_sources/reference/manpages/ucd.1.rst.txt b/_sources/reference/manpages/ucd.1.rst.txt new file mode 100644 index 000000000..1acc07a57 --- /dev/null +++ b/_sources/reference/manpages/ucd.1.rst.txt @@ -0,0 +1,164 @@ +ucd +=== + +micro-config-drive(1) – Configure a cloud instance using config-drive +data + +SYNOPSIS +-------- + +``/usr/bin/ucd`` + +``ucd`` [OPTIONS…] + +DESCRIPTION +----------- + +``ucd`` runs at boot time with the purpose of configuring a cloud +instance for use of the end user. + +ucd can perform any of the following (optional) tasks: + +- create a default account with sudo privileges +- lock root and default account, the only way to login is using ssh + keys (security feature) +- maintain the cloud instance in a right state (resize/fix partitions + and filesystem) +- get and process userdata and metadata from an attached config-drive + block device + +Userdata formats supported: + +- ``cloud-config``: begins with ``#cloud-config`` and is used to + execute certain tasks in a human friendly format +- ``shell-script``: begins with ``#!`` and is used to execute a shell + script + +Metadata formats supported: + +- ``openstack`` + +OPENSTACK DATASOURCES +--------------------- + +Datasources are used to retrive instance-specific data in order to +configure a new cloud instance. Openstack attaches two datasources to +the cloud instance when it boots. + +- ``config-drive``: is a disk formatted with vfat or iso9660 and have a + label of config-2 +- ``metadata service``: instances can access to it at + http://169.254.169.254 ``[NOT SUPPORTED]`` + +more information about openstack datasources can be found in: + +- http://docs.openstack.org/user-guide/cli_config_drive.html +- http://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service + +WORKFLOW +-------- + +:: + + `|` Parse options + `|` Init openstack datasource + `|->` if config-drive is found then define it as datasource otherwise exit + `|` Start openstack datasource + `|->` Get userdata and metadata from datasource + `|` Run async tasks + `|->` resize disk + `|->` resize filesystem + `|` If a datasource was found + `|->` if VM first boot was detected + `| |->` Run async tasks + `| | |->` lock root account + `| | |->` Create sudoers file for default user account + `| |->` Create default user account + `|->` Process openstack metadata + `|->` Process openstack userdata + `|` Join async tasks + `|` Finish openstack datasource (free resources) + +OPTIONS +------- + +The following options are understood: + +- ``-h``, ``--help``: + + Prints a help message. + +- ``-u`` FILE, ``--user-data-file`` FILE: + + Path to a cloud-config user data file&. If omitted, ``ucd`` will + attempt to fetch user-data from the openstack link-local connected + data service URL. + +- ``--openstack-metadata-file`` FILE: + + Path to an openstack metadata file. more information: + http://docs.openstack.org/user-guide/cli_config_drive.html#openstack-metadata-format + +- ``--openstack-config-drive`` PATH: + + Path to openstack config drive (iso9660 or vfat filesystem), it will + be used to process metadata and userdata. more information: + http://docs.openstack.org/user-guide/cli_config_drive.html#configuration-drive-contents + +- ``--user-data``: + + Get and process user data from data sources. + +- ``--user-data-once``: + + Only on first boot get and process user data from data sources. Note + this option is ignored if ``--user-data`` is enabled. + +- ``--metadata``: + + Get and process metadata from data sources. + +- ``--fix-disk``: + + Fix disk and filesystem if it is needed. + +- ``-v``, ``--version``: + + Prints version information. + +- ``--first-boot-setup``: + + Setup the instance in its first boot. When first boot of the instance + is detected, ``ucd`` will perform the following tasks: create a + default user account, create sudoers file for default user account, + lock the root account. + +EXIT STATUS +----------- + +On success, 0 is returned, a non-zero failure code otherwise. + +COPYRIGHT +--------- + +- Copyright (C) 2017 Intel Corporation, License: CC-BY-SA-3.0 + +SEE ALSO +-------- + +This project is a limited-functionality implementation of the cloud-init +specification. The full documentation of the generic implementation is +available online and can be referenced here: + +``https://cloudinit.readthedocs.org/en/latest/`` + +The cloud-config format that `ucd(1) `__ supports is documented in +`cloud-config(5) `__. This lists the options that are supported, their +structure and function. + +NOTES +----- + +Creative Commons Attribution-ShareAlike 3.0 Unported + +- http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/_sources/reference/manpages/update-triggers.target.4.rst.txt b/_sources/reference/manpages/update-triggers.target.4.rst.txt new file mode 100644 index 000000000..86f17481b --- /dev/null +++ b/_sources/reference/manpages/update-triggers.target.4.rst.txt @@ -0,0 +1,55 @@ +====================== +update-triggers.target +====================== + +---------------------------------------- +Provides post OS software-update actions +---------------------------------------- + +:Copyright: \(C) 2017 Intel Corporation, CC-BY-SA-3.0 +:Manual section: 4 + + +SYNOPSIS +======== + +``update-triggers.target`` + +``/usr/lib/systemd/system/update-triggers.target`` + + +DESCRIPTION +=========== + +Instructs the ``systemd``\(1) system daemon what units needed to be +started as part of the software update process. After the main software +update content is applied to the OS, the `swupd(1) `__ program starts +this *systemd* target. + +The main function of this target is to allow optional corrections and +adjustments to be made after installation that can not easily be made +through static file installation methods. This usually applies to things +like cached lists, dynamic configuration files and similar volatile +databases that are regularly altered and may contain user data. + +One example is the dynamic loader cache which needs to be updated when +ever there are modifications to the system installed dynamic libraries. + +The user is not intended to execute these scripts and plugin units +directly. If however so this is desired, one can execute the following +command to re-execute all the actions: + +``systemctl start update-triggers.target`` + + +ENVIRONMENT +=========== + +This unit is a ``systemd``\(1) target file. + + +SEE ALSO +======== + +`swupd(1) `__ + diff --git a/_sources/reference/system-requirements.rst.txt b/_sources/reference/system-requirements.rst.txt new file mode 100644 index 000000000..75be00d23 --- /dev/null +++ b/_sources/reference/system-requirements.rst.txt @@ -0,0 +1,95 @@ +.. _system-requirements: + +Recommended minimum system requirements +####################################### + +|CL-ATTR| can run on most modern hardware and is capable of running with +modest hardware resources. Out of the box, |CL| can run on a single CPU core, +1 GB RAM, and minimum of disk space of: + +* 4 GB for the *live server* +* 20 GB for the *live desktop* + +.. caution:: + + Advanced users who wish to install on a disk using less than the recommended + space requirements may use the flag ``--skip-validation-size``. Use of this + flag may cause the installation to fail due to inadequate disk space. + + +For use cases requiring minimal resources, |CL| :ref:`about ` can +be used to create a highly customized installation that can even run on a +system with a 128MB of memory and 600MB of disk space, for example. + + +Installer requirements +********************** + +The *live desktop* installer requires at least 1 GB of RAM because more +resources are required to run in live mode than after |CL| is installed onto +persistent storage. + +For hardware with less resources, use the *live server* installer because it +has a smaller memory footprint. + +See https://clearlinux.org/downloads for more download options. + + +System requirements +******************* + +|CL| requires an x86 64-bit processor which supports Intel® Streaming SIMD +Extensions 4.2 (Intel® SSE 4.2). + +For information on the boot loader, see the `clr-boot-manager readme`_ . + +The |CL| installer performs a system compatibility check upon booting. To +manually verify system compatibility with |CL|, run the :ref:`compatibility +check tool` or go to http://ark.intel.com and check for +these features: + +* Instruction Set: + + - 64-bit + +* Instruction Set Extensions: + + - Supplemental Streaming SIMD Extension 3 (SSSE3) + - Intel® Streaming SIMD Extensions 4.1 (Intel® SSE 4.1) + - Intel® Streaming SIMD Extensions 4.2 (Intel® SSE 4.2) + - Carry-less Multiplication (PCLMUL) + +The following processor families have been verified to run |CL|: + +* Intel® Core™ processor family (2nd generation or greater) +* Intel® Xeon® E3-xxxx processor +* Intel® Xeon® E5-xxxx processor +* Intel® Xeon® E7-xxxx processor +* Intel Atom® processor C Series +* Intel Atom® processor E Series + + +Recommended configurations +************************** + +For general |CL| desktop use the recommended minimum requirements include: + +========= =============================== +Component Configuration +--------- ------------------------------- +Processor Compatible x86 64-bit processor +--------- ------------------------------- +Memory 4GB RAM +--------- ------------------------------- +Disk 20 GB +--------- ------------------------------- +Graphics Device with openGL support (e.g. Intel HD/UHD Graphics) +--------- ------------------------------- +Network Active Internet connection +========= =============================== + + +*Intel, Intel Core, Xeon, Intel Atom, and the Intel logo are trademarks of +Intel Corporation or its subsidiaries.* + +.. _clr-boot-manager readme: https://github.com/clearlinux/clr-boot-manager \ No newline at end of file diff --git a/_sources/reference/tutorial-ratings.rst.txt b/_sources/reference/tutorial-ratings.rst.txt new file mode 100644 index 000000000..b538d1bed --- /dev/null +++ b/_sources/reference/tutorial-ratings.rst.txt @@ -0,0 +1,52 @@ +.. _tutorial-ratings: + +Tutorial difficulty ratings +########################### + +Tutorial difficulty ratings provide a simple way to start using and developing with |CL-ATTR|. If you're new to the distro, we suggest starting with ``Easy`` tutorials and working towards the more ``Difficult``. Ratings not only expose learning paths but also provide a starting point from which to advance or improve use cases, so be sure to :ref:`share your insights `. Three main metrics help us to determine how to rate a tutorial: + +.. contents:: + :local: + :depth: 1 + +The sum total of these metrics, the rating shown in Figure 1, represents the +ability to successfully complete a tutorial based on skill level, balanced against the risk of failure. + +.. figure:: /_figures/reference/tutorial-ratings-01.svg + :scale: 100% + :alt: Tutorial difficulty ratings + + Figure 1: Tutorial difficulty ratings + +Time and complexity +******************* + +Are there about 8 or more *complex* steps? *Complex steps* are those that: + +* Require more than one action +* Require external reading/review +* Include explanation or context +* Give alternative(s) + +This metric factors in the cognitive load and its impact on a user. + +User experience level +********************* + +Our tutorials primarily target two types of Linux users. + +**Experienced** A Linux\* user who is familiar with common topics like userspace, networking, sudo privileges, services, and more. + +**Advanced** A Linux user who is beyond Experienced and is familiar with most sysadmin and programming topics. + +This metric establishes a starting point for skills, based on user +experience. + +Impact of failure +****************** + +The impact of failure calculates the risk of failing to complete a tutorial as a result of entering incorrect data or configuration, or failing to follow the steps in the given order. We estimate the potential state of a system, given these failure scenarios and their severity. This metric also factors in the ability to troubleshoot and recover when faced with errors. Therefore, the final impact incorporates the previous two metrics while it helps to predict an appropriate difficulty rating. + +* Will impact of errors be inconsequential? ``Easy`` +* Will impact of errors cause inconvenience (but system still works)? ``Moderate`` +* Will impact of errors cause system failure (difficult to recover)? ``Difficult`` diff --git a/_sources/tutorials/apache-hadoop.rst.txt b/_sources/tutorials/apache-hadoop.rst.txt new file mode 100644 index 000000000..265305f5f --- /dev/null +++ b/_sources/tutorials/apache-hadoop.rst.txt @@ -0,0 +1,257 @@ +.. _hadoop: + +Apache\* Hadoop\* +################# + +This tutorial explains the process of installing, configuring, and +running Apache Hadoop on |CL-ATTR|. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +For this tutorial, you will install Hadoop in a single machine +running both the master and slave daemons. + +The Apache Hadoop software library is a framework for distributed processing +of large data sets across clusters of computers using simple programming +models. It is designed to scale up from single servers to thousands of +machines, with each machine offering local computation and storage. + +Prerequisites +************* + +* :ref:`bare-metal-install-desktop` + +* In |CL|, run :command:`swupd update` + + +Install Apache Hadoop +********************* + +Apache Hadoop is included in the :command:`big-data-basic` bundle. To install +the framework, enter the following command: + +.. code-block:: bash + + sudo swupd bundle-add big-data-basic + +Configure Apache Hadoop +*********************** + +#. To create the configuration directory, enter the following command: + + .. code-block:: bash + + sudo mkdir /etc/hadoop + +#. Copy the defaults from :file:`/usr/share/defaults/hadoop` to + :file:`/etc/hadoop` with the following command: + + .. code-block:: bash + + $ sudo cp /usr/share/defaults/hadoop/* /etc/hadoop + + .. note:: Since |CL| is a stateless system, never modify the + files under the :file:`/usr/share/defaults` directory. The software + updater will overwrite those files. + + Once all the configuration files are in :file:`/etc/hadoop`, edit them to + fit your needs. The `NameNode` server is the master server that manages the + namespace of the files' system and regulates the clients' access to files. + The first file to be edited, :file:`/etc/hadoop/core-site.xml`, informs the + Hadoop daemon where `NameNode` is running. In this tutorial, `NameNode` runs + in the `localhost`. + +#. Open the :file:`/etc/hadoop/core-site.xml` file using any editor and modify + the file as follows: + + .. code-block:: xml + + + + + + fs.default.name + hdfs://localhost:9000 + + + +#. Edit the :file:`/etc/hadoop/hdfs-site.xml` file. This file configures the + :abbr:`HDFS (Hadoop Distributed File System)` daemons. This configuration + includes the list of permitted and excluded data nodes and the size of + those blocks. For this example, set the number of block replication to 1 + from the default of 3 as follows: + + .. code-block:: xml + :emphasize-lines: 6 + + + + + + dfs.replication + 1 + + + dfs.permission + false + + + +#. Edit the :file:`/etc/hadoop/mapred-site.xml` file. This file configures + all daemons related to `MapReduce`: `JobTracker` and `TaskTrackers`. With + `MapReduce`, Hadoop can process big amounts of data in multiple systems. In + our example, we set :abbr:`YARN (Yet Another Resource Manager)` as our + runtime framework for executing `MapReduce` jobs as follows: + + .. code-block:: xml + :emphasize-lines: 5,6 + + + + + + mapreduce.framework.name + yarn + + + +#. Edit the :file:`/etc/hadoop/yarn-site.xml` file. This file configures all + daemons related to `YARN`: `ResourceManager` and `NodeManager`. In our + example, we implement the `mapreduce_shuffle` service, which is the + default as follows: + + .. code-block:: xml + :emphasize-lines: 4,5,8,9 + + + + + yarn.nodemanager.aux-services + mapreduce_shuffle + + + yarn.nodemanager.auxservices.mapreduce.shuffle.class + org.apache.hadoop.mapred.ShuffleHandler + + + +Configure your SSH key +********************** + +#. Create a SSH key. If you already have one, skip this step. + + .. code-block:: bash + + sudo ssh-keygen -t rsa + + +#. Copy the key to your authorized keys. + + .. code-block:: bash + + sudo cat /root/.ssh/id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys + +#. Log into the localhost. If no password prompt appears, you are ready to + run the Hadoop daemons. + + .. code-block:: bash + + sudo ssh localhost + +Run the Hadoop daemons +********************** + +With all the configuration files properly edited, you are ready to start the +daemons. + +When you format the `NameNode` server, it formats the metadata related to +data nodes. Thus, all the information on the data nodes is lost and the nodes +can be reused for new data. + +#. Format the `NameNode` server with the following command: + + .. code-block:: bash + + sudo hdfs namenode -format + +#. Start the DFS in `NameNode` and `DataNodes` with the following command: + + .. code-block:: bash + + sudo start-dfs.sh + + The console output should be similar to: + + .. code-block:: console + + Starting namenodes on [localhost] + The authenticity of host 'localhost (::1)' can't be established. + ECDSA key fingerprint is + SHA256:97e+7TnomsS9W7GjFPjzY75HGBp+f1y6sA+ZFcOPIPU. + Are you sure you want to continue connecting (yes/no)? + +#. Enter `yes` to continue. + +#. Start the `YARN` daemons `ResourceManager` and `NodeManager` with the + following command: + + .. code-block:: bash + + sudo start-yarn.sh + +#. Ensure everything is running as expected with the following command: + + .. code-block:: bash + + sudo jps + + The console output should be similar to: + + .. code-block:: console + + 22674 DataNode + 26228 Jps + 22533 NameNode + 23046 ResourceManager + 22854 SecondaryNameNode + 23150 NodeManager + +Run the MapReduce wordcount example +*********************************** + +#. Create the input directory. + + .. code-block:: bash + + sudo hdfs dfs -mkdir -p /user/root/input + +#. Copy a file from the local file system to the HDFS. + + .. code-block:: bash + + sudo hdfs dfs -copyFromLocal local-file /user/root/input + +#. Run the `wordcount` example. + + .. code-block:: bash + + sudo hadoop jar /usr/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar wordcount input output + +#. Read the output file "part-r-00000". This file contains the number of times + each word appears in the file. + + .. code-block:: bash + + sudo hdfs dfs -cat /user/root/output/part-r-00000 + +**Congratulations!** + +You have successfully installed and setup a single node Hadoop cluster. +Additionally, you ran a simple wordcount example. + +Your single node Hadoop cluster is up and running! \ No newline at end of file diff --git a/_sources/tutorials/archive/kata_migration.rst.txt b/_sources/tutorials/archive/kata_migration.rst.txt new file mode 100644 index 000000000..3ccc4142d --- /dev/null +++ b/_sources/tutorials/archive/kata_migration.rst.txt @@ -0,0 +1,101 @@ +.. _kata_migration: + +Migrate Clear Containers to Kata Containers\* +############################################# + +This tutorial explains how to migrate from Clear Containers to Kata Containers. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +`Clear Containers`_ and `Kata Containers`_ can co-exist in the same system. +Both can be installed through the :command:`containers-virt` bundle. However, +we recommend that you migrate to Kata Containers because Clear Containers is no +longer `maintained`_ and will soon be deprecated on |CL-ATTR|. + +Prerequisites +************* + +* Clear Containers is on a Docker\* system. +* Kata Containers is installed. See :ref:`kata`. + + +Stop Clear Containers instances +******************************* + +As an unprivileged user, stop all running instances of Clear Containers: + +.. code-block:: bash + + for container in $(sudo docker ps -q); do sudo docker stop $container; done + + +Manually migrate customized configuration files +*********************************************** + +If you have made changes to your `Clear Containers configuration`_, review +those changes and decide whether to manually apply those changes to your +`Kata Containers configuration`_. + +Make any required changes before continuing this process. + +.. note:: + + You do not need to manually remove any Clear Containers packages. + + +Enable Kata Containers as default +********************************* + +#. Configure Docker to use the Kata Containers runtime by default. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/system/docker.service.d/ + cat <=4.7). +As such, it is not part of the Linux kernel, cannot be distributed by |CL|, +and has to be built as an out-of-tree kernel module. + +.. note:: + + It is recommended to use the :ref:`LTS kernel ` if you + have to use this driver. + +#. See if your device is supported and download the **Linux\* STA 64-bit + driver** from + `Broadcom's download website + `_ + or another trusted source. + + +#. Extract the downloaded archive into a separate folder. For example: + + .. code-block:: bash + + mkdir ./broadcom-wl/ + tar xvf ./hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz -C broadcom-wl/ + cd ./broadcom-wl/ + +#. Create a patches folder in the source tree and copy any necessary patches + to it. You will have to research which specific set of patches are required + for the running kernel version. The `gentoo repository for broadcom-sta + `_ + is a good place to start looking for up-to-date patches. + + .. code-block:: bash + + mkdir ./patches/ + +#. :ref:`Install the DKMS bundle ` for your + kernel. DKMS provides the framework to automatically rebuild the wl driver + against new kernels versions from |CL| updates. + +#. In the extracted driver directory, create a :file:`dkms.conf` file based + the contents below to provide DKMS information about how to build and + install the kernel module. This example uses version *6.30.223.271*. + + .. code-block:: bash + + cat <<'EOF' >> dkms.conf + PACKAGE_NAME=broadcom-wl + PACKAGE_VERSION=6.30.223.271 + MAKE="make KBASE=/lib/modules/${kernelver}" + CLEAN="make KBASE=/lib/modules/${kernelver} clean" + BUILT_MODULE_NAME=wl + DEST_MODULE_LOCATION=/kernel/drivers/net/wireless + AUTOINSTALL=yes + EOF + +#. Add the filename of any patches previously added to the :file:`patches` + folder to the :file:`dkms.conf` file so that DKMS applies them to the + driver source before building. Below are example patch names to show the + format used in :file:`dkms.conf`. + + .. code-block:: bash + + echo "PATCH[0]="first.patch" >> dkms.conf + echo "PATCH[1]="second.patch" >> dkms.conf + echo "PATCH[2]="third.patch" >> dkms.conf + +#. Copy the directory to the dkms tree. This example uses version + *6.30.223.271*. + + .. code-block:: bash + + sudo cp -Rv . /usr/src/broadcom-wl-6.30.223.271 + +#. Run the :command:`dkms` commands to add the broadcom-wl module to the dkms + tree, build it, and install it. This example uses version *6.30.223.271*. + + .. code-block:: bash + + sudo dkms add -m broadcom-wl -v 6.30.223.271 + sudo dkms install -m broadcom-wl -v 6.30.223.271 + +#. Blacklist all other variations of Broadcom drivers from loading to prevent + conflicts and problems. + + .. code-block:: bash + + sudo mkdir -p /etc/modprobe.d/ + + sudo tee /etc/modprobe.d/broadcom.conf > /dev/null <<'EOF' + blacklist b43 + blacklist b43legacy + blacklist ssb + blacklist bcm43xx + blacklist brcm80211 + blacklist brcmfmac + blacklist brcmsmac + blacklist bcma + EOF + +#. Reboot the system and check that the module is loaded and working. If not, + try manually updating dependencies and loading the module. + + .. code-block:: bash + + depmod -a + modprobe wl + + +Firmware +******** + +In addition to device drivers, devices require firmware that gets loaded onto +the device directly. + +Firmware for Broadcom devices are not fully open-source and not always +licensed for redistribution. |CL| kernel bundles :ref:`include the +linux-firmware bundle ` which contains the firmware +binaries that are able to be redistributed. If your device's firmware is part +of the linux-firmware repository, nothing else is needed. This is usually +the case for devices supported by the *brcmfmac* and *brcmsmac* drivers. + +In other cases, firmware may need to be obtained or extracted manually from a +trusted source because it is not licensed for distribution. This is usually +the case for devices supported by the *b43* and *b43legacy* drivers. Obtaining +these firmware is out of scope for this document, however there is information +about solutions to this problem available on the `Linux wireless wiki +`_. + +On |CL| systems, firmware should be placed in :file:`/etc/firmware`. See the +:ref:`firmware` documentation for more information on loading custom +firmware. + + +Troubleshooting +*************** + +- See which drivers are currently loaded with the :command:`lsmod` and + :command:`modinfo` commands. + +- If your device is not showing up or having intermittent issues, ensure the + card is not blocked by the kernel with the :command:`rfkill` command. + +- Try blacklisting all the other variations of drivers not intended to be + used. In some cases, the wrong device driver will be loaded causing + problems. + +- If an external firmware image is required, it may be trying to load from a + different path than expected. Check the output of :command:`sudo dmesg | + grep -i firmware` for firmware loading issues. + +*The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by Intel Corporation is under license.* \ No newline at end of file diff --git a/_sources/tutorials/docker.rst.txt b/_sources/tutorials/docker.rst.txt new file mode 100644 index 000000000..2fb391b59 --- /dev/null +++ b/_sources/tutorials/docker.rst.txt @@ -0,0 +1,242 @@ +.. _docker: + +Docker\* +######### + +|CL-ATTR| supports multiple containerization platforms, including a Docker +solution. |CL| has many unique features including a minimal default +installation, which makes it compelling to use as a host for container +workloads, management, and orchestration. + +This tutorial covers: + +.. contents:: :local: + :depth: 1 + +.. note:: + + This tutorial focuses on the installation of the Docker ecosystem. + If you want to use |CL| as a Docker container image, refer to the + official |CL| container image + `published on Docker* Hub `_ + and our guide to :ref:`container-image-new`. + +Prerequisites +************* + +This tutorial assumes you have installed |CL| on your host system. +For detailed instructions on installing |CL| on a bare metal system, follow +the :ref:`bare metal installation instructions`. + +Before you install any new packages, update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +Additionally, you should have: + +* A basic understanding of Linux\* and Docker. + +* |CL| environment that has transparent network access to the Internet. + If you are behind a HTTP proxy server, in a corporate setting for example, + please refer to the `Docker proxy instructions`_ . + +Install the containers-basic bundle +*********************************** + +Software in |CL| is offered in the form of :ref:`bundles` to provide a +complete function. The *containers-basic* provides all the required software +packages to run Docker images as containers. + +#. First, install the *containers-basic* bundle by running this + :command:`swupd` command: + + .. code-block:: bash + + sudo swupd bundle-add containers-basic + +#. Start the Docker daemon through systemd manager by running this command: + + .. code-block:: bash + + sudo systemctl start docker + + If you want Docker to start automatically on boot, enable the + systemd service by running this command: + + .. code-block:: bash + + sudo systemctl enable docker + +#. Finally, verify :command:`docker` has been installed by running this + command and checking the version output for both *client* and *server*: + + .. code-block:: bash + + sudo docker version + +Congratulations! At this point, you have a working installation of Docker +on |CL|. You are ready to start using container images on your system. + +Integration with Kata Containers\* (optional) +********************************************* + +`Kata Containers`_, is an open source project aiming to increase security +of containers by using a hardware-backed virtual machine container runtime +rather than software namespace containers that are provided by the standard +Docker *runc* runtime. + +|CL| provides easy integration of the *kata-runtime* with Docker. +More information on installing and using the *kata-runtime* may be found at :ref:`kata`. + + +.. note:: + + The remaining sections of this tutorial are standard to Docker setup + and configuration. If you are familiar with Docker basics, you do not + need to continue reading. The following sections are provided here for + sake of completeness. + +.. _additional-docker-configuration: + +Additional Docker configuration +******************************* + +Perform additional Docker daemon configuration via a configuration file +typically located at :file:`/etc/docker/daemon.json`. |CL| features a +:ref:`stateless` system so the configuration file :file:`daemon.json` does +*NOT* exist by default. + +#. Create the :file:`daemon.json` by running this command: + + .. code-block:: bash + + sudo touch /etc/docker/daemon.json + + .. note:: + + Refer to the `Docker documentation on daemon configuration`_ for the + full list of available configuration options and examples. + +#. For production systems, we follow Docker's recommendation to use the + `OverlayFS storage driver`_ `overlay2`, shown below: + + .. code-block:: json + + { + "storage-driver": "overlay2" + } + + .. note:: + + A testing version is found in `Docker Device Mapper storage driver`_. + If using this storage driver, a warning message may appear: "usage of + loopback devices is strongly discouraged for production use". + +#. Save and close :file:`daemon.json`. + +#. Once you've made any required changes, be sure to restart the + Docker daemon through systemd manager by running this command: + + .. code-block:: bash + + sudo systemctl restart docker + +Pulling and running an image from Docker Hub\* +********************************************** + +`Docker Hub`_ is a publicly available container image repository which +comes pre-configured with Docker. In the example below we will pull and run +an the official Docker image for nginx\*, an open source reverse proxy server. + +#. First, pull a container image from Docker Hub using the + :command:`docker pull` command. Download the latest nginx\* Docker + container image by running this command: + + .. code-block:: bash + + sudo docker pull nginx + +#. Create and launch a new container using the :command:`docker run` + command. Launch a nginx container by running this command: + + .. code-block:: bash + + sudo docker run --name test-nginx -d -p 8080:80 nginx + + .. note:: + + Below is an explanation of switches used in the command above. For + detailed :command:`docker run` switches and syntax, refer to the + `Docker Documentation`_ . + + * The *--name* switch lets you provide a friendly name to + target the container for future operations + + * The *-d* switch launches the container in the background + + * The *-p* switch allows the container's HTTP port (80) to be + accessible from the |CL| host on port 8080 + +#. You can access the Welcome to Nginx! splash page running in the container + by browsing to \http://127.0.0.1:8080 or by running this :command:`curl` + command from your |CL| machine: + + .. code-block:: bash + + curl 127.0.0.1:8080 + +#. Finally, stop and delete the nginx container by running the + :command:`docker stop` and :command:`docker rm` commands. + + .. code-block:: bash + + sudo docker stop test-nginx + sudo docker rm test-nginx + +Congratulations! At this point, you have successfully pulled a nginx +container image from `Docker Hub`_ and have run an example container. + +Creating a Docker swarm cluster +******************************* + +Clusters of Docker hosts are referred to as *swarms*. + +The process in this tutorial can be repeated to install Docker on multiple +|CL| hosts with the intent to form a Docker swarm cluster. + +The `Docker documentation on swarm key concepts`_ and +`Docker documentation on creating a swarm`_ can be referenced +for further instructions on setting up a swarm. + +Related topics +************** + +* `Docker Home`_ +* `Docker Documentation`_ +* `Docker Hub`_ +* `Kata Containers`_ + + +.. _Docker proxy instructions: https://docs.docker.com/config/daemon/systemd/#httphttps-proxy + +.. _Docker documentation on daemon configuration: https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file + +.. _Kata Containers: https://katacontainers.io/ + +.. _Docker Home: https://www.docker.com/ + +.. _Docker Documentation: https://docs.docker.com/ + +.. _Docker Hub: https://hub.docker.com/ + +.. _Docker documentation on swarm key concepts: https://docs.docker.com/engine/swarm/key-concepts/ + +.. _Docker documentation on creating a swarm: https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/ + +.. _Configure direct lvm mode for production: https://docs.docker.com/storage/storagedriver/device-mapper-driver/ + +.. _OverlayFS storage driver: https://docs.docker.com/storage/storagedriver/overlayfs-driver/ + +.. _Docker Device Mapper storage driver: https://docs.docker.com/storage/storagedriver/device-mapper-driver/ diff --git a/_sources/tutorials/flatpak.rst.txt b/_sources/tutorials/flatpak.rst.txt new file mode 100644 index 000000000..5a5b43a9d --- /dev/null +++ b/_sources/tutorials/flatpak.rst.txt @@ -0,0 +1,135 @@ +.. _flatpak-tutorial: + +Flatpak\* +######### + +This tutorial shows how to install a `Flatpak`_ app on |CL| using GNOME\* Software +and the command line. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +`Flatpak`_ is a framework for building and distributing desktop apps on +Linux\*. Flatpak allows you to build a single app and install it on different +distributions of Linux. Flatpak apps are available through `Flathub`_ or the +`Clear Linux Store`_. + +Prerequisites +************* + +* |CL| installed on host system + + Refer to :ref:`Get started ` for installation instructions. + +* `desktop-autostart` bundle installed + + Flatpak is included via `desktop`, which is included in the + `desktop-autostart` bundle. The Flathub repository is pre-configured when + the `desktop-autostart` bundle is installed. + + Install the `desktop-autostart` bundle with the following command: + + .. code-block:: bash + + sudo swupd bundle-add desktop-autostart + +Install a Flatpak app with GNOME Software +***************************************** + +|CL| desktop comes with GNOME Software installed. Flatpak apps can be +installed from within GNOME Software. + +#. Launch GNOME Software from your desktop. + +#. Search for the Flatpak app that you want to install, as shown in Figure 1. + + .. figure:: /_figures/flatpak/flatpak-01.png + :scale: 50% + :alt: Searching for Filezilla app in GNOME Software + + Figure 1: Searching for Filezilla\* app in GNOME Software + +#. When you find the app you want to install, click it to view application + details. + +#. On the app detail page, click the :guilabel:`Install` button, as shown in + Figure 2. + + .. figure:: /_figures/flatpak/flatpak-02.png + :scale: 50% + :alt: Filezilla Flatpak detail page in GNOME Software + + Figure 2: Filezilla Flatpak detail page in GNOME Software + +#. After installation is complete, the new application will be in your + GNOME applications list, as shown in Figure 3. + + .. figure:: /_figures/flatpak/flatpak-03.png + :scale: 50% + :alt: Newly installed Filezilla application + + Figure 3: Newly installed Filezilla application + +#. Click the application icon to launch the application. + +Install a Flatpak with the command line +*************************************** + +Both Flathub and the Clear Linux Store provide the command line instructions +for installing a Flatpak. Figure 4 shows the command line instructions to +install Filezilla\* from the Clear Linux Store: + +.. figure:: /_figures/flatpak/flatpak-04.png + :scale: 50% + :alt: Command line instructions to install Filezilla from the Clear Linux Store + + Figure 4: Command line instructions to install Filezilla from the Clear Linux Store + +In this example, we install Filezilla. + +#. Open a terminal and enter the install command for the desired app: + + .. code-block:: bash + + flatpak install flathub org.filezillaproject.Filezilla + + You may be prompted to select which repository to use: + + .. code-block:: bash + + Looking for matches… + Remote ‘flathub’ found in multiple installations: + + 1) system + 2) user + + Which do you want to use (0 to abort)? [0-2]: 2 + + org.filezillaproject.Filezilla permissions: + ipc network ssh-auth wayland x11 + dri file access [1] dbus access [2] + + [1] host, xdg-run/dconf, ~/.config/dconf:ro + [2] ca.desrt.dconf, org.freedesktop.Notifications, org.freedesktop.PowerManagement, + org.gnome.SessionManager + + + ID Arch Branch Remote Download + 1. [✓] org.filezillaproject.Filezilla x86_64 stable flathub 11.5 MB / 11.5 MB + 2. [✓] org.filezillaproject.Filezilla.Locale x86_64 stable flathub 4.6 kB / 3.8 MB + + Installation complete. + +#. After installation, run the application with the following command: + + .. code-block:: bash + + flatpak run org.filezillaproject.Filezilla + +.. _Flatpak: https://flatpak.org +.. _Flathub: https://flathub.org +.. _Clear Linux Store: https://clearlinux.org/software diff --git a/_sources/tutorials/fmv.rst.txt b/_sources/tutorials/fmv.rst.txt new file mode 100644 index 000000000..402ac04e8 --- /dev/null +++ b/_sources/tutorials/fmv.rst.txt @@ -0,0 +1,286 @@ +.. _fmv: + +Function Multi-Versioning +######################### + +In this tutorial, we will use :abbr:`FMV (Function Multi-Versioning)` on +general code and on :abbr:`FFT (Fast Fourier Transform)` library code (FFTW). +Upon completing the tutorial, you will be able to use this technology on your +code and use the libraries to deploy architecture-based optimizations to your +application code. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +CPU architectures often gain interesting new instructions as they evolve but +application developers find it difficult to take advantage of those +instructions. The reluctance to lose backward-compatibility is one of the +main roadblocks slowing developers from using advancements in newer computing +architectures. FMV, which first appeared in `GCC`_ 4.8, is a way to have +multiple implementations of a function, each using different +architecture-specialized instruction-set extensions. GCC 6 introduces +changes to FMV to make it even easier to bring architecture-based +optimizations to the application code. + + +Install and configure a |CL| host on bare metal +*********************************************** + +First, follow our guide to :ref:`bare-metal-install-desktop`. Once the bare +metal installation and initial configuration are complete, add the +:command:`desktop-dev` bundle to the system. :command:`desktop-dev` contains +the necessary development tools like GCC and Perl\*. + +#. To install the bundles, run the following command in the :file:`$HOME` + directory: + + .. code-block:: bash + + sudo swupd bundle-add desktop-dev + +Detect loop vectorization candidates +************************************ + +Now, we need to detect the loop vectorization candidates to be cloned for +multiple platforms with FMV. As an example, we will use the following +simple C code: + +.. code-block:: c + :linenos: + + #include + #include + #include + #define MAX 1000000 + + int a[256], b[256], c[256]; + + void foo(){ + int i,x; + for (x=0; x log + +#. To generate the patch files, execute: + + .. code-block:: bash + + perl ./make-fmv-patch/make-fmv-patch.pl log . + +#. The :file:`make-fmv-patch.pl` script takes two arguments: `` + and ``. Replace `` and `` with the + proper values and execute: + + .. code-block:: bash + + perl make-fmv-patch.pl + + The command generates the following :file:`example.c.patch` patch: + + .. code-block:: console + + --- ./example.c 2017-09-27 16:05:42.279505430 +0000 + +++ ./example.c~ 2017-09-27 16:19:11.691544026 +0000 + @@ -5,6 +5,7 @@ + + int a[256], b[256], c[256]; + + +__attribute__((target_clones("avx2","arch=atom","default"))) + void foo(){ + int i,x; + for (x=0; x + #include + #include + #define MAX 1000000 + + int a[256], b[256], c[256]; + + __attribute__((target_clones("avx2","arch=atom","default"))) + void foo(){ + int i,x; + for (x=0; x y) ? x : y; } + + +__attribute__((target_clones("avx2","arch=atom","default"))) + static double aerror(C *a, C *b, int n) + { + if (n > 0) { + @@ -111,6 +112,7 @@ + } + + /* make array hermitian */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void mkhermitian(C *A, int rank, const bench_iodim *dim, int stride) + { + if (rank == 0) + @@ -148,6 +150,7 @@ + } + + /* C = A + B */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void aadd(C *c, C *a, C *b, int n) + { + int i; + @@ -159,6 +162,7 @@ + } + + /* C = A - B */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void asub(C *c, C *a, C *b, int n) + { + int i; + @@ -170,6 +174,7 @@ + } + + /* B = rotate left A (complex) */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void arol(C *b, C *a, int n, int nb, int na) + { + int i, ib, ia; + @@ -192,6 +197,7 @@ + } + } + +With these patches, we can select where to apply the FMV technology, which +makes it even easier to bring architecture-based optimizations to +application code. + +**Congratulations!** + +You have successfully installed an FMV development environment on |CL|. +Furthermore, you used cutting edge compiler technology to improve the +performance of your application based on Intel® architecture and +profiling of the specific execution of your application. + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _GCC: https://gcc.gnu.org +.. _make-fmv-patch: https://github.com/clearlinux/make-fmv-patch diff --git a/_sources/tutorials/hpc.rst.txt b/_sources/tutorials/hpc.rst.txt new file mode 100644 index 000000000..a97eed66f --- /dev/null +++ b/_sources/tutorials/hpc.rst.txt @@ -0,0 +1,736 @@ +.. _hpc: + +HPC Cluster +########### + +This tutorial demonstrates how to set a simple :abbr:`HPC (High +Performance Computing)` cluster using `Slurm`_, `MUNGE`_, and +`pdsh`_. For this tutorial, this cluster consists of a controller node +and four worker nodes, as shown in Figure 1. For the sake of simplicity, +each node resides on a separate host and their hostnames are hpc-controller, +hpc-worker1, hpc-worker2, hpc-worker3, and hpc-worker4. + +.. rst-class:: dropshadow + +.. figure:: ../_figures/hpc/hpc-01.png + :alt: Simple HPC cluster + + Figure 1: Simple HPC cluster + +The configuration is intentionally kept simple, notably avoiding setting +up cgroups and accounting. These and many more additional configuration +options can be added later. + +.. note:: + + This tutorial assumes you start with a new installation of |CL| for all + nodes. + +Prerequisites +************* + +* Knowledge and experience with HPC +* Familiarity with Slurm, MUNGE, and pdsh +* All nodes have synchronized clocks (typically by NTP) + +.. contents:: + :local: + :depth: 1 + +Set up controller node +********************** + +In this step, install the cluster tools, configure and enable the MUNGE service, +and enable the Slurm controller service. + +#. Install |CL| on the controller node, add a user with adminstrator + privilege, and set its hostname to `hpc-controller`. + +#. Boot it up and log in. + +#. Update |CL| to the latest version. + + .. code-block:: bash + + sudo swupd update + +#. Set the date and time to synchronize with an NTP server. + + .. code-block:: bash + + sudo timedatectl set-ntp true + +#. Install the `cluster-tools` bundle. + + .. code-block:: bash + + sudo swupd bundle-add cluster-tools + +#. Create a MUNGE key and start the MUNGE service. + + a. Create the MUNGE key. + + .. code-block:: bash + + sudo mkdir /etc/munge + dd if=/dev/urandom bs=1 count=1024 | sudo tee -a /etc/munge/munge.key + + #. Set the ownership to `munge` and set the correct access permissions. + + .. code-block:: bash + + sudo chown munge: /etc/munge/munge.key + sudo chmod 400 /etc/munge/munge.key + + #. Start the MUNGE service and set it to start automatically on boot. + + .. code-block:: bash + + sudo systemctl enable munge --now + +#. Test MUNGE. + + a. Create a MUNGE credential. + + .. code-block:: bash + + munge -n + + Example output: + + .. code-block:: console + + MUNGE:AwQFAAC8QZHhL/+Fqhalhi+ZJBD5LavtMa8RMles1aPq7yuIZq3LtMmrB7KQZcQjG0qkFmoIIvixaCACFe1stLmF4VIg4Bg/7tilxteXHS940cuZ/TxpIuqC6fUH8zLgUZUPwJ4=: + + + #. Validate a MUNGE credential. + + .. code-block:: bash + + munge -n | unmunge | grep STATUS + + Example output: + + .. code-block:: console + + STATUS: Success (0) + +#. Start the Slurm controller service and enable it to start automatically + on boot. + + .. code-block:: bash + + sudo systemctl enable slurmctld --now + +Set up worker nodes +******************* + +For each worker node, perform these steps: + +#. Install |CL| on the worker node, add a user with adminstrator privilege, + and set its hostname to `hpc-worker` plus its number, i.e. hpc-worker1, + hpc-worker2, etc. + + Ensure the username is the same as the one on the controller node. This + is needed to simplify password-less-SSH-access setup, which is needed for + pdsh, in the next section. + +#. Boot it up and log in. + +#. Update |CL| to the latest version. + + .. code-block:: bash + + sudo swupd update + +#. Set the date and time to synchronize with an NTP server. + + .. code-block:: bash + + sudo timedatectl set-ntp true + +#. Install the `cluster-tools` bundle. + + .. code-block:: bash + + sudo swupd bundle-add cluster-tools + +Set up password-less SSH access and pdsh on all nodes +***************************************************** + +To efficiently manage a cluster, it is useful to have a tool +that allows issuing the same command to multiple nodes at once. +And that tool is :abbr:`pdsh (parallel distributed shell)`, which is included +with the `cluster-tools` bundle. pdsh is built with Slurm support, so it can +access hosts as defined in the Slurm partitions. pdsh relies on password-less +SSH access in order for it to work properly. There are two ways to set up +pasword-less SSH authentication: key-based or host-based. In this case, +the latter approach will be used. The controller authenticates a user and +all worker nodes will trust that authentication and not ask the user to +enter a password again. + +#. Configure the controller node. + + a. Log into the controller node. + + #. Configure the SSH service for host-based authentication. + + .. code-block:: bash + + sudo tee -a /etc/ssh/ssh_config << EOF + HostbasedAuthentication yes + EnableSSHKeysign yes + EOF + + #. Restart the SSH service. + + .. code-block:: bash + + sudo systemctl restart sshd + +#. Configure each worker node. + + a. Configure SSH service for host-based authentication. + + .. code-block:: bash + + sudo tee -a /etc/ssh/sshd_config << EOF + HostbasedAuthentication yes + IgnoreRhosts no + UseDNS yes + EOF + + #. Create the :file:`/etc/hosts.equiv` file and add the controller's + :abbr:`FQDN (fully qualified domain name)`. This tells the worker + node to accept connection from the controller. + + For example: + + .. code-block:: console + + hpc-controller.my-domain.com + + #. Set its permission to root access only. + + .. code-block:: bash + + sudo chmod 600 /etc/hosts.equiv + + #. Add the controller's FQDN to :file:`/root/.shosts`. This allows + host-based authentication for the root account so that + actions requiring sudo privileges can be performed. + + .. code-block:: bash + + sudo cp -v /etc/hosts.equiv /root/.shosts + + #. Using the controller's FQDN in :file:`/etc/hosts.equiv`, scan for its + RSA public key and copy it to :file:`/etc/ssh/ssh_known_hosts`. + Verify the scanned RSA public key matches the controller's + :file:`/etc/ssh/ssh_rsa_key.pub` file. + + .. code-block:: bash + + sudo ssh-keyscan -t rsa -f /etc/hosts.equiv > ~/ssh_known_hosts + sudo cp -v ~/ssh_known_hosts /etc/ssh + rm ~/ssh_known_hosts + + #. Restart the SSH service. + + .. code-block:: bash + + sudo systemctl restart sshd + +#. On the controller node, SSH into each worker node without having to enter + a password. At the first-time connection to each host, you'll be asked to + add the unknown host to the :file:`$HOME/.ssh/known_hosts` file. Accept + the request. This is will make future SSH connections to each host be + non-interactive. + + .. code-block:: bash + + ssh + + .. note:: + + Setting up host-based authentication on + :abbr:`CSP (Cloud Service Provider)` environments such as Microsoft Azure + and Amazon AWS may require some tweaking on the worker nodes' SSH + configurations due to the CSP's virtual network setup. In general, + cloud VMs have a public and private DNS name. When SSH'ing from the + controller to a worker node, the SSH client may send the controller's + private DNS name, usually something with "internal" in the name, + as the `chost` instead of its public FQDN as expected in worker node's + :file:`/etc/hosts.equiv`, :file:`/root/.shosts`, and + :file:`/etc/ssh/ssh_known_hosts` files. If the above configurations + do not work, meaning you're asked to enter a password when + SSH'ing from the controller to a worker node, on a cloud VM, here are + some suggestions for debugging the problem: + + #. On the controller, try to identify the chost data sent by the SSH + client using :command:`ssh -vvv `. Look for `chost` + in the debug log. If the chost value is different than the controller's + FQDN listed in worker node's :file:`/etc/hosts.equiv`, + :file:`/root/.shosts`, and :file:`/etc/ssh/ssh_known_hosts` files, + then that is likely the cause of the problem. In some cases, chost + data may not be shown. If so, it's safe to assume that the SSH client + is using the controller's private DNS name as the chost. Proceed to + steps 2 and 3 below to fix the problem. + + #. Get the controller's private DNS name either by the above step or by + getting it from your system administrator. + + #. On the worker node, make these changes: + + #. Change the controller's FQDN in :file:`/etc/hosts.equiv`, + :file:`/root/.shosts`, and :file:`/etc/ssh/ssh_known_hosts` + to its private DNS name. + + #. Restart the SSH service on the worker node. + + #. Retest the connection from the controller node to the worker node. + If that still doesn't work, try the SSH directive + `HostbasedUsesNameFromPacketOnly yes` which tell the SSH service + to accept the supplied host name as is and not try to resolve it. + Also, set the directive `UseDNS` to `no` to disable host name lookup. +#. Verify you can issue a simple command over SSH without typing a password. + + a. Issue the :command:`hostname` command. + + .. code-block:: bash + + ssh hostname + + #. Issue the :command:`hostname` command with :command:`sudo`. + + .. code-block:: bash + + ssh sudo hostname + + In both cases, you should get a response with the worker node's hostname. + If the `sudo` version requires additional permission, grant the user + `NOPASSWD` privilege. For example: + + #. Edit the sudoer file. + + .. code-block:: bash + + sudo visudo + + #. Add the following: + + .. code-block:: console + + ALL=(ALL) NOPASSWD: ALL + +Create :file:`slurm.conf` configuration file +******************************************** + +On the controller, create a new :file:`slurm.conf` configuration file +that contains general settings, each node's hardware resource information, +grouping of nodes into different partitions, and scheduling settings for +each partition. This file will be copied to all worker nodes in the cluster. + +#. Create a base :file:`slurm.conf` configuration file. + + .. code-block:: bash + + sudo mkdir -p /etc/slurm + sudo cp -v /usr/share/defaults/slurm/slurm.conf /etc/slurm + +#. Add the controller information. + + a. :command:`sudoedit` the :file:`slurm.conf` file. Set the `ControlMachine` + value to the controller's resolvable hostname. + + For example: + + .. code-block:: console + + ControlMachine=hpc-controller + + .. note:: + + Assuming the controller's FQDN is resolvable, specifying the + controller's IP address with the `ControlAddr` key is optional. + However, it maybe helpful to add it. + + #. Save and exit. + +#. Add the worker nodes information. + + a. Create a file containing a list of the worker nodes. + + .. code-block:: bash + + cat > worker-nodes-list << EOF + hpc-worker1 + hpc-worker2 + hpc-worker3 + hpc-worker4 + EOF + + #. Using pdsh, get the hardware configuration of each node. + + .. code-block:: bash + + pdsh -w ^worker-nodes-list slurmd -C + + Example output: + + .. code-block:: console + + hpc-worker4: NodeName=hpc-worker4 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=1915 + hpc-worker4: UpTime=0-01:23:28 + hpc-worker3: NodeName=hpc-worker3 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=1663 + hpc-worker3: UpTime=0-01:33:41 + hpc-worker2: NodeName=hpc-worker2 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=721 + hpc-worker2: UpTime=0-01:34:56 + hpc-worker1: NodeName=hpc-worker1 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=721 + hpc-worker1: UpTime=0-01:39:21 + + #. :command:`sudoedit` the :file:`slurm.conf` file. Append each worker node + information, but without the `UpTime`, under the `COMPUTE NODES` section. + + .. tip:: + + It is strongly recommended to set the `RealMemory` value for each + worker node slightly below, say 90%, what was reported by + :command:`slurmd -C` + in case some memory gets use by some processes, which would + cause Slurm to make a node not available due to its memory + resource falling below the stated value in the configuration file. + + Here's an example with four worker nodes: + + .. code-block:: console + + # + # COMPUTE NODES (mode detailed values reported by "slurmd -C" on each node) + NodeName=hpc-worker1 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=648 + NodeName=hpc-worker2 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=648 + NodeName=hpc-worker3 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=1497 + NodeName=hpc-worker4 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=1723 + + #. Create partitions. + + A Slurm partition is basically the grouping of worker nodes. + Give each partition a name and decide which worker node(s) belong to + it. + + For example: + + .. code-block:: console + + PartitionName=workers Nodes=hpc-worker1, hpc-worker2, hpc-worker3, hpc-worker4 Default=YES MaxTime=INFINITE State=UP + PartitionName=debug Nodes=hpc-worker1, hpc-worker3 MaxTime=INFINITE State=UP + + #. Save and exit. + + #. Set the ownership of the :file:`slurm.conf` file to `slurm`. + + .. code-block:: bash + + sudo chown slurm: /etc/slurm/slurm.conf + +#. On the controller node, restart the Slurm controller service. + + .. code-block:: bash + + sudo systemctl restart slurmctld + +#. Verify the Slurm controller service restarted without any issues before + proceeding. + + .. code-block:: bash + + sudo systemctl status slurmctld + + + +Copy MUNGE key and :file:`slurm.conf` to all worker nodes +********************************************************* + +On the controller node, using pdsh, in conjunction with the list of +defined nodes in the :file:`slurm.conf`, copy it and the MUNGE key to +all worker nodes. + +#. On the controller node, copy the MUNGE key to all worker nodes and start the + MUNGE service. + + a. Create the :file:`/etc/munge/` directory on each node. + + .. code-block:: bash + + sudo pdsh -P workers mkdir /etc/munge + + #. Copy the MUNGE key over. + + .. code-block:: bash + + sudo pdcp -P workers /etc/munge/munge.key /etc/munge + + #. Set the ownership of the :file:`munge.key` file to `munge`. + + .. code-block:: bash + + sudo pdsh -P workers chown munge: /etc/munge/munge.key + + #. Start the MUNGE service and set it to start automatically on boot. + + .. code-block:: bash + + sudo pdsh -P workers systemctl enable munge --now + + #. Verify the MUNGE service is running. + + .. code-block:: bash + + sudo pdsh -P workers "systemctl status munge | grep Active" + + Example output: + + .. code-block:: console + + hpc-worker3: Active: active (running) since Wed 2020-04-15 19:47:58 UTC; 55s ago + hpc-worker4: Active: active (running) since Wed 2020-04-15 19:47:58 UTC; 55s ago + hpc-worker2: Active: active (running) since Wed 2020-04-15 19:47:59 UTC; 54s ago + hpc-worker1: Active: active (running) since Wed 2020-04-15 19:47:59 UTC; 54s ago + +#. On the controller node, copy the :file:`slurm.conf` file to all + worker nodes and start the slurmd service on them. + + a. Create the :file:`/etc/slurm/` directory on each worker node. + + .. code-block:: bash + + sudo pdsh -P workers mkdir /etc/slurm + + #. Copy the :file:`slurm.conf` file over. + + .. code-block:: bash + + sudo pdcp -P workers /etc/slurm/slurm.conf /etc/slurm + + #. Set the ownership of the :file:`slurm.conf` file to `slurm`. + + .. code-block:: bash + + sudo pdsh -P workers chown slurm: /etc/slurm/slurm.conf + + #. Start the Slurm service and set it automatically start on boot. + + .. code-block:: bash + + sudo pdsh -P workers systemctl enable slurmd --now + + #. Verify the slurmd service is running. + + .. code-block:: bash + + sudo pdsh -P workers systemctl status slurmd | grep Active + + Example output: + + .. code-block:: console + + hpc-worker3: Active: active (running) since Wed 2020-04-15 19:39:22 UTC; 1min 17s ago + hpc-worker4: Active: active (running) since Wed 2020-04-15 19:39:22 UTC; 1min 17s ago + hpc-worker2: Active: active (running) since Wed 2020-04-15 19:39:23 UTC; 1min 17s ago + hpc-worker1: Active: active (running) since Wed 2020-04-15 19:39:23 UTC; 1min 17s ago + +Verify controller can run jobs on all nodes +******************************************* + +#. Check the state of the worker nodes. + + .. code-block:: bash + + sinfo + + Example output: + + .. code-block:: console + + PARTITION AVAIL TIMELIMIT NODES STATE NODELIST + workers* up infinite 4 idle hpc-worker[1-4] + debug up infinite 2 idle hpc-worker[1,3] + + .. tip:: + + If the nodes are in a "down" state, put them in the "idle" state. + + For example: + + .. code-block:: bash + + sudo scontrol update nodename=hpc-worker[1-4] state=idle reason="" + + Additional `Slurm troubleshooting tips`_. + +#. And finally, verify Slurm can run jobs on all 4 worker nodes by issuing + a simple :command:`hostname` command. + + .. code-block:: bash + + srun -N4 -p workers hostname + + Example output: + + .. code-block:: console + + hpc-worker4 + hpc-worker3 + hpc-worker1 + hpc-worker2 + +Create and run example scripts +****************************** + +Example 1: Return the hostname of each worker and output to :file:`show-hostnames.out` +====================================================================================== + +#. On the controller node, create the Slurm :file:`show-hostnames.sh` script. + + .. code-block:: bash + + cat > show-hostnames.sh << EOF + #!/bin/bash + # + #SBATCH --job-name=show-hostnames + #SBATCH --output=show-hostnames.out + # + #SBATCH --ntasks=4 + #SBATCH --time=10:00 + #SBATCH --mem-per-cpu=100 + #SBATCH --ntasks-per-node=1 + + srun hostname + EOF + +#. Execute the script. + + .. code-block:: bash + + sbatch show-hostnames.sh + + The result will appear on the first node of the partition used. As no + partition was explicitly specified, it would be the default partition. + +#. View the result. + + .. code-block:: bash + + pdsh -w hpc-worker1 "cat show-hostnames.out" + + Example output: + + .. code-block:: console + + hpc-worker1: hpc-worker3 + hpc-worker1: hpc-worker4 + hpc-worker1: hpc-worker1 + hpc-worker1: hpc-worker2 + +Example 2: An MPI "Hello, World!" program +========================================= + +#. On the controller node, create the :file:`mpi-helloworld.c` program. + + .. code-block:: bash + + cat > mpi-helloworld.c << EOF + #include + #include + #include + + int main(int argc, char** argv) + { + // Init the MPI environment + MPI_Init(NULL, NULL); + + // Get the number of processes + int world_size; + MPI_Comm_size(MPI_COMM_WORLD, &world_size); + + // Get the rank of the process + int world_rank; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + + // Get the name of the processor + char processor_name[MPI_MAX_PROCESSOR_NAME]; + int name_len; + MPI_Get_processor_name(processor_name, &name_len); + + // Print a hello world message + printf("Hello, World! from from processor %s, rank %d out of %d processors\n", processor_name, world_rank, world_size); + + // Finalize the MPI environment + MPI_Finalize(); + } + EOF + +#. Add the `c-basic` and `devpkg-openmpi` bundles, which are needed to compile + it. + + .. code-block:: bash + + sudo swupd bundle-add c-basic devpkg-openmpi + +#. Compile it. + + .. code-block:: bash + + mpicc -o mpi-helloworld mpi-helloworld.c + +#. Copy the binary to all worker nodes. + + .. code-block:: bash + + pdcp -P workers ./mpi-helloworld $HOME + +#. Create a Slurm batch script to run it. + + .. code-block:: bash + + cat > mpi-helloworld.sh << EOF + #!/bin/sh + #SBATCH -o mpi-helloworld.out + #SBATCH --nodes=4 + #SBATCH --ntasks-per-node=1 + + srun ./mpi-helloworld + EOF + +#. Run the batch script. + + .. code-block:: bash + + sbatch mpi-helloworld.sh + +#. View the results on first worker node in the partition. + + .. code-block:: bash + + pdsh -w hpc-worker1 "cat mpi-helloworld.out" + + Example output: + + .. code-block:: console + + Hello, World! from from processor hpc-worker3, rank 2 out of 4 processors + Hello, World! from from processor hpc-worker4, rank 3 out of 4 processors + Hello, World! from from processor hpc-worker1, rank 0 out of 4 processors + Hello, World! from from processor hpc-worker2, rank 1 out of 4 processors + +.. _Slurm: + https://en.wikipedia.org/wiki/Slurm_Workload_Manager + +.. _MUNGE: + https://dun.github.io/munge/ + +.. _pdsh: + https://linux.die.net/man/1/pdsh + +.. _Slurm troubleshooting tips: + https://slurm.schedmd.com/troubleshoot.html diff --git a/_sources/tutorials/index.rst.txt b/_sources/tutorials/index.rst.txt new file mode 100644 index 000000000..6f15318e5 --- /dev/null +++ b/_sources/tutorials/index.rst.txt @@ -0,0 +1,75 @@ +.. _tutorials: + +Tutorials +######### + +Explore our tutorials to discover what you can do with |CL|, conveniently +sorted by difficulty level! Learn about :ref:`how we evaluate tutorials `. + +.. container:: multicolumns + + .. container:: column narrow + + .. rst-class:: colh3 + + Easy + + - :ref:`docker` + - :ref:`flatpak-tutorial` + - :ref:`kata` + - :ref:`lamp-server-install` + - :ref:`proxy` + - :ref:`redis` + - :ref:`smb-desktop` + - :ref:`smb-server` + - :ref:`yubikey-u2f` + + .. container:: column narrow + + .. rst-class:: colh3 + + Moderate + + - :ref:`hadoop` + - :ref:`broadcom` + - :ref:`fmv` + - :ref:`hpc` + - :ref:`kubernetes-bp` + - :ref:`mirror-upstream-server` + - :ref:`nvidia-cuda` + - :ref:`php` + - :ref:`vmware-workstation` + - :ref:`wp-install` + + .. container:: column narrow + + .. rst-class:: colh3 + + Difficult + + - :ref:`kubernetes` + - :ref:`nvidia` + - :ref:`openfaas` + - :ref:`multi-boot` + - :ref:`machine-learning` + - :ref:`zfs` + + +.. toctree:: + :hidden: + :maxdepth: 1 + :glob: + + * + multi-boot/* + +Archive +******* + +Older tutorials that may still be relevant to some users. + +.. toctree:: + :maxdepth: 1 + :glob: + + archive/* diff --git a/_sources/tutorials/kata.rst.txt b/_sources/tutorials/kata.rst.txt new file mode 100644 index 000000000..e8102fa5a --- /dev/null +++ b/_sources/tutorials/kata.rst.txt @@ -0,0 +1,134 @@ + .. _kata: + +Kata Containers\* +################# + +This tutorial describes how to install, configure, and run `Kata Containers`_ +on |CL-ATTR|. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +Kata Containers is an open source project developing a lightweight +implementation of :abbr:`VMs (Virtual Machines)` that offer the speed of +containers and the security of VMs. + +Prerequisites +************* + +This tutorial assumes you have installed |CL| on your host system. +For detailed instructions on installing |CL| on a bare metal system, follow +the :ref:`bare metal installation tutorial`. + +If you have Clear Containers installed on your |CL| system, then follow the +:ref:`migrate Clear Containers to Kata Containers tutorial`. + +Update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +Install Kata Containers +*********************** + +Kata Containers is included in the :file:`containers-virt` bundle. +To install the framework: + +#. Install the containers-virt bundle: + + .. code-block:: bash + + sudo swupd bundle-add containers-virt + +#. Reload and restart the Docker\* systemd service. + + .. code-block:: bash + + sudo systemctl daemon-reload + sudo systemctl restart docker + +Run Kata Containers +******************* + +To use kata as the runtime for an individual container, add +:command:`--runtime=kata-runtime` to the :command:`docker run` command. For +example: + +.. code-block:: bash + + sudo docker run --runtime=kata-runtime -ti busybox sh + + +To use kata as the default runtime for all Docker containers: + +#. Set the default runtime for the Docker daemon: + + .. note:: + + The method below uses a systemd drop-in configuration to add a + command-line (CLI) parameter to the Docker daemon for setting the + *default-runtime*. Alternatively, the default runtime can be set in the + `Docker daemon configuration file + `_. + The Docker daemon will not start if the *default-runtime* configuration + in set multiple locations. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/system/docker.service.d/ + + cat <`_. + +For more background information see: + +* `What is Kubernetes?`_ +* `What is a Container Network Interface (CNI)?`_ + +* `What is a Container Runtime Interface (CRI)?`_ + + * `What is CRI+O?`_ + + * `What is containerd?`_ + + * `What is Docker?`_ + +* `What is Kata Containers\*?`_ + +Prerequisites +************* + +This tutorial assumes you have already installed |CL|. For detailed +instructions on installing |CL| on a bare metal system, follow the :ref:`bare +metal installation tutorial`. + +#. Review and make sure the `requirements for kubeadm + `_ + are satisfied for the host system. + +#. Before you continue, update your |CL| installation with the following + command: + + .. code-block:: bash + + sudo swupd update + + Learn about the benefits of having an up-to-date system for cloud + orchestration on the :ref:`swupd-guide` page. + +#. Kubernetes, a set of supported :abbr:`CRI (Container Runtime Interface)` + runtimes, :abbr:`CNI (Container Network Interface)` and `cloud-native-setup + scripts`_ are included in the `cloud-native-basic`_ bundle. Install the + cloud-native-basic bundle to get these components: + + .. code-block:: bash + + sudo swupd bundle-add cloud-native-basic + + +Set up Kubernetes automatically +******************************* + +|CL| provides `cloud-native-setup scripts`_ to automate system setup and +Kubernetes cluster initialization which allows you to get a cluster up and +running quickly. + +.. note:: + + By default, the scripts will update |CL| to the latest version, set up the + system as a Kubernetes master-node with **canal for container networking** + and **crio for container runtime**, and taint the master node to allow + workloads to run on it. Kata is installed as an optional alternative + runtime. The script can be configured to use other CNI's and CRI's by + following the directions on the `README + `_. + + See `What is a Container Network Interface (CNI)?`_ and `What is a + Container Runtime Interface (CRI)?`_ for more information. + +.. important:: + + If network proxy settings are required for Internet connectivity, configure + them now because the scripts will propagate proxy configuration based on + the running configuration. It is especially important to set the + :command:`no_proxy` variable appropriately for Kubernetes. + + The script will also modify the :file:`/etc/environment` and + :file:`/etc/profile.d/proxy.sh` files, if they exist, with the proxy + environment variables in the running shell when the script is executed. + + See the `Setting proxy servers for Kubernetes`_ section for details. + +#. Run the :file:`system-setup.sh` script to configure the |CL| system + settings. + + .. code-block:: bash + + sudo /usr/share/clr-k8s-examples/setup_system.sh + +#. Stop docker and containerd to avoid conflicting CRIs being detected. The + scripts use CRIO for the CRI. + + .. code-block:: bash + + sudo systemctl stop docker + sudo systemctl stop containerd + + +#. Install git as it's a dependency of the :file:`create_stack.sh`. + + .. code-block:: bash + + sudo swupd bundle-add git + + +#. Run the :file:`create_stack.sh` script to initialize the Kubernetes node + and setup a container network plugin. + + .. code-block:: bash + + sudo /usr/share/clr-k8s-examples/create_stack.sh minimal + +#. Follow the output on the screen and continue onto the section on `using + your cluster <#use-your-cluster>`_. + + +Uninstalling +============ + +#. If you need to delete the Kubernetes cluster or want to start from scratch + run the :file:`reset_stack.sh` script. + + .. warning:: + + This will stop components in the stack including Kubernetes, all CNI and + CRIs **and will delete** all containers and networks. + + .. code-block:: bash + + sudo /usr/share/clr-k8s-examples/reset_stack.sh + + +Set up Kubernetes manually +************************** + +Configure host system +===================== + +This tutorial uses the basic default Kubernetes configuration to get started. +You can customize your Kubernetes configuration according to your specific +deployment and security needs. + +The Kubernetes administration tool, :command:`kubeadm`, performs some +"`preflight checks`_" when initializing and starting a cluster. The steps +below are necessary to ensure those preflight checks pass successfully. + + +#. Enable IP forwarding: + + - Create the file :file:`/etc/sysctl.d/60-k8s.conf` to set the + :command:`net.ipv4.ip_forward` parameter + + .. code-block:: bash + + sudo mkdir -p /etc/sysctl.d/ + + sudo tee /etc/sysctl.d/99-kubernetes-cri.conf > /dev/null </dev/null + sudo swapoff -a + + .. note:: + + Kubernetes is designed to work without swap. Performance degradation of other workloads can occur + with swap disabled on systems with constrained memory resources. + +#. Add the the system's hostname to the :file:`/etc/hosts` file. Kubernetes + will read this file to locate the master host. + + .. code-block:: bash + + echo "127.0.0.1 localhost `hostname`" | sudo tee --append /etc/hosts + + +#. Enable the kubelet agent service to start at boot automatically: + + .. code-block:: bash + + sudo systemctl enable kubelet.service + + +.. important:: + + If network proxy settings are required for Internet connectivity, configure + them now because the scripts will propagate proxy configuration based on + the running configuration. It is especially important to set the + :command:`no_proxy` variable for Kubernetes. See the `Setting proxy servers + for Kubernetes`_ section for details. + + +Initialize the master node +************************** + +In Kubernetes, a master node is part of the `Kubernetes Control Plane +`_. + +Initializing a new Kubernetes cluster involves crafting a :command:`kubeadm +init` command. Adding parameters to this command can control the fundamental +operating components of the cluster. This means it is important to understand +and choose network and runtime options before running a :command:`kubeadm +init` command. + + +Choose a pod network add-on +=========================== + +See `What is a Container Network Interface (CNI)?`_ for information on what +pod network add-ons and CNIs. + +It is important to decide which CNI will be used early because some pod +network add-ons require configuration during cluster initialization. Check +whether or not your add-on requires special flags when you initialize the +master control plane. + +If your chosen network add-on requires appending to the :command:`kubeadm +init` command, make note of it before continuing. For example, if you choose +the *flannel* pod network add-on, then in later steps you must add the +following to the :command:`kubeadm init` command: + +.. code-block:: console + + --pod-network-cidr 10.244.0.0/16 + +.. important:: + + The version of CNI plugins installed needs to be compatible with the + version of Kubernetes that is installed otherwise the cluster may fail. + Check the Kubernetes version with :command:`kubeadm version -o short` and + refer to the documentation of the CNI plugins to obtain a compatible + version. + +Choose a container runtime +========================== + +See `What is a Container Runtime Interface (CRI)?`_ for more information on +what a CRI is. + +|CL| supports Kubernetes with the various runtimes +below with or without `Kata Containers`_: + +* `CRI+O`_ +* `containerd`_ +* `Docker`_ + +The container runtime that you choose will dictate the steps necessary to +initialize the master cluster with :command:`kubeadm init`. + +CRI+O +----- + +For information on CRI+O as a Kubernetes CRI, see `What is +CRI+O?`_. To use CRI+O as the Kubernetes CRI: + +#. Start the CRI-O service and enable it to run at boot automatically: + + .. code-block:: bash + + sudo systemctl enable --now crio.service + + When the crio service starts for the first time, it will create a + configuration file for crio at :file:`/etc/crio/crio.conf`. + +#. Run the kubeadm command to initialize the master node with the + :command:`--cri-socket` parameter: + + .. important:: + + You may need to add additional parameters to the command below, + depending the pod network addon in use. + + In this example, the :command:`--pod-network-cidr 10.244.0.0/16` + parameter is to use *flannel* as the pod networking. See `Choose a pod + network add-on`_ for more information. + + .. code-block:: bash + + sudo kubeadm init \ + --cri-socket=unix:///run/crio/crio.sock \ + --pod-network-cidr 10.244.0.0/16 + + +#. (Optional) By default, CRI+O will use runc as the default + runtime. CRI+O can optionally provide Kata Containers as a runtime. See + the `Add the Kata runtime to Kubernetes`_ section for details. + + With CRI+O, the `Kata Containers`_ can be set as the runtime with a + per-pod *RuntimeClass* annotation. + + .. note:: + + If you are using CRI-O + Kata Containers as the runtime and choose the + *flannel* for pod networking (see `Choose a pod network add-on`_), the + :file:`/etc/crio/crio.conf` file needs to include the value below. On + |CL| this is done automatically. + + .. code-block:: console + + [crio.runtime] + manage_network_ns_lifecycle = true + + +#. Once the cluster initialization is complete, continue reading about how to + `Use your cluster`_. + + +containerd +---------- + +For information on containerd as as Kubernetes CRI, see `What is +containerd?`_. To use containerd as the Kubernetes CRI: + +#. Start the containerd service and enable it to run at boot automatically: + + .. code-block:: bash + + sudo systemctl enable --now containerd.service + + +#. Configure kubelet to use containerd. and reload the service. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/system/kubelet.service.d/ + + cat << EOF | sudo tee /etc/systemd/system/kubelet.service.d/0-containerd.conf + [Service] + Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock" + EOF + +#. Configure kubelet to use systemd as the cgroup driver. and reload the + service. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/system/kubelet.service.d/ + + cat << EOF | sudo tee /etc/systemd/system/kubelet.service.d/10-cgroup-driver.conf + [Service] + Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=systemd" + EOF + +#. Reload the systemd manager configuration. + + .. code:: bash + + sudo systemctl daemon-reload + +#. Run the kubeadm command to initialize the master node with the + :command:`--cri-socket` parameter: + + .. important:: + + You may need to add additional parameters to the command below, + depending the pod network addon in use. + + In this example, the :command:`--pod-network-cidr 10.244.0.0/16` + parameter is to use *flannel* as the pod networking. See `Choose a pod + network add-on`_ for more information. + + .. code-block:: bash + + sudo kubeadm init \ + --cri-socket=/run/containerd/containerd.sock + --pod-network-cidr 10.244.0.0/16 + + +#. (Optional) By default, containerd will use runc as the default + runtime. containerd can optionally provide Kata Containers as a runtime. + See the `Add the Kata runtime to Kubernetes`_ section for details. + + With containerd, the `Kata Containers`_ can be set as the runtime with a + per-pod *RuntimeClass* annotation. + +#. Once the cluster initialization is complete, continue reading about how to + `Use your cluster`_. + + +Docker +------ + +For information on Docker, see `What is Docker?`_. To use Docker as the +Kubernetes container runtime: + +#. Make sure Docker is installed: + + .. code:: bash + + sudo swupd bundle-add containers-basic + +#. Start the Docker service and enable it to start automatically at boot: + + .. code:: + + sudo systemctl enable --now docker.service + +#. Configure kubelet to use the |CL| directory for cni-plugins and reload the + service. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/system/kubelet.service.d/ + + cat << EOF | sudo tee /etc/systemd/system/kubelet.service.d/0-cni.conf + [Service] + Environment="KUBELET_EXTRA_ARGS=--cni-bin-dir=/usr/libexec/cni" + EOF + + .. code:: bash + + sudo systemctl daemon-reload + + +#. Run the kubeadm command to initialize the master node: + + .. important:: + + You may need to add additional parameters to the command below, + depending the pod network addon in use. + + In this example, the :command:`--pod-network-cidr 10.244.0.0/16` + parameter is to use *flannel* as the pod networking. See `Choose a pod + network add-on`_ for more information. + + .. code:: bash + + sudo kubeadm init \ + --pod-network-cidr 10.244.0.0/16 + + +#. Once the cluster initialization is complete, continue reading about how to + `Use your cluster`_. + + + +Add the Kata runtime to Kubernetes +----------------------------------- + +For information on Kata as a container runtime, see `What is Kata Containers\*?`_. +Using Kata Containers is optional. + +You can use *kata-deploy* to install all the necessary parts of Kata +Containers after you have a Kubernetes cluster running with one of the CRI's +using the default runc runtime. Follow the steps in the Kubernetes quick start +section of the `kata-containers GitHub README +`_ +to install Kata. + + + +Use your cluster +**************** + +Once your master control plane is successfully initialized, follow the +instructions presented about how to use your cluster and its *IP*, *token*, +and *hash* values are displayed. It is important that you record this +information because it is required to join additional nodes to the cluster. + +A successful initialization looks like this: + +.. code-block:: console + + Your Kubernetes control-plane has initialized successfully! + + To start using your cluster, you need to run the following as a regular user: + + mkdir -p $HOME/.kube + sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config + sudo chown $(id -u):$(id -g) $HOME/.kube/config + + ... + + You can now join any number of machines by running the following on each node + as root: + + kubeadm join : --token --discovery-token-ca-cert-hash sha256: + + +With the first node of the cluster setup, you can continue expanding the +cluster with additional nodes and start deploying containerized applications. +For further information on using Kubernetes, see `Related topics`_. + +.. note:: + + By default, the master node does not run any pods for security reasons. To + setup a single-node cluster and allow the master node to also run pods, the + master node will need to be untained. See the Kubernetes documentation on + `control plane node isolation + `_. + + +Troubleshooting +*************** + +Package configuration customization +=================================== + +|CL| is a stateless system that looks for user-defined package configuration +files in the :file:`/etc/` directory to be used as default. If +user-defined files are not found, |CL| uses the distribution-provided +configuration files for each package. + +If you customize any of the default package configuration files, you **must** +store the customized files in the :file:`/etc/` directory. If you edit any of +the distribution-provided default files, your changes will be lost in the next +system update as the default files will be overwritten with the updated files. + +Learn more about :ref:`stateless` in |CL|. + + +Logs +==== + +* Check the kubelet service logs :command:`sudo journalctl -u kubelet` + + +Setting proxy servers for Kubernetes +==================================== + +If you receive any of the messages below, check outbound Internet access. You +may be behind a proxy server. + + * Images cannot be pulled. + * Connection refused error. + * Connection timed-out or Access Refused errors. + * The warnings when :command:`kubeadm init` is run. + + .. code-block:: console + + [WARNING HTTPProxy]: Connection to "https://" uses proxy "". If that is not intended, adjust your proxy settings + [WARNING HTTPProxyCIDR]: connection to "10.96.0.0/12" uses proxy "". This may lead to malfunctional cluster setup. Make sure that Pod and Services IP ranges specified correctly as exceptions in proxy configuration + [WARNING HTTPProxyCIDR]: connection to "10.244.0.0/16" uses proxy "". This may lead to malfunctional cluster setup. Make sure that Pod and Services IP ranges specified correctly as exceptions in proxy configuration + + +If you use an outbound proxy server, you must configure proxy settings +appropriately for all components in the stack including :command:`kubectl` and +container runtime services. + +Configure the :ref:`proxy settings `, using the standard *HTTP_PROXY*, +*HTTPS_PROXY*, and *NO_PROXY* environment variables. The *NO_PROXY* values are +especially important for Kubernetes to ensure private IP traffic does not try +to go out the proxy. + +#. Set your environment proxy variables. Ensure that your local IP address is + **explicitly included** in the environment variable *NO_PROXY*. Setting + *localhost* is not sufficient! + + .. code-block:: bash + + export http_proxy=http://proxy.example.com:80 + export https_proxy=http://proxy.example.com:443 + export no_proxy=.svc,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,`hostname`,localhost + + .. important:: + + :command:`kubeadm` commands specifically use these shell variables for proxy + configuration. Ensure they are set your running terminal before running + :command:`kubeadm` commands. + +#. Run the following command to add systemd drop-in configurations for each + service to include proxy settings: + + .. code-block:: bash + + services=(kubelet docker crio containerd) + for s in "${services[@]}"; do + sudo mkdir -p "/etc/systemd/system/${s}.service.d/" + cat << EOF | sudo tee "/etc/systemd/system/${s}.service.d/proxy.conf" + [Service] + Environment="HTTP_PROXY=${http_proxy}" + Environment="HTTPS_PROXY=${https_proxy}" + Environment="SOCKS_PROXY=${socks_proxy}" + Environment="NO_PROXY=${no_proxy}" + EOF + done + + +#. Reload the systemd manager configuration. + + .. code-block:: bash + + sudo systemctl daemon-reload + + +If you had a previously failed initialization due to a proxy issue, restart +the process with the :command:`kubeadm reset` command. + + +DNS issues +========== + +* not found in message. + + Your DNS server may not be appropriately configured. Try adding an entry + to the :file:`/etc/hosts` file with your host's IP and Name. + + Use the commands :command:`hostname` and :command:`hostname -I` to + retrieve them. + + For example: + + .. code:: bash + + 10.200.50.20 myhost + + +* coredns pods are stuck in container creating state and logs show entries + similar to one of the following: + + .. code:: console + + Warning FailedCreatePodSandBox 5m7s kubelet, kata3 Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get network JSON for pod sandbox k8s_coredns->-5gpj2_kube-system_): cannot convert version ["" "0.1.0" "0.2.0"] to 0.4.0 + + In this case the :file:`/etc/cni/net.d/10-flannel.conf` or another CNI file + is using an incompatible version. Delete the file and restart the stack. + + + .. code:: console + + Warning FailedCreatePodSandBox 117s (x197 over 45m) kubelet, kata3 (combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_coredns->-npsm5_kube-system_: error getting ClusterInformation: Get https://[10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/default: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes") + + In this case, there may be multiple CNI configuration files in the + :file:`/etc/cni/net.d` folder. Delete all the files in this directory and + restart the stack. + + .. code:: console + + Warning FailedScheduling 55s (x3 over 2m12s) default-scheduler 0/1 + nodes are available: 1 node(s) had taints that the pod didn't tolerate. + + In this case, there may be multiple CNI configuration files in the + :file:`/etc/cni/net.d` folder. Delete all the files in this directory, apply + a CNI plugin, and restart the stack. + +Reference +********* + +What is Kubernetes? +=================== + +Kubernetes (K8s) is an open source system for automating deployment, scaling, +and management of containerized applications. It groups containers that make +up an application into logical units for easy management and discovery. + +Kubernetes supports using a variety of `container runtimes +`_. + +What is a Container Network Interface (CNI)? +============================================ + +In Kubernetes, a `pod +`_ is a group of one +or more containers and is the smallest deployable unit of computing in a +Kubernetes cluster. Pods have shared storage/network internally but +communication between pods requires additional configuration. If you want your +pods to be able to communicate with each other you must choose and install a +`pod network add-on`_. + +Some pod network add-ons enable advanced functionality with physical networks +or cloud provider networks. + +What is a Container Runtime Interface (CRI)? +============================================ + +Container runtimes are the underlying fabric that pod workloads execute inside +of. Different container runtimes offer different balances between features, +performance, and security. + +Kubernetes allows integration various container runtimes via a container +runtime interface (CRI). + +What is CRI+O? +-------------- + +`CRI+O `_ is a lightweight alternative to using Docker as +the runtime for kubernetes. It allows Kubernetes to use any OCI-compliant +runtime as the container runtime for running pods, such as runc and +Kata Containers as the container runtimes. + +CRI+O allows setting a different runtime per-pod. + +What is containerd? +------------------- + +`containerd `_ is the runtime that the Docker engine +is built on top of. + +Kubernetes can use containerd directly instead of going through the Docker +engine for increased robustness and performance. See the `blog post on +kubernetes containerd integration +`_ +for more details. + +containerd allows setting a different runtime per-pod. + +What is Docker? +--------------- + +`Docker `_ is an engine for running software packaged +as functionally complete units, called containers, using the same operating +system kernel. + +The default built-in runtime provided by Kubernetes is using the system Docker +installation via Dockershim and as a result is one of the simplest to use. One +limitation of using Dockershim is that all pods on the Kubernetes node will +inherit and use the default runtime that Docker is set to use. To be able to +specify a container runtime per-Kerbernetes service, use CRI+O or containerd. + +What is Kata Containers\*? +========================== + +`Kata Containers`_ is an alternative OCI compatible runtime that secures +container workloads in a lightweight virtual machine. It provides stronger +workloads isolation using hardware virtualization technology as a second layer +of defense for untrusted workloads or multi-tenant scenarios. + +The Kata Containers (kata-runtime) adheres to :abbr:`OCI (Open Container +Initiative*)` guidelines and works seamlessly with Kubernetes through Docker, +containerd, or CRI+O. + + +Related topics +============== + +* `Understanding basic Kubernetes architecture`_ + +* Installing a `pod network add-on`_ + +* `Joining your nodes`_ + +* `Deploying an application to your cluster`_ + +* See our document on :ref:`Kubernetes best practices ` + + + +.. _Kubernetes container orchestration system: https://kubernetes.io/ + +.. _Kata Containers: https://katacontainers.io/ + +.. _cloud-native-basic: https://github.com/clearlinux/clr-bundles/blob/master/bundles/cloud-native-basic + +.. _preflight checks: https://kubernetes.io/docs/reference/setup-tools/kubeadm/implementation-details/#preflight-checks + +.. _Understanding basic Kubernetes architecture: https://kubernetes.io/docs/user-journeys/users/application-developer/foundational/#section-3 + +.. _Deploying an application to your cluster: https://kubernetes.io/docs/user-journeys/users/application-developer/foundational/#section-2 + +.. _pod network add-on: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network + +.. _Joining your nodes: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#join-nodes + +.. _cloud-native-setup scripts: https://github.com/clearlinux/cloud-native-setup/tree/master/clr-k8s-examples + +.. _control-plane node: https://kubernetes.io/docs/concepts/#kubernetes-control-plane + +.. _RuntimeClass handler: https://kubernetes.io/docs/concepts/containers/runtime-class/ diff --git a/_sources/tutorials/lamp-server.rst.txt b/_sources/tutorials/lamp-server.rst.txt new file mode 100644 index 000000000..b83c65dc1 --- /dev/null +++ b/_sources/tutorials/lamp-server.rst.txt @@ -0,0 +1,517 @@ +.. _lamp-server-install: + +LAMP Web Server +############### + +This tutorial provides instructions on how to set up a +:abbr:`LAMP (Linux\*, Apache\*, MySQL\*, PHP)` web server on |CL-ATTR| and how +to use phpMyAdmin\* to manage an associated database. Note that this +tutorial installs MariaDB\*, which is a drop-in replacement for MySQL\*. + +In order to create a web server using |CL| as the host OS, your host system +must be running |CL|. This tutorial assumes you have installed |CL| on your +host system. For detailed instructions on installing |CL| on a bare metal +system, visit :ref:`bare-metal-install-desktop`. + +This tutorial covers: + +.. contents:: :local: + :depth: 1 + +Install Apache +************** + +Apache is an open source HTTP web server application that can run on several +operating systems, including |CL|. Go to the `Apache HTTP Server Project`_ +for more information. + +Install the httpd bundle +======================== + +The **httpd** bundle contains the packages needed to install the +Apache software bundle on |CL|. + +.. note:: + + Before you install new packages, update the |CL| with the following + console command: + + .. code-block:: bash + + sudo swupd update + +#. To install the bundle, enter the following command: + + .. code-block:: bash + + sudo swupd bundle-add httpd + +#. Start the Apache service and set it start automatically on boot, + enter the following commands: + + .. code-block:: bash + + sudo systemctl enable --now httpd.service + +#. To verify that the Apache server application is running, open a web + browser and navigate to: \http://localhost. + + If the service is running, a confirmation message will appear, similar to the + message shown in figure 1. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/web-server-install-1.png + :alt: This web server is operational from host. + :scale: 50% + + `Figure 1: Confirmation that the Apache service is running.` + + .. note:: + + The :file:`index.html` file is located in the :file:`/var/www/html` directory + of your host system. You will copy this file into a new location after you + modify the configuration in the next step. + +Change the default configuration and data directory +*************************************************** + +|CL| is designed to be a :ref:`stateless` operating system which means that you +must create an optional configuration file to override the default values. +The default location of the Apache configuration file, :file:`httpd.conf`, +is located in the :file:`/usr/share/defaults/httpd` directory. |CL| can +override this directory as part of the stateless paradigm. This default +:file:`.conf` file includes the following directives that allow for additional +locations of configuration definitions: + +.. code-block:: console + + # Virtual hosts + IncludeOptional /usr/share/defaults/httpd/conf.d/*.conf + IncludeOptional /usr/share/defaults/httpd/conf.modules.d/*.conf + IncludeOptional /etc/httpd/conf.d/*.conf + IncludeOptional /etc/httpd/conf.modules.d/*.conf + +In this section you will define your own httpd.conf file to override the +default values, and define a custom DocumentRoot for your web server. + +#. Create the directory structure for :file:`/etc/httpd/conf.d`. + + .. code-block:: bash + + sudo mkdir -p /etc/httpd/conf.d + +#. Create and open the :file:`httpd.conf` file in your new :file:`/etc/httpd/conf.d` + directory. + + .. code-block:: bash + + sudo nano /etc/httpd/conf.d/httpd.conf + +#. Add the ``DocumentRoot`` variable to :file:`httpd.conf`. Copy the content + listed below into the new :file:`/etc/httpd/conf.d/httpd.conf` file. + + .. code-block:: console + + # + # Set a new location for DocumentRoot + # + DocumentRoot "/var/www/tutorial" + + # + # Relax access to content within /var/www/tutorial for this example + # + + AllowOverride none + Require all granted + + +#. Create a new ``DocumentRoot`` directory structure and copy the + :file:`index.html` file from :file:`/var/www/html` directory to + :file:`/var/www/tutorial`. + + .. code-block:: bash + + sudo mkdir –p /var/www/tutorial + cd /var/www/tutorial + sudo cp /var/www/html/index.html . + +#. To ensure a successful setup, edit the new :file:`index.html` file with an + obvious change. + + .. code-block:: bash + + sudo nano index.html + + For example, we changed the default message + + "It works!" + + to + + "It works from its new location!" + +#. Restart ``httpd.service``. + + .. code-block:: bash + + sudo systemctl restart httpd.service + +#. Go to \http://localhost to view the new screen. You should see your updated + default message from step 5. + +#. Change the configuration back to the default :file:`/var/www/html` + location. To do this, edit the :file:`/etc/httpd/conf.d/httpd.conf` file + again and replace any instance of /var/www/tutorial with /var/www/html. + + .. code-block:: bash + + sudo nano /etc/httpd/conf.d/httpd.conf + +#. Restart ``httpd.service``. + + .. code-block:: bash + + sudo systemctl restart httpd.service + +#. Go to \http://localhost and verify that you can see the default screen + again. + +#. Optionally, remove the /var/www/tutorial directory you previously created. + + .. code-block:: bash + + sudo rm /var/www/tutorial/index.html + sudo rmdir /var/www/tutorial + +Install PHP +*********** + +An Apache installation allows you to display static web pages. Enabling PHP +allows you to generate and display dynamic web pages. To add this +functionality to your web server, install PHP on your system. + +#. To get the php components, enter the following command: + + .. code-block:: bash + + sudo swupd bundle-add php-basic + +#. To enable PHP and set it to start automatically on boot, enter the + following commands: + + .. code-block:: bash + + sudo systemctl enable --now php-fpm.service + sudo systemctl restart httpd.service + + After restarting the Apache service, test your PHP installation. + +#. Create and open a file named :file:`phpinfo.php` in the :file:`/var/www/html/` + directory using a text editor. + + .. code-block:: bash + + sudo nano /var/www/html/phpinfo.php + +#. Add the following line to the file: + + .. code-block:: php + + + +#. Go to \http://localhost/phpinfo.php. + +#. Verify that the PHP information screen appears, similar to figure 2: + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/web-server-install-2.png + :alt: PHP information screen + :width: 600 + + `Figure 2: The PHP information screen.` + +If the PHP information screen is displayed, you have successfully installed +the PHP components and are now ready to add your database application to +complete your LAMP server implementation. + +Install MariaDB +*************** + +Install MariaDB to store content. MariaDB is a drop-in replacement for MySQL +and is available in the database-basic |CL| bundle. + +#. To install the database-basic bundle, enter the following command: + + .. code-block:: bash + + sudo swupd bundle-add mariadb + +#. To start MariaDB after it is installed and set it to start automatically on + boot, enter the following commands: + + .. code-block:: bash + + sudo systemctl enable --now mariadb + +#. To check the status of MariaDB, enter the following command: + + .. code-block:: bash + + sudo systemctl status mariadb + + Press :kbd:`Ctrl` + :kbd:`c` or :kbd:`q` to exit. + +Security hardening +================== + +With the MariaDB service running, we can perform some basic security +hardening. + +#. To add a basic layer of security, enter the following command: + + .. code-block:: bash + + sudo mysql_secure_installation + +#. Respond to the questions that appear in the script below. + + .. note:: + + Our suggested responses follow each question. + + .. code-block:: none + + Enter current password for root (enter for none): + + In order to secure MariaDB, we need the current password for the root + user. For a newly installed MariaDB without a set root password, the + password is blank. Thus, press enter to continue. + + .. code-block:: none + + OK, successfully used password, moving on... + + Set root password? [Y/n] + + .. _set-password: + + Set the root password to prevent unauthorized MariaDB root user logins. + To set a root password, type 'y'. + + .. code-block:: none + + New password: + + Type the desired password for the root user. + + .. code-block:: none + + Re-enter new password: + + Re-type the desired password for the root user. + + .. code-block:: none + + Password updated successfully! + Reloading privilege tables.. + ... Success! + + Remove anonymous users? [Y/n] + + By default, a MariaDB installation includes an anonymous user that allows + anyone to log in to MariaDB without a user account. This anonymous user + is intended only for testing and for a smoother installation. To remove + the anonymous user and make your database more secure, type 'y'. + + .. code-block:: none + + ... Success! + Disallow root login remotely? [Y/n] + + Normally, root should only be allowed to connect from the 'localhost'. This + ensures that someone cannot guess the root password from the network. To + block any remote root login, type 'y'. + + .. code-block:: none + + ... Success! + Remove test database and access to it? [Y/n] + + By default, MariaDB includes a database named 'test' which anyone can access. + This database is also intended only for testing and should be removed. To + remove the test database, type 'y'. + + .. code-block:: none + + - Dropping test database... + ... Success! + - Removing privileges on test database... + ... Success! + Reload privilege tables now? [Y/n] + + Reloading the privilege tables ensures all changes made so far take + effect immediately. To reload the privilege tables, type 'y'. + + .. code-block:: none + + ... Success! + + Cleaning up... + + All done! If you've completed all of the above steps, your MariaDB + installation should now be secure. + + Thanks for using MariaDB! + +The MariaDB installation is complete, and we can now install phpMyAdmin to +manage the databases. + +Install phpMyAdmin +****************** + +The web-based tool phpMyAdmin is a straightforward way to manage MySQL or +MariaDB databases. Visit the `phpMyAdmin`_ website for the complete +discussion regarding phpMyAdmin, its documentation, the latest downloads, +and other useful information. + +In this tutorial, we use the latest English version of phpMyAdmin. + +#. Download the :file:`phpMyAdmin--english.tar.gz` file to your + :file:`~/Downloads` directory. Here, refers to the current + version available at https://www.phpmyadmin.net/downloads. + + .. note:: + + This example downloads and uses version 4.6.4. + +#. Once the file has been successfully downloaded and verified, decompress + the file and directories into the Apache web server document root + directory. Use the following commands: + + .. code-block:: bash + + cd /var/www/html + sudo tar –xzvf ~/Downloads/phpMyAdmin-4.6.4-english.tar.gz + +#. To keep things simple, rename the newly created + :file:`phpMyAdmin-4.6.4-english` directory to :file:`phpMyAdmin` with the + following command: + + .. code-block:: bash + + sudo mv phpMyAdmin-4.6.4-english phpMyAdmin + +Use phpMyAdmin to manage a database +*********************************** + +You can use the phpMyAdmin web-based tool to manage your databases. Follow the +steps below for setting up a database called "WordPress". + +#. Verify that a successful installation of all LAMP server components by + going to \http://localhost/phpMyAdmin. See figure 3. + +#. Log in with your root userid and the password you set up when you ran the + :ref:`mysql_secure_installation command `. Enter your + credentials and select :guilabel:`Go` to log in: + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/web-server-install-3.png + :alt: phpMyAdmin login page + :width: 600 + + `Figure 3: The phpMyAdmin login page.` + +#. Verify a successful login by confirming that the main phpMyAdmin page + displays, as shown in figure 4: + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/web-server-install-4.png + :alt: phpMyAdmin dashboard + :width: 600 + + `Figure 4: The phpMyAdmin dashboard.` + +#. Set up a database by selecting the :guilabel:`Databases` tab, as shown in + figure 5. + +#. Enter `WordPress` in the text field below the :guilabel:`Create database` + label. + +#. Select the :guilabel:`utf8_unicode_ci` option from the + :guilabel:`Collation` drop-down menu beside the text field. + +#. Click :guilabel:`Create`. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/web-server-install-5.png + :alt: Databases tab + :width: 600 + + `Figure 5: The Databases tab.` + +#. Set up user permissions by selecting the :guilabel:`WordPress` database + located in the left panel. See figure 6. + +#. Select the :guilabel:`Privileges` tab. Figure 6 shows its contents. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/web-server-install-6.png + :alt: Privileges tab + :width: 600 + + `Figure 6: The Privileges tab.` + +#. Click :guilabel:`Add user account` located at the bottom of the + :guilabel:`Privileges` tab. The `Add user account` page appears, as shown + in figure 7. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/web-server-install-7.png + :alt: User accounts tab + :width: 600 + + `Figure 7: The User accounts tab.` + +#. Enter the following information in the corresponding fields that appear + in figure 7 above: + + * User name: wordpressuser + + * Password: wp-example + + * Re-type: wp-example + +#. In the `Database for user account` section, select + :guilabel:`Grant all privileges on database “WordPress”.` + +#. At the bottom of the page, click :guilabel:`Go`. + +If successful, you should see the screen shown in figure 8: + +.. rst-class:: dropshadow + +.. figure:: ../_figures/wordpress/web-server-install-8.png + :alt: User added successfully + :width: 600 + + `Figure 8: The user wordpressuser is successfully added.` + +**Congratulations!** + +You have now created a fully functional LAMP server along with a +WordPress\*-ready database using |CL|. + +Next steps +********** + +Next, add the WordPress components needed to host a WordPress website with :ref:`wp-install`. + +.. _Apache HTTP Server Project: https://httpd.apache.org/ +.. _phpMyAdmin: https://www.phpmyadmin.net/ diff --git a/_sources/tutorials/mirror-upstream-server.rst.txt b/_sources/tutorials/mirror-upstream-server.rst.txt new file mode 100644 index 000000000..126183f42 --- /dev/null +++ b/_sources/tutorials/mirror-upstream-server.rst.txt @@ -0,0 +1,244 @@ +.. _mirror-upstream-server: + +Mirror Upstream |CL| Update Server +################################## + +For organizations that want to use the |CL| upstream updates, but want the +benefits of a local mirror, this tutorial shows how to set up one and +configure your |CL| clients to use it. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* The recommended disk space for the mirror server should have at least 100GB + of disk space as each complete update content is approximately 45GB. + +Install up |CL| server to host updates +************************************** + +#. Follow the :ref:`bare-metal-install-server` guide to install |CL| server. + Add a user with `Administrator` privilege. + +#. After installation is complete, boot it up. + +#. Add the `wget` bundle. This will be used to clone the upstream |CL| server. + + .. code-block:: bash + + sudo swupd bundle-add wget + +Clone the |CL| update content +***************************** + +|CL| periodically releases a "minversion", which is a complete update. +Then, subsequent releases are small updates until the next minversion. + +Download a minversion to start your mirror. + +#. Determine a proper minversion by looking at a `Manifest.MoM`_ file + for a particular release of |CL|. + + For example, if you look at + https://cdn.download.clearlinux.org/update/33010/Manifest.MoM, + you will see that the minversion is 32900. So clone this version as the + starting point. + + .. code-block:: console + :emphasize-lines: 4 + + MANIFEST 30 + version: 33010 + previous: 33000 + minversion: 32900 + filecount: 1131 + timestamp: 1588358889 + contentsize: 0 + +#. Make a directory to store the cache. + + .. code-block:: bash + + mkdir ~/mirror-download-clearlinux-org && cd $_ + +#. Recursively download the :file:`update/0` folder. + + .. code-block:: bash + + wget --no-verbose \ + --no-parent --recursive \ + --no-host-directories -erobots=off \ + --reject "index.html" https://cdn.download.clearlinux.org/update/0/ + +#. Recursively download the :file:`update/version` folder. + + .. code-block:: bash + + wget --no-verbose \ + --no-parent --recursive \ + --no-host-directories -erobots=off \ + --reject "index.html" https://cdn.download.clearlinux.org/update/version/ + +#. Now, recursively download the determined minversion, which for this example + is 32900. + + .. code-block:: bash + + wget --no-verbose \ + --no-parent --recursive \ + --no-host-directories -erobots=off \ + --reject "index.html" https://cdn.download.clearlinux.org/update/32900/ + + .. note:: + + A minversion is pretty big, which is approximately 45GB. Depending on your + proximity to the upstream server and your connection speed to the Internet, + it may take up to a couple of days or more to complete the download. So + be patient. + +#. Download later versions, up to the latest, if you like. + +Setup a web server to host the mirrored content +*********************************************** + +By design, the |CL| swupd client communicates with the update server using +HTTPS for security reasons. However, it can use HTTP by adding the +:command:`--allow-insecure-http` flag, if needed. Setting an HTTPS is a lot +more involved. For this tutorial, we'll just use an HTTP server for +demonstration purpose. + +#. Install the `nginx` bundle. + + .. code-block:: bash + + sudo swupd bundle-add nginx + +#. Configure the web server. + + a. Create a symbolic link to the mirrored update content directory. + + .. code-block:: bash + + sudo mkdir -p /var/www && cd $_ + sudo ln -sf $HOME/mirror-download-clearlinux-org mirror-download-clearlinux-org + + #. Set up nginx configuration files. + + .. code-block:: bash + + sudo mkdir -p /etc/nginx/conf.d + sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf + + #. Grant $USER permission to run the web server. + + .. code-block:: bash + + sudo tee -a /etc/nginx/nginx.conf << EOF + user $USER; + EOF + + #. Configure the web server. + + .. code-block:: bash + + sudo tee -a /etc/nginx/conf.d/mirror-download-clearlinux-org.conf << EOF + server { + listen 80; + listen [::]:80; + server_name localhost; + location / { + root /var/www/mirror-download-clearlinux-org; + autoindex on; + } + } + EOF + + #. Set nginx to start automatically on boot and then start it. + + .. code-block:: bash + + sudo systemctl enable nginx --now + +Test your mirror +**************** + +Now, try out your mirror by installing |CL| and adding bundles from it. + +#. Download either the live desktop or live server installer ISO of the + `same version` as the mirrored version, which is 32900 for this tutorial. + Go to `https://cdn.download.clearlinux.org/releases//clear`. + +#. Burn the ISO to a thumb drive. See :ref:`bootable-usb`. + +#. Boot it up and start the installer. Depending on which version of + |CL| you want to install, follow one of these guides: + + * *Desktop* version: :ref:`bare-metal-install-desktop` + * *Server* version: :ref:`bare-metal-install-server` + + In the :guilabel:`Advanced options` tab of the installer, select + :guilabel:`Swupd Mirror`. See Figure 1. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/mirror-upstream-server/mirror-upstream-server-01.png + :scale: 100% + :alt: Advanced options > Swupd Mirror + + `Figure 1: Advanced options > Swupd Mirror` + + In the :guilabel:`Mirror URL` field, set it to the IP address of your mirror. It should be something like this: http:///update. + And check the option :guilabel:`Allow installation over insecure connections (http://)`. See Figure 2. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/mirror-upstream-server/mirror-upstream-server-02.png + :scale: 100% + :alt: Advanced options > Mirror URL setting + + `Figure 2: Advanced options > Mirror URL setting` + +#. After installation completes, boot up, and log in. + +#. Verify that the swupd client is pointing to your mirror. + + .. code-block:: bash + + sudo swupd info + + Example output: + + .. code-block:: console + + Warning: This is an insecure connection + The --allow-insecure-http flag was used, be aware that this poses a threat the system + + Distribution: Clear Linux OS + Installed version: 32900 + Version URL: https://192.168.1.100/update + Content URL: https://192.168.1.100/update + +#. Try listing available bundles on your mirror. + + .. code-block:: bash + + sudo swupd bundle-list -a + +#. Add a bundle. + + .. code-block:: bash + + sudo swupd bundle-add + +Keep your mirror in sync with upstream +************************************** + +Be sure to keep your mirror in sync with upstream so that your clients have the +latest and greatest software and security updates. You can do that continuing +to clone the newer upstream releases. + +.. _Manifest.MoM: + https://docs.01.org/clearlinux/latest/reference/manpages/swupd.1.html diff --git a/_sources/tutorials/multi-boot/dual-boot-linux.rst.txt b/_sources/tutorials/multi-boot/dual-boot-linux.rst.txt new file mode 100644 index 000000000..293c071d7 --- /dev/null +++ b/_sources/tutorials/multi-boot/dual-boot-linux.rst.txt @@ -0,0 +1,422 @@ +.. _dual-boot-linux: + +Dual-boot |CL-ATTR| with Any GRUB-based Linux\* Distro +########################################################## + +In this tutorial, we show how to install |CL| alongside any GRUB-based +Linux\* distro. To do so, we resize the existing Linux root partition to +make room to install |CL|. Then we show 3 methods to dual-boot |CL| +with an existing Linux distro. + +Although we use Ubuntu\* 19.04 Desktop as the example here, +these instructions also work for other distros such as Mint\*, Kubuntu\*, +Fedora\*, CentOS\*, among others. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* Ubuntu 19.04 Desktop is already installed. +* There is no unallocated space available, but there is free space + on the Ubuntu root partition. +* Follow the Preliminary steps that follow below. + +.. include:: ../../get-started/bare-metal-install-desktop.rst + :start-after: preliminary-steps-install-desktop: + :end-before: install-on-target-start: + +Install |CL| with Advanced Installation +*************************************** + +#. Shut down the Ubuntu OS before proceeding. + +#. Boot up the |CL| live desktop image, and click the penguin + icon, at left, to launch the installer. + +#. Complete the :guilabel:`Required Options` until you reach + :guilabel:`Select Installation Media`. See Figure 1. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-01.png + :scale: 100% + :alt: Required options + + Figure 1: Required options + +#. Click :guilabel:`Select Installation Media`. + +#. Select the “Advanced Installation” option. See Figure 2. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-02.png + :scale: 100% + :alt: Advanced Installation + + Figure 2: Advanced Installation + +#. Click :guilabel:`Partition Media` to start the GParted tool. + +#. Shrink the Ubuntu root partition to free up some space for |CL|. + + a. Select the Ubuntu root partition (in this example: /dev/sda2). + Right-click it and select “Resize/Move”. See Figure 3. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-03.png + :scale: 100% + :alt: Ubuntu root partition + + Figure 3: Ubuntu root partition + + #. In the :guilabel:`New size (MiB)` field, reduce the size of the root + partition, leaving at least 22GB free. This allows enough space to + create a swap partition (250MB) and root partition (approx. 21GB) for + |CL|. + + .. note:: + + The resulting free space appears in the “Free space following + (MiB)”. Click the “Resize/Move” button. See Figure 4. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-04.png + :scale: 100% + :alt: Resize Ubuntu root + + Figure 4: Resize Ubuntu root + + #. Click the green checkmark button to proceed. See Figure 5. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-05.png + :scale: 100% + :alt: New unallocated space + + Figure 5: New unallocated space + +#. Share the existing EFI system partition by designating as such. + + a. Right-click the :guilabel:`EFI System Partition` (e.g., /dev/sda1) + and select :guilabel:`Name Partition`. + + #. Set the name to “CLR_BOOT”. See Figure 6 and Figure 7. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-06.png + :scale: 100% + :alt: Name CLR_BOOT partition + + Figure 6: Name CLR_BOOT partition + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-07.png + :scale: 100% + :alt: Resulting CLR_BOOT main screen + + Figure 7: Resulting CLR_BOOT main screen + +#. Create a swap partition for |CL|. + + a. Right-click the “unallocated” partition and select :guilabel:`New` + to add a new partition. + + #. Enter “250” in the :guilabel:`New Size (MiB)` field to create a + 250MB swap space. + + #. Enter “CLR_SWAP” in the :guilabel:`Partition name` field and select + “linux-swap” as the “File system” type. + + #. Click the “Add” button. See Figure 8. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-08.png + :scale: 100% + :alt: Create CLR_SWAP partition + + Figure 8: Create CLR_SWAP partition + +#. Create |CL| root partition. + + a. Right-click “unallocated” partition again and select :guilabel:`New` + to add a new partition. + + #. Create a partition that is at least 21GB, enter “CLR_ROOT” in the + :guilabel:`Partition name` field, and select a :guilabel:`File system` + type of your choice. + + #. Click the “Add” button. See Figure 9. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-09.png + :scale: 100% + :alt: Create CLR_ROOT partition + + Figure 9: Create CLR_ROOT partition + +#. Click the green checkmark button to create the newly-defined partitions. + See Figure 10. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-10.png + :scale: 100% + :alt: Partitions to be created + + Figure 10: Partitions to be created + +#. Close the GParted window, and the |CL| installer will reappear with + the newly-defined partitions to use. See Figure 11. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-11.png + :scale: 100% + :alt: |CL| installer partitions defined + + Figure 11: |CL| installer partitions defined + +#. Complete the remaining steps of :guilabel:`Required Options` to + to install |CL|. Complete any :guilabel:`Advanced Options` as desired. + +Boot |CL| Using One of Three Methods +************************************ + +Although we installed |CL| last, Ubuntu is still the default boot OS. +There are three methods to boot |CL|: + +#. Make systemd-boot, the boot loader that |CL| uses, the default + boot loader to boot |CL| and also chain-boot GRUB; therefore, boot + Ubuntu. See `boot-clr-method-1`_. + +#. Use GRUB to chain-boot systemd-boot, therefore boot |CL|. + See `boot-clr-method-2`_. + +#. Use your BIOS “Boot Menu” to select and boot |CL|. + Refer to your system's manual on how to bring up the "Boot Menu". + +.. _boot-clr-method-1: + +Method 1: Use systemd-boot to Boot |CL| and also Chain-boot GRUB +================================================================ + +systemd-boot is the bootloader used by |CL|. Because |CL| was installed +after a GRUB-based distro, GRUB is still the default bootloader. +In this method, we make systemd-boot the default bootloader instead and +also provide a path to chain-boot GRUB. + +#. Boot up the |CL| installer image. + +#. Open a terminal window. + +#. Identify the EFI system partition, Ubuntu root partition, and |CL| root + partition. + + .. code-block:: bash + + sudo fdisk -l + + Example output: + + .. code-block:: console + + clrlinux@clr-live~ $ sudo fdisk -l + ... + + Disk /dev/sda: 335.4 GiB, 360080695296 bytes, 703282608 sectors + Disk model: INTEL SSDSCKKF36 + Units: sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 1048576 bytes + Disklabel type: gpt + Disk identifier: D5CB69E9-2C27-4A16-9552-3CD6BFA5DA77 + + Device Start End Sectors Size Type + /dev/sda1 2048 1050623 1048576 512M EFI System + /dev/sda2 1050624 498481151 497430528 237.2G Linux filesystem + /dev/sda3 498481152 498993151 512000 250M Linux swap + /dev/sda4 498993152 703281151 204288000 97.4G Linux root (x86-64) + ... + + The above example output contains these partitions: + + * ``/dev/sda1`` is the EFI system partition originally created by Ubuntu + and shared with |CL| + * ``/dev/sda2`` is the Ubuntu root partition + * ``/dev/sda3`` is the swap partition for |CL| + * ``/dev/sda4`` is the |CL| root partition + + The remaining steps will work with these partitions. + +#. Mount these partitions. + + .. code-block:: bash + + sudo mkdir /mnt/clearlinux + sudo mount /dev/sda4 /mnt/clearlinux/ + sudo mount /dev/sda1 /mnt/clearlinux/boot + +#. Make systemd-boot the default bootloader. + + .. code-block:: bash + + sudo bootctl install --esp-path=/mnt/clearlinux/boot + +#. Add a timeout to systemd-boot so that it will present the menu of + bootable OSes and give you time to select the one you want to boot. + + .. code-block:: bash + + sudo clr-boot-manager set-timeout 20 --path=/mnt/clearlinux + +#. Add a system-boot boot entry for GRUB. + + .. code-block:: bash + + sudo tee -a /mnt/clearlinux/boot/loader/entries/grub.conf << EOF + title GRUB menu + efi /EFI/ubuntu/grubx64.efi + EOF + +#. Umount all partitions. + + .. code-block:: bash + + sudo umount /mnt/clearlinux/boot /mnt/clearlinux + +#. Reboot. + + .. code-block:: bash + + sudo reboot + +#. Remove the |CL| installer USB thumb drive. + +#. You should be presented with the :command:`systemd-boot` menu. + See Figure 12. + + .. figure:: ../../_figures/multi-boot/dual-boot-linux-12.png + :scale: 100% + :alt: systemd-boot menu showing GRUB + + Figure 12: systemd-boot menu showing GRUB + +.. _boot-clr-method-2: + +Method 2: Use GRUB to Boot |CL| +=============================== + +In this method, we keep GRUB as the default bootloader, but configure it +to chain-boot systemd-boot, thus allowing us to boot |CL|. Again, we're using +Ubuntu as our working example. + +#. Boot up Ubuntu. + +#. Open a terminal window. + +#. Set a timeout value for the GRUB menu so it will be visible at boot time and + allow you select one which OS to boot. + + a. sudoedit :file:`/etc/default/grub` + + .. code-block:: bash + + sudoedit /etc/default/grub + + #. Set the ``GRUB_TIMEOUT`` variable to a desired value. + +#. Create a menu entry for systemd-boot bootloader. + + a. Identify the UUID for EFI system partition that systemd-boot resides on. + The example below shows the UUID for the EFI system on /dev/sda1 is + "A5A0-337D". + + .. code-block:: bash + + sudo blkid + + Example output: + + .. code-block:: console + :emphasize-lines: 1 + + /dev/sda1: UUID="A5A0-337D" TYPE="vfat" PARTLABEL="CLR_BOOT" PARTUUID="ee664fec-1ade-40d0-9ce4-c08805003c8d" + /dev/sda2: UUID="219969c5-1106-4e9f-b6f5-8188d7d94b8b" TYPE="ext4" PARTUUID="00bdf0dc-264d-493c-bf23-a85105011175" + /dev/sda3: UUID="65221b07-33cb-40b7-9812-ea484c7606c9" TYPE="swap" PARTLABEL="CLR_SWAP" PARTUUID="5a7926b4-bd11-4bad-b932-cc31c0a75d27" + /dev/sda4: UUID="0bedd545-58a7-4f34-b22a-c50bb4a1c2f5" TYPE="ext4" PARTLABEL="CLR_ROOT" PARTUUID="2d60cd03-5739-4cd5-adcc-51a107cde388" + + #. sudoedit :file:`/etc/grub.d/40_custom` and add a menu entry + for |CL| using UUID from the previous step (for example): + + .. code-block:: console + :linenos: + :emphasize-lines: 7-10 + + #!/bin/sh + exec tail -n +3 $0 + # This file provides an easy way to add custom menu entries. Simply type the + # menu entries you want to add after this comment. Be careful not to change + # the 'exec tail' line above. + + menuentry 'Clear Linux OS' { + search --fs-uuid --no-floppy --set=root A5A0-337D + chainloader (${root})/EFI/org.clearlinux/bootloaderx64.efi + } + + #. Update GRUB. + + .. code-block:: bash + + sudo update-grub + +#. Reboot. + +#. At the GRUB boot menu, select :guilabel:`Clear Linux OS` to boot |CL|. + +#. Log in. + +#. Open a terminal window. + +#. By default, any future calls to :command:`clr-boot-manager`, such as + after a kernel update by :command:`swupd` or setting the timeout + value for systemd-boot, will modify the UEFI boot order + which will result in making systemd-boot the first boot + entry and you won't be able to boot Ubuntu any longer. And in order + to boot Ubuntu first, you must change the UEFI boot order back. + To prevent :command:`clr-boot-manager` from touching the UEFI boot + order, which is especially important in a dual-boot setup, + follow these steps: + + .. code-block:: bash + + sudo mkdir -p /etc/kernel + sudo tee -a /etc/kernel/update_efi_vars << EOF + false + EOF + +.. tip:: + + The default installation of |CL| does not set a timeout value for + systemd-boot. Thus, you will not see the systemd-boot menu and the + default kernel will boot right away. + To set a timeout value (for example: 25 seconds), enter: + + .. code-block:: bash + + sudo clr-boot-manager set-timeout 25 + +.. _download the live desktop image: https://clearlinux.org/downloads + +.. _Downloads: https://clearlinux.org/downloads + diff --git a/_sources/tutorials/multi-boot/dual-boot-win.rst.txt b/_sources/tutorials/multi-boot/dual-boot-win.rst.txt new file mode 100644 index 000000000..9ab75e587 --- /dev/null +++ b/_sources/tutorials/multi-boot/dual-boot-win.rst.txt @@ -0,0 +1,397 @@ +.. _dual-boot-win: + +Dual-boot |CL-ATTR| and Windows\* 10 OS +######################################## + +This guide shows how to install |CL-ATTR| adjacent to an existing Windows\* +10 :abbr:`OS (operating system)`. To add |CL| to an existing Windows installation, follow a method below. + +In this tutorial you'll :ref:`bare-metal-install-desktop` as +an additional partition. Alternatively, you may also +:ref:`bare-metal-install-server`. + +.. contents:: + :local: + :depth: 1 + +Method 1: Shrink Windows partition and install |CL| +*************************************************** +For this method, we shrink the Windows 10 OS partition to make space for |CL|. + +#. Boot up the Windows 10 OS. + +#. Launch the :file:`Disk Management` utility found under + :guilabel:`Create and format hard disk partitions`. + +#. Right-click the primary Windows partition and select :guilabel:`Shrink Volume...`. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-win-01.png + :scale: 85% + :alt: Disk Management > Shrink Volume + + Figure 1: Disk Management > Shrink Volume. + +#. Shrink the size of the partition by at least the following amount: + + * For *Desktop* version, allow at least 21GB. + + * For *Server* version, allow at least 4GB. + + +#. We shrink C by about 21GB, as shown in Figure 2. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-win-02.png + :scale: 85% + :alt: Shrink C + + Figure 2: Shrink C. + +#. Shutdown the Windows 10 OS. + +#. Follow one of these guides to install |CL|: + + * *Desktop* version: :ref:`bare-metal-install-desktop` + * *Server* version: :ref:`bare-metal-install-server` + + a. In the :guilabel:`Required options` tab, choose :guilabel:`Select + Installation Media`. + + #. Within that menu, select :guilabel:`Safe Installation`. + + #. Go through remaining steps to complete the installation. + + #. Reboot. + +#. During the BIOS POST stage, press :kbd:`F10`, or the proper F-key for your + system, to launch the :guilabel:`Boot Menu`. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-win-03.png + :scale: 85% + :alt: Boot menu + + Figure 3: Boot menu + +#. In the :guilabel:`Boot Menu`, use the arrow to select the + :guilabel:`OS bootloader` as boot device (highlighted). + + Some BIOSes do not support listing multiple partitions. In this case, + it will only show one bootable partition. + + .. tip:: + + If you don't want to use the BIOS boot menu each time to select an OS, + follow :ref:`Advanced: Use systemd-boot to boot Windows 10 OS and + |CL| `. + +Method 2: Add another hard disk to your system where you installed Windows +************************************************************************** + +#. Shutdown your system. + +#. Open your system and attach another hard drive. + +#. Power up your system. + +#. Follow one of these guides to install |CL|: + + * *Desktop* version: :ref:`bare-metal-install-desktop` + * *Server* version: :ref:`bare-metal-install-server` + + a. In the :guilabel:`Required options` tab, choose :guilabel:`Select + Installation Media`. + + #. Within that menu, select :guilabel:`Destructive Installation`, and + select the new hard drive from the device list. + + .. warning:: + + Make sure you don’t select the drive with your Windows 10 OS. + + #. Go through remaining steps to complete the installation. + + #. Reboot. + +#. During the BIOS POST stage, press :kbd:`F10`, or the proper F-key for your + system, to launch the :guilabel:`Boot Menu`. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-win-03.png + :scale: 85% + :alt: Boot menu + + Figure 4: Boot menu + +#. In the :guilabel:`Boot Menu`, use the arrow to select the + :guilabel:`Linux bootloader` as boot device. + + Some BIOSes do not support listing multiple partitions. In this case, + it will only show one bootable partition. + +.. tip:: + + If you don't want to use the BIOS boot menu each time to select an OS, + follow the next section. + +.. _advanced-systemd-boot: + +Advanced: Use systemd-boot to boot Windows 10 OS and |CL| +********************************************************* + +If you prefer not to use your BIOS to load the :guilabel:`Boot Menu` and select an OS to boot, you can make :command:`systemd-boot` the default bootloader and add Windows 10 OS to the boot list. This option is also a workaround for BIOSes that don’t support booting more than one partition. + +#. Boot up a |CL| live image from a USB thumb drive. + +#. Open a terminal window and enter: + + .. code-block:: bash + + lsblk -po NAME,SIZE,TYPE,FSTYPE,PARTLABEL + + Example output: + + .. code-block:: console + :emphasize-lines: 6,8,9,11 + + clrlinux@clr-live~ $ lsblk -po NAME,SIZE,TYPE,FSTYPE,PARTLABEL + NAME SIZE TYPE FSTYPE PARTLABEL + /dev/loop0 2.3G loop squashfs + /dev/sda 335.4G disk + ├─/dev/sda1 450M part ntfs Basic data partition + ├─/dev/sda2 100M part vfat EFI system partition + ├─/dev/sda3 16M part Microsoft reserved partition + ├─/dev/sda4 286G part ntfs Basic data partition + ├─/dev/sda5 143M part vfat EFI + ├─/dev/sda6 244M part swap linux-swap + └─/dev/sda7 48.5G part ext4 / + sdb 7G disk iso9660 + ├─/dev/sdb1 2.7G part iso9660 + └─/dev/sdb2 100M part vfat + + The example output shows: + + * /dev/sda2 is the EFI system partition created by Windows 10 OS + * /dev/sda4 is the primary Windows partition + * /dev/sda5 is the EFI system partition created by |CL| + * /dev/sda7 is the |CL| root partition + + .. note:: + + To help narrow down a partition even more, you add the ``PARTTYPE`` + option to :command:`lsblk` and cross-reference against the + `partition type GUIDs wiki`_. + +#. Create mount points. + + .. code-block:: bash + + sudo mkdir /mnt/windows-efi + + sudo mkdir /mnt/clearlinux + +#. Mount the EFI system partition for Windows 10 OS. + + .. code-block:: bash + + sudo mount /dev/sda2 /mnt/windows-efi + +#. Mount the |CL| root partition and its EFI system partition. + + .. code-block:: bash + + sudo mount /dev/sda7 /mnt/clearlinux + + sudo mount /dev/sda5 /mnt/clearlinux/boot + +#. Copy Windows 10 OS bootloader, and other data needed to boot it, to the + |CL| EFI system partition. + + .. code-block:: bash + + sudo cp -r /mnt/windows-efi/EFI/Microsoft/ /mnt/clearlinux/boot/EFI/ + +#. Make :command:`systemd-boot` the default bootloader and add Windows 10 + OS Boot Manager. + + .. code-block:: bash + + sudo bootctl install --esp-path=/mnt/clearlinux/boot + +#. Add a timeout value to the :command:`systemd-boot`. This allows enough + time for you to select your preferred OS from the menu. + + .. code-block:: bash + + sudo clr-boot-manager set-timeout 20 --path=/mnt/clearlinux + +#. Umount all partitions. + + .. code-block:: bash + + sudo umount /mnt/windows-efi /mnt/clearlinux/boot /mnt/clearlinux + +#. Reboot + + .. code-block:: bash + + sudo reboot + +#. Remove the |CL| installer USB thumb drive. + +#. You should be presented with the :command:`systemd-boot` menu, as shown + below. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-win-04.png + :scale: 85% + :alt: systemd-boot menu + + Figure 5: systemd-boot menu + + +Alternative: Install Windows 10 OS After |CL| +********************************************* + +The following alternative guide shows how to install Windows 10 OS adjacent +to an existing |CL| installation. + +Prerequisites +************* + +* |CL| is already installed. +* There is unallocated disk space available. If the entire disk has been + allocated to |CL|, then shrink the root partition to make space for + Windows 10 OS. + +Install Windows 10 OS +===================== + +#. Start the Windows installer and follow the prompts. + +#. At the :guilabel:`What type of installation do you want?` screen, choose + :guilabel:`Custom: Install Windows only (advanced)`. See Figure 6. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-win-06.png + :scale: 85% + :alt: Windows - Choose installation type + + Figure 6: Windows - Choose installation type + +#. Select :guilabel:`Unallocated Space` and create a new partition of + the desired size. For this example, we will use the entire unallocated + space. See Figure 7. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-win-07.png + :scale: 85% + :alt: Windows - Create new partition + + Figure 7: Windows - Create new partition + + .. note:: + + Normally, Windows creates its own 100MB EFI partition if none exists. + In our case, where an EFI partition was created by |CL|, Windows will + use the previously-created partition. + +#. Select the newly-created partition and follow the remaining prompts to + complete the Windows installation. See Figure 8. + + .. rst-class:: dropshadow + + .. figure:: ../../_figures/multi-boot/dual-boot-win-08.png + :scale: 85% + :alt: Windows - Install on newly-created partition + + Figure 8: Windows - Install on newly-created partition + +#. Finish the Windows out-of-box-experience process. + +#. Restore `systemd-boot` - the bootloader |CL| uses - and add Windows to + its boot menu. + + At this point, you cannot boot |CL| because Windows became the default + bootloader after it was installed. Follow these steps to restore + `systemd-boot`. + + a. Boot up a |CL| live image from a USB thumb drive. + + #. Open a terminal window. + + #. Find the location of the EFI partition. In this example, it is + ``/dev/sda1``. + + .. code-block:: bash + + lsblk -po NAME,SIZE,TYPE,FSTYPE,PARTLABEL + + Example output: + + .. code-block:: console + :emphasize-lines: 5 + + clrlinux@clr-live~ $ lsblk -po NAME,SIZE,TYPE,FSTYPE,PARTLABEL + NAME SIZE TYPE FSTYPE PARTLABEL + /dev/loop0 2.3G loop squashfs + /dev/sda 100G disk + ├─/dev/sda1 150M part vfat CLR_BOOT + ├─/dev/sda2 250M part swap CLR_SWAP + ├─/dev/sda3 8G part ext4 CLR_ROOT + ├─/dev/sda4 16M part Microsoft reserved partition + ├─/dev/sda5 91.6G part ntfs Basic data partition + sdb 7G disk iso9660 + ├─/dev/sdb1 2.7G part iso9660 + └─/dev/sdb2 100M part vfat + + .. note:: + + To help narrow down a partition even more, you add the + ``PARTTYPE`` option to :command:`lsblk` and + cross-reference against the `partition type GUIDs wiki`_. + + #. Make a mount point for |CL|. + + .. code-block:: bash + + sudo mkdir /mnt/clearlinux + + #. Mount the root and EFI partitions. + + .. code-block:: bash + + sudo mount /dev/sda3 /mnt/clearlinux + sudo mount /dev/sda1 /mnt/clearlinux/boot + + #. Re-install systemd-boot to make it the default bootloader. + + .. code-block:: bash + + sudo bootctl install --esp-path=/mnt/clearlinux/boot + + #. Add a timeout (for example: 25 seconds) to systemd-boot so that it + will present the menu of bootable OSes and give you time to select + the one you want to boot. + + .. code-block:: bash + + sudo clr-boot-manager set-timeout 25 --path=/mnt/clearlinux + sudo clr-boot-manager update --path=/mnt/clearlinux + + #. Unmount the root and EFI partitions. + + .. code-block:: bash + + sudo umount /mnt/clearlinux/boot + sudo umount /mnt/clearlinux + +.. _partition type GUIDs wiki: https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs diff --git a/_sources/tutorials/multi-boot/multi-boot.rst.txt b/_sources/tutorials/multi-boot/multi-boot.rst.txt new file mode 100644 index 000000000..5f4d2ce7c --- /dev/null +++ b/_sources/tutorials/multi-boot/multi-boot.rst.txt @@ -0,0 +1,20 @@ +.. _multi-boot: + +Multi-boot |CL-ATTR| with other operating systems +################################################# + +| The |CL-PRJ| offers the ability to dual-boot |CL| with Windows\* 10 OS. +| More dual-boot and multi-boot use cases will be introduced in the future. + +.. warning:: + + Always back up critical data before installing an additional OS on a target system. Some data loss may occur. + +Detailed procedures +******************* + +.. toctree:: + :maxdepth: 1 + + dual-boot-win + dual-boot-linux diff --git a/_sources/tutorials/nvidia-cuda.rst.txt b/_sources/tutorials/nvidia-cuda.rst.txt new file mode 100644 index 000000000..a57a9e332 --- /dev/null +++ b/_sources/tutorials/nvidia-cuda.rst.txt @@ -0,0 +1,275 @@ +.. _nvidia-cuda: + +NVIDIA\* CUDA Toolkit +##################### + +NVIDIA is a manufacturer of graphics processing units (GPU), also known as +graphics cards. + +CUDA is a parallel computing platform and application programming interface +model created by NVIDIA. It allows software developers and software engineers +to use a CUDA-enabled graphics processing unit + +These instructions show how to install the CUDA Toolkit on |CL| after the +:ref:`proprietary NVIDIA drivers ` have been installed. + +.. note:: + + Software installed outside of :ref:`swupd ` is not updated with |CL| + updates and must be updated and maintained manually. + + + +.. contents:: :local: + :depth: 2 + + + +Prerequisites +************* + +* A |CL| system with a `CUDA-Enabled NVIDIA device `_ +* The :ref:`proprietary NVIDIA drivers ` have been installed. + + + + +Compatibility +************* + +Check compatibility of NVIDIA components +======================================== + +To install the appropriate NVIDIA CUDA Toolkit version, it is important to +understand the compute capability and compatible driver versions of your +NVIDIA hardware. + +Information about NVIDIA compute capability, driver, and toolkit compatibility +can be found at: https://developer.nvidia.com/cuda-gpus and +https://docs.nvidia.com/deploy/cuda-compatibility/ + + + +Check GCC compatibility +======================= + +.. note:: + + This is only required for the development or compilation of CUDA + applications. It is not required to run pre-built applications that have a + dependency on CUDA. + +From the NVIDIA documentation: + + The CUDA development environment relies on tight integration with the host + development environment, including the host compiler and C runtime + libraries, and is therefore only supported on distribution versions that + have been qualified for this CUDA Toolkit release. + +Refer to the `NVIDIA documentation on CUDA system requirements +`_ +for the latest kernel and compiler compatibility. + +For example, CUDA 10.2 on a system with the latest Linux kernel requires GCC8, +which is older than the default GCC version for |CL|. + +Install the compatible version of GCC, if required: + +#. Install the :ref:`bundle ` with the appropriate GCC version. + + .. code:: bash + + sudo swupd bundle-add c-extras-gcc8 + +#. Create the directory :file:`/usr/local/cuda/bin`: + + .. code:: bash + + sudo mkdir -p /usr/local/cuda/bin + + +#. Add symlinks to the older GCC version in the + :file:`/usr/local/cuda/bin` directory. This will cause the older version of + GCC to be used when :file:`/usr/local/cuda/bin` is in the $PATH environment + variable. + + .. code:: bash + + sudo ln -s /usr/bin/gcc-8 /usr/local/cuda/bin/gcc + sudo ln -s /usr/bin/g++-8 /usr/local/cuda/bin/g++ + + +Downloading and Installation +**************************** + + +Download the NVIDIA CUDA Toolkit +================================ + +#. Go to the `NVIDIA CUDA downloads website`_ to get the latest CUDA Toolkit. + If an older version of the CUDA Toolkit is required, go to the `CUDA + Toolkit Archive `_. + + Choose the following settings and click *Download*. + + - Operating System: *Linux* + - Architecture: *x86_64* + - Distribution: *any* + - Version: *any* + - Installer Type: *runfile(local)* + + + +#. Open a terminal and navigate to where the + :file:`cuda__linux.run` file was saved. In this + example, it was saved in the Downloads folder. + + .. code-block:: bash + + cd ~/Downloads/ + +#. Make the :file:`cuda__linux.run` file executable: + + .. code-block:: bash + + chmod +x cuda__linux.run + + + +Install the NVIDIA CUDA Toolkit +=============================== + +The NVIDIA CUDA installer will be directed to install files under +:file:`/opt/cuda` as much as possible to keep its contents isolated from the +rest of the |CL| files under :file:`/usr`. + +The CUDA installer automatically creates a symbolic link that allows the CUDA +Toolkit to be accessed from :file:`/usr/local/cuda` regardless of where it was +installed. + + +#. Configure the dynamic linker to look for and cache shared libraries under + :file:`/opt/cuda/lib64` where the NVIDIA installer will place libraries. + + .. code-block:: bash + + sudo mkdir -p /etc/ld.so.conf.d + echo "include /etc/ld.so.conf.d/*.conf" | sudo tee --append /etc/ld.so.conf + + + The CUDA installer will automatically create a file + :file:`/etc/ld.so.conf.d/cuda-.conf` + +#. Navigate into the directory where the NVIDIA installer was downloaded: + + .. code-block:: bash + + cd ~/Downloads/ + + +#. Run the installer with the advanced options below: + + .. code-block:: bash + + sudo ./cuda__linux.run \ + --toolkit \ + --installpath=/opt/cuda \ + --no-man-page \ + --override \ + --silent + +#. Validate the CUDA Toolkit was installed by checking the NVIDIA CUDA + compiler version: + + .. code-block:: bash + + /opt/cuda/bin/nvcc --version + + +The CUDA Toolkit is now installed and can be used to compile and run CUDA +applications. + + +Using the NVIDIA CUDA Toolkit +***************************** + +#. Verify that the NVIDIA device characters files /dev/nvidia* exist and have + the correct (0666) file permissions. The character devices should be + automatically created on system with the NVIDIA driver loaded through X + server, but will not be on systems that do not automatically load the + NVIDIA driver. + + .. code:: + + ls -l /dev/nvidia* + + +#. If your system does not have the NVIDIA character devices created + automatically, run the `script from NVIDIA documentation + `_ + with root privileges. + + + Alternatively a setuid utility, :command:`nvidia-modprobe`, can be compiled + and installed to automatically create the device character files on-demand. + + + .. code:: + + wget https://download.nvidia.com/XFree86/nvidia-modprobe/nvidia-modprobe-.tar.bz2 + tar -xvf nvidia-modprobe-.tar.bz2 + cd nvidia-modprobe-/ + make + sudo make install PREFIX=/usr/local/cuda/ + + +#. When the CUDA toolkit is needed, export PATH variables pointing to the CUDA + directories. This will temporarily add CUDA files to the PATH and use the + specified linked version of GCC for the terminal session. + + .. code:: bash + + export PATH=/usr/local/cuda/bin:$PATH + export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH + + +Source code for CUDA sample located at +:file:`/usr/local/cuda/NVIDIA_CUDA-_Samples`. See the `CUDA +documentation on compiling samples +`_ +to learn more. + + +Uninstalling +************ + +The NVIDIA drivers and associated software can be uninstalled and nouveau +driver restored by: + +#. Run the :command:`sudo /usr/local/cuda/bin/cuda-uninstaller`. + +#. Follow the prompts on the screen and reboot the system. + + +Debugging +********* + +* The NVIDIA CUDA installer places logs under + :file:`/tmp/cuda-installer.log`. + + +Additional resources +******************** +* `NVIDIA CUDA Toolkit Documentation `_ + +* `Why aren't the NVIDIA Linux drivers open source? `_ + +* `Where can I get support for NVIDIA Linux drivers? `_ + +* `NVIDIA Accelerated Linux Graphics Driver Installation Guides `_ + +.. _`nouveau project`: https://nouveau.freedesktop.org/wiki/ + +.. _`NVIDIA CUDA downloads website`: https://developer.nvidia.com/cuda-downloads + + diff --git a/_sources/tutorials/nvidia.rst.txt b/_sources/tutorials/nvidia.rst.txt new file mode 100644 index 000000000..f838ec3c3 --- /dev/null +++ b/_sources/tutorials/nvidia.rst.txt @@ -0,0 +1,531 @@ +.. _nvidia: + +NVIDIA\* Drivers +################ + +NVIDIA manufactures graphics processing units (GPU), also known as +graphics cards. + +NVIDIA devices on Linux\* have two popular device driver options: the +opensource drivers from the `nouveau project`_ or the proprietary drivers +published by NVIDIA. The nouveau drivers are built into the |CL-ATTR| +kernel and are loaded automatically at system boot if a compatible card +is detected. + +These instructions show how to use the proprietary NVIDIA drivers, which +require a manual installation. + +.. warning:: + + Software installed outside of :ref:`swupd ` is not updated + with |CL| updates and must be updated and maintained manually. + + For example, the file :file:`/usr/lib/libGL.so` conflicts with the file + provided by the mesa package in |CL| and the file NVIDIA provides. If a + |CL| update or repair overwrites these files, a reinstallation of the + NVIDIA driver might be required. + +.. contents:: :local: + :depth: 1 + +Prerequisites +************* + +* A |CL| system with a desktop installed +* An NVIDIA device installed + + +Known issues +============ + +Systems with multiple graphics devices, including integrated graphics (iGPU), +are known to be problematic. + +.. note:: NVIDIA Optimus\* + + Some systems come with a hybrid graphics configuration for a balanced power + and performance profile. This configuration is commonly found on + laptops. `NVIDIA Optimus technology + `_, is designed to + allow switching seamlessly between a NVIDIA device and another graphics + devices sharing the same display. + + Getting NVIDIA Optimus on Linux working well with both graphics devices + adds an additional level of complexity with platform specific steps and may + require additional software. Installation for systems with NVIDIA Optimus + with both graphics devices operating is not covered by the scope of this + documentation. As a simple workaround, some systems can disable one of the + graphics devices or NVIDIA Optimus in the system firmware. + +.. note:: + The :ref:`Long Term Support (LTS) kernel ` variant is + more likely to be compatible with proprietary NVIDIA drivers. + +**See the** `Troubleshooting`_ **section for more known issues and solutions.** + + +Installation +************ + +Configure workarounds +===================== + +Some workarounds are required for the NVIDIA proprietary drivers to be usable +and sustainable on |CL|. + + +#. Remove the kernel command-line parameter *intel_iommu=igfx_off* or disable + input–output memory management unit (IOMMU), also known as Intel® + Virtualization Technology (Intel® VT) for Directed I/O (Intel® VT-d), in your system EFI/BIOS. + See `this GitHub report + `_ and the NVIDIA + documentation on `DMA issues + `_ + for more information. + + The *intel_iommu-igfx_off* kernel parameter can be removed with the + commands below: + + .. code-block:: bash + + sudo mkdir -p /etc/kernel/cmdline-removal.d/ + echo "intel_iommu=igfx_off" | sudo tee /etc/kernel/cmdline-removal.d/intel-iommu.conf + +#. Create a custom systemd unit that overwrites the :file:`libGL` library + after every |CL| update with a pointer to the NVIDIA provided copy instead + of the version provided by |CL|. These libraries conflict causing the + NVIDIA driver to break when |CL| updates mesa. See the NVIDIA documentation + on `installed components + `_ + for more information. + + a. Create a systemd service unit to overwrite the |CL| provided + :file:`libGL.so.1` files with a symlink to the NVIDIA copies. + + .. code-block:: bash + + sudo tee /etc/systemd/system/fix-nvidia-libGL-trigger.service > /dev/null <<'EOF' + [Unit] + Description=Fixes libGL symlinks for the NVIDIA proprietary driver + BindsTo=update-triggers.target + + [Service] + Type=oneshot + ExecStart=/usr/bin/ln -sfv /opt/nvidia/lib/libGL.so.1 /usr/lib/libGL.so.1 + ExecStart=/usr/bin/ln -sfv /opt/nvidia/lib32/libGL.so.1 /usr/lib32/libGL.so.1 + EOF + + b. Reload the systemd manager configuration to pickup the new serivce. + + .. code-block:: bash + + sudo systemctl daemon-reload + + c. Add the service as a dependency to the |CL| updates trigger causing the + service to run after every update. + + .. code-block:: bash + + sudo systemctl add-wants update-triggers.target fix-nvidia-libGL-trigger.service + +Install DKMS +============ + +The :ref:`Dynamic Kernel Module System (DKMS) ` allows +the NVIDIA kernel modules to be automatically integrated when kernel updates +occur in |CL|. Install the appropriate DKMS bundle using the instructions +below: + +.. note:: + The Long Term Support (LTS) kernel variant is more likely to remain + compatible between updates with NVIDIA drivers. + +.. include:: /guides/kernel/kernel-modules-dkms.rst + :start-after: kernel-modules-dkms-install-begin: + :end-before: kernel-modules-dkms-install-end: + +Download the NVIDIA drivers +=========================== + +#. Identify the NVIDIA GPU model that is installed. + + .. code-block:: bash + + sudo lshw -C display + +#. Go to the `NVIDIA Driver Downloads website`_ . Search for and download the + appropriate driver based on the NVIDIA GPU model you have with *Linux + 64-bit* selected as the Operating System. + + .. code-block:: bash + + wget https://download.nvidia.com/XFree86/Linux-x86_64//NVIDIA-Linux-x86_64-.run + + If you already know the appropriate driver version for your device, you can + also obtain a download link directly from one of the links below: + + - https://www.nvidia.com/en-us/drivers/unix/ + - https://download.nvidia.com/XFree86/Linux-x86_64/ + + +Disable the nouveau driver +========================== + +The proprietary NVIDIA driver is incompatible with the nouveau driver and +must be disabled before installation can continue. + +#. Disable the nouveau driver by creating a blacklist file under + :file:`/etc/modprobe.d` and reboot. + + .. code-block:: bash + + sudo mkdir /etc/modprobe.d + + printf "blacklist nouveau \noptions nouveau modeset=0 \n" | sudo tee --append /etc/modprobe.d/disable-nouveau.conf + +#. Reboot the system and log back in. It is normal for the graphical + environment not to start without the NVIDIA driver loaded. + +Configure alternative software paths +==================================== + +The NVIDIA installer is directed to install files under +:file:`/opt/nvidia` as much as possible to keep its contents isolated from the +rest of the |CL| system files under :file:`/usr`. The dynamic linker and X +server must be configured to use the content under +:file:`/opt/nvidia`. + +#. Configure the dynamic linker to look for and to cache shared libraries under + :file:`/opt/nvidia/lib` and :file:`/opt/nvidia/lib32` in addition to the + default paths. + + .. code-block:: bash + + echo "include /etc/ld.so.conf.d/*.conf" | sudo tee --append /etc/ld.so.conf + + sudo mkdir /etc/ld.so.conf.d + printf "/opt/nvidia/lib \n/opt/nvidia/lib32 \n" | sudo tee --append /etc/ld.so.conf.d/nvidia.conf + +#. Reload the dynamic linker run-time bindings and library cache. + + .. code-block:: bash + + sudo ldconfig + +#. Create a Xorg configuration file to search for modules under + :file:`/opt/nvidia` in addition to the default path. + + .. code-block:: bash + + sudo mkdir -p /etc/X11/xorg.conf.d/ + + sudo tee /etc/X11/xorg.conf.d/nvidia-files-opt.conf > /dev/null <<'EOF' + Section "Files" + ModulePath "/usr/lib64/xorg/modules" + ModulePath "/opt/nvidia/lib64/xorg/modules" + EndSection + EOF + +Install the NVIDIA drivers +========================== + +#. A terminal not running on */dev/tty1* is useful to view uninterrupted + installation progress. Switch to a secondary virtual terminal by pushing + :command:`CTRL + ALT + F2` or remotely login over SSH. + +#. Navigate to the directory where the NVIDIA installer was downloaded. In + this example, it was saved in the :file:`Downloads` folder. + + .. code-block:: bash + + cd ~/Downloads/ + + +#. Run the installer with the advanced options below. + + .. code-block:: bash + + sudo sh NVIDIA-Linux-x86_64-.run \ + --utility-prefix=/opt/nvidia \ + --opengl-prefix=/opt/nvidia \ + --compat32-prefix=/opt/nvidia \ + --compat32-libdir=lib32 \ + --x-prefix=/opt/nvidia \ + --x-module-path=/opt/nvidia/lib64/xorg/modules \ + --x-library-path=/opt/nvidia/lib64 \ + --x-sysconfig-path=/etc/X11/xorg.conf.d \ + --documentation-prefix=/opt/nvidia \ + --application-profile-path=/etc/nvidia/nvidia-application-profiles-rc.d \ + --no-precompiled-interface \ + --no-nvidia-modprobe \ + --no-distro-scripts \ + --force-libglx-indirect \ + --glvnd-egl-config-path=/etc/glvnd/egl_vendor.d \ + --egl-external-platform-config-path=/etc/egl/egl_external_platform.d \ + --dkms \ + --silent + +#. The graphical interface may automatically start after the NVIDIA driver + is loaded. Return to the working terminal and log back in if necessary. + +#. Confirm that the NVIDIA kernel modules are loaded. + + .. code-block:: bash + + lsmod | grep ^nvidia + +#. Optional: Create a link for the nvidia-settings desktop entry to + :file:`~/.local/share/applications` so that it appears in the launcher for easy access. + + .. code-block:: bash + + ln -sv /opt/nvidia/share/applications/nvidia-settings.desktop $HOME/.local/share/applications + + +Updating +******** + +The proprietary NVIDIA drivers are installed manually outside of +:ref:`swupd ` and must be updated manually when needed. + +Updating the NVIDIA drivers follows the same steps as initial installation, +however the desktop environment must first be stopped so that the drivers are +not in use. + +#. Follow the steps in the `Download the NVIDIA drivers`_ section + to get the latest NVIDIA drivers. + +#. Temporarily set the default boot target to the *multi-user*, which is + a non-graphical runtime. + + .. code-block:: bash + + sudo systemctl set-default multi-user.target + +#. Reboot the system and log back in. It is normal for the graphical + environment not to start. + +#. Follow the steps in the `Install the NVIDIA Drivers`_ section to update + the NVIDIA drivers. This installation will overwrite the previous NVIDIA + drivers and files. + +#. Set the default boot target back to the *graphical* target. + + .. code-block:: bash + + sudo systemctl set-default graphical.target + +#. Reboot the system and log back in. + +#. Trigger a :command:`flatpak update` to download the runtime corresponding + with the new NVIDIA drivers for the flatpak apps that require it. + + .. important:: + + Some flatpak applications won't start after updating the NVIDIA drivers + until the flatpak runtime is updated with the corresponding driver + version. + + .. code-block:: bash + + flatpak update + + + + + +Uninstallation +************** + +The NVIDIA drivers and associated software can be uninstalled and nouveau +driver restored with the instructions in this section. + +#. Remove the files created for workarounds. + + .. code-block:: bash + + sudo rm /etc/kernel/cmdline-removal.d/intel-iommu.conf + sudo rm /etc/systemd/system/fix-nvidia-libGL-trigger.service + sudo rm /etc/systemd/system/update-triggers.target.wants/fix-nvidia-libGL-trigger.service + sudo systemctl daemon-reload + + +#. Remove the :file:`modprobe.d` file that prevents nouveau from loading. + + .. code-block:: bash + + sudo rm /etc/modprobe.d/disable-nouveau.conf + +#. Remove the :file:`nvidia.conf` file so that dynamic linker does not + look for cached libraries under :file:`/opt/nvidia/lib` and :file:`/opt/nvidia/lib32`. + + .. code-block:: bash + + sudo rm /etc/ld.so.conf.d/nvidia.conf + sudo ldconfig + + Optionally, restore :file:`ld.so.conf` to default if no other configuration files under :file:`/etc/ld.so.conf.d` + needs to be included. + + .. code-block:: bash + + sudo sed -i '/^include \/etc\/ld\.so\.conf\.d\/\*\.conf$/d' /etc/ld.so.conf + + +#. Remove the :file:`xorg.conf.d` file that adds a search path for X modules. + + .. code:: bash + + sudo rm /etc/X11/xorg.conf.d/nvidia-files-opt.conf + +#. Remove the nvidia-settings desktop entry file if it was linked to + :file:`~/.local/share/applications`. + + .. code:: bash + + unlink -v $HOME/.local/share/applications/nvidia-settings.desktop + + +#. Run the :command:`nvidia-uninstall` command. + + .. code:: bash + + sudo /opt/nvidia/bin/nvidia-uninstall + +#. Follow the prompts on the screen and reboot the system. + + +Troubleshooting +*************** + +* The NVIDIA driver places installer and uninstaller logs under + :file:`/var/log/nvidia-install` and :file:`/var/log/nvidia-uninstall`. + +* :file:`NVIDIA-Linux-x86_64-.run --advanced-options` shows many + parameters to control installation behavior. + +* :file:`NVIDIA-Linux-x86_64-.run --extract-only` extracts + installation files into a directory named + :file:`NVIDIA-Linux-x86_64-`. + +* The X server logs under :file:`/var/log/X*` contain useful + information about display and driver loading. Check all the files and + timestamps when troubleshooting. + +* The DKMS build logs under :file:`/var/lib/dkms/nvidia*` contain information + about kernel module builds which can be useful if the NVIDIA driver breaks + between kernel upgrades. + + +No display or blank screen +========================== + +Check to see if the display has come up on another graphics device, including +the integrated graphics device. + +You might get a black screen or the login screen might not come up after +installing the NVIDIA drivers until an Xorg configuration has been defined for +your monitors. + + +"Oh no! Something has gone wrong" GNOME\* crash +=============================================== + + +.. figure:: /_figures/nvidia/nvidia-gnome-crash.png + :alt: NVIDIA driver GNOME crash on Clear Linux OS + :align: center + + NVIDIA driver GNOME crash dialogue on Clear Linux OS. + +There have been reports of GNOME crashing with an "Oh no! Something has gone +wrong" error message with NVIDIA drivers installed while other graphics +devices are enabled. + +Try disabling other graphics devices, including integrated graphics, in your +system's EFI/BIOS. + + +Slow boot times +=============== + + +There have been reports of slow boot times with NVIDIA drivers installed. +Normally, when GDM detects NVIDIA proprietary drivers, it will disable Wayland +and enable X11. Should GDM fail to disbale Wayland, it may results in slow boot +times, according to `this GitHub reprot +`_. + +To manually disable Wayland: + +.. code-block:: bash + + sudo tee /etc/gdm/custom.conf > /dev/null <<'EOF' + [daemon] + WaylandEnable=false + EOF + + +Brightness control +================== + +If you can't control the screen brightness with the NVIDIA driver installed, +try one of the solutions below: + +- Add a kernel parameter *acpi_osi=* which disables the ACPI Operating System + Identification function. Some system firmware may manipulate brightness + control keys based on the reported operating system. Disabling the + identification mechanism can cause the system firmware to expose brightness + controls that are recognizable in Linux. + + .. code:: bash + + sudo mkdir -p /etc/kernel/cmdline.d + echo "acpi_osi=" | sudo tee /etc/kernel/cmdline.d/acpi-backlight.conf + sudo clr-boot-manager update + + + +- Add a kernel parameter for the nvidia driver: + *NVreg_EnableBacklightHandler=1*. This handler overrides the ACPI-based one + provided by the video.ko kernel module. This option is available with NVIDIA + driver version 387.22 and above. + + .. code:: bash + + sudo mkdir -p /etc/kernel/cmdline.d + echo "nvidia.NVreg_EnableBacklightHandler=1" | sudo tee /etc/kernel/cmdline.d/nvidia-backlight.conf + sudo clr-boot-manager update + + +- Add the *EnableBrightnessControl=1* options to the *Device* + section of your xorg config. Below is an example: + + .. code:: bash + + sudo mkdir -p /etc/X11/xorg.conf.d/ + + sudo tee /etc/X11/xorg.conf.d/nvidia-brightness.conf > /dev/null <<'EOF' + Section "Device" + Identifier "Device0" + Driver "nvidia" + Option "RegistryDwords" "EnableBrightnessControl=1" + EndSection + EOF + +Additional resources +==================== + +* `Why aren't the NVIDIA Linux drivers open source? `_ + +* `Where can I get support for NVIDIA Linux drivers? `_ + +* `NVIDIA Accelerated Linux Graphics Driver Installation Guides `_ + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _`nouveau project`: https://nouveau.freedesktop.org/wiki/ + +.. _`NVIDIA Driver Downloads website`: https://www.nvidia.com/download/index.aspx + + diff --git a/_sources/tutorials/openfaas.rst.txt b/_sources/tutorials/openfaas.rst.txt new file mode 100644 index 000000000..831ef643b --- /dev/null +++ b/_sources/tutorials/openfaas.rst.txt @@ -0,0 +1,388 @@ +.. _openfaas: + +OpenFaaS\* +########## + +This tutorial shows how to set up OpenFaaS running on top of a Kubernetes\* +cluster on |CL|, obtain |CL| based OpenFaaS templates, and develop an example +function. + +.. contents:: :local: + :depth: 1 + +Background +********** + +Functions as a Service (FaaS) is a framework for building serverless functions +that are ephemeral, automatically scalable, and focused pieces of code running +within containers to allow developers to focus on application code rather than +infrastructure nuances. + +Many cloud service providers have ready-to-use FaaS offerings which offer a +high degree of convenience for developers and granular billing based on +per-second usage. + +If you want an on-premise or self-hosted serverless capability to avoid vendor +lock-in or simply want more development, OpenFaaS is currently the most +popular solution in the space based on the number of Github stars on the +project. + +Prerequisites +************* + +For simplicity, this tutorial assumes you have a Kubernetes single node +cluster with only master node running |CL|. + +- For detailed instructions on how to install |CL|, see the :ref:`getting + started ` section. + +- For a detailed guide on how to set up Kubernetes, see the documentation on + :ref:`Kubernetes `. + +.. note:: + + Please note that in this example the `master node was tainted + `_ + to be able to be scheduled, which means containers are able to be deployed + to the master node. + + .. code:: bash + + kubectl taint nodes --all node-role.kubernetes.io/master- + + +Deploy OpenFaaS +*************** + +#. Install the official command line tool for using OpenFaas, *faas-cli*, by + installing the *faas-cli* bundle. + + .. code:: bash + + sudo swupd bundle-add faas-cli + +#. Download the `faas-netes `_, the + OpenFaaS provider templates that enable Kubernetes for OpenFaaS. + + .. code:: bash + + git clone https://github.com/openfaas/faas-netes.git + +#. Set variables for the OpenFaaS admin user and password. + + .. warning:: + + For simplicity, this tutorial uses a basic authentication with an + unecrypted username and password. For production environments, see the + OpenFaaS documentation on `Deploying OpenFaas in Production + `_. + + .. code:: bash + + export FAAS_USER=admin + export FAAS_PASSWD=clearlinux + +#. Deploy the OpenFaaS stack on Kubernetes using :command:`kubectl`. + + .. code:: bash + + kubectl apply -f faas-netes/namespaces.yml + + .. code:: bash + + kubectl -n openfaas create secret generic basic-auth \ + --from-literal=basic-auth-user=$FAAS_USER \ + --from-literal=basic-auth-password="$FAAS_PASSWD" + + .. code:: bash + + kubectl apply -f faas-netes/yaml/ + + Wait for the OpenFaaS pods and services to get ready. This involves + downloading container images from the Internet and may take some time + depending on your Internet connection. You can enter the commands below to + have the terminal wait until services are ready to use. + + .. code:: bash + + kubectl wait --for=condition=available --timeout=600s deployment/gateway -n openfaas + kubectl wait --for=condition=available --timeout=600s deployment/faas-idler -n openfaas + +#. Login to the OpenFaaS instance. *31112* is the default port. + + - You can login over the command-line: + + .. code:: bash + + export OPENFAAS_URL=http://127.0.0.1:31112 + echo -n $FAAS_PASSWD | faas-cli login --password-stdin + + + - You can also login to the OpenFaaS web interface by navigating to + **http://${master_node_IP}:31112** + + + .. figure:: /_figures/openfaas/openfaas-login.png + :scale: 100% + :align: center + :alt: OpenFaaS web interface login page + + Figure 1: OpenFaaS web interface login page + +OpenFaaS templates +****************** + +OpenFaaS templates, though not necessary, abstract configurations for +running functions in common programming languages. Templates allows developers +to better focus on writing the code for their function. + +OpenFaaS has dozens of `templates in the official store +`_. There are also |CL|-based templates +available for download. + +#. You can list all the official templates in the store using + :command:`faas-cli`. + + .. code:: bash + + faas-cli template store list + + NAME SOURCE DESCRIPTION + csharp openfaas Classic C# template + dockerfile openfaas Classic Dockerfile template + go openfaas Classic Golang template + java8 openfaas Classic Java 8 template + node openfaas Classic NodeJS 8 template + php7 openfaas Classic PHP 7 template + python openfaas Classic Python 2.7 template + python3 openfaas Classic Python 3.6 template + ... + +#. Create and enter a workspace. + + .. code-block:: bash + + mkdir ~/faas-example + cd ~/faas-example + +#. Download the |CL|-based OpenFaaS templates which are stored in the + https://github.com/clearlinux/dockerfiles repository and copy them into your + working directory. + + .. code:: bash + + git clone https://github.com/clearlinux/dockerfiles.git + cp -r dockerfiles/FaaS/OpenFaaS/template/ . + +#. After the |CL| based templates have been retrieved, they will show up in + the same repository and available to use locally. + + .. code:: bash + + faas-cli new --list + + Languages available as templates: + - dockerfile-clearlinux + - python3-clearlinux + +OpenFaaS is ready to use at this point. See the `OpenFaaS documentation +`_ to learn more about deploying functions. + + +Example: Develop a function +*************************** + +In this example, we'll imagine a FaaS solution where: a user provides a URL to +a pictures, which invokes a function to do image classification and outputs +the result. + +We will use the `OpenVINO™ toolkit - Deep Learning Deployment Toolkit (DLDT) +`_ to do the image +inference. As inference development is not the focus of this example, we will +just use the built-in sample "`classification_sample_async +`_" +for this function. + + +We'll use the *python3-clearlinux* template as a base and customize it by: + +* Adding additional |CL| bundles (*bundles.txt*) +* Adding additional required python packages (*requirements.txt*) +* Adding a script to download and convert DLDT models (*helper_script.sh*) +* Finally, we'll develop the python function to be run (*handler.py*) + +More ways to customize the |CL| based OpenFaaS templates can be found in the +`README on GitHub +`_. + +#. Enter the previously created working directory. + + .. code-block:: bash + + cd ~/faas-example + +#. Create a new function skeleton + + .. code-block:: bash + + faas-cli new --lang python3-clearlinux classification-sample --prefix="" + + This will create the directory structure below: + + .. code-block:: console + + tree . + ├── classification-sample + │ ├── bundles.txt + │ ├── handler.py + │ ├── helper_script.sh + │ ├── __init__.py + │ └── requirements.txt + ├── classification-sample.yml + +#. Add the required |CL| bundles to the :file:`bundles.txt` file. + + .. code-block:: bash + + echo "computer-vision-openvino" >> classification-sample/bundles.txt + +#. Add the required python packages to the :file:`requirements.txt` file. + + .. code-block:: bash + + echo "glob3" >> classification-sample/requirements.txt + echo "urllib3" >> classification-sample/requirements.txt + echo "networkx==2.3" >> classification-sample/requirements.txt + + +#. OpenCV has a `model downloader and other automation tools + `_ + to help downloading models and converting them into different formats. + Customize the OpenFaaS template to use the model-downloader in the + :file:`helper_script.sh` file. The :file:`helper_script.sh` file script + gets executed during the build process. + + .. code-block:: bash + :caption: helper_script.sh + :name: helper_script.sh + + cat classification-sample/helper_script.sh + #!/bin/bash + + # Download and convert models + export MODEL_DIR="/models" + export MO_PATH="/usr/share/openvino/model-optimizer/mo.py" + export MODEL_NAME="resnet-50-int8-tf-0001" + + # Download and convert models + model-downloader --name $MODEL_NAME -o $MODEL_DIR + model-converter --name $MODEL_NAME -d $MODEL_DIR -o $MODEL_DIR --mo $MO_PATH + + +#. With the requirements added to the template. Write a python in the + :file:`handler.py` file. This function will parse the input picture URL, + find the model path, and call “classification_sample_async” to do image + classification. + + .. code-block:: python + :caption: handler.py + :name: handler.py + + #!/usr/bin/python3 + + import os + import glob + import urllib.request + from urllib.parse import urlparse + from os.path import splitext + + ALLOWED_IMAGE_TYPE = [".bmp", ".BMP"] + + def get_ext(url): + parsed = urlparse(url) + _, ext = splitext(parsed.path) + return ext + + def get_image_from_url(url): + """get image and save to local path""" + + ext = get_ext(url) + + local_file_path = "/tmp/image" + ext + urllib.request.urlretrieve(url, local_file_path) + return local_file_path + + def find_model_path(): + """ return model xml path """ + + model_dir = os.getenv('MODEL_DIR', '/models') + model_name = os.getenv('MODEL_NAME', 'resnet-50-int8-tf-0001') + ".xml" + precision = os.getenv('MODEL_PRECISION', 'FP32') + + pattern = model_dir + '/**/' + precision + '/' + model_name + paths = glob.glob(pattern, recursive=True) + + if not len(paths): + print("No " + model_name + " found") + return None + + return paths[0] + + def do_classification(image, model_path): + """ Use dldt sample classification_sample_async """ + + cmd = "classification_sample_async -i " + image + " -m " + model_path + return os.system(cmd) + + def handle(req): + """handle a request to the function + Args: + req (str): request body + """ + if not len(req): + print("Request body is missing.") + return + + model_path = find_model_path() + if model_path is None: + return + + if get_ext(req) not in ALLOWED_IMAGE_TYPE: + print("Only " + ALLOWED_IMAGE_TYPE + " images are allowed.") + return + + file_path = get_image_from_url(req) + do_classification(file_path, model_path) + + + + + +#. Build and deploy the function to the OpenFaaS instance. + + .. code-block:: bash + + faas-cli build --build-arg http_proxy=$http_proxy --build-arg https_proxy=$https_proxy -f classification-sample.yml + faas-cli deploy --env=http_proxy=$http_proxy --env=https_proxy=$https_proxy -f classification-sample.yml + +#. Finally, test the function by going to the OpenFaaS web interface at + **http://${master_node_IP}:31112** and Invoking the *classification-sample* + function with a URL to any BMP image. The result should show the what the + image has been identified as and probability. + + + .. figure:: /_figures/openfaas/openfaas-invoke-function.png + :scale: 100% + :align: center + :alt: OpenFaaS web interface invoke function + + Figure 2: OpenFaaS web interface invoke function + + .. figure:: /_figures/openfaas/openfaas-function-output.png + :scale: 100% + :align: center + :alt: OpenFaaS web interface function output + + Figure 3: OpenFaaS web interface invoke function + +*Intel, OpenVINO, and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* \ No newline at end of file diff --git a/_sources/tutorials/php.rst.txt b/_sources/tutorials/php.rst.txt new file mode 100644 index 000000000..becbe84fa --- /dev/null +++ b/_sources/tutorials/php.rst.txt @@ -0,0 +1,253 @@ +.. _php: + +PHP and PHP-FPM +############### + +This tutorial describes how to configure and use :abbr:`PHP (PHP: Hypertext Preprocessor)` +and :abbr:`PHP-FPM (PHP FastCGI Process Manager)` on |CL-ATTR|. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +The `PHP language`_ is an Open Source general-purpose scripting language that is popular +with web-developers who leverage its ability to create dynamically generated +web pages. `PHP-FPM`_ is a PHP FastCGI implementation that controls process +management, workers, and logging for PHP. The two applications work together, +but each one has its own configuration. + +This tutorial specifically addresses PHP and PHP-FPM, however, it provides a +general guide for working with applications in the |CL| :ref:`stateless` +environment. + + +Background +********** + +By default, PHP looks for configuration settings in the :file:`php.ini` file, +which resides in the :file:`usr/share/defaults/php/` path. Because |CL| is a +:ref:`stateless` operating system, you must create an optional configuration +file to override the default values. Every time :command:`swupd` updates the +system, it overwrites changes to the :file:`/usr/share/defaults` file +structure. To save your configuration options through updates, you must create +a PHP configuration file in a location that will not be overwritten. The +recommended location is within the :file:`/etc` file structure, which is why this +tutorial creates a :file:`/etc/php.d` directory. + +The PHP-FPM configuration file is separate from the :file:`php.ini` file used +by PHP, however it has a similar default path restriction. |CL| installs the +default :file:`php-fpm.conf` file in :file:`/usr/share/defaults/php`. This +file with its default values is overwritten during each software update. +However, PHP-FPM requires that the configuration file exist in that location, +and, by design, does not read configuration options from a different path. +This tutorial describes a solution to changing PHP-FPM configuration options +in |CL|, by manually overriding the php-fpm.service unit in systemd to pass +an explicit location to a custom :file:`php-fpm.conf` file. + + +Prerequisites +************* + +* :ref:`Install ` |CL| on your host system. +* Use :command:`swupd` to install the :file:`php-basic` bundle: + + .. code-block:: bash + + sudo swupd bundle-add php-basic + +.. note:: + + PHP does not require a web server for operation. If you need a web + server, refer to :ref:`lamp-server-install` for instructions on setting + up a :abbr:`LAMP (Linux, Apache\*, MySQL\*, PHP)` server, or use + :command:`swupd` to install :file:`nginx` or similar. + + +Configure PHP +************* + +.. important:: + + This section does **not** describe configuration for the PHP-FPM service, which is + described later in this guide. + +This section creates a :file:`/etc/php.d` directory for all PHP configuration +files to work around the default path restriction. + +#. Create a :file:`php.ini` file: + + .. code-block:: bash + + sudo mkdir -p /etc/php.d + sudo touch /etc/php.d/my-php.ini + + This file can be edited with any of your specific configuration + requirements, and will not be overwritten when :command:`swupd` performs + an update. The `PHP configuration file`_ documentation contains details + about what you can set in this file. + +#. Verify the location of the PHP configuration files: + + .. code-block:: bash + + php --ini + + You should see output like this: + + .. code-block:: console + + Configuration File (php.ini) Path: /usr/share/defaults/php/ + Loaded Configuration File: /usr/share/defaults/php/php.ini + Scan for additional .ini files in: /etc/php.d + Additional .ini files parsed: + + + This output indicates that PHP will read the :file:`php.ini` file from + :file:`/usr/share/defaults/php` and will then load any further + configuration from :file:`.ini` files in :file:`/etc/php.d/`. The + :file:`my-php.ini` file in :file:`/etc/php.d` contains your configuration + details, and allows the defaults to be read from + :file:`/usr/share/defaults/php/`. Note that the :file:`my-php.ini` file + has not been parsed, because the file has no content at this + point and is disregarded. + +Install PHP extensions +********************** + +PHP extensions are compiled libraries designed to enable specific functions in +your PHP code. |CL| provides PHP extensions in the :file:`php-extras` bundle. + +#. Install the bundle with swupd: + + .. code-block:: bash + + sudo swupd bundle-add php-extras + +#. Find the list of extensions included in the `php-extras`_ bundle on the + |CL| `Store`_. + + +Enable PHP extensions +********************* + +To enable an installed extension, you must add it to the :file:`php.ini` file +for the composer. + +#. Create the :file:`my-php.ini` file using the directive to load the + php-imagick extension: + + .. code-block:: bash + + sudo echo "extension=imagick.so" >> /etc/php.d/my-php.ini + +#. Restart the php-fpm service for PHP to pick up the modification to the + :file:`/etc/php.d/my-php.ini` file: + + .. code-block:: bash + + sudo systemctl restart php-fpm + +#. Verify that the imagick extension has been loaded by searching through the + runtime list of loaded PHP Modules: + + .. code-block:: bash + + php -m | grep imagick + + +.. note:: + + To enable an extension, you must install it, add it to the + :file:`my-php.ini` file, and restart the :file:`php-fpm` service. However, + some extensions may have configuration options, which will be documented by + the extension maintainer. Add the options you need to the + :file:`/etc/php.d/my-php.ini` file as described in the extension's + documentation. Be sure to restart :file:`php-fpm` after changing the file. + +Configure PHP-FPM +***************** + +The PHP-FPM configuration file is separate from the :file:`php.ini` file used +by PHP, however, it has a similar default path restriction. Follow the steps +below to configure PHP-FPM. + + +#. Copy the :file:`/usr/share/defaults/php/php-fpm.conf` file to the + :file:`/etc/php.d` file: + + .. code-block:: bash + + sudo cp /usr/share/defaults/php/php-fpm.conf /etc/php.d/php-fpm.conf + +#. Make changes to the :file:`php-fpm.conf` file as needed. The + `FPM documentation`_ has details on the configuration options available + to PHP-FPM. + +#. Edit the systemd service unit file: + + .. code-block:: bash + + sudo systemctl edit --full php-fpm.service + + This opens the :file:`php-fpm.service` file for systemd in your editor. + +#. Change the :command:`ExecStart` configuration to add the + :command:`--fpm-config` option to point to the custom location: + + .. code-block:: console + + [Unit] + Description=The PHP FastCGI Process Manager + After=syslog.target network.target + + [Service] + Type=notify + PIDFile=/run/php-fpm.pid + ExecStart=/usr/sbin/php-fpm --nodaemonize --fpm-config /etc/php.d/php-fpm.conf + ExecReload=/bin/kill -USR2 $MAINPID + PrivateTmp=true + + [Install] + WantedBy=multi-user.target + +#. Restart the service: + + .. code-block:: bash + + sudo systemctl restart php-fpm.service + +#. Verify that the new path has been picked up: + + .. code-block:: bash + + sudo systemctl status php-fpm.service + + You should see the new path in the output: + + .. code-block:: console + + ● php-fpm.service - The PHP FastCGI Process Manager + Loaded: loaded (/etc/systemd/system/php-fpm.service; enabled; vendor preset: disabled) + Active: active (running) since Thu 2019-10-17 13:19:34 PDT; 8min ago + Main PID: 14452 (php-fpm) + Status: "Processes active: 0, idle: 0, Requests: 0, slow: 0, Traffic: 0req/sec" + Tasks: 1 + Memory: 11.1M + CGroup: /system.slice/php-fpm.service + └─14452 php-fpm: master process (/etc/php.d/php-fpm.conf) + + +.. _PHP language: https://www.php.net/ + +.. _PHP-FPM: https://php-fpm.org/ + +.. _php-extras: https://clearlinux.org/software/bundle/php-extras + +.. _Store: https://clearlinux.org/software/ + +.. _PHP configuration file: https://www.php.net/manual/en/configuration.file.php + +.. _FPM documentation: https://www.php.net/manual/en/install.fpm.configuration.php diff --git a/_sources/tutorials/redis.rst.txt b/_sources/tutorials/redis.rst.txt new file mode 100644 index 000000000..3c74640bc --- /dev/null +++ b/_sources/tutorials/redis.rst.txt @@ -0,0 +1,223 @@ +.. _redis: + +Redis\* +####### + +In this tutorial, you'll install :abbr:`Redis (REmote DIctionary Server)` +and launch a `Redis-server` on |CL-ATTR|. We invite you to pull our +`Clear Linux Redis instance`_ on Docker Hub\* for application or +infrastructure development. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +Redis is an in-memory key:value store designed for quick lookups, accessible +over a network. While the `redis data structure store`_ can serve +as a NoSQL database for a web application, it's also easy to integrate into an +existing stack. For example, you could use the Redis caching layer for +real-time responses on a leaderboard in a gaming app. Redis offers many client +libraries with language-specific bindings for Python\*, Perl\*, Ruby, and more. + +Install the Redis bundle +************************ + +#. Log in as a user with administrative privilege. + +#. Open a terminal. + +#. Update your |CL| to the latest version. + + .. code-block:: bash + + sudo swupd update + +#. Install the `redis-native` bundle. + + .. code-block:: bash + + sudo swupd bundle-add redis-native + +Start the Redis-server +********************** + +A :command:`systemd` service unit is available to control the Redis-server. +By default, Redis runs on port 6379. + +#. Start the service and set it to start automatically on boot. + + .. code-block:: bash + + sudo systemctl enable --now redis + +#. Confirm the service is running. + + .. code-block:: bash + + sudo systemctl status redis + +#. Verify that the Redis-server sends a reply. + + .. code-block:: bash + + redis-cli ping + + Expected output: + + .. code-block:: console + + PONG + +.. note:: + + If you wish to customize settings for Redis, copy the + default :file:`/usr/share/defaults/etc/redis.conf` file into the + /etc/ directory, make changes as needed, and restart the service. + + .. code-block:: bash + + sudo cp -v /usr/share/defaults/etc/redis.conf /etc/ + +The Redis-server is now ready to use on |CL|. Try some of the examples shown +below. + +Example 1: Use the redis-cli and commands +***************************************** + +One advantage of Redis over other NoSQL databases is that developers can +easily access data structures like lists, sets, sorted sets, strings, and +hashes using collection operations commands similar to those found in many +programming languages. These exercises are inspired by `try redis io`_. + +After your Redis-server is running, try some basic commands. + +#. Start `redis-cli`. It provides syntax suggestions as you type. + + .. code-block:: bash + + redis-cli + +#. :command:`SET` a key to hold a string value. In the set, create connections + and increment. + + .. code-block:: none + + SET server:name "clearlinux" + + .. code-block:: none + + MGET server:name + + .. note:: + + If the key does not exist or hold a key value, `nil` is returned. + + .. code-block:: none + + SET connections 100 + + .. code-block:: none + + INCR connections + + .. code-block:: none + + INCR connections + + .. code-block:: none + + DEL connections + +#. Create a `friends` list and insert new values at the end of the list. + + .. code-block:: none + + RPUSH friends "Deb" + + .. code-block:: none + + RPUSH friends "David" + + .. code-block:: none + + RPUSH friends "Mary" + +#. Modify the `friends` list, using a common slice method with a 0-index. + + .. code-block:: none + + LRANGE friends 0 1 + + .. code-block:: none + + LLEN friends + + .. code-block:: none + + LPOP friends + + .. code-block:: none + + RPOP friends + + .. code-block:: none + + LLEN friends + +#. Consider using a hash, which maps string fields and string values, and + offers multiple lookup methods. + + Enter many user key:values with `HMSET`. Then try `HGET` and `HGETALL`. + + .. code-block:: none + + HMSET user:1000 name "Robert Noyce" password "SuperEngi9eer" email "robert.noyce@intel.com" + + .. code-block:: none + + HGET user:1000 name + + .. code-block:: none + + HGET user:1000 email + + .. code-block:: none + + HGETALL user:1000 + + +Example 2: Run the |CL| Redis Docker\* image +******************************************** + +We also provide a `Clear Linux Redis instance`_, which is +updated continuously and maintained by |CL| development. + +.. code-block:: bash + + sudo swupd bundle-add containers-basic + +.. code-block:: bash + + sudo systemctl start docker + +.. code-block:: bash + + sudo -E docker pull clearlinux/redis + +Next Steps +********** + +* Follow the `redis quickstart tutorial`_ to expand potential uses. + +* Learn how to use :ref:`docker`. + +.. _try redis io: http://try.redis.io/ + +.. _Clear Linux Redis instance: https://hub.docker.com/r/clearlinux/redis + +.. _redis data structure store: https://redis.io/ + +.. _redis quickstart tutorial: https://redis.io/topics/quickstart diff --git a/_sources/tutorials/smb-desktop.rst.txt b/_sources/tutorials/smb-desktop.rst.txt new file mode 100644 index 000000000..1858c96b0 --- /dev/null +++ b/_sources/tutorials/smb-desktop.rst.txt @@ -0,0 +1,84 @@ +.. _smb-desktop: + +Samba\* as a client +################### + +This tutorial explains how to access an existing shared drive on +Windows\* via Server Message Block (SMB) / Common Internet File System (CIFS) +from the |CL| GNOME\* desktop. A CIFS filesystem is generally used to access +shared storage locations, or share files. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* You have already `set up a shared location on Windows`_ + +Connect to Windows shared location with Nautilus +************************************************ + +#. From the desktop, select :guilabel:`Files` from the application menu. + + .. note:: + + GNOME Files is also known as `Nautilus`. + +#. In :guilabel:`Files`, select :guilabel:`Other Locations`. + + .. figure:: /_figures/samba/smb-desktop-1.png + :scale: 100% + :alt: Files, Other Locations + + Figure 1: Files, Other Locations + +#. In the lower taskbar, beside :guilabel:`Connect to Server`, + enter the file-sharing address using the Windows sharing schema: + + .. code-block:: bash + + smb://servername/Share + + .. figure:: /_figures/samba/smb-desktop-2.png + :scale: 100% + :alt: Connect to Server + + Figure 2: Connect to Server + +#. Optional: If there are issues with DNS, you can use an IP address in + place of the `servername` above. You must still specify the share. + +#. Optional: On the Windows machine, in a CLI, retrieve the IP address by + entering the command: + + .. code-block:: bash + + ifconfig + + .. note:: + + If using the IP address, assure that it is accessible and secure. + +#. Select :guilabel:`Connect`. + + The server requests authentication, as shown in Figure 3. + + .. figure:: /_figures/samba/smb-desktop-3.png + :scale: 100% + :alt: Authentication + + Figure 3: Authentication + +#. Log in with the same Windows system credentials for which you granted + access to the share. + +#. Select the appropriate checkbox to save your credentials. Consider + carefully the security risks as a result of your selection. + + +.. _set up a shared location on Windows: https://www.howtogeek.com/176471/how-to-share-files-between-windows-and-linux/ + + + diff --git a/_sources/tutorials/smb-server.rst.txt b/_sources/tutorials/smb-server.rst.txt new file mode 100644 index 000000000..81306b637 --- /dev/null +++ b/_sources/tutorials/smb-server.rst.txt @@ -0,0 +1,150 @@ +.. _smb-server: + +Samba Server +############ + +This tutorial describes how to enable simple file sharing on a system +running |CL-ATTR| and how to access the share from clients on other operating +systems. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* |CL| is installed on your host system. + + For detailed instructions, follow one of these guides: + + * *Desktop* version: :ref:`bare-metal-install-desktop` + * *Server* version: :ref:`bare-metal-install-server` + +* Update your |CL| system to the latest version. + + .. code-block:: bash + + sudo swupd update + +Set up file sharing +******************* + +#. Add the :command:`samba` bundle, which includes the Samba binaries. + + .. code-block:: bash + + sudo swupd bundle-add samba + +#. Create the :file:`/etc/samba` directory. + + .. code-block:: bash + + sudo mkdir /etc/samba + +#. Create a configuration file named :file:`/etc/samba/smb.conf`. In this + simple example, :envvar:`[SharedDrive]` enables a folder share located in + :file:`/home/clear/mysharedrive` granting users `samba-user-1` and + `samba-user-2` access. + + If :envvar:`valid users` is not specified, then anyone with a user account + on the machine and with their Samba password already set can access the + folder. However, the account is only able to access files and folders for + which they have appropriate permissions. + + For more advanced sharing, refer to the `Samba guide`_. + + .. code-block:: console + + [Global] + map to guest = Bad User + + [SharedDrive] + path=/home/clear/myshareddrive + read only = no + guest ok = no + browsable = yes + valid users = samba-user-1 samba-user-2 + +#. Start the Samba service and set it to start automatically on boot. + + .. code-block:: bash + + sudo systemctl enable --now smb + +#. Verify the service started properly. + + .. code-block:: bash + + sudo systemctl status smb + +#. Use :command:`smbpasswd` to add the initial password for the user + account to access the share. Be aware that Samba maintains its own list of + passwords for user accounts. The Samba password list can be different from + the password used to log in. + + For example: + + .. code-block:: bash + + sudo smbpasswd -a samba-user-1 + +Access the shared drive +*********************** + +Depending on your operating system, connect to the shared drive using one +of the methods belows: + +* On |CL|: + + a. Add the `samba` bundle. + + .. code-block:: bash + + sudo swupd bundle-add samba + + #. List available shares. + + .. code-block:: bash + + smbclient -L // + + #. Connect to a shared drive. + + .. code-block:: bash + + smbclient /// -U + +* On Windows: + + a. Open `File Explorer`. + + #. Enter :command:`\\\` in the + URL field. See Figure 1. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/samba/smb-server-01.png + :scale: 100% + :alt: Windows > File Explorer > Connect to Samba share + + `Figure 1: Windows > File Explorer > Connect to Samba share` + +* On macOS: + + a. Open the `Finder`. + + #. Press :kbd:`Command` + :kbd:`K` to open the dialog box for + connecting to a server. + + #. Enter :command:`smb:///`. + in the URL field. See Figure 2. + + .. figure:: ../_figures/samba/smb-server-02.png + :scale: 100% + :alt: macOS > Finder > Connect to Samba share + + `Figure 2: macOS > Finder > Connect to Samba share` + +.. _Samba guide: + https://www.samba.org/samba/docs/using_samba/ch00.html diff --git a/_sources/tutorials/tensorflow-machine-learning.rst.txt b/_sources/tutorials/tensorflow-machine-learning.rst.txt new file mode 100644 index 000000000..745a56d13 --- /dev/null +++ b/_sources/tutorials/tensorflow-machine-learning.rst.txt @@ -0,0 +1,248 @@ +.. _machine-learning: + +TensorFlow\* machine learning +############################# + +This tutorial demonstrates the installation and execution of a TensorFlow\* +machine learning example on |CL-ATTR|. It uses a Jupyter\* Notebook and MNIST +data for handwriting recognition.  + +The initial steps show how to set up a Jupyter kernel and run a Notebook +on a bare-metal |CL| system. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +This tutorial assumes you have installed |CL| on your host system. For +detailed instructions on installing |CL| on a bare metal system, follow the +:ref:`bare metal installation tutorial`. + +Before you install any new packages, update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +After your system is updated, add the following bundles to your system: + +* :command:`machine-learning-web-ui`: This bundle contains the Jupyter application. + +* :command:`machine-learning-basic`: This bundle contains TensorFlow + and other useful tools. + +To install the bundles, run the following commands in your :file:`$HOME` +directory: + +.. code-block:: bash + + sudo swupd bundle-add machine-learning-web-ui + + sudo swupd bundle-add machine-learning-basic + +Set up a Jupyter Notebook +************************* + +With all required packages and libraries installed, set up the file structure +for the Jupyter Notebook. + +#. In the :file:`$HOME` directory, create a directory for the Jupyter + Notebooks named :file:`Notebooks`. + + .. code-block:: bash + + mkdir Notebooks + +#. Within :file:`Notebooks`, create a directory named :file:`Handwriting`. + + .. code-block:: bash + + mkdir Notebooks/Handwriting + +#. Change to the new directory. + + .. code-block:: bash + + cd Notebooks/Handwriting + +#. Copy the :file:`MNIST_example.ipynb` file into the :file:`Handwriting` + directory. + + .. note:: + + After installing the :command:`machine-learning basic` bundle, you can find the example code under + :file:`/usr/share/doc/tensorflow/MNIST_example.ipynb`. + + +The example code downloads and decompresses the MNIST data directly into the +:file:`./mnist` directory. Alternatively, download the four files directly +from the Yann LeCun’s `MNIST Database website`_ and save them into a +:file:`mnist` directory within the :file:`Handwriting` directory. + +The files needed are: + +* `train-images-idx3-ubyte.gz`_: Training set images (9912422 bytes) + +* `train-labels-idx1-ubyte.gz`_: Training set labels (28881 bytes) + +* `t10k-images-idx3-ubyte.gz`_: Test set images (1648877 bytes) + +* `t10k-labels-idx1-ubyte.gz`_: Test set labels (4542 bytes) + +Run the Jupyter machine learning example code +********************************************* + +With |CL|, Jupyter, and TensorFlow installed and configured, you can +run the example code. + +#. Go to the :file:`($HOME)/Notebooks` directory and start Jupyter with the + following commands: + + .. code-block:: bash + + cd ~/Notebooks + + jupyter notebook + + The Jupyter server starts and opens a web browser showing the Jupyter file + manager with a list of files in the current directory, as shown in + Figure 1. + + .. figure:: /_figures/tensorflow/machine-learning-1.png + :alt: Jupyter file manager + + Figure 1: The Jupyter file manager shows the list of available files. + +#. Click on the :file:`Handwriting` directory. The :file:`MNIST_example.ipynb` + file created earlier should be listed there, as shown in Figure 2. + + .. figure:: /_figures/tensorflow/machine-learning-2.png + :alt: Example file within the Jupyter file manager + + Figure 2: The example file within the Jupyter file manager. + +#. To run the handwriting example, click on the :file:`MNIST_example.ipynb` + file to load the notebook, as shown in Figure 3. + + .. figure:: /_figures/tensorflow/machine-learning-3.png + :alt: The loaded MNIST_example notebook + + Figure 3: The loaded MNIST_example notebook within the Jupyter file + manager. + +#. Click the |run-cell| button to execute the code in the current cell and + move to the next. + +#. Select the :guilabel:`In [2]` cell and click the |run-cell| button to load + the MNIST data. The successful output is shown on Figure 4. + + .. figure:: /_figures/tensorflow/machine-learning-4.png + :alt: Successful import of MNIST data + + Figure 4: Output after successfully importing the MNIST data. + + + After the MNIST data is successfully downloaded and extracted into the + :file:`mnist` directory within the :file:`($HOME)/Notebooks/Handwriting` + directory, four .gz files are present and the four data sets are created: + `trainX`, `trainY`, `testX` and `testY`. + +#. To inspect the imported data, the function in :guilabel:`In [3]` first + instructs Jupyter to reshape the data into an array of 28 x 28 images and to + plot the area in a 28 x 28 grid. Click the |run-cell| button twice to show + the first two digits in the `trainX` dataset. An example is shown in + Figure 5. + + .. figure:: /_figures/tensorflow/machine-learning-5.png + :alt: Function to reshape data. + + Figure 5: A function reshapes the data and displays the first two + digits in the `trainX` dataset. + +#. The :guilabel:`In [4]` cell defines the neural network. It provides the + inputs, defines the hidden layers, runs the training model, and sets up + the output layer, as shown in Figure 6. Click the |run-cell| button four + times to perform these operations. + + .. figure:: /_figures/tensorflow/machine-learning-6.png + :alt: Defining, building and training the neural network model + + Figure 6: Defining, building, and training the neural network model. + +#. To test the accuracy of the prediction that the system makes, select the + :guilabel:`In [8]` cell and click the |run-cell| button. In this example, + the number 6 was predicted with a 99% accuracy, as shown in Figure 7. + + .. figure:: /_figures/tensorflow/machine-learning-7.png + :alt: Prediction example + + Figure 7: The system predicts a number providing the accuracy of the + prediction. + + .. note:: + + To retest the accuracy of a random data point's prediction, run the + cell :guilabel:`In [8]` again. It will take another random data point + and predict its value. + +#. To check the accuracy for the whole dataset, select the :guilabel:`In [10]` + cell and click the |run-cell| button. Our example's accuracy is + calculated as 97.17%, as shown in Figure 8. + + .. figure:: /_figures/tensorflow/machine-learning-8.png + :alt: System's accuracy + + Figure 8: The system's accuracy for the entire data set. + +For more in-depth information on the model used and the mathematics it entails, +visit the TensorFlow tutorials +`TensorFlow MNIST beginners demo`_ and `TensorFlow MNIST pros demo`_. + +**Congratulations!** + +You have successfully installed a Jupyter kernel on |CL|. In addition, you +trained a neural network to successfully predict the values contained in a +data set of hand-written number images. + +Related topics +************** + +* `MNIST Database website`_ +* `TensorFlow MNIST beginners demo`_ +* `TensorFlow MNIST pros demo`_ +* `Jupyter main website`_ +* `Jupyter documentation`_ +* `MNIST at Wikipedia`_ + +.. _MNIST Database website: + http://yann.lecun.com/exdb/mnist/ + +.. _train-images-idx3-ubyte.gz: + http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz + +.. _train-labels-idx1-ubyte.gz: + http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz + +.. _t10k-images-idx3-ubyte.gz: + http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz + +.. _t10k-labels-idx1-ubyte.gz: + http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz + +.. _Jupyter main website: http://jupyter.org/ + +.. _Jupyter documentation:  https://jupyter.readthedocs.io/en/latest/index.html + +.. _TensorFlow MNIST beginners demo: + https://www.tensorflow.org/get_started/mnist/beginners + +.. _TensorFlow MNIST pros demo: + https://www.tensorflow.org/get_started/mnist/pros + +.. _MNIST at Wikipedia: + https://en.wikipedia.org/wiki/MNIST_database + +.. |run-cell| image:: /_figures/tensorflow/run-cell-button.png diff --git a/_sources/tutorials/vmware-workstation.rst.txt b/_sources/tutorials/vmware-workstation.rst.txt new file mode 100644 index 000000000..d777d7cdb --- /dev/null +++ b/_sources/tutorials/vmware-workstation.rst.txt @@ -0,0 +1,141 @@ + +.. _vmware-workstation: + +VMware\* Workstation Pro +######################## + +VMware Workstation Pro allows you to run multiple operating systems as +:abbr:`VMs (virtual machines)` on a single host. It is a more advanced version +of VMware Workstation Player. + +This tutorial shows how to do a manual installation of VMware Workstation +Pro on a |CL-ATTR| host using the console plus the VMware Workstation Pro GUI. + +VMware Workstation Pro on Linux installs two major components: + +#. VMware hypervisor software +#. VMware kernel modules + +.. note:: + + |CL| is not an officially supported host OS for VMware Workstation Pro. This + tutorial follows the generic Linux installation instructions with details + specific to a manual installation on |CL|. + +Prerequisites +************* + +Enable virtualization in the BIOS before installing VMware Workstation Pro. + +Install VMware Workstation Pro +****************************** + +Use the console installer to install the VMware Workstation Pro hypervisor +software: + +#. Download + `VMware Workstation Pro for Linux `_. + + .. note:: + + The downloaded file is named with a :file:`.bundle` file extension but + this is not a |CL| :ref:`bundle `! + +#. In a terminal, :command:`cd` to the directory where the `.bundle` installation + file was saved. + + .. code-block:: bash + + cd ~/Downloads/ + +#. Make the `.bundle` installation file executable. Replace + [VMware-Workstation-xxxx-xxxx.architecture] with the actual file name. + + .. code-block:: bash + + chmod +x ./[VMware-Workstation-xxxx-xxxx.architecture].bundle + +#. Start the installation. + + .. code-block:: bash + + sudo ./VMware-Workstation-[xxxx-xxxx].architecture.bundle + + .. code-block:: console + + Extracting VMware Installer...done. + +#. When prompted to specify the system service scripts directory, use the common + suggestion: + + .. code-block:: console + + System service scripts directory (commonly /etc/init.d).: /etc/init.d + + You will see output similar to the following: + + .. code-block:: console + + Installing VMware VMX 15.5.0 + Configuring...No rc*.d style init script directories were given to the installer. + You must manually add the necessary links to ensure that the vmware ] 49% + service at /etc/init.d/vmware is automatically started and stopped on + Installing VMware Workstation 15.5.0 + Configuring... + [######################################################################] 100% + Installation was successful. + + .. note:: + + During installation you will get an error about "No rc*.d style init + script directories" being given. This can safely be ignored as |CL| uses + :command:`systemd`. + +Install VMware kernel modules +***************************** + +After installing VMware Workstation Pro, additional VMware kernel modules must +be compiled and installed. Before installing the VMware kernel modules, install +DKMS, which will provide the necessary tools to add the VMware kernel modules. + +Install DKMS +============ + +.. include:: ../guides/kernel/kernel-modules-dkms.rst + :start-after: kernel-modules-dkms-install-begin: + :end-before: kernel-modules-dkms-install-end: + +Install kernel modules +====================== + +Launch the VMware Workstation Pro GUI to finish the installation and build the +needed kernel modules. + +#. On the |CL| desktop, find the VMware Workstation Pro icon and click to launch. + +#. Click through the installation customization screens as directed in the + VMware Kernel Module Updater. + +#. On the last screen click :guilabel:`Finish`. VMware Workstation Pro will launch. + +#. Create and configure a new VM! + +Troubleshooting +*************** + +If problems occur during installation, the recommended first step is to identify +which major component the issues are occurring in (hypervisor or kernel modules). +This will help direct further troubleshooting. + +Troubleshooting tips: + +* If the issue is with compiling the kernel modules and you are running the native + kernel, try installing the LTS kernel instead. + +* If modules failed to install or load, check logs in :file:`/tmp/vmware-/*.log` + +* Try re-installing all VMware modules with the following command: + + .. code-block:: bash + + sudo vmware-modconfig --console --install-all diff --git a/_sources/tutorials/wordpress.rst.txt b/_sources/tutorials/wordpress.rst.txt new file mode 100644 index 000000000..e4c863405 --- /dev/null +++ b/_sources/tutorials/wordpress.rst.txt @@ -0,0 +1,214 @@ +.. _wp-install: + +WordPress\* Server +################## + +This tutorial shows you how to install the WordPress\* components on your |CL| +:abbr:`LAMP (Linux, Apache\*, MySQL\*, PHP)` server. At the end of +:ref:`lamp-server-install`, you created a WordPress-ready database using +phpMyAdmin\* and MariaDB\*. Now that the LAMP server is up and running, you +can add the WordPress components needed to host a WordPress website on your system. + +Before you begin +**************** + +This tutorial assumes that you have successfully completed +:ref:`bare-metal-install-desktop` and you have :ref:`lamp-server-install`. + +Create a WordPress server +************************* + +WordPress can be installed in a variety of ways. These instructions are +written for users who have followed our instructions for installing phpMyAdmin +when they :ref:`set up a LAMP web server `. Note that +all steps in this tutorial have been tested using a NUC6i5SYH Intel® NUC. +Visit the `NUC6i5SYH product page`_ for detailed information. + +Numerous online articles are available to help you name your website and +acquire the necessary certificates. Those tasks are beyond the scope of this tutorial. + +You can take several actions to harden your website from attacks. The security +of your website and the data it contains are complex and ever-evolving tasks. +Prioritize security if you plan to expose your website to the outside world. +This tutorial does not address security measures that you can take to harden +your site but we strongly encourage you to take action. + +.. note:: + + Throughout this tutorial, we reference your website name as . + + +Download WordPress and manage directories +========================================= + +For this tutorial, you will create a WordPress blog that can be accessed at: +\http:///blog. + +To accomplish this setup, you must add WordPress components to the :file:`/var/www/html/blog` +directory. + +Follow these steps: + + +#. Navigate to the top level of the website’s root directory: + + .. code-block:: bash + + cd /var/www/html + +#. Download the latest version of WordPress: + + .. code-block:: bash + + sudo curl -O https://wordpress.org/latest.tar.gz + +#. Extract all files and directories from the downloaded file: + + .. code-block:: bash + + sudo tar –xzvf latest.tar.gz + +#. Rename the top-level WordPress directory to “blog”: + + .. code-block:: bash + + sudo mv wordpress blog + +#. Remove the downloaded tar file: + + .. code-block:: bash + + sudo rm latest.tar.gz + +Set up WordPress with web-based GUI +=================================== + +Recall that you created a database and user when you installed phpMyAdmin when you +set up a |CL| based :ref:`web server `. Next, you must +connect WordPress to the database and install WordPress. + +To continue with the setup, go to: \http:///blog/wp-admin/install.php. +The WordPress language option screen appears, as shown in figure 1. + +#. Select :guilabel:`English` and click :guilabel:`Continue`. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/wp-install-1.png + :alt: WordPress language selection + :width: 600 + + `Figure 1: WordPress language selection screen.` + + + The WordPress installation continues until the Welcome screen appears, as shown in + figure 2: + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/wp-install-2.png + :alt: WordPress welcome screen + :width: 600 + + `Figure 2: WordPress Welcome screen.` + +#. Click :guilabel:`Let’s go!`. + +#. Enter database connection specifics in the screen that appears, as shown in figure 3 + below. + + * Database name: WordPress + * Database username: wordpressuser + * Database password: wp-example (asterisks will not appear in the text box) + * Database host: localhost + * Table prefix: wp\_ + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/wp-install-3.png + :alt: Database connection details + :width: 600 + + `Figure 3: Information necessary for WordPress to connect to the database.` + +#. Click :guilabel:`Submit` to complete the setup. + + Figure 4 shows the confirmation screen that verifies a successful setup. WordPress + is connected to the MariaDB database. + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/wp-install-4.png + :alt: Successful database connection. + :width: 600 + + `Figure 4: Successful WordPress connection.` + +#. Click :guilabel:`Run the install`. + The installer runs until WordPress is fully installed on your system. + +Complete successful login +========================= + +Once the installation is complete, you can name your blog and create a WordPress username +and password. See figure 5. + +.. rst-class:: dropshadow + +.. figure:: ../_figures/wordpress/wp-install-5.png + :alt: WordPress user creation + :width: 600 + + `Figure 5: WordPress site information screen.` + + +#. Enter all required information. +#. Click :guilabel:`Install WordPress`. +#. Verify that the initial login screen appears once the installation is complete. See figure 6: + + .. rst-class:: dropshadow + + .. figure:: ../_figures/wordpress/wp-install-6.png + :alt: WordPress login + :width: 600 + + `Figure 6: The WordPress login screen.` + +#. Enter your WordPress username and password. +#. Check :guilabel:`Remember me` to save your credentials. +#. Click :guilabel:`Log in`. + +Figure 7 shows the WordPress dashboard after a successful login: + +.. rst-class:: dropshadow + +.. figure:: ../_figures/wordpress/wp-install-7.png + :alt: WordPress Dashboard + :width: 600 + + `Figure 7: The WordPress dashboard.` + +You are ready to go! + +To check out your blog as it is seen by the outside world, enter: +\http:///blog on your browser. Figure 8 shows the result: + +.. figure:: ../_figures/wordpress/wp-install-8.png + :alt: WordPress blog + :width: 600 + + `Figure 8: Your WordPress blog.` + +**Congratulations, your WordPress blog is up and running!** + +You have successfully installed WordPress on a host system. + +Add new entries to your blog and share them with the world using |CL|! + +*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.* + +.. _`step-by-step guide`: + https://codex.wordpress.org/Installing_WordPress#Famous_5-Minute_Install + +.. _`NUC6i5SYH product page`: + http://www.intel.com/content/www/us/en/nuc/nuc-kit-nuc6i5syh.html diff --git a/_sources/tutorials/yubikey-u2f.rst.txt b/_sources/tutorials/yubikey-u2f.rst.txt new file mode 100644 index 000000000..2a8c1e89b --- /dev/null +++ b/_sources/tutorials/yubikey-u2f.rst.txt @@ -0,0 +1,123 @@ +.. _yubikey-u2f: + +YubiKey\* Support +################# + +This tutorial explains how to configure a YubiKey\* for U2F authentication +through a web browser on a |CL-ATTR| system. + +.. contents:: :local: + :depth: 1 + +Description +*********** + +YubiKey is a USB security token manufactured by `Yubico`_. Depending on the +model, a YubiKey can support different authentication protocols including +One-Time Password (OTP), Smart card, FIDO2, and Universal 2nd Factor (U2F). + +A list of `websites that accept U2F authentication with the YubiKey`_ +is available on the Yubico website. See the Yubico website to learn more about +the Yubikey: https://www.yubico.com/getstarted/ + +Prerequisites +************* + +This tutorial assumes you have: + +#. |CL| installed and running. + +#. Mozilla Firefox installed on |CL|. + +#. A YubiKey. + +Enable Linux udev rules for YubiKey +*********************************** + +:command:`udev` is the Linux device manager that handles events when USB +devices are added and removed. Custom rules needs to be created to properly +identify the YubiKey and provide applications access. + +These instructions are derived from: `Yubico support article Using Your U2F +YubiKey with Linux +`_ + + +#. Create the udev rules folder under :file:`/etc`. + + .. code:: bash + + sudo mkdir -p /etc/udev/rules.d/ + + +#. Download the u2f rules from the Yubico GitHub: + + .. code:: bash + + curl -O https://raw.githubusercontent.com/Yubico/libu2f-host/master/70-u2f.rules + + +#. Move the downloaded :file:`70-u2f.rules` file into the :file:`/etc/udev` + folder. + + .. code:: bash + + sudo mv 70-u2f.rules /etc/udev/rules.d/ + + +#. The udev rules should automatically be reloaded. However, they can be + manually reloaded or you can reboot the system. + + .. code:: bash + + sudo udevadm control --reload-rules && sudo udevadm trigger + + +#. Plugin and validate the YubiKey appears as a USB device. + + .. code:: bash + + lsusb + + + +Enable U2F in Mozilla Firefox +***************************** + +Firefox comes with U2F web authentication support disabled by default. U2F +needs to be enabled in the advanced settings. + +These instructions are derived from: `Yubico support article Enabling U2F +support in Mozilla Firefox +`_ + + +#. Launch Mozilla Firefox + +#. In the URL bar, type :command:`about:config` to access the advanced + settings. + + .. code:: bash + + about:config + +#. Click the *I accept the risk!* button to continue to the advanced settings + +#. Search for the :command:`security.webauth.u2f` and double-click it + so *Value* becomes **true**. + + +Your YubiKey is now usable on |CL| with Mozilla Firefox with websites that +support U2F authentication. + + +Related topics +************** + +- |CL| :ref:`security` + + +.. _`Yubico`: https://www.yubico.com/ + +.. _`websites that accept U2F authentication with the YubiKey`: +.. https://www.yubico.com/works-with-yubikey/catalog/#protocol=universal-2nd-factor-(u2f)&usecase=all&key=all diff --git a/_sources/tutorials/zfs.rst.txt b/_sources/tutorials/zfs.rst.txt new file mode 100644 index 000000000..b5f491208 --- /dev/null +++ b/_sources/tutorials/zfs.rst.txt @@ -0,0 +1,225 @@ +.. _zfs: + +OpenZFS* +######## + +This tutorial shows how to set up `OpenZFS* file system and volume manager`_ on |CL-ATTR|, using a non-root device for zpools. + +.. contents:: + :local: + :depth: 1 + +Background +********** + +The OpenZFS storage platform provides volume management, snapshot capabilities, and redundancy detection. |CL| **does not** ship with a binary ZFS kernel module (zfs.ko). |CL| users who wish to incorporate the zfs.ko kernel module must build and maintain this work themselves. + +.. CAUTION:: + + Use of the OpenZFS kernel module in connection with |CL| is neither recommended nor officially endorsed by the Clear Linux* Project. Users who follow this tutorial and build zfs.ko kernel module are encouraged to seek independent legal counsel regarding any plan to redistribute a software package containing zfs.ko and |CL|. + +Known Issues +************ + +Using a long-term-support (LTS) kernel when running OpenZFS reduces the risk of incompatibilities with kernel updates. When new kernels or new versions of OpenZFS are released, users bear the responsibility to test those releases and ensure compatibility before deploying any updates. + +Prerequisites +************* + +* Learn to :ref:`kernel-modules-dkms` +* Learn to use :ref:`swupd-guide` + +Install the DKMS kernel +======================= + +.. include:: ../guides/kernel/kernel-modules-dkms.rst + :start-after: kernel-modules-dkms-install-begin-alt: + :end-before: kernel-modules-dkms-install-end: + +Bundles +======= + +Before installing OpenZFS, install the bundles that contain the build dependencies. + +.. code-block:: console + + sudo swupd bundle-add wget devpkg-openssl devpkg-util-linux + +Install +******* + +Download OpenZFS release +======================== + +In this section, we download release 2.0.0 directly from the `OpenZFS repository` (the latest available as of the latest revision of this page). + +Download release 2.0.0 + + .. code-block:: console + + cd /usr/src + sudo wget https://github.com/openzfs/zfs/releases/download/zfs-2.0.0/zfs-2.0.0.tar.gz + sudo tar -xvf zfs-2.0.0.tar.gz + +Compile the module +================== + +We will build the module using DKMS. This will enable us to keep the module up to date as new kernels are released in the future. + +The ZFS distribution provides a script to build a suitable dkms.conf file. + + Build dkms.conf and install it into the DKMS tree. + + .. code-block:: console + + cd /usr/src/zfs-2.0.0 + sudo scripts/dkms.mkconf -n zfs -v 2.0.0 -f dkms.conf + sudo dkms add -m zfs -v 2.0.0 + sudo dkms build -m zfs -v 2.0.0 + sudo dkms install -m zfs -v 2.0.0 + +Observe that this install the zfs kernel modules to: + + :file:`/usr/lib/modules//extra/zfs` + +Compile userspace tools +======================= + +Here we compile and install the zfs userspace tools (e.g., zpool, zfs, etc.). + + .. code-block:: console + + cd /usr/src/zfs-2.0.0 + sudo ./configure + sudo make + sudo make install + +The binaries are installed at the following directory. While not required, it's recommended to add :file:`/usr/local/sbin` to your path variable. + + .. code-block:: console + + + /usr/local/ + |--+ bin/ + |--zvol_wait + |--zgenhostid + |--raidz_test + |--+ etc/ + |--+ zfs/ + |--* zed.d/ + |--+ zpool.d/ + |--zfs-functions + |--+ include/libzfs/ [contents omitted] + |--+ lib/ + |--+ libexec/ + |--+ zfs/ + |-- zpool.d/ + |-- zed.d + |--+ share/zfs/ [contents omitted] + |--+ sbin/ + |--fsck.zfs + |--zpool + |--zdb + |--zed + |--zfs + |--zhack + |--zinject + |--zpool + |--ztest + |--zstreamdump + |--+ src/ + |--+ zfs-2.0.0/ + |--+ spl-2.0.0/ + + +Set up systemd +============== + +We now have these unit files available. + +.. code-block:: console + + zfs-env-bootfs.service + zfs-zed.service + zfs-import-cache.service + zfs-import-scan.service + zfs-mount.service + zfs-share.service + zfs-volume-wait.service + + +OpenZFS requires that we explicitly install and enable the services desired. + +To use ZFS automatic zpool import and filesystem mount services, enable them. + +.. code-block:: console + + sudo systemctl enable zfs-import-cache + sudo systemctl enable zfs-import.target + sudo systemctl enable zfs-import-scan + sudo systemctl enable zfs-mount + sudo systemctl enable zfs.target + + +Load the kernel module at boot +============================== + +OpenZFS kernel modules must be loaded before any OpenZFS filesystems are mounted. For convenience, load the kernel modules at boot. + +Systemd uses the `/etc/modules-load.d/` directory to load out-of-tree kernel modules. Make sure that the directory exists: + + .. code-block:: bash + + sudo mkdir -p /etc/modules-load.d + +Create the configuration file: + + .. code-block:: bash + + echo "zfs" | sudo tee /etc/modules-load.d/01-zfs.conf + +Reboot your system. zfs.ko should be loaded automatically (the module should appear in the outout of command :file:`lsmod`). + +.. CAUTION:: + + When the |CL| kernel is upgraded, DKMS will attempt to rebuild the OpenZFS module for the new kernel. + + - DKMS may not have rebuilt the module + - DKMS may not have auto-installed the module + - The new kernel might introduce breaking changes that prevent zfs + from compiling + +To fix this situation, recompile zfs.ko with the new kernel code. OpenZFS *might* not compile at all with the new kernel. + +.. CAUTION:: + + **Be sure not to put anything on an OpenZFS pool that will be needed to rebuild kernel modules.** Ensure compatibility of OpenZFS with new Linux kernels when released. + +Troubleshooting +=============== + +If you suspect an issue with DKMS rebuilding your module, you can check two places for information. The dkms-new-kernel service will show status that may help in troubleshooting: + +.. code-block:: console + + systemctl status dkms-new-kernel.service + +The systemd journal may also have important information: + +.. code-block:: console + + journalctl -xe + +.. CAUTION:: + As of OpenZFS 2.0.0, the included file :file:`script/dkms.mkconf` contains a minor incompability -- it calls the command :file:`lsb_release`, which is not available on Clear Linux by default. It is trivial to edit :file:`dkms.mkconf` and remove the singular reference to :file:`lsb_release` without any ill effects, and then execute the :file:`dkms` commands above. However, keeping the file as provided is perfectly fine, but **will result in :file:`dkms` warnings**. + +Next steps +********** +You're now ready to create zpools and datasets! For more information on using ZFS, see: + +* `FreeBSD Handbook chapter on ZFS`_ +* `ZFS-on-Linux issue tracker`_ + +.. _FreeBSD Handbook chapter on ZFS: https://www.freebsd.org/doc/handbook/zfs.html +.. _ZFS-on-Linux issue tracker: https://github.com/openzfs/zfs/issues/10068 +.. _ZFS on Linux repository: https://github.com/openzfs/zfs +.. _OpenZFS* file system and volume manager: https://github.com/openzfs/zfs diff --git a/_static/_sphinx_javascript_frameworks_compat.js b/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 000000000..81415803e --- /dev/null +++ b/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,123 @@ +/* Compatability shim for jQuery and underscores.js. + * + * Copyright Sphinx contributors + * Released under the two clause BSD licence + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 000000000..f316efcb4 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 000000000..92fad4b5c --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clearlinux.png b/_static/clearlinux.png new file mode 100644 index 000000000..af518c0ec Binary files /dev/null and b/_static/clearlinux.png differ diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 000000000..54b3c4638 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 000000000..f1916ec7d --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 000000000..d06852f6d --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '$ ', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 000000000..dbe1aaad7 --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css new file mode 100644 index 000000000..c718cee44 --- /dev/null +++ b/_static/css/badge_only.css @@ -0,0 +1 @@ +.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff b/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 000000000..6cb600001 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff2 b/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 000000000..7059e2314 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff b/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 000000000..f815f63f9 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff2 b/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 000000000..f2c76e5bd Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/_static/css/fonts/fontawesome-webfont.eot b/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 000000000..e9f60ca95 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/_static/css/fonts/fontawesome-webfont.svg b/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 000000000..855c845e5 --- /dev/null +++ b/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/css/fonts/fontawesome-webfont.ttf b/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 000000000..35acda2fa Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/_static/css/fonts/fontawesome-webfont.woff b/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 000000000..400014a4b Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/_static/css/fonts/fontawesome-webfont.woff2 b/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 000000000..4d13fc604 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/_static/css/fonts/lato-bold-italic.woff b/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 000000000..88ad05b9f Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff differ diff --git a/_static/css/fonts/lato-bold-italic.woff2 b/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 000000000..c4e3d804b Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/_static/css/fonts/lato-bold.woff b/_static/css/fonts/lato-bold.woff new file mode 100644 index 000000000..c6dff51f0 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff differ diff --git a/_static/css/fonts/lato-bold.woff2 b/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 000000000..bb195043c Binary files /dev/null and b/_static/css/fonts/lato-bold.woff2 differ diff --git a/_static/css/fonts/lato-normal-italic.woff b/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 000000000..76114bc03 Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff differ diff --git a/_static/css/fonts/lato-normal-italic.woff2 b/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 000000000..3404f37e2 Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/_static/css/fonts/lato-normal.woff b/_static/css/fonts/lato-normal.woff new file mode 100644 index 000000000..ae1307ff5 Binary files /dev/null and b/_static/css/fonts/lato-normal.woff differ diff --git a/_static/css/fonts/lato-normal.woff2 b/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 000000000..3bf984332 Binary files /dev/null and b/_static/css/fonts/lato-normal.woff2 differ diff --git a/_static/css/theme.css b/_static/css/theme.css new file mode 100644 index 000000000..19a446a0e --- /dev/null +++ b/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 000000000..4d67807d1 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 000000000..7e4c114f2 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/favicon.ico b/_static/favicon.ico new file mode 100644 index 000000000..73c917b1f Binary files /dev/null and b/_static/favicon.ico differ diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 000000000..a858a410e Binary files /dev/null and b/_static/file.png differ diff --git a/_static/jquery.js b/_static/jquery.js new file mode 100644 index 000000000..c4c6022f2 --- /dev/null +++ b/_static/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/_static/js/html5shiv.min.js b/_static/js/html5shiv.min.js new file mode 100644 index 000000000..cd1c674f5 --- /dev/null +++ b/_static/js/html5shiv.min.js @@ -0,0 +1,4 @@ +/** +* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/_static/js/theme.js b/_static/js/theme.js new file mode 100644 index 000000000..1fddb6ee4 --- /dev/null +++ b/_static/js/theme.js @@ -0,0 +1 @@ +!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/mag-glass.png b/_static/mag-glass.png new file mode 100644 index 000000000..67c376bec Binary files /dev/null and b/_static/mag-glass.png differ diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 000000000..d96755fda Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 000000000..7107cec93 Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 000000000..0d49244ed --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,75 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #333333 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #208050 } /* Literal.Number.Bin */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sa { color: #4070a0 } /* Literal.String.Affix */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #06287e } /* Name.Function.Magic */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 000000000..b08d58c9b --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,620 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + "Search finished, found ${resultCount} page(s) matching the search query." + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score + boost, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 000000000..8a96c69a1 --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/_static/tabs.css b/_static/tabs.css new file mode 100644 index 000000000..957ba60d6 --- /dev/null +++ b/_static/tabs.css @@ -0,0 +1,89 @@ +.sphinx-tabs { + margin-bottom: 1rem; +} + +[role="tablist"] { + border-bottom: 1px solid #a0b3bf; +} + +.sphinx-tabs-tab { + position: relative; + font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif; + color: #1D5C87; + line-height: 24px; + margin: 0; + font-size: 16px; + font-weight: 400; + background-color: rgba(255, 255, 255, 0); + border-radius: 5px 5px 0 0; + border: 0; + padding: 1rem 1.5rem; + margin-bottom: 0; +} + +.sphinx-tabs-tab[aria-selected="true"] { + font-weight: 700; + border: 1px solid #a0b3bf; + border-bottom: 1px solid white; + margin: -1px; + background-color: white; +} + +.sphinx-tabs-tab:focus { + z-index: 1; + outline-offset: 1px; +} + +.sphinx-tabs-panel { + position: relative; + padding: 1rem; + border: 1px solid #a0b3bf; + margin: 0px -1px -1px -1px; + border-radius: 0 0 5px 5px; + border-top: 0; + background: white; +} + +.sphinx-tabs-panel.code-tab { + padding: 0.4rem; +} + +.sphinx-tab img { + margin-bottom: 24 px; +} + +/* Dark theme preference styling */ + +@media (prefers-color-scheme: dark) { + body[data-theme="auto"] .sphinx-tabs-panel { + color: white; + background-color: rgb(50, 50, 50); + } + + body[data-theme="auto"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); + } + + body[data-theme="auto"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 1px solid rgb(50, 50, 50); + background-color: rgb(50, 50, 50); + } +} + +/* Explicit dark theme styling */ + +body[data-theme="dark"] .sphinx-tabs-panel { + color: white; + background-color: rgb(50, 50, 50); +} + +body[data-theme="dark"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); +} + +body[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 2px solid rgb(50, 50, 50); + background-color: rgb(50, 50, 50); +} diff --git a/_static/tabs.js b/_static/tabs.js new file mode 100644 index 000000000..48dc303c8 --- /dev/null +++ b/_static/tabs.js @@ -0,0 +1,145 @@ +try { + var session = window.sessionStorage || {}; +} catch (e) { + var session = {}; +} + +window.addEventListener("DOMContentLoaded", () => { + const allTabs = document.querySelectorAll('.sphinx-tabs-tab'); + const tabLists = document.querySelectorAll('[role="tablist"]'); + + allTabs.forEach(tab => { + tab.addEventListener("click", changeTabs); + }); + + tabLists.forEach(tabList => { + tabList.addEventListener("keydown", keyTabs); + }); + + // Restore group tab selection from session + const lastSelected = session.getItem('sphinx-tabs-last-selected'); + if (lastSelected != null) selectNamedTabs(lastSelected); +}); + +/** + * Key focus left and right between sibling elements using arrows + * @param {Node} e the element in focus when key was pressed + */ +function keyTabs(e) { + const tab = e.target; + let nextTab = null; + if (e.keyCode === 39 || e.keyCode === 37) { + tab.setAttribute("tabindex", -1); + // Move right + if (e.keyCode === 39) { + nextTab = tab.nextElementSibling; + if (nextTab === null) { + nextTab = tab.parentNode.firstElementChild; + } + // Move left + } else if (e.keyCode === 37) { + nextTab = tab.previousElementSibling; + if (nextTab === null) { + nextTab = tab.parentNode.lastElementChild; + } + } + } + + if (nextTab !== null) { + nextTab.setAttribute("tabindex", 0); + nextTab.focus(); + } +} + +/** + * Select or deselect clicked tab. If a group tab + * is selected, also select tab in other tabLists. + * @param {Node} e the element that was clicked + */ +function changeTabs(e) { + // Use this instead of the element that was clicked, in case it's a child + const notSelected = this.getAttribute("aria-selected") === "false"; + const positionBefore = this.parentNode.getBoundingClientRect().top; + const notClosable = !this.parentNode.classList.contains("closeable"); + + deselectTabList(this); + + if (notSelected || notClosable) { + selectTab(this); + const name = this.getAttribute("name"); + selectNamedTabs(name, this.id); + + if (this.classList.contains("group-tab")) { + // Persist during session + session.setItem('sphinx-tabs-last-selected', name); + } + } + + const positionAfter = this.parentNode.getBoundingClientRect().top; + const positionDelta = positionAfter - positionBefore; + // Scroll to offset content resizing + window.scrollTo(0, window.scrollY + positionDelta); +} + +/** + * Select tab and show associated panel. + * @param {Node} tab tab to select + */ +function selectTab(tab) { + tab.setAttribute("aria-selected", true); + + // Show the associated panel + document + .getElementById(tab.getAttribute("aria-controls")) + .removeAttribute("hidden"); +} + +/** + * Hide the panels associated with all tabs within the + * tablist containing this tab. + * @param {Node} tab a tab within the tablist to deselect + */ +function deselectTabList(tab) { + const parent = tab.parentNode; + const grandparent = parent.parentNode; + + Array.from(parent.children) + .forEach(t => t.setAttribute("aria-selected", false)); + + Array.from(grandparent.children) + .slice(1) // Skip tablist + .forEach(panel => panel.setAttribute("hidden", true)); +} + +/** + * Select grouped tabs with the same name, but no the tab + * with the given id. + * @param {Node} name name of grouped tab to be selected + * @param {Node} clickedId id of clicked tab + */ +function selectNamedTabs(name, clickedId=null) { + const groupedTabs = document.querySelectorAll(`.sphinx-tabs-tab[name="${name}"]`); + const tabLists = Array.from(groupedTabs).map(tab => tab.parentNode); + + tabLists + .forEach(tabList => { + // Don't want to change the tabList containing the clicked tab + const clickedTab = tabList.querySelector(`[id="${clickedId}"]`); + if (clickedTab === null ) { + // Select first tab with matching name + const tab = tabList.querySelector(`.sphinx-tabs-tab[name="${name}"]`); + deselectTabList(tab); + selectTab(tab); + } + }) +} + +if (typeof exports === 'undefined') { + exports = {}; +} + +exports.keyTabs = keyTabs; +exports.changeTabs = changeTabs; +exports.selectTab = selectTab; +exports.deselectTabList = deselectTabList; +exports.selectNamedTabs = selectNamedTabs; diff --git a/_static/tcs_theme.css b/_static/tcs_theme.css new file mode 100644 index 000000000..28e4bc022 --- /dev/null +++ b/_static/tcs_theme.css @@ -0,0 +1,573 @@ +/* -- Extra CSS styles for content (RTD theme) ----------------------- */ + +/* make the page width fill the window */ +.wy-nav-content { + max-width: 1100px; + background: linear-gradient(white 58px, #f2f4f5 58px 100%); + padding-top: 10px; + padding-right: 20px; + padding-left: 20px; + padding-bottom: 20px; +} + +.wy-nav-content-wrap .wy-nav-content { + padding-top: 10px; +} + +.wy-nav-side { + background: #007ab2; +} +/* (temporarily) add an under development tagline to the bread crumb +.wy-breadcrumbs::after { + content: " (Content under development)"; + background-color: #FFFACD; + color: red; + font-weight: bold; +} +*/ + +/* code block highlight color in rtd changed to lime green, no no no */ + +.rst-content tt.literal, .rst-content code.literal, .highlight { + background: #f0f0f0; +} +.rst-content tt.literal, .rst-content code.literal { + color: #000000; +} + +/* Make the version number more visible */ +.wy-side-nav-search>div.version { + color: rgba(255,255,255,1); +} + + +.wy-side-nav-search input[type=text] { + border-radius: 0px; + padding: 0px 0px; + padding-left: 20px; + box-shadow: none; + border: 0; + outline: 0; + background: transparent; + border-bottom: 1px solid white; + color: white; +} + +::placeholder { + color: white; +} + + +/* squish the space between a paragraph before a list */ +div > p + ul, div > p + ol { + margin-top: -20px; +} + +/* add some space before the figure caption */ +p.caption { + border-top: 1px solid; + margin-top: 1em; +} + +/* add a colon after the figure/table number (before the caption) */ +span.caption-number::after { + content: ": "; +} + +p.extrafooter { + text-align: right; + margin-top: -36px; +} + +table.align-center { + display: table !important; +} + + +.code-block-caption { + color: #000; + font: italic 85%/1 arial,sans-serif; + padding: 1em 0; + text-align: center; +} + +/* make .. hlist:: tables fill the page */ +table.hlist { + width: 95% !important; +} + +/* override rtd theme white-space no-wrap in table heading and content */ +th,td { + white-space: normal !important; +} + +/* tweak for doxygen-generated API headings (for RTD theme) */ +.rst-content dl.group>dt, .rst-content dl.group>dd>p { + display:none !important; +} +.rst-content dl.group { + margin: 0 0 12px 0px; +} +.rst-content dl.group>dd { + margin-left: 0 !important; +} +.rst-content p.breathe-sectiondef-title { + text-decoration: underline; /* for API sub-headings */ + font-size: 1.25rem; + font-weight: bold; + margin-bottom: 12px; +} + +.rst-content div.breathe-sectiondef { + padding-left: 0 !important; +} + +/*Begin support for collapsbile sections*/ + +.clps1 { + font-size: 175%; +} + +.clps2 { + font-size: 150%; +} + +.clps3 { + font-size: 125%; +} + +.clps4 { + font-size: 115%; +} + +.clps5 { + font-size: 110%; +} + +.clps6 { + font-size: 100%; +} + +.collapsible { + margin-left: -10px; + background-color: #f1f1f1; + cursor: pointer; + padding: 18px 18px 18px 10px; + width: 100%; + border: none; + text-align: left; + outline: none; + font-weight: 700; + font-family: "Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif; +} + +.collapsible:hover { + background-color: #d8d8d8; +} + +.collapsible:after { + content: '\002B'; + font-weight: bold; + float: right; + margin-left: 5px; +} + +.collapsible.active:after { + content: "\2212"; +} + +.content-collapse { + overflow: hidden; + /*transition: max-height 0.2s ease-out;*//*removed as it was breaking nested collapsible sections*/ +} + +/*Fix for permalinks to collapsible sections*/ + +button a.headerlink { + visibility: hidden; +} + +button a.headerlink:after { + content: "\f0c1"; + font-size: 14px; + font-family: FontAwesome; + font-weight: normal; +} + +button:hover a.headerlink:after { + visibility: visible; +} + +/*End support for collapsbile sections*/ + +/*Begin support for custom Clear Linux header*/ +#header { + width: 100%; + display: block; + font-family: "IntelClear-Regular", Helvetica, Arial, sans-serif; + font-size: 16px; + } + +.padding-md--left-right { + padding-left: 2.6%; + padding-right: 2.6%; + display: flex; + justify-content: space-between; +} + +.header__site_info { + display: inline-block; +} + +.header__site_img_object { + height: 50px; +} + +.header__site_info_name { + vertical-align: middle; + display: inline-block; + height: 50px +} + +#header__site_info_name a:link { + color: black; +} + +#header__site_info_name a:visited { + color: black; +} + +.header__menu { + text-align: right; + display: inline-block; +} + +.header__menu_list li { + display: inline; + margin-left: 20px; +} + +.header__menu_list li a { + color: black; +} + +.header__menu_list_item { + display: inline; + position: relative; + margin-bottom: 0; + margin-left: 0; + min-width: 1px; + max-width: 100%; + padding: 0; + text-align: left; + /*top: 35px;*/ +} + +.header__menu_list_item.yellow > a::before { + color: #ffdf4d; +} + +.header__menu_list_item.green > a::before { + color: #009B93; +} + +.header__menu_list_item.purple > a::before { + color: #6E4C9F; +} + +.header__menu_list_item.blue > a::before { + color: #358CCB; +} + +.header__menu_list_item > a::before { + content: '•'; + font-size: 35px; + margin-right: 10px; + position: relative; + top: 5px; + left: 5px; +} + +.header__banner { + width: 120%; + margin-left: -3.236em; + background-image: url(https://stg.clearlinux.org/sites/default/files/bg_developer_0.png); +} + +.header__banner_title { + display: block; + color: white; + font-size: 36px; + font-family: "IntelClear-Bold", Helvetica, Arial, sans-serif; + margin-left: 0.67em; + line-height: 100px; +} + +/*End support for custom Clear Linux header*/ + +/*Adds a bit of spacing after the last paragraph in a bulleted list*/ +/*.wy-plain-list-disc li p:last-child, .rst-content .section ul li p:last-child, .rst-content .toctree-wrapper ul li p:last-child, article ul li p:last-child { + margin-bottom: 10px; +}*/ + +div.admonition ul { + margin-top: 20px; +} + +div#trademarks { + color: gray; +} + +/*Adds magnifying glass to search box*/ +#clear-docs-search { + background: url(./mag-glass.png) left no-repeat; + background-size: 15px 15px; +} + +.active-status { + color:#358ccb; +} + +.wip-status { + color:#59ca6b; +} + +.deprecated-status { + color:#f94f24; +} + +.pending-delete-status { + color:#ce2029; +} + +/*Begin support for code blocks with $ signs that aren't copied with content*/ + +.bash-dollar:before { + content: '$ '; +} + +/*End support for code blocks with $ signs that aren't copied with content*/ + +/*Begin support for labeled code-blocks - need to add an entry for every type of code-block that needs to be labeled*/ + +div.highlight-powershell .highlight:before{ + background: #909090; + color: white; + content: " PowerShell "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-python .highlight:before{ + background: #909090; + color: white; + content: " Python "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-ShellSession .highlight:before{ + background: #909090; + color: white; + content: " Shell "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-console .highlight:before{ + background: #909090; + color: white; + content: " Console "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-rst .highlight:before{ + background: #909090; + color: white; + content: " reStructuredText "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-rest .highlight:before{ + background: #909090; + color: white; + content: " reStructuredText "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-yaml .highlight:before{ + background: #909090; + color: white; + content: " yaml "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-bash .highlight:before{ + background: #909090; + color: white; + content: " bash "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-diff .highlight:before{ + background: #909090; + color: white; + content: " Diff "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-c .highlight:before{ + background: #909090; + color: white; + content: " c "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-json .highlight:before{ + background: #909090; + color: white; + content: " json "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-spec .highlight:before{ + background: #909090; + color: white; + content: " spec "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-perl .highlight:before{ + background: #909090; + color: white; + content: " Perl "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-php .highlight:before{ + background: #909090; + color: white; + content: " php "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.highlight-xml .highlight:before{ + background: #909090; + color: white; + content: " xml "; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; + font-size: 14px; + white-space: pre; +} + +div.linenodiv:before { /*add extra new line to make sure code and line numbers align*/ + content: '\00000a'; + white-space: pre; +} + +/*End support for labeled code-blocks*/ + +/*Begin support for multi-column sections*/ + +.column { + float: left; + width: 350px; + padding: 10px; + margin: 10px; + border: 10px; + background: white; +} + +.column.narrow { + width: 300px; + height: 450px; +} + +.column.featurecard { + background: #CCE9F5; + width: 300px; +} + +.column.verticalcard { + height: 615px; + overflow: auto; +} + +/* Clear floats after the columns */ +.multicolumns:after { + content: ""; + display: table; + clear: both; +} + +.colh3 { + font-size: 125%; + font-weight: 700; + font-family: "Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif; +} + +.colh2 { + font-size: 150%; + font-weight: 700; + font-family: "Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif; +} + +.video.docutils.container { + margin: 10px; + width:720px; + height:405px; +} + +/*End support for multi-column sections*/ + +/*Start fix for changes made to definition lists in sphinx/rtd post version 2.0*/ + +.rst-content dl:not(.docutils) dt { + border-top: none; + background: none; +} + +/*end fix to definition lists*/ + +/*start formatting support for horizontal bullet list without bullets in footer*/ +ul.footer__menu_list { + display: inline-flex; +} + +li.footer__menu_list { + margin-right: 30px; +} +/*end footer bullet list support*/ + +/*Add drop shadow to figures*/ + +div.figure.dropshadow img { + box-shadow: 10px 10px 10px LightGray; +} + +/*end figure drop shadow*/ \ No newline at end of file diff --git a/_static/tcs_theme.js b/_static/tcs_theme.js new file mode 100644 index 000000000..e428762d2 --- /dev/null +++ b/_static/tcs_theme.js @@ -0,0 +1,76 @@ +var i; +var contents = document.getElementsByClassName("content-collapse section"); + +var bashDollarDivs = document.getElementsByClassName("bash-dollars highlight-bash"); + +for (i = 0; i< bashDollarDivs.length; i++) { + _pre = bashDollarDivs[i].querySelectorAll("pre"); + for (j = 0; j < _pre.length; j++) { + console.log(_pre[j]); + _pre[j].innerHTML=""+(_pre[j].textContent.split("\n").filter(Boolean).join("\n"))+""; + } +} + +//needed for nested collapsible sections - otherwise the top container +//won't resize after expanding a child. +function resetActiveCollapsedSections() { + + var sections = document.getElementsByClassName("content-collapse section"); + + //for (i = 0; i < sections.length; i++) { + for (i = sections.length -1; i >= 0; i-- ){ + + if (sections[i].style.maxHeight != "0px"){ + sections[i].style.maxHeight = sections[i].scrollHeight + "px"; + } + } +} + +for (i = 0; i < contents.length; i++) { + + //Make sure the "content-collapse section" class is occurring in
+ if (contents[i].tagName.toLowerCase() == 'div') { + var element = contents[i].children[0]; + var element_type = element.tagName.toLowerCase(); + var btn_id; + var divElement; + + divElement = contents[i]; + btn_id = contents[i].id; + + //if the next element is a span skip to the header + if (element_type == 'span') { + element = contents[i].children[1]; + element_type = element.tagName.toLowerCase(); + } else { + divElement.id = ""; + } + + var btn = document.createElement("BUTTON"); + //If it is a header capture which level and pass on to button + if (element_type.length == 2 && element_type[0] == 'h') { + var newClass = 'clps' + element_type[1]; + //collapses the section by default only if javascript is working + contents[i].style.maxHeight = 0; + //Build the button and define behavior + btn.className += " " + newClass; + btn.innerHTML = element.innerHTML; + btn.className += " collapsible"; + btn.id = btn_id; + btn.addEventListener("click", function() { + this.classList.toggle("active"); + var content = this.nextElementSibling; + if (content.style.maxHeight != "0px"){ + content.style.maxHeight = 0; + } else { + content.style.maxHeight = content.scrollHeight + "px"; + } + resetActiveCollapsedSections(); //reset the size of parent containers + }); + + //Add the button to the page and remove the header + contents[i].parentNode.insertBefore(btn, contents[i]); + contents[i].removeChild(element); + } + } +} diff --git a/about.html b/about.html new file mode 100644 index 000000000..1d5593183 --- /dev/null +++ b/about.html @@ -0,0 +1,1474 @@ + + + + + + + + + + About — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

About

+

Clear Linux* OS does things differently. Our software architecture provides a +unique and innovative platform for Linux* developers focused on +performance and security for compute, server, and the cloud.

+ +
+

What is Clear Linux OS?

+

Clear Linux OS is an open source, rolling-release Linux distribution, optimized for +performance and security from the cloud to the Edge. Designed from the ground up, +Clear Linux OS provides an industry blueprint on how to incorporate Intel® architecture +features for a modern, modular Linux OS. Clear Linux OS is not based on any other Linux +distro.

+
+
+

What Clear Linux OS isn’t?

+

Clear Linux OS is not intended to be a general-purpose Linux distribution, suitable +for novice end-users. While we ship common applications, our purpose isn’t +to make an OS for routine desktop tasks and provide immunity from all +security threats in all situations. Our unique focus means that what we consider essential use cases, optional use cases, or even unsupported use cases, differs from other Linux distros. See our target audience below.

+
+
+

Is Clear Linux OS completely Open Source?

+

Clear Linux OS aims to be completely open source. Our project source code and +packages source code are available on GitHub*. When considering projects +for inclusion, we check that they are in active development and are well +maintained. We have a very strict requirement for not accepting proprietary +packages and non-open source components. For example, many Linux distros +may not be able to include certain media codecs due to +licensing restrictions, but manual installation and third party alternatives are available.

+
+
+

Who is the target audience?

+

Clear Linux OS mainly targets professionals in IT, DevOps, Cloud/Container deployments, and AI.

+

Rather than making a standard Linux distribution, the Clear Linux OS team decided to +build a unique Linux distro. Developing a distro in house allows us to experiment and iterate faster, which means we continually optimize performance and deliver security patches, several times per week. Yet our experiments are only valuable if our software architecture gives you the freedom to innovate, too. To improve manageability, Clear Linux OS employs a Stateless design, separating user and system management.

+

We leverage the pool of knowledge and skills at Intel to drive improvements to Clear Linux OS.

+

Intel has worked with the Linux community and other distros for many years. +Understanding what it takes to integrate features in our own Linux distro +helps us collaborate with other distro owners and submit enhancements to +upstream. We demonstrate the value of our distro by offering users the same +tools we use. For example, mixer, a tool unique to Clear Linux OS, allows users +to build custom derivatives and act as their own OSV.

+

For more details on Clear Linux OS features, visit our Clear Linux guides.

+
+
+

How does Clear Linux OS address security?

+

Several security features are designed to work +out-of-the-box, yet they’re not intended to be intrusive. We focus on +essential use cases and ignore unwanted or unsupported use cases. +For example, while Clear Linux OS does not enable antivirus by default, we provide a +bundle for it (clamav). We leave antivirus configuration to our users. +In addition, firewalls are less important if the OS doesn’t expose services +to the outside by default. In Clear Linux OS, we enforce this strategy by disabling +network services by default - e.g. mariadb listens on a UNIX socket; +nginx won’t listen at all; and other services similarly are restricted +from being accessed over the network. This strategy alone makes firewall +software much less urgent–there simply isn’t anything that a firewall could +easily block.

+
+
+

What’s the thinking around Server vs. Desktop?

+

Clear Linux OS focuses on performance for server and cloud use-cases first because +many design decisions associated with them are applicable to other +use-cases, such as IoT and the desktop client. While our initial focus was +on the command line, we realized that many people valued the ease-of-use of +a desktop environment. Whereas in the past we tried to accommodate those +interested in a desktop version, we were forced to confront clear limits as +to how we could meet this need. Clear Linux OS minimizes the customizations and patches in support of the desktop and provides a generic GNOME implementation. Other window managers or desktops are available; however, testing in Clear Linux OS is focused on GNOME.

+
+
+

What makes Clear Linux OS different?

+
+

Release Cadence

+

Clear Linux OS updates are based on a rolling release that can occur daily, up to a few +times per week. Each release has a unique version number that identifies +every component in the OS from kernel, to driver, to tool, to GUI +application. Most components are included in entities called bundles.

+
+
+

Updates

+

By default, Clear Linux OS automatically checks for updates, ensuring the latest +performance and security fixes are installed as soon as they are available. +Clear Linux OS stays in lockstep with upstream for current security upgrades and is +designed to rapidly deliver security mitigations to customers. +swupd is designed to manage updates and bundles.

+
+
+

Ease of Use

+

Clear Linux OS makes it easier to manage a number of difficult problems.

+
    +
  • Autoproxy makes it possible for Clear Linux OS tools to operate in some proxy +environments without needing to be configured.

  • +
  • Stateless means that configuration settings are easier to manage +and remain untouched when system software is updated.

  • +
  • swupd simplifies managing software and maintaining +compatibility.

  • +
+
+
+

Custom Derivatives

+

The same tools used to build the Clear Linux OS are available in the OS. These tools can be used to create a custom distribution that continues to benefit from upstream rolling releases.

+
+Creating and managing a Clear Linux* OS  version (or derivative) +
+

Figure 1: Creating and managing a Clear Linux* OS version (or derivative)

+
+
+
+
+

Create

+

To create a custom distribution you need to understand how to use the +autospec and mixer tools. Additional training materials are available in the how-to-clear GitHub project to help you get started with Clear Linux OS tools.

+
+
+

Deploy

+

We also provide training on how to Deploy at Scale.

+
+
+

Administrate

+

Clear Linux OS provides a Telemetrics solution for collecting useful information +about a deployment, as well as Debug system capabilities.

+
+
+
+

Why create new components rather than modifying existing projects?

+

One question that’s often asked: “Why did you develop your own solution +instead of using <XYZ>?” (e.g. swupd post). We do evaluate existing +projects for inclusion in Clear Linux OS, yet there are cases where our unique +architecture and components would require too much customization to use +off-the-shelf projects. In other situations, we may feel that using a new +language to develop the component would give us a performance advantage, +ease code development and maintenance, and grow the skills of our engineers +on new and upcoming programming languages. And yes, sometimes there are +personal biases for and against some projects by the architects and +engineers. We tend to move fast, and sometimes it’s easier to live with +suboptimal choices until we have the time or incentive to re-architect them +properly.

+
+
+

Which Components are used in Clear Linux?

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Component

Enabled in OS/Bundle

Optional

OS Installer

Clear Linux installer

Bootloader

systemd-boot (UEFI) / syslinux (Legacy)

Boot Manager

Clear Linux Boot Manager

Configuration initialization and management

NA

micro-config-drive (minimal cloud-init), Ansible

Software component installer, manager, updater

swupd

Software bundle generator -

mixer and Clear Linux Distro Factory

Software package builder

autospec

Software debugging

NA

clr-debug-info

Unified TLS Trust Store Management

clrtrust

System and software telemetry

NA

Telemetrics (disabled by default)

File system

EXT4 (default for rootfs), VFAT, EXT2 and EXT3, F2FS

Disk encryption

NA

LUKS

System /Service manager

systemd

Display manager

GNOME

KDE, Xfce, lightdm, sddm (see Clear Linux store)

Display services (Desktop installed)

X.Org

Wayland compositor

Network services

NetworkManager by default, systemd-networkd See Note below.

SSH Port scanning blocker

Tallow

Firewall

NA

iptables and firewalld

Antivirus

NA

ClamAV*

Web browser

Lynx or links for text environments, Firefox* for GUI

Additional Software

Supplied Bundles

Flatpak, 3rd-party software bundles

+
+

Note

+

The Clear Linux OS OS images targeted for cloud deployments continue to use +systemd-networkd to manage network connections. In earlier Clear Linux OS, +systemd-networkd was used to manage Ethernet interfaces and NetworkManager was used for wireless interfaces.

+
+

Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/collaboration/collaboration.html b/collaboration/collaboration.html new file mode 100644 index 000000000..872ce2653 --- /dev/null +++ b/collaboration/collaboration.html @@ -0,0 +1,1264 @@ + + + + + + + + + + Contribute — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Contribute

+

There are multiple ways to help improve our documentation:

+ +

All contributions must follow our code of conduct.

+
+

Contribute via GitHub

+

Our documentation is hosted in GitHub and we follow the standard GitHub flow. +Here are the basic steps for contributing:

+
    +
  1. Clone the documentation repository.

  2. +
  3. Create your own fork of the repository.

  4. +
  5. Create a branch for your contribution.

  6. +
  7. Add your commits.

  8. +
  9. Open a pull request.

  10. +
  11. Discuss, review, and update your contributions.

  12. +
  13. Once the maintainer approves, your contribution is merged and published as +part of the documentation.

  14. +
+
+
+

Contribution guidelines

+

The Clear Linux OS documentation is written using reStructuredText. Use our guidelines +and best practices to write consistent, readable documentation. If you’re writing a tutorial, review our skill levels to better target a user group.

+ +
+
+

References

+

We use the following references for grammar, style, and formatting:

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/collaboration/structure-formatting.html b/collaboration/structure-formatting.html new file mode 100644 index 000000000..1f8042abb --- /dev/null +++ b/collaboration/structure-formatting.html @@ -0,0 +1,1690 @@ + + + + + + + + + + Structure and formatting — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Structure and formatting

+

Content should be organized to support scanning. Consistent organization, +formatting, and writing style helps readers quickly find what they need and to +understand the content more effectively. This document describes our +organization and formatting guidelines.

+

Refer to Writing guide to learn how we keep our documents clear and +concise.

+ +
+

Markup

+

Our documentation is written in the reStructuredText markup language, using +Sphinx roles and directives. We use Sphinx to generate the final documentation. +You can read more about reStructuredText and Sphinx on their respective +websites:

+ +

You can view the content directly in the .rst markup files, or generate the HTML +content by installing and building the documentation locally. To run the +documentation locally, follow the instructions found in the +documentation repository README.

+
+

New pages

+

There are a few additional steps to consider when adding a new page to the +documentation. First, identify where your new page should be located within the +existing Documentation organization. Second, make sure the new page is picked +up in the Sphinx build and easily linkable from other content.

+

Each page must be included in a Sphinx toctree in order to be included in the +documentation content tree. Typically, pages are added to the section landing +page toctree.

+

For example, the Contribute page toctree looks like:

+
.. toctree::
+   :maxdepth: 1
+
+   writing-guide
+   structure-formatting
+
+
+

Additionally, each page must include a uniquely named reST label directly before +the page title, to enable the Sphinx ref role for linking to a page.

+

For example, this page “Structure and formatting” has the label +.. _structure-formatting:

+
.. _structure-formatting:
+
+Structure and formatting
+########################
+
+
+

This page can then be referenced from other pages in the documentation using the +:ref: role:

+
:ref:`structure-formatting`
+
+
+
+
+
+

Documentation organization

+

The documentation is organized into five general sections:

+
    +
  1. Concepts: Introduction and overview of Clear Linux OS specific concepts or +features.

  2. +
  3. Get started: Information about getting started with Clear Linux OS.

  4. +
  5. Guides: Detailed information and instruction on using Clear Linux OS features.

  6. +
  7. Tutorials: Step-by-step instruction for using Clear Linux OS in specific use cases.

  8. +
  9. Reference: Supplementary and reference information for Clear Linux OS.

  10. +
+
+

Page structure

+

Each page in the documentation should follow the basic format of:

+
    +
  • Overview: 1-2 sentences describing what this page shows and why it matters

  • +
  • Prerequisites: Describe any pre-work necessary to the content (if appropriate)

  • +
  • Content

  • +
  • Next steps: List links to next steps (if appropriate)

  • +
  • Related topics: List links to related content (if appropriate)

  • +
+
+
+

Headings

+

Use headings to section and organize your content for better readability and +clarity.

+
    +
  • All files must have a top level heading, which is the title for the page.

  • +
  • Up to three additional levels of headings are allowed under the title heading.

  • +
  • Each heading should be followed by at least one paragraph of content. Avoid +two or more consecutive headings.

  • +
+

Refer to the Writing guide for tips on using headings to create +scannable content.

+

To mark up headings in the .rst file:

+
    +
  • Use hash-tags to underline the file’s main title:

    +
    Main title
    +##########
    +
    +
    +
  • +
  • Use asterisks to underline the file’s first level headings:

    +
    First level heading
    +*******************
    +
    +
    +
  • +
  • Use equal signs to underline the file’s second level of headings:

    +
    Second level heading
    +====================
    +
    +
    +
  • +
  • Use dashes to underline the file’s third level of headings:

    +
    Third level heading
    +-------------------
    +
    +
    +
  • +
+
+
+

In-page navigation

+

If a page has three or more sections, provide quick links to each section. Place +the quick links after the overview section.

+

Use the standard reST contents directive with depth: 1 for quick links.

+
+
+
+

Inline text formatting

+

We use the Microsoft Writing Style Guide as our starting point for text +formatting. We apply the formatting using reST and Sphinx markup.

+

Use our quick reference for the most commonly used inline text elements:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Element

Convention

reST/Sphinx

Acronyms

Define acronym when first used. After +first use and definition, use the +acronym only.

Use the :abbr: role, in +the following format:

+

:abbr:`Acronym (Def)`

+

Bundle names

Bold

Use the :command: role.

Callouts

Use .. note::

Code/command examples

Monospace, visually distinct +from rest of text. Use an +indented call-out box.

Use .. code-block:: +with the correct language +setting.

Commands

Bold

Use the :command: role.

Command flags

Bold

Use the :command: role.

Console output

Monospace, visual distinction +from rest of text. Use an +indented call-out box.

Use .. code-block:: +with console as the +language setting.

Emphasis

Italic

*strong*

Environment variables

Use the case format of the +environment variable.

Use :envvar:

Example commands with +optional or replaceable +parts

Use angle brackets for swapping +in the specific name, +e.g. <package-name>.

+

Use square brackets for optional +parts, +e.g. [–build].

+

Example URLs (not linked)

Plain text

File extensions

Lowercase

File names, directories, paths

Title style capitalization

Use the :file: role.

GUI labels

Use :guilabel:

Inline comments

Use ..

Keystrokes

Use :kbd:

Local navigation

.. contents:: :local: +with a depth of 1

Menu selection

Use :menuselection:

New terms

Italic for first use, normal for all +subsequent uses.

+

If it is used outside of the source +of definition, link the term.

+

*term*

Product name

Follow correct trademark and +attribution guidelines.

Tool names

Correctly capitalized, no quotes, +bold, or italics as the basic rule.

+

If the tool name is the command, like +most Linux tools, treat it like a +command.

+

If the tool name is lowercase and +used at the start of a sentence, use +bold.

+
+
+

White space and line length

+

Limit line length to 78 characters. The GitHub web interface forces this +limitation for readability.

+

Remove trailing whitespace from your documents.

+
+
+
+

Code blocks and examples

+

When providing example code or commands use the Sphinx code-block directive. +Select the appropriate syntax highlighting for the example command or code.

+

For example, if showing console output, use console highlighting:

+
.. code-block:: console
+
+
+

Sphinx provides other ways of marking up example code if needed.

+
+
+

Lists and instructions

+

Use a numbered list when the order or priority of the items is important, such +as step-by-step instructions.

+

Use a bulleted list when the order of the items is not important.

+

For both list types, keep all items in the list parallel. See +Parallelism.

+

Use standard reST list markup.

+
+

Numbered lists

+

Numbered lists are most frequently used for procedures. Use numbered lists to +show sequence for the items. Follow our guidelines for numbered lists:

+
    +
  • Make sure the list is sequential and not just a collection of items.

  • +
  • Introduce a numbered list with a sentence. End the setup text with a +colon. Example: “To configure the unit, perform the following steps:”

  • +
  • Each item in the list should be parallel.

  • +
  • Treat numbered list items as full sentences with correct ending +punctuation.

  • +
  • You may interrupt numbered lists with other content, if relevant, +e.g. explanatory text, commands, or code.

  • +
  • Second-level steps are acceptable; avoid third-level steps.

  • +
  • Avoid single-step procedures; the minimum number of steps in a procedure +is two.

  • +
  • Do not create numbered lists that emulate flowcharts. The reader should be +able to execute the list of steps from first to last without branching or +looping.

  • +
  • Avoid over-using numbered lists, except in procedural documents such as +tutorials and step-by-step guides.

  • +
+
+
+

Bulleted lists

+

Use bulleted lists to reduce wordiness and paragraph density, especially when +a sequence is not required. Here are some guidelines for bulleted lists:

+
    +
  • Introduce a bulleted list with a sentence. End the setup text with a +colon. Example: “To repair the unit, you will need the following items:”

  • +
  • Each item in the list should be parallel.

  • +
  • Avoid interrupting bulleted lists with other paragraph styles.

  • +
  • Second-level bullets are acceptable; avoid third-level bullets.

  • +
+

Use the correct ending punctuation for sentence style bullet lists. For example:

+

Use this:

+
When setting the user code, remember:
+
+* Use a number that has a meaning for you.
+* Change the code once a month.
+* Do not disclose the user code to anyone, including the security company.
+
+
+

Not this:

+
When setting the user code remember:
+
+* make the user code easy to remember. Use a number that has a meaning for you
+* change the code once a month
+* do not disclose the user code to anyone else. This includes the security
+  company
+
+
+
+
+

Instructions

+

When presenting instructions, such as in a tutorial, present them in a numbered +list according to these guidelines:

+
    +
  • Each step (list item) should describe one action.

  • +
  • If the same steps are repeated, refer to the earlier steps rather than +repeating them.

  • +
  • When a step includes a command or code block as an example, put the command +or code block after the step that includes them.

  • +
  • Use supporting images where appropriate. If the series of steps is supported +by one figure, refer to the figure in the introductory text.

    +

    For example: “See Figure 15 and do the following:”

    +

    When a series of steps is supported by two or more figures, refer to the +specific figure in the relevant step and show the figure immediately after +the reference. Do not write: “See figures 15 through 22 and do the +following:”

    +
  • +
+
+
+
+

Notices

+

We use four special types of notices: notes, cautions, warnings, and dangers. +Here are some specific rules and tips regarding use of these notices:

+
    +
  • Do not use a notice directly after a heading. Notices must follow a variant of +body text.

  • +
  • Do not include more than one notice in a single notice block.

  • +
  • Avoid back-to-back notices.

  • +
  • If back-to-back notices are not avoidable, make sure each distinct notice in +the notice block is clearly defined.

  • +
+

Use the standard reST admonition directive.

+
+

Notes, cautions, and warnings

+

Use notes sparingly. Avoid having more than one note per section. If you exceed +this number consistently, consider rewriting the notes as main body text.

+

Use cautions and warnings to alert readers of potential problems or pitfalls. +Use conditional phrases in cautions and warnings, such as “If you do X, then Y +will occur.”

+

These are examples of typical notices and the conditions for their usage:

+
+

Note

+

Notes are extra bits of information that supplement the main content. Notes +should be relatively short.

+
+
+

Caution

+

Cautions are low-level hazard messages that alert the user of possible +equipment, product, and software damage, including loss of data.

+
+
+

Warning

+

Warnings are mid-level hazards that are likely to cause product damage.

+
+
+
+ +
+

Images

+

Use images or figures to convey information that may be difficult to explain +using words alone. Well-planned graphics reduce the amount of text required to +explain a topic or example.

+

Follow these guidelines when using graphics in support of your documentation:

+
    +
  • Keep it simple. Use images that serve a specific purpose in your document, +and contain only the information the reader needs.

  • +
  • Avoid graphics that will need frequent updating. Don’t include information in +a graphic that might change with each release, such as product versions.

  • +
  • Use either PNG or JPEG bitmap files for screenshots and SVG files for vector +graphics.

  • +
  • Place the image immediately after the text it helps clarify, or as close as +possible.

  • +
  • Use the Sphinx figure directive to insert images and figures into the +document. Include both alt text, a figure name, and caption.

    +

    For example:

    +
    .. figure:: figures/topic-1.png
    +   :alt: An image supporting the topic.
    +
    +   Figure 1: This is the figure 1 caption.
    +
    +
    +
  • +
  • Include at least one direct reference to an image from the main text, using +the figure number. For example:

    +

    Use this:

    +
    Figure 1
    +
    +
    +

    Not this:

    +
    The figure above or below
    +
    +
    +
  • +
+

Images should follow these naming and location conventions:

+
    +
  • Save the image files in a figures folder at the same level as the file +that will reference the image.

  • +
  • Name image files according to the following rules:

    +
      +
    • Use only lower case letters.

    • +
    • Separate multiple words in filenames using dashes.

    • +
    • Name images using the filename of the file they appear on and add a number +to indicate their place in the file. For example, the third figure added to +the welcome.rst file must be named welcome-3.png.

    • +
    +
  • +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/collaboration/writing-guide.html b/collaboration/writing-guide.html new file mode 100644 index 000000000..f373cc789 --- /dev/null +++ b/collaboration/writing-guide.html @@ -0,0 +1,1646 @@ + + + + + + + + + + Writing guide — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Writing guide

+

We want our documentation to be easy to read and understand. This document +describes guidelines for writing documentation that is clear, concise, +confident, and courteous.

+

Refer to Structure and formatting for details on organizing content and how +we use reStructuredText and Sphinx.

+ +
+

Use simple English

+

Write using simple English: Be brief and communicate only the information that +is needed. Be friendly and informative. Emphasize clarity and avoid +unnecessary complicated or technical terms. Make the content accessible to +non-native speakers.

+
+

Be brief

+

Use short sentences and paragraphs. Stick to the principle of one main +idea per sentence, plus one additional point if needed. Each paragraph +should address one main idea. Remember the basic structure of a paragraph: +Introduction, body, and conclusion.

+
+
+

Be friendly

+

We write for our peers and want to be familiar. Take a personal tone as if you +were speaking directly to the reader. Use “you” to address the reader and “we” +to refer to our view. Be professional, respectful, and cooperative.

+

Assume your audience has the same level of technical understanding and expertise +as you did when you first started collaborating. Do not talk down to our +readers, but also do not assume they know everything about the subject. Offer +brief explanations or summaries of common knowledge if a significant portion of +readers might benefit.

+
+
+

Use simple words

+

Use simple words to increase reader comprehension and reduce ambiguity. Follow +our tips for making good word choices:

+
    +
  • Avoid jargon: Write for your audience, using everyday language where +possible, and technical terms where appropriate. Avoid clichés, idioms, and +metaphors.

  • +
  • Be consistent: Use one term for each concept or action and use it +consistently.

  • +
  • Avoid “fancy” words and phrases: If there is a simpler word or phrase, +use it.

    +

    For example:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Use this

    Not this

    start, begin

    commence

    so

    consequently

    more than

    in excess of

    if

    in the event of

    before

    prior to

    if you want

    should one wish

    use

    utilize

    example

    instance

    +
  • +
+
+
+

Avoid overuse of product name

+

Use product names only when necessary. Typically, you can rewrite sentences to +remove the product name with no change in meaning, which keeps the content +concise and scannable.

+

Avoid using the product name in page titles and headings.

+
+
+
+

Make content scannable

+

Organize your content to make it scannable for the reader, which helps them find +what they need quickly, and to understand the information more efficiently.

+
    +
  • Put the most important content first. Make sure your introduction clearly +communicates what the reader can find on the page. Present the point of the +document first, and organize supporting information towards the end of the +page.

  • +
  • Write scannable headings. Expect readers of documentation to skim and scan +the content, and to leave if they don’t find what they need quickly. Good +headings add organization to your content and help the reader to find and +understand content more effectively. Follow our guidelines for writing +effective Headings.

  • +
  • Write great link text. Great link text tells the reader what they can +expect when they click on a link. It also helps make the page more scannable. +Follow our guidelines for writing Link text.

  • +
+
+

Headings

+

Use these guidelines to write effective headings:

+
    +
  • Be concise and descriptive. Use only the words necessary to describe the +section.

  • +
  • Use sentence case. Capitalize only the first word and proper nouns in a +heading.

  • +
  • Avoid punctuation. Unless your heading is a question, don’t use sentence +punctuation in headings.

  • +
  • Use parallel structure. Headings at the same level should use the same +grammatical pattern. This provides structure to the document and helps users +find information more easily. See Parallelism.

  • +
  • Use strong verbs. Strong, active verbs get to the point. Avoid -ing verbs, +such as Running, Testing, etc.

  • +
+

For example, two headings at the same level:

+

Use this:

+
Install software
+
+Configure software
+
+
+

Not this:

+
Installing the Software on the Platform
+
+Software Configuration.
+
+
+
+ +
+
+

Use strong verbs

+

Passive verbs make writing stuffy and formal. Use strong verbs to get to the +point and avoid unnecessary words and phrases.

+
+

Use imperatives

+

Commands, also called imperatives, are the fastest and most direct way of giving +someone instructions. For example:

+

Use this:

+
Send it to me.
+
+
+

Not this:

+
I would appreciate it if you would send it to me.
+
+
+
+
+

Use present tense

+

Use simple present tense instead of future tense for most text. Search for the +words “will” or “shall” to find future tense instances. Future tense is +acceptable for conditional statements, such as in a caution or a warning. For +example:

+

Use this:

+
The system operates at a nominal temperature of 180 degrees Fahrenheit.
+
+
+

Not this:

+
The system will operate at a nominal temperature of 180 degrees Fahrenheit.
+
+
+
+
+

Avoid nominalizations

+

Avoid nominalizations, which are nouns formed from verbs.

+

For example:

+ + + + + + + + + + + + + + + + + + + + +

Verb

Nominalization

complete

completion

provide

provision

fail

failure

install

installation

+

For example:

+

Use this:

+
We discussed the matter.
+
+
+

Not this:

+
We had a discussion about the matter.
+
+
+

Or:

+

Use this:

+
IT has installed the software.
+
+
+

Not this:

+
IT has completed the installation of the software.
+
+
+
+
+

Avoid words ending in -ing

+

Avoid using words ending in -ing unless they are part of a technical name. For +example:

+

Use this:

+
There is no way to verify this.
+
+
+

Not this:

+
There is no way of verifying this.
+
+
+
+
+

Use the active voice

+

Use active voice whenever possible to show who or what is performing an +action.

+
    +
  • Active voice follows standard English word order: SUBJECT–VERB–OBJECT +(where the OBJECT is optional).

  • +
  • Passive voice reverses the order and weakens the verb: OBJECT–be VERB–by +SUBJECT (where the OBJECT is optional).

  • +
+

For example:

+

Use this:

+
I made a mistake.
+
+
+

Not this:

+
A mistake was made. *(By whom?)*
+
+
+

Or:

+

Use this:

+
We released version 2.0 in June.
+
+
+

Not this:

+
Version 2.0 was released in June.
+
+
+
+
+
+

Avoid long noun phrases

+

Noun phrases (a noun and other words that describe or modify it) can be +difficult to understand. Try to limit the number of modifiers in a noun phrase +to two. For example:

+

Use this:

+
Integration policies for power management mechanisms.
+
+
+

Not this:

+
Power management mechanism integration policies.
+
+
+
+
+

Parallelism

+

Parallelism refers to the practice of using similar patterns of grammar, and +sometimes length, to coordinate words, phrases, and clauses.

+

Use parallel construction in lists. The table below shows some unparallel +structures and how they can be made parallel with a little rewording.

+ + + + + + + + + + + + + + + + + + + + +

Parallel (do)

Unparallel (don’t)

    +
  1. Mount the panel.

  2. +
  3. Install the battery.

  4. +
  5. Wire the keypad.

  6. +
+
    +
  1. Mount the panel.

  2. +
  3. Battery installation.

  4. +
  5. Wiring the keypad.

  6. +
+

I like practicing my accordion, +reading sci-fi, and eating +peanut butter and pickle +sandwiches.

I like practicing my accordion, +reading sci-fi, and to eat +peanut butter and pickle +sandwiches.

For breakfast he likes coffee +and bacon.

For breakfast he likes coffee +and to fry bacon.

Apples or bananas are a good +snack.

Apples or a banana are a good +snack.

+
+
+

Grammar and punctuation

+

This section covers common grammatical topics relevant to our +documentation. For detailed explanations of correct grammar and punctuation, +use one of our preferred references.

+
+

Capitalization

+

The capitalization style for all documentation is sentence case. Words should +only be capitalized when they are proper nouns or refer to trademarked product +names.

+
+

Note

+

Do not capitalize a word to indicate it is more important than other +words. Never change the case of variable, function or file names - always +keep the original case.

+
+ +
+

Software version capitalization

+

When listing software or hardware version numbers, the word “version” or letter +“v” are lowercase. The v is closed with the number (no period).

+

For example:

+
    +
  • Widget Pro version 5.0

  • +
  • Widget Master v2.1.12

  • +
+
+
+
+

Contractions

+

Avoid using contractions, such as it’s, they’re, and you’re, because they may be +unclear to non-native English-speaking audiences.

+
+
+

Quotation marks

+

Follow these guidelines for quotation marks:

+
    +
  • Restrict use of quotation marks to terms as terms.

  • +
  • Do not use quotation marks for emphasis; use italics for emphasis.

  • +
  • Avoid using single-quote marks.

  • +
+
+
+

Commas and colons

+

This section addresses common use of commas, semicolons, and colons in our +documentation. Refer to one of our preferred references +for further details.

+
+

Use the serial comma

+

When writing a series of items, use the serial comma before the final and and +or to avoid confusion and ambiguity. For example:

+

Use this:

+
Mom, Dad, and I are going to the game.
+
+
+

Not this:

+
Mom, Dad and I are going to the game.
+
+
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/disclaimers.html b/disclaimers.html new file mode 100644 index 000000000..16d3f2d8a --- /dev/null +++ b/disclaimers.html @@ -0,0 +1,1219 @@ + + + + + + + + + + <no title> — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +

Disclaimer

+
+

Important

+

This documentation is a work in progress and is being provided for +informative purposes only. Because it is a work in progress, there are +parts that are either missing or will be revised as code development +continues.

+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/documentation_license.html b/documentation_license.html new file mode 100644 index 000000000..0afbac663 --- /dev/null +++ b/documentation_license.html @@ -0,0 +1,1217 @@ + + + + + + + + + + <no title> — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
This work is licensed under a Creative Commons +Attribution 4.0 International License + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/genindex-E.html b/genindex-E.html new file mode 100644 index 000000000..af7d39281 --- /dev/null +++ b/genindex-E.html @@ -0,0 +1,1234 @@ + + + + + + + + + + Index — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + +

Index – E

+ + + +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/genindex-H.html b/genindex-H.html new file mode 100644 index 000000000..e35c68569 --- /dev/null +++ b/genindex-H.html @@ -0,0 +1,1221 @@ + + + + + + + + + + Index — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + +

Index – H

+ + + +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/genindex-R.html b/genindex-R.html new file mode 100644 index 000000000..664920c99 --- /dev/null +++ b/genindex-R.html @@ -0,0 +1,1225 @@ + + + + + + + + + + Index — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + +

Index – R

+ + + + +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/genindex-Symbols.html b/genindex-Symbols.html new file mode 100644 index 000000000..d44811862 --- /dev/null +++ b/genindex-Symbols.html @@ -0,0 +1,1221 @@ + + + + + + + + + + Index — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + +

Index – Symbols

+ + + +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/genindex-V.html b/genindex-V.html new file mode 100644 index 000000000..4fd9a3b55 --- /dev/null +++ b/genindex-V.html @@ -0,0 +1,1221 @@ + + + + + + + + + + Index — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + +

Index – V

+ + + +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/genindex-all.html b/genindex-all.html new file mode 100644 index 000000000..d289f4389 --- /dev/null +++ b/genindex-all.html @@ -0,0 +1,1278 @@ + + + + + + + + + Index — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + +

Index

+ +
+ Symbols + | E + | H + | R + | V + +
+

Symbols

+ + +
+ +

E

+ + +
+ +

H

+ + +
+ +

R

+ + + +
+ +

V

+ + +
+ + + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/genindex.html b/genindex.html new file mode 100644 index 000000000..4e3b83bae --- /dev/null +++ b/genindex.html @@ -0,0 +1,1227 @@ + + + + + + + + + Index — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ + +

Index

+ +

Index pages by letter:

+ +
+

Symbols + | E + | H + | R + | V +

+ +

Full index on one page + (can be huge)

+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/bare-metal-install-desktop.html b/get-started/bare-metal-install-desktop.html new file mode 100644 index 000000000..b18379d98 --- /dev/null +++ b/get-started/bare-metal-install-desktop.html @@ -0,0 +1,1868 @@ + + + + + + + + + + Install Clear Linux* OS from the live desktop — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Install Clear Linux* OS from the live desktop

+

This page explains how to boot the Clear Linux* OS live desktop image, from which +you can install Clear Linux OS or explore without modifying the host system. +Alternatively, use a YAML configuration file +to install Clear Linux OS.

+ +
+

System requirements

+

Before installing Clear Linux OS, verify that the host system supports the +installation:

+ +
+
+

Preliminary steps

+
    +
  1. Visit our Downloads page.

  2. +
  3. Download the file clear-<release number>-live-desktop.iso, +also called the Clear Linux OS Desktop.

    +
    +

    Note

    +

    <release-number> is the latest Clear Linux OS auto-numbered release.

    +
    +
  4. +
  5. Follow your OS instructions to +create a bootable usb drive.

  6. +
+
+
+

Install from live image

+

After you download and burn the live desktop image on a USB drive, follow +these steps.

+
    +
  1. Insert the USB drive into an available USB slot.

  2. +
  3. Power on the system.

  4. +
  5. Open the system BIOS setup menu by pressing the F2 key. +Your BIOS setup menu entry point may vary.

  6. +
  7. In the setup menu, enable the UEFI boot and set the USB drive as the +first option in the device boot order.

  8. +
  9. Save these settings, e.g. F10, and exit.

  10. +
  11. Reboot the target system.

  12. +
+
+

Choose boot menu option

+
    +
  1. Choose one of the options shown in Figure 1.

    +
      +
    1. Follow Verify integrity of installer media (optional).

    2. +
    3. Select Clear Linux OS in the boot menu.

      +
      +Clear Linux OS in boot menu +
      +

      Figure 1: Clear Linux OS in boot menu

      +
      +
      +
      +

      Note

      +

      If no action is taken, the live image starts by default.

      +
      +
    4. +
    +
  2. +
+
+
+

Verify integrity of installer media (optional)

+

Use Verify ISO Integrity to verify the checksum of +the image burned to the installer media. The checksum ensures that the ISO +is uncorrupted (see Figure 1). For every ISO generated, the +clr-installer implants checksums, which are verified during +early boot stage as part of initrd.

+
    +
  1. Select Verify ISO Integrity. The media will be validated.

  2. +
  3. If the check passes, it will boot into the live image. Continue in +the next section.

  4. +
  5. If the check fails, a failure message appears.

    + +
  6. +
+
+
+

Launch the Clear Linux OS installer

+
    +
  1. After the live desktop image boots, scroll over the vertical +Activities menu at left.

  2. +
  3. Click the Clear Linux OS penguin icon to launch the installer, shown in Figure 2.

    +
    +Install Clear Linux OS icon +
    +

    Figure 2: Clear Linux OS installer icon

    +
    +
    +
  4. +
  5. After the installer is launched, it will appear as shown in Figure 3.

    +
    +|CL| Desktop Installer +
    +

    Figure 3: Clear Linux OS OS Desktop Installer

    +
    +
    +
  6. +
  7. In Select Language, select a language from the options, or +type your preferred language in the search bar.

  8. +
  9. Select Next.

  10. +
+
+

Network Proxy (optional)

+
    +
  1. Configure Network Proxy settings.

  2. +
  3. In the top right menu bar, select the Power button.

  4. +
  5. Select Wired Connected and then Wired Settings.

    +
      +
    1. In Network Proxy, select the Gear icon to view +options.

    2. +
    3. Select an option from Automatic, Manual or Disabled.

    4. +
    5. Close Network Proxy.

    6. +
    +
  6. +
  7. Close Settings.

  8. +
+
+
+
+
+

Minimum installation requirements

+

To fulfill minimum installation requirements, complete the +Required options. We also recommend completing Advanced options.

+
+

Note

+
    +
  • The Install button is only highlighted after you complete +Required options.

  • +
  • Check marks indicate a selection has been made.

  • +
  • The installer image contains the default bundles required for +installation. An Internet connection is only required if you install +additional bundles from Advanced options.

  • +
+
+
+
+

Clear Linux OS Desktop Installer

+

The Clear Linux OS Desktop Installer Main Menu appears as shown in Figure 4. To meet +the minimum requirements, enter values in all submenus for the +Required options. After you complete them, your selections appear +below submenus and a check mark appears at right.

+
+Clear Linux OS Desktop Installer - Main Menu +
+

Figure 4: Clear Linux OS Desktop Installer - Main Menu

+
+
+
+ +
+

Required options

+
+

Select Time Zone

+
    +
  1. From the Main Menu, select Select Time Zone. UTC is selected +by default.

  2. +
  3. In Select Time Zone, navigate to the desired time zone. +Or start typing the region and then the city. +(.e.g., America/Los_Angeles).

  4. +
  5. Select Confirm.

    +
    +Select System Timezone +
    +

    Figure 5: Select System Time Zone

    +
    +
    +
  6. +
+
+
+

Select Keyboard

+
    +
  1. From the Main Menu, select Select Keyboard.

  2. +
  3. Navigate to your desired keyboard layout. We select “us” for the +United States.

  4. +
  5. Select Confirm.

    +
    +Select Keyboard menu +
    +

    Figure 6: Select Keyboard menu

    +
    +
    +
  6. +
+
+
+

Select Installation Media

+
    +
  1. From the Main Menu, select Select Installation Media.

  2. +
  3. Choose an installation method: Safe Installation or +Destructive Installation.

    +
    +Select Installation Media +
    +

    Figure 7: Select Installation Media

    +
    +
    +
  4. +
+
+

Safe Installation

+

Use this method to safely install Clear Linux OS on media with available space, or +alongside existing partitions, and accept the Default partition schema. +If enough free space exists, safe installation is allowed.

+
+

Note

+

Clear Linux OS allows installation alongside another OS. Typically, when you boot +your system, you can press an F key to view and select a bootable +device or partition during the BIOS POST stage. Some BIOSes present the +Clear Linux OS partition, and you can select and boot it. However, other +BIOSes may only show the primary partition, in which case you will not be +able boot Clear Linux OS. Be aware of this possible limitation.

+
+
+
+

Destructive Installation

+

Use this method to destroy the contents of the target device, install Clear Linux OS +on it, and accept the Default partition schema.

+
+
+

Disk encryption

+

For greater security, disk encryption is supported using LUKS. Encryption is +optional.

+
    +
  1. To encrypt the root partition, select Enable Encryption, +as shown in Figure 8.

    +
    +Enable Encryption +
    +

    Figure 8: Enable Encryption

    +
    +
    +
  2. +
  3. When Encryption Passphrase appears, enter a passphrase.

    +
    +Encryption Passphrase +
    +

    Figure 9: Encryption Passphrase

    +
    +
    +
    +

    Note

    +

    Minimum length is 8 characters. Maximum length is 94 characters.

    +
    +
  4. +
  5. Enter the same passphrase in the second field.

  6. +
  7. Select Confirm in the dialogue box.

    +
    +

    Note

    +

    Confirm is only highlighted if passphrases match.

    +
    +
  8. +
  9. Select Confirm in submenu.

  10. +
+
+
+

Advanced Installation

+

Use this method to manually partition the target media using gparted. +Our example uses the Default partition schema. The space you allocate for +root, or additional partitions, may vary.

+
    +
  1. Select Advanced Installation.

  2. +
  3. Select Partition Media, shown in Figure 11.

    +
    +Advanced Installation +
    +

    Figure 10: Advanced Installation

    +
    +
    +
  4. +
+
+
+

boot partition

+
    +
  1. Select the available target media shown as unallocated.

    +
    +Advanced Disk Partitioning +
    +

    Figure 11: Advanced Disk Partitioning

    +
    +
    +
  2. +
  3. Choose Device ‣ Create Partition Table.

  4. +
  5. In the Warning screen, under Select new partition table type +, select gpt from the pull-down menu.

  6. +
  7. Select Apply.

  8. +
  9. Select Partition ‣ New.

    +
    +

    Note

    +

    The /boot partition must be VFAT(FAT32).

    +
    +
  10. +
  11. In Create new Partition, complete the following fields to +match Figure 12. Don’t change other default values.

    +
      +
    • New size: 150

    • +
    • Partition name: CLR_BOOT

    • +
    • File system: fat32

    • +
    • Label: boot

    • +
    +
    +boot partition +
    +

    Figure 12: boot partition

    +
    +
    +
  12. +
  13. Select Add.

  14. +
+
+
+

swap partition (optional)

+

A swapfile is generated by default during installation. However, if you prefer to create a swap partition, follow the steps below.

+
    +
  1. With unallocated highlighted, select from the menu +Partition ‣ New.

  2. +
  3. In Create new Partition, complete the following fields to +match Figure 13. Don’t change other default values.

    +
      +
    • New size: 256

    • +
    • Partition name: CLR_SWAP

    • +
    • File system: linux-swap

    • +
    • Label: swap

    • +
    +
    +swap partition +
    +

    Figure 13: swap partition

    +
    +
    +
  4. +
  5. Select Add.

  6. +
+
+
+

root partition

+
    +
  1. With unallocated highlighted, select from the menu +Partition ‣ New.

  2. +
  3. In Create new Partition, complete the following fields to +match Figure 14. Don’t change other default values.

  4. +
  5. In New size, enter the desired size, or leave as is +to accept the default: remaining size.

    +
      +
    • New size: <varies>

    • +
    • Partition name: CLR_ROOT

    • +
    • File system: ext[234], XFS, or f2fs

    • +
    • Label: root

    • +
    +
    +root partition +
    +

    Figure 14: root partition

    +
    +
    +
  6. +
  7. After all partitions are defined, verify your partition +configuration is similar to Figure 15.

    +
    +Final partition configuration +
    +

    Figure 15: Final partition configuration

    +
    +
    +
  8. +
  9. Select Edit ‣ Apply All Operations.

  10. +
  11. A dialog box appears asking “Are you sure you want to apply the pending +operations?”

  12. +
  13. Select Apply.

  14. +
  15. When dialog Applying pending operations is complete, select +Close.

  16. +
  17. Select GParted ‣ Quit.

  18. +
+

You are returned to installer.

+
+
+
+

Manage User

+
    +
  1. In Required Options, select Manage User.

  2. +
  3. In User Name, enter a user name.

    +
    +Manage User +
    +

    Figure 16: Manage User

    +
    +
    +
  4. +
  5. In Login, create a login name. It must start with a letter +and can use numbers, hyphens, and underscores. Maximum length is 31 +characters.

  6. +
  7. In Password, enter a password. Minimum length is +8 characters. Maximum length is 255 characters.

  8. +
  9. In Confirm, enter the same password.

    +
    +

    Note

    +

    Administrator rights are selected by default. +For security purposes, the default user must be assigned as an +Administrator.

    +
    +
  10. +
  11. Select Confirm.

    +
    +

    Note

    +

    Select Cancel to return to the Main Menu.

    +
    +
  12. +
+
+

Modify User

+
    +
  1. In Manager User, select Manage User.

  2. +
  3. Modify user details as desired.

  4. +
  5. Select Confirm to save the changes you made.

    +
    +

    Note

    +

    Optional: Select Cancel to return to the Main Menu to +revert changes.

    +
    +
  6. +
+

Optional: Skip to Finish installation.

+
+
+
+

Telemetry

+

Choose whether to participate in telemetry. Telemetrics is a Clear Linux OS +feature that reports failures and crashes to the Clear Linux OS development +team for improvements.

+
    +
  1. From Required Options, select Telemetry.

  2. +
  3. Select Yes.

    +
    +Enable Telemetry +
    +

    Figure 17: Enable Telemetry

    +
    +
    +
  4. +
  5. If you don’t wish to participate, select No.

  6. +
+
+
+
+

Advanced options

+

After you complete the Required options, we recommend completing +Advanced options–though they’re not required. Doing so +customizes your development environment, so you’re ready to go immediately +after reboot.

+
+

Note

+

You can always add more bundles later with swupd.

+
+
+

Select Additional Bundles

+

This option is only available with a valid network connection. +Bundle selection is disabled if no network connection exists.

+
    +
  1. On the Advanced menu, select Select Additional Bundles.

  2. +
  3. Select your desired bundles.

    +
    +Bundle Selection +
    +

    Figure 18: Bundle Selection

    +
    +
    +
  4. +
  5. Select Confirm.

  6. +
  7. View the bundles that you selected.

    +
    +Select Additional Bundles +
    +

    Figure 19: Select Additional Bundles

    +
    +
    +
  8. +
+

Optional: Skip to Finish installation.

+
+
+

Assign Hostname

+
    +
  1. In Advanced Options, select Assign Hostname.

  2. +
  3. In Hostname, enter the hostname only (excluding the domain).

    +
    +Assign Hostname +
    +

    Figure 20: Assign Hostname

    +
    +
    +
    +

    Note

    +

    Hostname does not allow empty spaces. Hostname must start with an +alphanumeric character but may also contain hyphens. Maximum length of +63 characters.

    +
    +
  4. +
  5. Select Confirm.

  6. +
+

Optional: Skip to Finish installation.

+
+
+

Kernel Configuration

+
    +
  1. In Kernel Configuration, navigate to select your desired +kernel. Native is selected by default.

    +
    +Kernel Configuration +
    +

    Figure 21: Kernel Configuration

    +
    +
    +
  2. +
  3. To add arguments, enter the argument in Add Extra Arguments.

  4. +
  5. To remove an argument, enter the argument in Remove Arguments.

  6. +
  7. Select Confirm.

  8. +
+
+
+

Software Updater Configuration

+
    +
  1. In Advanced Options, select Software Updater Configuration.

  2. +
  3. In Mirror URL, follow the instructions if you wish to +specify a different installation source.

  4. +
  5. Enable Auto Updates is selected by default. If you do not +wish to enable automatic software updates, uncheck the box.

    +
    +Software Updater Configuration +
    +

    Figure 22: Software Updater Configuration

    +
    +
    +
  6. +
  7. Select Confirm.

  8. +
+
+
+
+

Finish installation

+
    +
  1. When you are satisfied with your installation configuration, select +Install.

    +
    +Assign Hostname +
    +

    Figure 23: Finish installation

    +
    +
    +
  2. +
  3. If you do not enter a selection for all Required Options, +the Install button remains disabled, as shown +in Figure 24. Return to Required Options and make selections.

    +
    +Required Options - Incomplete +
    +

    Figure 24: Required Options - Incomplete

    +
    +
    +
  4. +
  5. After installation is complete, select Exit.

  6. +
  7. Shut down the target system.

  8. +
  9. Remove the USB or any installation media.

  10. +
  11. Power on your system.

    +
    +

    Note

    +

    Allow time for the graphical login to appear. A login prompt shows the administrative user that you created.

    +
    +
  12. +
  13. Log in as the administrative user.

  14. +
+

Congratulations. You successfully installed Clear Linux OS.

+
+

Default partition schema

+

Create partitions per requirements in Table 1.

+ + ++++++ + + + + + + + + + + + + + + + + + + + +
Table 1. Default partition schema

FileSystem

Label

Mount Point

Default size

VFAT (FAT32)

boot

/boot

150MB

ext[234], XFS, or f2fs

root

/

Size depends upon use case/desired bundles.

+
+

Note

+

A 64MiB swapfile is generated by default. The default size may be set +manually with the --swap-file-size command-line option.

+
+
+
+
+

Troubleshooting

+

Erase LVM Partitions Before Installing Clear Linux OS

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/bare-metal-install-server.html b/get-started/bare-metal-install-server.html new file mode 100644 index 000000000..e84ba9f3e --- /dev/null +++ b/get-started/bare-metal-install-server.html @@ -0,0 +1,2203 @@ + + + + + + + + + + Install Clear Linux* OS from the live server — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Install Clear Linux* OS from the live server

+

This page explains how to install Clear Linux* OS on bare metal from a bootable USB +drive using a live server image. Alternatively, use a YAML configuration file to install Clear Linux OS.

+ +
+

System requirements

+

Before installing Clear Linux OS, verify that the host system supports the +installation:

+ +
+
+

Preliminary steps

+
    +
  1. Visit our Downloads page.

  2. +
  3. Download the file clear-<release number>-live-server.iso, +also called the Clear Linux OS Server.

    +
    +

    Note

    +

    <release-number> is the latest Clear Linux OS auto-numbered release.

    +
    +
  4. +
  5. Follow your OS instructions to +create a bootable usb drive.

  6. +
+
+
+

Install Clear Linux OS on your target system

+

Ensure that your system is configured to boot UEFI. The installation method +described below requires a wired or wireless Internet connection with DHCP.

+

Follow these steps to install Clear Linux OS on the target system:

+
    +
  1. Insert the USB drive into an available USB slot.

  2. +
  3. Power on the system.

  4. +
  5. Open the system BIOS setup menu by pressing the F2 key. +Your BIOS setup menu entry point may vary.

    +
    +

    Note

    +

    Clear Linux OS supports UEFI boot. Some hardware may list UEFI and non-UEFI USB +boot entries. In this case, you should select the UEFI boot +option.

    +
    +
  6. +
  7. In the setup menu, enable the UEFI boot and set the USB drive as the first +option in the device boot order.

  8. +
  9. Save these settings and exit.

  10. +
  11. Reboot the target system.

  12. +
+
+

Choose boot menu option

+
    +
  1. Choose one of the options shown in Figure 1.

    +
      +
    1. Follow Verify integrity of installer media (optional).

    2. +
    3. Select Clear Linux OS in the boot menu.

    4. +
    +
    +Clear Linux OS Installer boot menu +
    +

    Figure 1: Clear Linux OS Installer boot menu

    +
    +
    +
    +

    Note

    +

    If no action is taken, the live image starts by default.

    +
    +
  2. +
+
+
+

Verify integrity of installer media (optional)

+

Use Verify ISO Integrity to verify the checksum of +the image burned to the installer media. The checksum ensures that the ISO +is uncorrupted (see Figure 1). For every ISO generated, the +clr-installer implants checksums, which are verified during +early boot stage as part of initrd.

+
    +
  1. Select Verify ISO Integrity. The media will be validated.

  2. +
  3. If the check passes, it will boot into the live image. Continue in +the next section.

  4. +
  5. If the check fails, a failure message appears.

    + +
  6. +
+
+
+
+

Launch the Clear Linux OS Installer

+
    +
  1. At the login prompt, enter root.

  2. +
  3. Follow the onscreen instructions, shown in Figure 2, and +enter a temporary password.

    +
    +root login +
    +

    Figure 2: root login

    +
    +
    +
  4. +
+
+
+

Note

+

If a wireless connection is needed, connect to the network using +nmtui before lauching the installer. See the documentation on +configuring Wifi with nmtui for more details.

+
+
+
    +
  1. At the root prompt, enter clr-installer and +press Enter.

    +
    +clr-installer command +
    +

    Figure 3: clr-installer command

    +
    +
    +
  2. +
+
+
+

Minimum installation requirements

+

To fulfill minimum installation requirements, complete the +Required options. While not required, we encourage you to apply the +Recommended options. Advanced options are optional.

+
+

Note

+
    +
  • The Install button is only highlighted after you complete +Required options.

  • +
+
+
+ + +
+

Required options

+
+

Choose Timezone

+
    +
  1. From the Main Menu, navigate to Choose Timezone. +UTC is the default.

  2. +
  3. Select Enter.

  4. +
  5. In Select System Timezone, use Up/Down arrows +navigate to the desired timezone.

  6. +
  7. Press Enter to confirm.

    +
    +Select System Timezone +
    +

    Figure 5: Select System Timezone

    +
    +
    +
  8. +
+
+
+

Choose Language

+
    +
  1. From the Main Menu, navigate to Choose Language.

  2. +
  3. Select Enter.

  4. +
  5. In Select System Language, navigate to your desired language.

  6. +
  7. Press Enter to confirm.

    +
    +Select System Language +
    +

    Figure 6: Select System Language

    +
    +
    +
  8. +
+
+
+

Configure the Keyboard

+
    +
  1. From the Main Menu, select Configure the Keyboard.

  2. +
  3. Select Enter.

  4. +
  5. In Select Keyboard, navigate to the desired option.

  6. +
  7. Select Enter to Confirm.

  8. +
  9. Optional: In Test keyboard, type text to assure +that the keys map to your keyboard.

    +
    +Select Keyboard menu +
    +

    Figure 7: Select Keyboard menu

    +
    +
    +
  10. +
+
+
+

Configure Installation Media

+
    +
  1. From the Main Menu, select Configure Installation Media.

  2. +
  3. Choose an installation method: +* Safe Installation +* Destructive Installation +* Advanced Installation

    +
    +Select Installation Media +
    +

    Figure 8: Select Installation Media

    +
    +
    +
  4. +
  5. Select Rescan Media to show available installation targets.

  6. +
+
+

Safe Installation

+

Use this method to safely install Clear Linux OS on media with available space, or +alongside existing partitions, and accept the Default partition schema. +If enough free space exists, safe installation is allowed. See also +Troubleshooting below.

+
+
+

Destructive Installation

+

Use this method to destroy the contents of the target device, install Clear Linux OS +on it, and accept the Default partition schema.

+
+

Note

+

From the Select Installation Media menu, select +Enable Encryption to encrypt the root filesystem for either +option above. See also Disk encryption for more information.

+
+
+
+

Advanced Installation

+

Use this method to manually configure partitions using cgdisk. +This example uses the Default partition schema. The space you allocate for +your root, or additional partitions, may vary.

+
    +
  1. Navigate to Advanced Installation and press Spacebar.

    +
    +Advanced installation +
    +

    Figure 9: Advanced installation

    +
    +
    +
  2. +
  3. If no target media appears, select Rescan Media.

  4. +
  5. Navigate to Partition and and press Spacebar +to launch cgdisk.

  6. +
+
+
+

Partition codes

+
    +
  • ef00 - EFI System

  • +
  • 8200 - Linux swap

  • +
  • 8300 - Linux filesystem

  • +
+
+
+

boot partition

+
    +
  1. With the free space highlighted in the cgdisk utility, select +[New].

    +
    +Select New +
    +

    Figure 10: Select New

    +
    +
    +
    +

    Note

    +

    The /boot partition must be VFAT(FAT32).

    +
    +
  2. +
  3. Where First sector appears, press Enter.

  4. +
  5. For Size in sectors, type 150M.

    +
    +Size in sectors +
    +

    Figure 11: Size in sectors

    +
    +
    +
  6. +
  7. Press Enter.

  8. +
  9. Enter the hex code ef00 and press Enter.

    +
    +`ef00` partition code +
    +

    Figure 12: ef00 partition code

    +
    +
    +
  10. +
  11. For the partition name, enter CLR_BOOT, the EFI boot partition.

    +
    +CLR_BOOT +
    +

    Figure 13: CLR_BOOT

    +
    +
    +
    +

    Note

    +

    Encryption is not allowed on the CLR_BOOT partition.

    +
    +
  12. +
+

Now follow the same process to configure the remaining partitions.

+
+
+

swap partition (optional)

+

A swapfile is generated by default during installation. However, if you +prefer to create a swap partition, follow the steps below.

+
    +
  1. Use the Up/Down arrow to select free space.

  2. +
  3. Select [New] at bottom and press Enter.

  4. +
  5. Under First sector, press Enter.

  6. +
  7. For Size in sectors, type 256M, and press Enter.

  8. +
  9. Enter the hex code 8200 and press Enter.

  10. +
  11. In Enter new partition name…, type CLR_SWAP.

  12. +
  13. Press Enter.

  14. +
+
+
+

root partition

+
    +
  1. Use the Up/Down arrow to select free space.

  2. +
  3. Select [New] at bottom and press Enter.

  4. +
  5. Under First sector, press Enter.

  6. +
  7. For Size in sectors, type in desired size. +Optionally, press Enter to use the remaining space available.

  8. +
  9. Press Enter.

  10. +
  11. Enter the hex code 8300 and press Enter.

  12. +
  13. In Enter new partition name…, type: CLR_ROOT. +The /root partition must be ext[234], XFS, or f2fs. +If no filesystem exists, the installer will default to VFAT(FAT32) +for /boot, and ext4 for all others.

    +
    +

    Note

    +

    You may also append _F to the partition name to force the formatting.

    +
      +
    • +
      CLR_ROOT_F: Force the formatting of the root partition prior to

      use.

      +
      +
      +
    • +
    • +
      CLR_F_SWAP: Force the formatting of the swap partition prior to

      use; helpful when re-using a partition for swap which was previously formatted for a file system.

      +
      +
      +
    • +
    • +
      CLR_F_MNT_/data: Force the formatting of the extra data

      partition prior to use

      +
      +
      +
    • +
    +
    +
  14. +
  15. Press Enter.

  16. +
  17. After all partitions are defined, verify that your partition +configuration is similar to Figure 14.

    +
    +Final partition configuration +
    +

    Figure 14: Final partition configuration

    +
    +
    +
  18. +
+
+
+

Additional partitions (optional)

+
    +
  1. Use the Up/Down arrow to select free space.

  2. +
  3. Now select [New] at bottom and press Enter.

  4. +
  5. Under First sector, press Enter.

  6. +
  7. For Size in sectors, type in desired size.

    +
    +

    Note

    +

    If you do not specify a size, it will use the remaining space.

    +
    +
  8. +
  9. Press Enter.

  10. +
  11. Enter the hex code 8300. Then press Enter.

  12. +
  13. In Enter new partition name…, type: CLR_MNT_<mount_point>. +For example, replace <mount_point> with /home, shown in Figure 15.

    +
    +CLR_MNT +
    +

    Figure 15: CLR_MNT

    +
    +
    +
    +

    Note

    +

    If formatting is desired, the _F must precede _MNT.

    +
    +
  14. +
  15. Alternatively, you may create CLR_MNT_/srv or other partitions.

  16. +
+
+
+

Write configuration to disk

+
    +
  1. When you’re satisfied with the partition configuration, press the +Right Arrow until [Write] is highlighted.

  2. +
  3. Press Enter.

  4. +
  5. When the prompt appears asking if you want to write the partition table +to disk, type “yes”.

  6. +
  7. Finally, select [Quit].

  8. +
+
+
+
+

Disk encryption

+

For greater security, disk encryption is supported using LUKS for the +any partition except /boot on Clear Linux OS. To encrypt the root partition, see the +example below. Encryption is optional.

+
+

Encryption Passphrase

+

Clear Linux OS uses a single passphrase for encrypted partitions. Additional keys may +be configured post-installation using the cryptsetup tool.

+
    +
  1. Optional: Select [X] Enable encryption to encrypt the root +partition, as shown in Figure 16.

    +
    +Encrypt partition +
    +

    Figure 16: Encrypt partition

    +
    +
    +
  2. +
  3. The Encryption Passphrase dialog appears.

    +
    +

    Note

    +

    Minimum length is 8 characters. Maximum length is 94 characters.

    +
    +
    +Encryption Passphrase +
    +

    Figure 17: Encryption Passphrase

    +
    +
    +
  4. +
  5. Enter the same passphrase in the first and second field.

  6. +
  7. Navigate to Confirm and press Enter.

    +
    +

    Note

    +

    Confirm is only highlighted if passphrases match.

    +
    +
  8. +
+
+
+
+

Manage User

+
+

Add New User

+
    +
  1. In Required Options, select Manage User.

  2. +
  3. Select Add New User as shown in Figure 18.

    +
    +Add New User, User Name +
    +

    Figure 18: Add New User

    +
    +
    +
  4. +
  5. Optional: Enter a User Name.

    +
    +User Name +
    +

    Figure 19: User Name

    +
    +
    +
  6. +
  7. Enter a Login.

    +
    +

    Note

    +

    The User Login must be alphanumeric and can include hyphens and underscores. Maximum length is 31 characters.

    +
    +
  8. +
  9. Enter a Password.

    +
  10. +
  11. In Confirm, enter the same password.

  12. +
  13. The Administrator checkbox is selected by default.

    +
    +

    Note

    +

    Selecting Administrator enables sudo privileges for the user. For the installation to proceed, at least one user must be assigned as an Administrator.

    +
    +
  14. +
  15. Select Confirm. To reset the form, select Reset.

  16. +
  17. In Manage User, navigate to Confirm.

  18. +
  19. With Confirm highlighted, select Enter.

  20. +
+
+
+

Modify / Delete User

+
    +
  1. In Manage User, navigate to the user you wish +to modify until highlighted, as shown in Figure 20.

  2. +
  3. Select Enter to modify the user.

    +
    +Modify User +
    +

    Figure 20: Modify User

    +
    +
    +
  4. +
  5. Modify user details as desired.

  6. +
  7. Navigate to Confirm until highlighted.

    +
    +

    Note

    +

    Optional: Select Reset to rest the form.

    +
    +
  8. +
  9. Select Confirm to save the changes you made.

  10. +
  11. Optional: In Modify User, to delete the user, navigate to +the Delete button and select Enter.

    +
    +Delete User +
    +

    Figure 21: Delete User

    +
    +
    +
  12. +
+

You are returned to Manage User.

+
    +
  1. Navigate to Confirm until highlighted.

  2. +
  3. Select Enter to complete Manage User options.

  4. +
+
+
+
+

Telemetry

+

Telemetrics is a Clear Linux OS feature that reports failures and crashes to +the Clear Linux OS development team for improvements.

+

Select your desired option on whether to participate in telemetry.

+
    +
  1. In the Main Menu, navigate to Telemetry and select +Enter.

  2. +
  3. Select Tab to highlight your choice.

  4. +
  5. Select Enter to confirm.

    +
    +Enable Telemetry +
    +

    Figure 22: Enable Telemetry

    +
    +
    +
  6. +
+
+
+ +
+

Advanced options

+
+

Configure Network Interfaces

+

By default, Clear Linux OS is configured to automatically detect the host network +interface using DHCP. However, if you want to use a static IP address or if +you do not have a DHCP server on your network, follow these instructions to +manually configure the network interface. Otherwise, default network +interface settings are automatically applied.

+
+

Note

+

If DHCP is available, no user selection may be required.

+
+
    +
  1. Navigate to Configure Network Interfaces and +select Enter.

  2. +
  3. Navigate to the network interface you wish to change.

  4. +
  5. When the desired interface is highlighted, select +Enter to edit.

    +
    +

    Note

    +

    Multiple network interfaces may appear.

    +
    +
    +Configure Network Interfaces +
    +

    Figure 23: Configure Network Interfaces

    +
    +
    +
  6. +
  7. Notice Automatic / dhcp is selected by default (at bottom).

    +

    Optional: Navigate to the checkbox Automatic / dhcp and select +Spacebar to deselect.

    +
    +Network interface configuration +
    +

    Figure 24: Network interface configuration

    +
    +
    +
  8. +
  9. Navigate to the appropriate fields and assign the desired +network configuration.

  10. +
  11. To save settings, navigate to Confirm and select +Enter.

    +
    +

    Note

    +

    To revert to previous settings, navigate to the Cancel +and select Enter.

    +
    +
  12. +
  13. Upon confirming network configuration, the Testing Networking +dialog appears. Assure the result shows success. If a failure occurs, +your changes will not be saved.

  14. +
  15. Upon confirmation, you are returned to Network interface +settings.

  16. +
  17. Navigate to and select Main Menu.

  18. +
+

Optional: Skip to Finish installation.

+
+
+

Proxy

+

Clear Linux OS automatically attempts to detect proxy settings, as described in +Autoproxy. If you need to manually assign proxy settings, follow this +instruction.

+
    +
  1. From the Advanced options menu, navigate to Proxy, and +select Enter.

  2. +
  3. Navigate to the field HTTPS Proxy.

    +
    +Configure the network proxy +
    +

    Figure 25: Configure the network proxy

    +
    +
    +
  4. +
  5. Enter the desired proxy address and port using conventional syntax, +such as: http://address:port.

  6. +
  7. Navigate to Confirm and select Enter.

  8. +
  9. To revert to previous settings, navigate to Cancel +and select Cancel.

  10. +
+

Optional: Skip to Finish installation.

+
+
+

Test Network Settings

+

To manually assure network connectivity before installing Clear Linux OS, +select Test Network Settings and select Enter.

+
+

Note

+

If using the off-line installer, this option is not available.

+
+

A progress bar appears as shown in Figure 26.

+
+Testing Networking dialog +
+

Figure 26: Testing Networking dialog

+
+
+
+

Note

+

Any changes made to network settings are automatically tested +during configuration.

+
+

Optional: Skip to Finish installation.

+
+
+

Select Additional Bundles

+

This option is only available with a valid network connection. +Bundle selection is disabled if no network connection exists.

+
    +
  1. On the Advanced menu, select Select Additional Bundles.

  2. +
  3. Navigate to the desired bundle using Tab or Up/Down arrows.

  4. +
  5. Select Spacebar to select the checkbox for each desired bundle.

    +
    +Bundle Selection +
    +

    Figure 27: Bundle Selection

    +
    +
    +
  6. +
  7. Optional: To start developing with Clear Linux OS, we recommend +adding os-clr-on-clr.

  8. +
  9. Navigate to and select Confirm.

    +

    You are returned to the Advanced options menu.

    +
  10. +
+

Optional: Skip to Finish installation.

+
+
+

Assign Hostname

+
    +
  1. In Advanced Options, select Assign Hostname.

  2. +
  3. In Hostname, enter the hostname only (excluding the domain).

    +
    +

    Note

    +

    Hostname does not allow empty spaces. Hostname must start with an +alphanumeric character but may also contain hyphens. Maximum length of +63 characters.

    +
    +
    +Assign Hostname +
    +

    Figure 28: Assign Hostname

    +
    +
    +
  4. +
  5. Navigate to Confirm until highlighted.

  6. +
  7. Select Confirm.

  8. +
+

Optional: Skip to Finish installation.

+
+
+

Kernel Command Line

+

For advanced users, Clear Linux OS provides the ability to add or remove kernel +arguments. If you want to append a new argument, enter the argument here. +This argument will be used every time you install or update a +new kernel.

+
    +
  1. In Advanced Options, select Tab to highlight +Kernel Command Line.

  2. +
  3. Select Enter.

    +
    +Kernel Command Line +
    +

    Figure 29: Kernel Command Line

    +
    +
    +
  4. +
  5. Choose from the following options.

    +
      +
    • To add arguments, enter the argument in Add Extra Arguments.

    • +
    • To remove an argument, enter the argument in +Remove Arguments.

    • +
    +
  6. +
  7. Select Confirm.

  8. +
+

Optional: Skip to Finish installation.

+
+
+

Kernel Selection

+
    +
  1. Select a kernel option. By default, the latest kernel release is +selected. Native kernel is shown in Figure 30.

  2. +
  3. To select a different kernel, navigate to it using Tab.

    +
    +Kernel selection +
    +

    Figure 30 Kernel selection

    +
    +
    +
  4. +
  5. Select Spacebar to select the desired option.

  6. +
  7. Navigate to Confirm and select Enter.

  8. +
+

Optional: Skip to Finish installation.

+
+
+

Swupd Mirror

+

If you have your own custom mirror of Clear Linux OS, you can add its URL.

+
    +
  1. In Advanced Options, select Swupd Mirror.

  2. +
  3. To add a local swupd mirror, enter a valid URL in Mirror URL:

  4. +
  5. Select Confirm.

    +
    +Swupd Mirror +
    +

    Figure 31: Swupd Mirror

    +
    +
    +
  6. +
+

Optional: Skip to Finish installation.

+
+
+

Automatic OS Updates

+

Automatic OS updates are enabled by default. In the rare case that you +need to disable automatic software updates, follow the onscreen instructions, +shown in Figure 32.

+
    +
  1. In Advanced Options, select Automatic OS Updates.

  2. +
  3. Select the desired option.

    +
    +Automatic OS Updates +
    +

    Figure 32: Automatic OS Updates

    +
    +
    +
  4. +
+

You are returned to the Main Menu.

+
+
+

Save Configuration Settings

+
    +
  1. In Advanced Options, select Save Configuration Settings.

  2. +
  3. A dialog box shows the installation configuration was saved to +clr-installer.yaml

    +
    +Save configuration to YAML file +
    +

    Figure 33: Save configuration to YAML file

    +
    +
    +
  4. +
  5. Use the clr-installer.yaml file to install Clear Linux OS, with the same +configuration, on multiple targets.

  6. +
+
+
+
+

Finish installation

+
    +
  1. When you are satisfied with your installation configuration, navigate to +Install and select Enter.

    +
    +Select Install +
    +

    Figure 34: Select Install

    +
    +
    +
  2. +
  3. Select reboot.

    +
    +

    Note

    +

    If you do not assign an administrative user, upon rebooting, +enter root and set the root password immediately.

    +
    +
  4. +
  5. When the system reboots, remove any installation media present.

  6. +
+
+

Default partition schema

+

Create partitions per requirements in Table 1.

+ + ++++++ + + + + + + + + + + + + + + + + + + + +
Table 1. Default partition schema

FileSystem

Label

Mount Point

Default size

VFAT(FAT32)

boot

/boot

150MB

ext[234], `XFS`, or f2fs

root

/

Size depends upon use case/desired bundles.

+
+

Note

+

A 64MiB swapfile is generated by default. The default size may be set +manually with the --swap-file-size command-line option.

+
+
+
+
+

Troubleshooting

+
+

For Configure Installation Media

+

If a warning message appears that no media or space is available after +entering Configure Installation Media:

+
    +
  • Verify that target media has enough free space.

  • +
  • Confirm the USB is properly connected to and mounted on target media.

  • +
  • Review the size of existing partitions on the target media:

    +
      +
    • Linux* OS: lsblk -a

    • +
    • Windows* OS: diskpart, then list disk

    • +
    • macOS* platform: diskutil list

    • +
    +
  • +
+
+
+

Erase LVM Partitions Before Installing Clear Linux OS

+

If you’re planning to install Clear Linux OS on a drive that has LVM partitions, +you must erase them first before using the clr-installer.

+

Here is an example of a drive (/dev/sda) with LVMs:

+
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
+loop0          7:0    0 627.6M  1 loop
+sda            8:0    0 335.4G  0 disk
+├─sda1         8:1    0   200M  0 part
+├─sda2         8:2    0     1G  0 part
+└─sda3         8:3    0 334.2G  0 part
+  ├─LVM-root 252:0    0    70G  0 lvm
+  ├─LVM-home 252:1    0 248.4G  0 lvm
+  └─LVM-swap 252:2    0  15.7G  0 lvm
+
+
+

If you do not erase the LVMs first, you will encounter a clr-installer +error like this:

+
root@clr-live~ # clr-installer
+
+Please report this crash using GitHub Issues:
+https://github.com/clearlinux/clr-installer/issues
+
+Include the following as attachments to enable diagnosis:
+/root/pre-install-clr-installer.yaml
+/root/clr-installer.log
+
+You may need to remove any personal data of concern from the attachments.
+The Installer will now exit.
+exit status 1
+
+Error Trace:
+errors.Wrap()
+     errors/errors.go:91
+storage.makeFs()
+     storage/ops.go:79
+
+
+

The quickest and simplest method to erasing the LVMs is to execute these +commands:

+
sudo sgdisk -Z /dev/<device>
+sudo partprobe
+sudo dmsetup remove_all --force
+sudo partprobe
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/bootable-usb.html b/get-started/bootable-usb.html new file mode 100644 index 000000000..4aa3c0e24 --- /dev/null +++ b/get-started/bootable-usb.html @@ -0,0 +1,1360 @@ + + + + + + + + + + Create a bootable USB drive using Etcher* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Create a bootable USB drive using Etcher*

+

Use Etcher* software from Balena* to flash the Clear Linux OS image to a USB drive. +An Advanced: Linux CLI option is also available.

+
+

Prerequisites

+
    +
  • Download the Clear Linux OS Desktop or Server image from the Downloads page

  • +
  • Recommended minimum 4GB USB drive or larger

  • +
  • Download and install the Etcher version per your operating system.

  • +
+
+

Burn the Clear Linux OS image onto a USB drive

+
+

Caution

+

Burning an image formats the USB drive and destroys all pre-existing +content. Back up your data before proceeding.

+
+
    +
  1. Launch Etcher.

    +
    +Start screen +
    +

    Figure 1: Start screen

    +
    +
    +
  2. +
  3. Press Select Image.

  4. +
  5. Change directory to where the image resides.

  6. +
  7. Select the image and click Open.

    +
    +In Open, select the image +
    +

    Figure 2: In Open, select the image

    +
    +
    +
  8. +
  9. Plug in the USB drive.

  10. +
  11. Identify the USB drive or click Change to select a +different USB.

    +
    +

    Note

    +

    This shows all USB drives attached to the system.

    +
    +
    +USB drives attached +
    +

    Figure 3: USB drives attached

    +
    +
    +
  12. +
  13. Select the proper device and press Continue.

    +
    +USB Flash Device selected +
    +

    Figure 4: USB Flash Device selected

    +
    +
    +
  14. +
  15. When ready press the Flash! Button. +The dialog shows Flashing while in progress.

    +
    +Starting to flash +
    +

    Figure 5: Starting to flash

    +
    +
    +
    +Flashing, percentage complete +
    +

    Figure 6: Flashing, percentage complete

    +
    +
    +
  16. +
  17. Flash complete! shows when the process is finished.

    +
    +Flash Complete! +
    +

    Figure 7: Flash Complete!

    +
    +
    +
    +

    Note

    +

    The process may take more than a few minutes. When the process completes, close BalenaEtcher.

    +
    +
  18. +
+
+
+

Advanced: Linux CLI

+
    +
  1. Open a Terminal window.

  2. +
  3. Change directory to where the image resides.

  4. +
  5. Plug in the USB drive.

  6. +
  7. Identify all drives attached to the system. In the example output below, there are 3 drives (/dev/sda, /dev/sdb, and /dev/sdc) attached, where /dev/sda is the primary drive and the remaining are USB drives.

    +
    lsblk -po NAME,SIZE,VENDOR,MODEL,TRAN,TYPE,PARTLABEL,MOUNTPOINT
    +
    +
    +

    Example output:

    +
    NAME          SIZE VENDOR   MODEL                    TRAN   TYPE PARTLABEL                    MOUNTPOINT
    +/dev/sda    119.2G ATA      SAMSUNG_MZ7PC128HAFU-000 sata   disk
    +├─/dev/sda1   450M                                          part Basic data partition
    +├─/dev/sda2   100M                                          part EFI system partition
    +├─/dev/sda3    16M                                          part Microsoft reserved partition
    +├─/dev/sda4  97.2G                                          part Basic data partition
    +├─/dev/sda5   142M                                          part EFI
    +├─/dev/sda6   245M                                          part linux-swap                   [SWAP]
    +└─/dev/sda7  21.1G                                          part /                            /
    +/dev/sdb      7.5G General  UDisk                    usb    disk
    +└─/dev/sdb1   7.5G                                          part Microsoft Basic Data         /run/media/clear/CENA_X64FRE
    +/dev/sdc       15G          Patriot_Memory           usb    disk
    +└─/dev/sdc1    15G                                          part                              /run/media/clear/U
    +
    +
    +
    +

    Note

    +

    Some Linux distros may automatically mount a USB drive when it is plugged in.

    +
    +
  8. +
  9. Unmount the USB drive you want to use before burning an image onto it. +Use the umount command followed by the device identifier/partition. For example, to unmount all /dev/sdc partitions:

    +
    sudo umount /dev/sdc*
    +
    +
    +
  10. +
  11. Burn the image onto the USB drive. This example burns an image onto +/dev/sdc. The device name of the USB may vary.

    +
    sudo dd if=./clear-[version number]-live-[desktop | server].iso of=/dev/sdc oflag=sync bs=4M status=progress
    +
    +
    +
  12. +
+
+
+

Eject the Clear Linux OS image USB drive

+
+

Caution

+

If you do not properly unmount the USB drive before removing it, it may cause file system checksum errors in it. If this happens, burn the image again, ensuring all the USB drive partitions are unmounted first before removing drive.

+
+
    +
  1. Unmount the USB per your OS instructions.

  2. +
  3. Then eject the USB.

  4. +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/cloud-install/aws-web.html b/get-started/cloud-install/aws-web.html new file mode 100644 index 000000000..462cbc58e --- /dev/null +++ b/get-started/cloud-install/aws-web.html @@ -0,0 +1,1497 @@ + + + + + + + + + + Clear Linux* OS on Amazon Web Services* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on Amazon Web Services*

+

This tutorial explains how to create and launch a Clear Linux OS +AMI instance from the +AWS* console and complete the following tasks:

+
    +
  1. Locate and select the Clear Linux OS OS Basic AMI in the AWS Marketplace.

  2. +
  3. Create a new public and private key pair to allow you to connect to your +Clear Linux OS instance securely.

  4. +
  5. Launch the new Clear Linux OS instance and connect to it.

  6. +
  7. Update your instance of Clear Linux OS using the swupd command.

  8. +
  9. Stop the Clear Linux OS instance.

  10. +
+ +
+

Prerequisites

+

This tutorial assumes the following statements are true:

+
    +
  • You are using a linux-based system to access AWS and can run SSH +to access the remote Clear Linux OS AWS image.

  • +
  • Your browser puts downloaded files in the $HOME/Downloads +directory.

  • +
  • You have already set up an AWS user account and logged into the AWS +console.

  • +
+
+

Note

+

This tutorial uses a Clear Linux OS AMI t2.micro instance that is eligible for the +AWS free tier. To learn more about AWS and setting up an account, visit the +AWS website at http://aws.amazon.com.

+
+
+
+

Locate, select, and launch the Clear Linux OS Basic AMI

+
    +
  1. Start from your main AWS services console menu in your browser and select +the EC2 text as shown in Figure 1:

    +
    +AWS Console +
    +

    Figure 1: AWS Console

    +
    +
    +

    This selection brings up your EC2 Dashboard menu.

    +
  2. +
  3. To create a new Clear Linux OS instance from the EC2 Dashboard menu, +select the Launch Instance button as shown in Figure 2:

    +
    +EC2 Dashboard +
    +

    Figure 2: EC2 Dashboard

    +
    +
    +

    This selection takes you to the +Step 1: Choose an Amazon Machine Image (AMI) menu.

    +
  4. +
  5. To find the Clear Linux OS Basic AMI in the +Step 1: Choose an Amazon Machine Image (AMI) menu, do the +following:

    +
      +
    1. In the lefthand navigation window, select the +AWS Marketplace menu item to bring up the search bar to +Search AWS Marketplace Products.

    2. +
    3. In the search bar, type “clear linux os” and press the Enter key +to search for and locate the Clear Linux OS Basic AMI.

    4. +
    5. Select the Clear Linux OS Basic AMI by clicking the +Select button as shown in Figure 3:

      +
      +Step 1: Choose AMI +
      +

      Figure 3: Step 1: Choose AMI

      +
      +
      +
    6. +
    7. A pop-up dialog box appears showing you more information about the +Clear Linux OS Basic AMI along with the pricing details for +running Clear Linux OS on different platform configurations as shown in Figure 4. +Select the Continue button.

      +
      +Clear Linux OS Basic +
      +

      Figure 4: Clear Linux OS Basic

      +
      +
      +
    8. +
    +
  6. +
  7. The Choose Instance Type menu appears as shown in Figure 5.

    +
    +Choose an Instance Type +
    +

    Figure 5: Choose an Instance Type

    +
    +
    +

    Select the t2.micro type by clicking the box on the left side +of the instance and then select the Review and Launch button to +move to the Step 7: Review the Instance Launch menu.

    +
    +

    Note

    +

    You can configure the instance details, add additional storage, add +tags, and configure the security group before selecting the +Review and Launch button if you want to further customize +this Clear Linux OS instance.

    +
    +
  8. +
  9. The Step 7: Review the Instance Launch menu, shown in Figure 6, +allows you to Cancel the process, return to +the Previous screen to change the configuration +or Launch the instance defined.

    +
    +Step 7: Review the Instance Launch +
    +

    Figure 6: Step 7: Review the Instance Launch

    +
    +
    +
      +
    1. Select the Launch button. A dialog box appears, as shown in +Figure 7, asking you to +Select an existing key pair or create a new pair.

      +
      +Select an existing key pair or create a new pair +
      +

      Figure 7: Select an existing key pair or create a new pair

      +
      +
      +
        +
      1. Select the Create a new key pair option.

      2. +
      3. For the Key pair name field, enter AWSClearTestKey.

      4. +
      5. Select the Download Key Pair button to download the +AWSClearTestKey.pem to your browser’s defined +Downloads directory.

      6. +
      7. When the file finishes downloading, select the +Launch Instances button to proceed to the +Launch Status menu shown in Figure 8.

        +
        +Launch Status +
        +

        Figure 8: Launch Status

        +
        +
        +
      8. +
      +
    2. +
    3. Once the Launch Status page changes to what is shown in +Figure 9, select the View Instances button to view your +Instances dashboard.

      +
      +View Instance +
      +

      Figure 9: View Instance

      +
      +
      +
    4. +
    +
  10. +
+
+
+

Connect to your Clear Linux OS basic instance

+

Your Instances Dashboard is shown in Figure 10 with the new Clear Linux OS +OS basic instance already selected and in the running state. If there are +other instances available, they are also listed but not selected.

+
+Instance Dashboard +
+

Figure 10: Instance Dashboard

+
+
+
    +
  1. To connect to your running instance, click the Connect button +located at the top of your dashboard. AWS brings up the pop-up dialog +box shown in Figure 11 describing how to connect to your running instance.

  2. +
+
+Connect to Your Instance +
+

Figure 11: Connect to Your Instance

+
+
+
    +
  1. Open a terminal on your system. You should be in your $HOME +directory.

  2. +
  3. Copy the previously downloaded keyfile from the Downloads +directory to the current directory.

    +
    cp Downloads/AWSClearTestKey.pem .
    +
    +
    +
  4. +
  5. Change the attributes of the AWSClearTestKey.pem using the +chmod command as instructed in the dialog box shown in Figure +11.

    +
    chmod 400 AWSClearTestKey.pem
    +
    +
    +
  6. +
  7. Copy the text highlighted in the Example: section that is +shown in figure 11. Paste the copied text into your +terminal, change the text before the @ sign to the username clear, and +press the Enter key to execute the command.

    +
    ssh -i "AWSClearTestKey.pem" clear@ec2-34-209-39-184.us-west-2.compute.amazonaws.com
    +
    +
    +
  8. +
  9. A message appears on the terminal stating the authenticity of the host +can’t be established and prompts you with the message:

    +
    The authenticity of host 'ec2-34-209-39-184.us-west-2.compute.amazonaws.com (34.209.39.184)' can't be established.
    +ECDSA key fingerprint is SHA256:LrziT5Ar66iBTfia8qmiIsrfBUm/UGam76U8bDR6yJc.
    +Are you sure you want to continue connecting (yes/no)?
    +
    +
    +
  10. +
  11. Type yes and press the Enter key. Another warning is printed to +the terminal and you are now at the command prompt of your new Clear Linux OS +instance.

    +
    Warning: Permanently added 'ec2-34-209-39-184.us-west-2.compute.amazonaws.com,34.209.39.184' (ECDSA) to the list of known hosts.
    +clear@clr-96a8565d0ca54b0c80364a1e5e7b0f88 ~ $
    +
    +
    +
  12. +
+
+
+

Update the Clear Linux OS instance

+

Run the sudo swupd update command to update the operating +system as shown in Figure 12:

+
+sudo swupd update +
+

Figure 12: sudo swupd update

+
+
+

In this example, we updated from version 18940 to 19100.

+
+
+

Stop the Clear Linux OS instance

+

When you are finished using your AWS Clear Linux OS instance, you must stop it using +the Instances dashboard to stop accruing charges. Complete the +following steps from the Instances dashboard to stop your AWS Clear Linux OS +instance from running.

+
    +
  1. Select the Actions button to bring up a pull-down menu.

  2. +
  3. Select the Instance State menu item to expand the options.

  4. +
  5. Select Stop menu item to shut down the running instance.

    +

    Figure 13 illustrates these steps.

    +
    +Stop Instance +
    +

    Figure 13: Stop Instance

    +
    +
    +
  6. +
  7. A pop-up dialog box appears warning you that any ephemeral storage of +your instance will be lost. Select the Yes, Stop button to stop +your Clear Linux OS instance.

  8. +
+
+Stop Instances +
+

Figure 14: Stop Instances

+
+
+

Congratulations! You are up and running with Clear Linux OS on AWS. To see what you +can do with your Clear Linux OS instance, visit our tutorials +section for examples on using your Clear Linux OS system.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/cloud-install/azure.html b/get-started/cloud-install/azure.html new file mode 100644 index 000000000..ddccf57b7 --- /dev/null +++ b/get-started/cloud-install/azure.html @@ -0,0 +1,1692 @@ + + + + + + + + + + Clear Linux* OS on Microsoft* Azure* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on Microsoft* Azure*

+

This tutorial shows how to install and use the Azure CLI on Clear Linux OS. The Azure CLI offers the ability to create and +manage resources in MS Azure from the command line.

+ +
+

Description

+

Clear Linux OS is available for you to use in the Microsoft Azure marketplace and +is offered with three different images, also known as a +SKU.

+
    +
  • Clear Linux OS Basic - This SKU consists of a bare-bones system which can be used as a +starting point for those wanting to explore and build out a system with +additional software bundles of their choosing.

  • +
  • Clear Linux OS Containers - This SKU comes with the containers-basic software bundle +already installed.

  • +
  • Clear Linux OS Machine-learning - This SKU comes pre-loaded with popular open source +tools for developing machine learning applications.

  • +
+

Sign in at the Azure portal to access these images from the Azure dashboard, +or use the MS Azure CLI 2.0. If you do not already have an account set up with +MS Azure, you can sign up for a MS Azure free account to access the +Clear Linux OS VM images.

+
+
+

Prerequisites

+

To use the MS Azure CLI 2.0 on your Clear Linux OS system, your system must have the +following packages installed:

+
    +
  • Python 2.7 or later

  • +
  • libffi

  • +
  • OpenSSL 1.0.2

  • +
+

You can check to see which versions you have installed on your system by +running the individual commands as follows:

+
python --version
+
+
+
python 2.7.12
+
+
+
openssl version
+
+
+
OpenSSL 1.0.2n 7 Dec 2017
+
+
+
ls -l /usr/lib64/libffi*
+
+
+
lrwxrwxrwx 1 root root    15 Jan 12  2017 /usr/lib64/libffi.so.6 -> libffi.so.6.0.4
+-rwxr-xr-x 1 root root 38792 Jan 12  2017 /usr/lib64/libffi.so.6.0.4
+
+
+

If you do not have these packages installed on your Clear Linux OS system, install the +sysadmin-basic software bundle using the swupd command:

+
sudo swupd bundle-add sysadmin-basic
+
+
+
+

Note

+

These instructions are for installing the MS Azure CLI 2.0 tools on a Clear Linux OS +system. If you are installing the CLI on another platform, follow the +instructions in the MS Azure Install Azure CLI tutorial for your +specific operating system.

+
+
+
+

Install MS Azure CLI 2.0 on Clear Linux OS

+
    +
  1. To install the MS Azure CLI 2.0 on Clear Linux OS, use the curl command as +follows:

    +
    curl -L https://aka.ms/InstallAzureCli | bash
    +
    +
    +

    If you get an error message from curl related to the -L +parameter or an error message is generated that includes the text “Object +Moved”, use the full URL instead of the aka.ms redirect address:

    +
    curl https://azurecliprod.blob.core.windows.net/install | bash
    +
    +
    +
  2. +
  3. The installation script begins and prompts you several times during +execution for information.

    +
    +

    Note

    +

    The console output from the script displays your username instead of the +[user] variable shown on this tutorial.

    +
    +
    ===> In what directory would you like to place the install? (leave blank to use '/home/[user]/lib/azure-cli'):
    +
    +
    +

    Press the Enter key to accept the default or chose another +directory in which to install the MS Azure CLI 2.0 tools.

    +
    ===> In what directory would you like to place the 'az' executable? (leave blank to use '/home/[user]/bin'):
    +
    +
    +

    Press the Enter key to accept the default or chose another +directory in which to install the az executable.

    +
  4. +
  5. The installation downloads and builds all the required tools. When it is +complete, it prompts you:

    +
    ===> Modify profile to update your $PATH and enable shell/tab completion now? (Y/n): Y
    +
    +
    +

    Type Y and press the Enter key to allow this modification.

    +
    ===> Enter a path to an rc file to update (leave blank to use '/home/[user]/.bashrc'):
    +
    +
    +

    Press the Enter key to accept the default or enter the pathname to +your .bashrc file. The installation completes with the final output +shown below:

    +
    -- Backed up '/home/[user].bashrc' to '/home/[user]/.bashrc.backup'
    +-- Tab completion set up complete.
    +-- If tab completion is not activated, verify that '/home/[user]/.bashrc' is sourced by your shell.
    +--
    +-- ** Run `exec -l $SHELL` to restart your shell. **
    +--
    +-- Installation successful.
    +-- Run the CLI with /home/[user]/bin/az --help
    +
    +
    +
  6. +
  7. When the installation program finishes, you must restart your shell for +the changes to take effect. When the installation is successful, run the +following command to restart your shell.

    +
    exec -l $SHELL
    +
    +
    +
  8. +
+

With the MS Azure CLI 2.0 executable successfully built and installed, run +the az command.

+
az
+
+
+

The output from the az command is shown below:

+
     /\
+    /  \    _____   _ _ __ ___
+   / /\ \  |_  / | | | \'__/ _ \
+  / ____ \  / /| |_| | | |  __/
+ /_/    \_\/___|\__,_|_|  \___|
+
+
+Welcome to the cool new Azure CLI!
+
+Here are the base commands:
+
+    account          : Manage Azure subscription information.
+    acr              : Manage Azure Container Registries.
+    acs              : Manage Azure Container Services.
+    ad               : Synchronize on-premises directories and manage Azure Active Directory
+                       resources.
+    advisor          : (PREVIEW) Manage Azure Advisor.
+    aks              : Manage Kubernetes clusters.
+    appservice       : Manage App Service plans.
+    backup           : Commands to manage Azure Backups.
+    batch            : Manage Azure Batch.
+    batchai          : Batch AI.
+    billing          : Manage Azure Billing.
+    cdn              : Manage Azure Content Delivery Networks (CDNs).
+    cloud            : Manage registered Azure clouds.
+    cognitiveservices: Manage Azure Cognitive Services accounts.
+    configure        : Display and manage the Azure CLI 2.0 configuration. This command is
+                       interactive.
+    consumption      : Manage consumption of Azure resources.
+    container        : (PREVIEW) Manage Azure Container Instances.
+    cosmosdb         : Manage Azure Cosmos DB database accounts.
+    disk             : Manage Azure Managed Disks.
+    dla              : (PREVIEW) Manage Data Lake Analytics accounts, jobs, and catalogs.
+    dls              : (PREVIEW) Manage Data Lake Store accounts and filesystems.
+    eventgrid        : Manage Azure Event Grid topics and subscriptions.
+    extension        : Manage and update CLI extensions.
+    feature          : Manage resource provider features.
+    feedback         : Loving or hating the CLI?  Let us know!
+    find             : Find Azure CLI commands.
+    functionapp      : Manage function apps.
+    group            : Manage resource groups and template deployments.
+    image            : Manage custom virtual machine images.
+    interactive      : Start interactive mode.
+    iot              : (PREVIEW) Manage Internet of Things (IoT) assets.
+    keyvault         : Safeguard and maintain control of keys, secrets, and certificates.
+    lab              : Manage Azure DevTest Labs.
+    lock             : Manage Azure locks.
+    login            : Log in to Azure.
+    logout           : Log out to remove access to Azure subscriptions.
+    managedapp       : Manage template solutions provided and maintained by Independent Software
+                       Vendors (ISVs).
+    monitor          : Manage the Azure Monitor Service.
+    mysql            : Manage Azure Database for MySQL servers.
+    network          : Manage Azure Network resources.
+    policy           : Manage resource policies.
+    postgres         : Manage Azure Database for PostgreSQL servers.
+    provider         : Manage resource providers.
+    redis            : Access to a secure, dedicated Redis cache for your Azure applications.
+    reservations     : Manage Azure Reservations.
+    resource         : Manage Azure resources.
+    role             : Manage user roles for access control with Azure Active Directory and service
+                       principals.
+    sf               : Manage and administer Azure Service Fabric clusters.
+    snapshot         : Manage point-in-time copies of managed disks, native blobs, or other
+                       snapshots.
+    sql              : Manage Azure SQL Databases and Data Warehouses.
+    storage          : Manage Azure Cloud Storage resources.
+    tag              : Manage resource tags.
+    vm               : Provision Linux or Windows virtual machines.
+    vmss             : Manage groupings of virtual machines in an Azure Virtual Machine Scale Set
+                       (VMSS).
+    webapp           : Manage web apps.
+
+
+
+
+

Log into your Microsoft Azure account

+
    +
  1. With the az command properly installed and functional, login to +your MS Azure account using the az login command shown below:

    +
    az login
    +
    +
    +

    The output from this command is:

    +
    To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code BQ9MG442B to authenticate.
    +
    +
    +
  2. +
  3. Open your browser and enter the page https://aka.ms/devicelogin as shown +in figure 1:

    +
    +Microsoft Device Login +
    +

    Figure 1: Microsoft Device Login

    +
    +
    +
  4. +
  5. Enter the code BQ9MG442B to authenticate your device as shown in figure +2. The code BQ9MG442B is a random authentication code generated for each +session login and will be different each time you log into MS Azure using +the az login command.

    +
    +Microsoft Device Login - Azure CLI +
    +

    Figure 2: Microsoft Device Login - Azure CLI

    +
    +
    +
  6. +
  7. Once you enter the authentication code, the website displays a screen to +enter your existing Microsoft Azure credentials.

  8. +
  9. Log in with your existing MS Azure account credentials. The +browser screen shows you have signed into the Microsoft Cross-platform +Command Line Interface application on your device, as shown in figure 3. +You can close the page.

    +
    +Microsoft Azure Cross-platform CLI +
    +

    Figure 3: Microsoft Azure Cross-platform CLI

    +
    +
    +
  10. +
+

The MS Azure CLI 2.0 interface is now active using your existing MS Azure +account credentials.

+
+
+

Create a MS Azure resource group

+

To learn more about MS Azure resource groups, visit the +Azure Resource Manager overview for an overview and detailed description +of resources within MS Azure.

+
    +
  1. To create a new resource group, run the az group create ... +command shown below to create a resource group named ClearResourceGroup +using the -n parameter and locate it in the westus region using the +-l parameter.

    +
    az group create -n ClearResourceGroup -l westus
    +
    +
    +
  2. +
  3. When the command has completed, the output from this command is similar to +the following:

    +
    {
    +  "id": "/subscriptions/{unique-id}/resourceGroups/ClearResourceGroup",
    +  "location": "westus",
    +  "managedBy": null,
    +  "name": "ClearResourceGroup",
    +  "properties": {
    +    "provisioningState": "Succeeded"
    +  },
    +  "tags": null
    +}
    +
    +
    +
  4. +
+
+
+

Create and log into the Clear Linux OS virtual machine

+

For this tutorial, we are using the Clear Linux OS Basic SKU for our VM.

+
    +
  1. To locate the available Clear Linux OS Basic VM SKU images in the MS Azure +marketplace, run the az vm image ... command:

    +
    az vm image list --offer clear-linux --sku basic --all --output table
    +
    +
    +

    This command may take some time to finish. The output lists all available +Clear Linux OS Basic images available in the Microsoft Azure marketplace as shown +below:

    +
    Offer           Publisher            Sku               Urn                                                            Version
    +--------------  -------------------  ----------------  -------------------------------------------------------------  ---------
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:15780.0.0             15780.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:15960.0.0             15960.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:16050.0.0             16050.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:16150.0.0             16150.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:16500.0.0             16500.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:16810.0.0             16810.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:18080.0.0             18080.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:18620.0.0             18620.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:18860.0.0             18860.0.0
    +
    +
    +
    +

    Note

    +

    The output list shows current offerings. New versions are added to the +MS Azure marketplace all the time. To reference the latest version of an +image, you can use the version label latest when specifying an image.

    +
    +
  2. +
  3. The information shown in the Urn column lists the +Publisher:Offer:Sku:Version for each image available. This is the +information we want to create the Clear Linux OS Basic VM. Since we are creating a +Clear Linux OS Basic VM, highlight the clear-linux-project:clear-linux-os:basic: +string and copy it to your clipboard. Use the label +latest instead of referencing a specific version.

  4. +
  5. Create the new Clear Linux OS Basic VM. Run the az vm create ... +command using the URN :clear-linux-project:clear-linux-os:basic:latest +that we copied to the clipboard on the previous step.

    +
    az vm create --resource-group ClearResourceGroup --name ClearVM --image clear-linux-project:clear-linux-os:basic:latest --generate-ssh-keys
    +
    +
    +
    +

    Note

    +

    If you have already defined your public/private SSH key pair and they +are stored in your $HOME/.ssh directory, you do not need to +include the –generate-ssh-keys option.

    +
    +

    The output from this command will look similar to this output, where +[user] is your user name:

    +
    SSH key files '/home/[user]/.ssh/id_rsa' and '/home/[user]/.ssh/id_rsa.pub' have been generated under ~/.ssh to allow SSH access to the VM. If using machines without permanent storage, back up your keys to a safe location.
    +
    +running...
    +
    +{
    +  "fqdns": "",
    +  "id": "/subscriptions/{unique-id}/resourceGroups/ClearResourceGroup/providers/Microsoft.Compute/virtualMachines/ClearVM",
    +  "location": "westus",
    +  "macAddress": "00-0D-3A-37-C7-59",
    +  "powerState": "VM running",
    +  "privateIpAddress": "10.0.0.4",
    +  "publicIpAddress": "13.91.4.245",
    +  "resourceGroup": "ClearResourceGroup",
    +  "zones": ""
    +}
    +
    +
    +

    Take note of the public IP address from the output.

    +
  6. +
  7. Login into the new Clear Linux OS Basic VM, run the ssh command with the +public IP address obtained from the previous step as shown:

    +
    ssh [user]@13.91.4.245
    +
    +
    +

    You may see the following message about the authenticity of the host. If +this appears, type yes to proceed connecting to your new Clear Linux OS VM.

    +
    The authenticity of host '13.91.4.245 (13.91.4.245)' can't be established.
    +RSA key fingerprint is SHA256:{unique-number}.
    +Are you sure you want to continue connecting (yes/no)? yes
    +Warning: Permanently added '13.91.4.245' (RSA) to the list of known hosts.
    +
    +[user]@ClearVM ~ $
    +
    +
    +

    You are now logged into your new Clear Linux OS VM as [user], where [user] is your +user name. To check which software bundles are included with +this VM image, run the sudo swupd bundle-list command inside the +VM:

    +
    sudo swupd bundle-list
    +
    +
    +

    The output shown should be similar to:

    +
    swupd-client bundle list 3.14.1
    +   Copyright (C) 2012-2017 Intel Corporation
    +
    +bootloader
    +editors
    +kernel-hyperv
    +network-basic
    +openssh-server
    +os-cloudguest-azure
    +os-core
    +os-core-update
    +perl-basic
    +python-basic
    +python3-basic
    +storage-utils
    +sysadmin-basic
    +Current OS version: 19600
    +
    +
    +

    When you are finished using your new Clear Linux OS VM, type exit to close +the SSH terminal and logout.

    +
  8. +
+
+
+

Stop and deallocate the Clear Linux OS VM and resources

+

When you finish using your new Clear Linux OS instance, you must stop the VM and +deallocate the resources in your resource group. If you only stop a VM, the OS +image shuts down but the resources associated with it in your resource group +remain allocated and incurring charges. For instance, if you stop and then +later start the VM using the az vm start... without deallocating +the resources, the IP address is retained and you can access the VM using that +same IP address. To release the resources associated with the VM and stop +incurring charges for them, you must deallocate the resources as well.

+
    +
  1. At the command prompt, enter the az vm stop... command as +follows:

    +
    az vm stop --resource-group ClearResourceGroup --name ClearVM
    +
    +
    +

    This will stop the VM and then output text similar to:

    +
    {
    +  "endTime": "2017-12-13T23:04:02.346676+00:00",
    +  "error": null,
    +  "name": "{unique-name}",
    +  "startTime": "2017-12-13T23:03:59.018536+00:00",
    +  "status": "Succeeded"
    +}
    +
    +
    +
  2. +
  3. Once the VM stops, deallocate the VM resources to stop incurring +charges for the Clear Linux OS instance. Enter the following command:

    +
    az vm deallocate --resource-group ClearResourceGroup --name ClearVM
    +
    +
    +
  4. +
+

Congratulations! You are up and running with Clear Linux OS on MS Azure using the +Azure CLI 2.0 command line tools.

+
+
+

Next steps

+

To see use cases you can fulfill with your Clear Linux OS instance, visit our +tutorials section.

+

For additional information visit the Clear Linux OS +Azure Partner Mini Case Study and the Azure Partner Datasheet.

+

To learn more about the MS Azure CLI 2.0 tool and options that are available, +visit the MS Azure documentation and tutorials website.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/cloud-install/digitalocean.html b/get-started/cloud-install/digitalocean.html new file mode 100644 index 000000000..d93be1707 --- /dev/null +++ b/get-started/cloud-install/digitalocean.html @@ -0,0 +1,1553 @@ + + + + + + + + + + Clear Linux* OS on DigitalOcean* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on DigitalOcean*

+

This guide explains how to import a Clear Linux* OS image to DigitalOcean +and then deploy a VM instance.

+ +
+

Prerequisites

+ +
+
+

Add Clear Linux OS Image to DigitalOcean

+

Before you can deploy a Clear Linux OS instance on DigitalOcean, you need to add +an image since it’s currently not available in its marketplace. +You can use our pre-built image or you can build your own custom image.

+
+

Use pre-built image

+
+

Note

+

Our cloud images (clear-<release version>-digitalocean.img.gz) for +DigitalOcean are considered Beta until we finish setting up our +automated testing of the images against the DigitalOcean environment. +Apart from the initial version, clear-31870-digitalocean.img.gz, we +cannot guarantee that future versions and updates to the initial +version is problems-free.

+
+
    +
  1. Copy the URL for clear-31870-digitalocean.img.gz.

  2. +
  3. Skip to the Upload image section.

  4. +
+
+
+

Build custom image

+

For this method, you need a Clear Linux OS system to generate an image using +the clr-installer tool.

+
    +
  1. Add the clr-installer and gzip bundles.

    +
    sudo swupd bundle-add clr-installer gzip
    +
    +
    +
  2. +
  3. Create an image configuration YAML file. +See Installer YAML Syntax for more information on the clr-installer +configuration YAML syntax.

    +
    cat > clear-digitalocean.yaml << EOF
    +#clear-linux-config
    +
    +# switch between aliases if you want to install to an actual block device
    +# i.e /dev/sda
    +block-devices: [
    +   {name: "bdevice", file: "clear-digitalocean.img"}
    +]
    +
    +targetMedia:
    +- name: \${bdevice}
    +  size: "800M"
    +  type: disk
    +  children:
    +  - name: \${bdevice}1
    +    fstype: ext4
    +    options: -O ^64bit
    +    mountpoint: /
    +    size: "800M"
    +    type: part
    +
    +bundles: [
    +    bootloader,
    +    openssh-server,
    +    os-cloudguest,
    +    os-core,
    +    os-core-update,
    +    systemd-networkd-autostart
    +  ]
    +
    +autoUpdate: false
    +postArchive: false
    +postReboot: false
    +telemetry: false
    +legacyBios: true
    +
    +keyboard: us
    +language: en_US.UTF-8
    +kernel: kernel-kvm
    +
    +version: 0
    +EOF
    +
    +
    +

    The settings that are required in order to make the image +work on DigitalOcean are:

    +
      +
    • os-cloudguest bundle: Allows DigitalOcean to provision the +image with settings such as hostname, resource (CPU, memory, +storage) sizing, and user creation.

    • +
    • legacyBios: true: The image need to support legacy BIOS to boot +on DigitalOcean.

    • +
    +
  4. +
  5. Generate the image.

    +
    sudo clr-installer -c clear-digitalocean.yaml
    +
    +
    +

    The output should be clear-digitalocean.img.

    +
  6. +
  7. Compress the image with gzip to save bandwidth and upload time.

    +
    gzip clear-digitalocean.img
    +
    +
    +

    The output should be clear-digitalocean.img.gz.

    +
    +

    Note

    +

    bzip2 is the other compression format DigitalOcean accepts.

    +
    +
  8. +
+
+
+

Upload image

+
    +
  1. On DigitalOcean’s website, go to MANAGE ‣ Images +‣ Custom Images.

    +

    See Figure 1.

    +
    +DigitalOcean - Upload custom images +
    +

    Figure 1: DigitalOcean - Upload custom images

    +
    +
    +
  2. +
  3. Select an upload method.

    +
      +
    • To import a pre-built image from Clear Linux OS downloads, click +Import via URL, paste the URL, and click Next.

      +

      See Figure 2.

      +
      +DigitalOcean - Import via URL +
      +

      Figure 2: DigitalOcean - Import via URL

      +
      +
      +
    • +
    • To import your custom image, click Upload Image +and select the image from your client system.

    • +
    +
  4. +
  5. Set the DISTRIBUTION type as Unknown.

    +

    See Figure 3.

    +
    +

    +
    +
  6. +
  7. Choose your preferred datacenter region.

  8. +
  9. Click Upload Image. +Wait for the upload to finish before proceeding to the next section.

    +
    +DigitalOcean - Set image distribution type, region, tag +
    +

    Figure 3: DigitalOcean - Set image distribution type, region, tag

    +
    +
    +
  10. +
+
+
+
+

Create and Deploy a Clear Linux OS Instance

+
    +
  1. On DigitalOcean’s website, go to MANAGE ‣ Droplets +and then click Create Droplet.

    +

    See Figure 4.

    +
    +DigitalOcean - Create Droplet +
    +

    Figure 4: DigitalOcean - Create Droplet

    +
    +
    +
  2. +
  3. Under Choose an image, select Custom images.

    +

    See Figure 5.

    +
    +

    +
    +
  4. +
  5. Select your uploaded Clear Linux OS image.

    +
    +DigitalOcean - Choose custom image +
    +

    Figure 5: DigitalOcean - Choose custom image

    +
    +
    +
  6. +
  7. Under Choose a plan, select your preferred plan.

    +

    See Figure 6.

    +
    +DigitalOcean - Choose plan +
    +

    Figure 6: DigitalOcean - Choose plan

    +
    +
    +
  8. +
  9. Under Choose a datacenter region, select the region you +want the instance deployed to.

    +

    See Figure 7.

    +
    +DigitalOcean - Choose datacenter region +
    +

    Figure 7: DigitalOcean - Choose datacenter region

    +
    +
    +
  10. +
  11. Assign SSH key to default clear user.

    +

    By default, the user clear will be added to the instance and +an SSH key must be assigned to this account.

    +
      +
    1. Under Authentication, select SSH keys and +click New SSH Key.

      +

      See Figure 8.

      +
      +DigitalOcean - Add SSH key +
      +

      Figure 8: DigitalOcean - Add SSH key

      +
      +
      +
    2. +
    3. Copy and paste your SSH public key in the SSH key content +text field.

      +

      See Figure 9.

      +
      +

      +
      +
    4. +
    5. Give a name for the SSH key.

    6. +
    7. Click Add SSH Key.

      +
      +DigitalOcean - Add public SSH key +
      +

      Figure 9: DigitalOcean - Add public SSH key

      +
      +
      +
    8. +
    +
    +

    Note

    +

    If you need to add additional users to the instance, you can do that +wth a YAML-formatted cloud-config user data script. +For more information on cloud-config scripting for Clear Linux OS, see our +subset implementation of cloud-init called micro-config-drive.

    +
      +
    1. Under Select additional options, +select User data.

    2. +
    3. Add your YAML-formatted cloud-config user data in the field below. +Here is a simple example:

      +
      #cloud-config
      +
      +users:
      +- name: foobar
      +  gecos: Foo B. Bar
      +  homedir: /home/foobar
      +  ssh-authorized-keys:
      +    - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC65OihS4UP27xKOpqKWgT9
      +      mgUNwEqhUEpTGGvopjT65Y/KU9Wfj6EYsdGzbHHcMUhFSTxAUAV4POH5d0LR
      +      MzI7sXMe528eCmpm2fTOHDDkVrurP/Jr2bjB9IrfSMkBYS8uRd603xNg/RDq
      +      EH3XzVeEDdEAxoej0mzsJ2UkQSBi+PD1J7JeCbX2lsb55x2yWzaUa+BTai7+
      +      /TU4UabTRDtFTiXhx2rImSSguofDISVll6W5TTzbGmHdoEI+8DIAFU66ZgC9
      +      SzL75LQi1YAWlj5XG+dXhN6Ev6KFM34odvWdxeCj0jcx5UIXcieBfOuLujEH
      +      dVybwNLG7hxDy/67BA1j username@mydomain.com
      +  sudo:
      +    - [ "ALL=(ALL) NOPASSWD:ALL" ]
      +
      +
      +
    4. +
    +
    +
  12. +
  13. Under Finalize and create:

    +
      +
    1. Set the number of instances you want to deploy.

    2. +
    3. Set the hostname for the instance.

    4. +
    +

    See Figure 10.

    +
    +

    +
    +
  14. +
  15. Click Create Droplet to deploy the instance.

    +
    +DigitalOcean - Finalize and create Droplet +
    +

    Figure 10: DigitalOcean - Finalize and create Droplet

    +
    +
    +
  16. +
+
+
+

Connect to Your Clear Linux OS Instance

+
    +
  1. On DigitalOcean’s website, go to MANAGE ‣ Droplets.

    +

    See Figure 11.

    +
    +

    +
    +
  2. +
  3. Get the IP address of your Clear Linux OS instance.

    +
    +DigitalOcean - Get Droplet IP address +
    +

    Figure 11: DigitalOcean - Get Droplet IP address

    +
    +
    +
  4. +
  5. On your client system, SSH into your instance. +For example:

    +
    ssh clear@<IP-address-of-instance> -i <SSH-private-key>
    +
    +
    +
  6. +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/cloud-install/gce.html b/get-started/cloud-install/gce.html new file mode 100644 index 000000000..c8f52b451 --- /dev/null +++ b/get-started/cloud-install/gce.html @@ -0,0 +1,1477 @@ + + + + + + + + + + Clear Linux* OS on Google Cloud Platform* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on Google Cloud Platform*

+

This page explains the steps to create a virtual machine instance of +Clear Linux* OS on Google Cloud Platform (GCP).

+ +
+

Prerequisites

+
    +
  • Set up a Google account and a GCP billing account.

  • +
  • Generate and install a user SSH key in the Linux PCs that will connect to +the VMs in GCP.

  • +
+
+
+

Setup Clear Linux OS VM on GCP

+
    +
  1. Sign in to your Google* account on the +Google Cloud Console:

    +
    +Sign in to Google services +
    +

    Figure 1: Google sign in screen

    +
    +
    +
  2. +
  3. Google Cloud Platform uses Projects to manage resources. +Select or create a new project for hosting the Clear Linux OS VM.

    +
    +

    Note

    +

    Refer to the +Quickstart Using a Linux VM +guide to learn about the process of creating VM instances on GCP.

    +
    +
  4. +
  5. Navigate to the latest Clear Linux OS +release folder +to view the currently released GCE +image, and download the clear-<release number>-gce.tar.gz +image archive.

    +

    You don’t need to uncompress the image archive, the intact file will +be uploaded to the Google Cloud Storage later.

    +
  6. +
  7. Create a Storage Bucket for hosting the Clear Linux OS image source archive +downloaded in the previous step:

    +
      +
    • Click the Navigation menu icon on the upper left screen menu.

    • +
    • Select the Storage item from the sidebar on the left. +You will be sent to the Storage Browser tool or the Cloud Storage +overview page.

    • +
    +
    +Browse Google Cloud Storage +
    +

    Figure 2: Browse Google Cloud Storage

    +
    +
    +
    +

    Note

    +

    You may need to create a billing account and link to this project +before you create a bucket.

    +
    +
    +Cloud Storage Browser tool +
    +

    Figure 3: Cloud Storage Browser tool

    +
    +
    +
      +
    • Click the CREATE BUCKET button to enter the bucket creation tool. +The bucket name must be unique because buckets in the Cloud Storage share +a single global namespace.

      +

      Leave the remaining options set to the defaults, and click the +Create button at the bottom to create a Bucket.

      +
      +Set a unique bucket name +
      +

      Figure 4: Set bucket name

      +
      +
      +
    • +
    +
  8. +
  9. Once the bucket is created, click the Upload files button +on the Bucket details page to upload the Clear Linux OS GCE image archive +to the named bucket:

    +
    +Cloud Storage bucket is available for storing objects +
    +

    Figure 5: Cloud Storage bucket

    +
    +
    +
    +Uploading the image source archive file +
    +

    Figure 6: Uploading the image source archive file

    +
    +
    +
    +Image archive imported complete +
    +

    Figure 7: Importing complete

    +
    +
    +
  10. +
  11. Browse the Compute Engine Image library page:

    +
      +
    • Click the Navigation menu icon on the upper left screen menu.

    • +
    • Select the Compute Engine ‣ Images from the side bar +on the left.

      +
      +Go to Google Compute Engine Image library +
      +

      Figure 8: Image library

      +
      +
      +
    • +
    +
  12. +
  13. On the Compute Engine Image library page, click the +[+] CREATE IMAGE menu item to create a custom image:

    +
    +Create a Google Compute Engine image +
    +

    Figure 9: Create image

    +
    +
    +
  14. +
  15. In the VM image creation page, change the image source type to +Cloud Storage file.

  16. +
  17. Under Source, select Browse.

  18. +
  19. Locate the clear-<release number>-gce.tar.gz file, +and click Select.

    +
    +Create the image using the imported image archive object +
    +

    Figure 10: Create image using imported object

    +
    +
    +

    Accept all default options, and click the Create button +at the bottom to import the Clear Linux GCE image to the image library.

    +
    +Clear Linux Compute Engine image is created +
    +

    Figure 11: Image is created

    +
    +
    +
  20. +
  21. After the Clear Linux OS image is imported, you can launch a VM instance running +Clear Linux OS:

    +
      +
    • Click the Navigation menu icon on the upper left screen menu.

    • +
    • Select Compute Engine ‣ VM Instances from the side bar +on the left.

    • +
    +
    +Go to VM instances catalog +
    +

    Figure 12: VM instances catalog

    +
    +
    +
  22. +
  23. If no VM instance was created in this project, you will be prompted to +create one.

  24. +
  25. Alternatively, click the CREATE INSTANCE button on the VM +instances page to create a VM instance.

    +
    +Prompt for VM creation +
    +

    Figure 13: VM creation

    +
    +
    +
    +List of VM instances +
    +

    Figure 14: VM instances list

    +
    +
    +
      +
    • Under Region, choose a region based on the +Best practices for Compute Engine regions selection.

    • +
    • Under Boot disk, click the Change button.

      +
      +Use custom image while creating Clear Linux VM instance +
      +

      Figure 15: Use custom image

      +
      +
      +
    • +
    • Select the Custom images tab for using Clear Linux OS GCE image.

      +
      +Select Clear Linux boot disk to create a VM instance +
      +

      Figure 16: Select Clear Linux boot disk to create a VM instance

      +
      +
      +
    • +
    • Scroll down to the bottom of the VM instance creation page, +expand the Management, security, disks, networking, sole tenancy +group.

      +
      +Clear Linux requires setting up SSH keys +
      +

      Figure 17: Set up SSH keys

      +
      +
      +
      +

      Note

      +

      Clear Linux OS does not allow SSH login with a root account by default. +As a result, you must configure the VM instance with your +SSH public key, so that you are able to access it remotely.

      +

      Refer to OS Security for more details.

      +
      +
    • +
    • Click the Security tab, copy and paste your SSH public key:

      +
      +Set SSH key for remote login +
      +

      Figure 18: Set SSH key for remote login

      +
      +
      +
      +

      Note

      +

      The username is assigned from characters preceding @ in the email +address, included in the SSH key.

      +
      +
    • +
    • Click the Create button to create the Clear Linux OS VM.

    • +
    +
  26. +
  27. The Clear Linux VM instance is created and assigned a public IP address:

    +
    +Clear Linux VM instance is created and started +
    +

    Figure 19: Clear Linux VM instance is created and started

    +
    +
    +
  28. +
  29. You can now SSH login to the VM using the IP address obtained in the +previous step, and the username associated with the SSH public key:

    +
    +SSH login to the Clear Linux VM +
    +

    Figure 20: SSH login to Clear Linux VM

    +
    +
    +
  30. +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/cloud-install/import-clr-aws.html b/get-started/cloud-install/import-clr-aws.html new file mode 100644 index 000000000..934ac1bce --- /dev/null +++ b/get-started/cloud-install/import-clr-aws.html @@ -0,0 +1,1700 @@ + + + + + + + + + + Import Clear Linux Image and Launch Instance on AWS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Import Clear Linux Image and Launch Instance on AWS

+

Clear Linux is available on the AWS marketplace. However, it may not +be the latest version because we only update the marketplace on a +periodic basis, as often as weekly or but maybe monthly as well. +If you want to use the latest release from us or upload your own +custom image, follow this guide.

+ +
+

Prerequisites

+
    +
  • You are familiar with AWS and how to use it

  • +
+
+
+

Download or create a Clear Linux OS image for AWS

+

Obtain an AWS Clear Linux OS image using one of these methods.

+
+

Download pre-built image

+
    +
  1. Go to the Downloads page and download the +Amazon* Web Services (AWS) image.

  2. +
  3. Uncompress it.

  4. +
+
+
+

Create a custom image using clr-installer

+
    +
  1. On a Clear Linux OS system, open a terminal.

  2. +
  3. Install the clr-installer bundle.

    +
    sudo swupd bundle-add clr-installer
    +
    +
    +
  4. +
  5. Download a sample aws.yaml configuration file.

  6. +
  7. Make changes to the configuration file as needed. +See Installer YAML Syntax for more information on clr-installer +configuration YAML syntax.

  8. +
  9. Download the AWS image post-install script and make it executable.

  10. +
  11. Produce an image with clr-installer.

    +
    clr-installer --template $PWD/aws.yaml
    +
    +
    +
  12. +
+
+
+
+

Create an S3 bucket

+
    +
  1. Log into AWS.

  2. +
  3. Go to Services, Storage, and select S3. +See Figure 1.

    +
    +AWS Services - S3 Management Console +
    +

    Figure 1: AWS Services - S3 Management Console

    +
    +
    +
  4. +
  5. Click + Create bucket.

    +
    +AWS S3 - Create bucket +
    +

    Figure 2: AWS S3 - Create bucket

    +
    +
    +
  6. +
  7. Set a bucket name and select a region. +See Figure 3.

    +
    +AWS S3 - Create bucket - Set bucket name and region +
    +

    Figure 3: AWS S3 - Create bucket - Set bucket name and region

    +
    +
    +
  8. +
  9. Leave the Configure options and Set permissions +settings as is or configure as desired. See Figure 4 and 5.

    +
    +AWS S3 - Create bucket - Configure options +
    +

    Figure 4: AWS S3 - Create bucket - Configure options

    +
    +
    +
    +AWS S3 - Create bucket - Set permissions +
    +

    Figure 5: AWS S3 - Create bucket - Set permissions

    +
    +
    +
  10. +
  11. At the Review screen, click Create bucket.

    +
    +AWS S3 - Create bucket - Review +
    +

    Figure 6: AWS S3 - Create bucket - Review

    +
    +
    +

    The created bucket should appear. See Figure 7.

    +
    +AWS S3 - Created bucket +
    +

    Figure 7: AWS S3 - Created bucket

    +
    +
    +
  12. +
+
+
+

Upload the Clear Linux OS image into the bucket

+
    +
  1. Click on the bucket. +See Figure 8.

    +
    +AWS S3 - Select bucket +
    +

    Figure 8: AWS S3 - Select bucket

    +
    +
    +
  2. +
  3. Click Upload. +See Figure 9.

    +
    +AWS S3 - Upload +
    +

    Figure 9: AWS S3 - Upload

    +
    +
    +
  4. +
  5. Click Add files and select the Clear Linux OS image file to upload. +See Figure 10.

    +
    +AWS S3 - Add files +
    +

    Figure 10: AWS S3 - Add files

    +
    +
    +
  6. +
  7. Click Next. Leave remaining settings as is or set as desired. +See Figure 11, Figure 12, and Figure 13.

    +
    +AWS S3 - Add files +
    +

    Figure 11: AWS S3 - Add files

    +
    +
    +
    +AWS S3 - Set permissions +
    +

    Figure 12: AWS S3 - Set permissions

    +
    +
    +
    +AWS S3 - Set properties +
    +

    Figure 13: AWS S3 - Set properties

    +
    +
    +
  8. +
  9. Click Upload to upload the image. +See Figure 14.

    +
    +AWS S3 - Upload +
    +

    Figure 14: AWS S3 - Upload

    +
    +
    +
  10. +
+
+
+

Add a user to IAM with AWS_CLI privilege

+
    +
  1. Go to Services, Security, Identity, & Compliance, +and select IAM. +See Figure 15.

    +
    +AWS Services - IAM +
    +

    Figure 15: AWS Services - IAM

    +
    +
    +
  2. +
  3. On the left navigation bar under Access management, +select Users. +See Figure 16.

    +
    +AWS AIM - Access management +
    +

    Figure 16: AWS AIM - Access management

    +
    +
    +
  4. +
  5. Click Add user. +See Figure 17.

    +
    +AWS AIM - Add user +
    +

    Figure 17: AWS AIM - Add user

    +
    +
    +
  6. +
  7. Under the Set user details section, enter a user name. +See Figure 18.

    +
    +AWS AIM - Enter user name and select access type +
    +

    Figure 18: AWS AIM - Enter user name and select access type

    +
    +
    +
  8. +
  9. Under the Select AWS access type section, +checkmark Programmatic access. +See Figure 18.

  10. +
  11. Click Next: Permissions.

  12. +
  13. Under Set permissions, select Add user to group. +See Figure 19.

    +
    +AWS AIM - Set user permissions +
    +

    Figure 19: AWS AIM - Set user permissions

    +
    +
    +
  14. +
  15. Under Add user to group, enter AWS_CLI into search window. +Checkmark AWS_CLI. +See Figure 19.

  16. +
  17. Click Next: Tags.

  18. +
  19. Click Next: Review.

  20. +
  21. Click Create user. +See Figure 20.

    +
    +AWS AIM - Create user +
    +

    Figure 20: AWS AIM - Create user

    +
    +
    +
  22. +
  23. After the user is successfully added, save the Access key ID +and the Secret access key. These will be used when setting up +the AWS CLI tool at a later step. +See Figure 21.

    +
    +AWS AIM - Access key ID and secret access key +
    +

    Figure 21: AWS AIM - Access key ID and secret access key

    +
    +
    +
  24. +
  25. Click Close.

  26. +
+
+
+

Install and configure the AWS CLI tool on your system

+
    +
  1. To install the tool on Clear Linux OS, simply run:

    +
    sudo swupd bundle-add cloud-api
    +
    +
    +
  2. +
  3. Configure it with your security credentials, default region, +and default output format. See Configuring the AWS CLI for more information.

    +
    aws configure
    +
    +
    +

    Below is an example (using the security credentials that was created in +the previous section):

    +
    AWS Access Key ID [None]: AKIA5LEGQPQ3EUB3JMS7
    +AWS Secret Access Key [None]: EcvbWpWr+Gp7NhBoVEacwR3EifzN7xTTg8B1PHvO
    +Default region name [None]: us-west-2
    +Default output format [None]: json
    +
    +
    +
  4. +
  5. Verify your credentials are good.

    +
    aws iam list-access-keys
    +
    +
    +

    If you get something like the example below, then make sure you set your +system date and time properly.

    +
    An error occurred (SignatureDoesNotMatch) when calling the ListAccessKeys operation: Signature expired: 20200305T153154Z is now earlier than 20200305T231847Z (20200305T233347Z - 15 min.)
    +
    +
    +
  6. +
+
+
+

Import a snapshot of the Clear Linux OS image

+
    +
  1. Create a container.json with the description of the image to import. +Specify the name of the S3 bucket that was created earlier for the +S3Bucket field and the name of Clear Linux OS image that was uploaded to the S3 bucket +for the S3Key.

    +

    Here’s an example:

    +
    {
    +  "Description": "My Clear Linux AWS 32400 Image",
    +  "Format": "raw",
    +  "UserBucket": {
    +    "S3Bucket": "my-clearlinux-bucket",
    +    "S3Key": "clear-32400-aws.img"
    +  }
    +}
    +
    +
    +
  2. +
  3. Import a snapshot of the image.

    +
    aws ec2 import-snapshot \
    +--description "My Clear Linux AWS 32400 Snapshot" \
    +--disk-container file://container.json
    +
    +
    +

    You should get an output similar this example:

    +
      {
    +    "Description": "My Clear Linux AWS 32400 Snapshot",
    +    "ImportTaskId": "import-snap-00fa9ccd98e9b8378",
    +    "SnapshotTaskDetail": {
    +        "Description": "My Clear Linux AWS 32400 Snapshot",
    +        "DiskImageSize": 0.0,
    +        "Format": "RAW",
    +        "Progress": "3",
    +        "Status": "active",
    +        "StatusMessage": "pending",
    +        "UserBucket": {
    +            "S3Bucket": "my-clearlinux-bucket",
    +            "S3Key": "clear-32400-aws.img"
    +        }
    +    }
    +}
    +
    +
    +
  4. +
  5. Using the ImportTaskId from the previous step, check the status +of the import. For example:

    +
    snapshot_id=$(aws ec2 describe-import-snapshot-tasks \
    +--import-task-ids "import-snap-00fa9ccd98e9b8378" \
    +| grep SnapshotId | awk -F '"' '{print $4}')
    +
    +
    +

    Wait for the Status field to show completed before proceeding.

    +

    The resulting snapshot_id will be used to create an AMI in +the next section.

    +
  6. +
+
+
+

Create an AMI from the snapshot

+

There are 2 methods to create an AMI from the snapshot.

+
    +
  • AWS CLI Method:

    +
    aws ec2 register-image \
    +--name "My-Clear-Linux-32400-AMI" \
    +--description "My Clear Linux 32400 AMI" \
    +--architecture x86_64 \
    +--virtualization-type hvm \
    +--ena-support \
    +--root-device-name "/dev/sda1" \
    +--block-device-mappings "[
    +  {
    +    \”Deviceame\": \"/dev/sda1\",
    +    \"Ebs\": {
    +      \"SnapshotId\": \"$snapshot_id\"
    +    }
    +  }
    +]"
    +
    +
    +
  • +
  • GUI Method:

    +
      +
    1. Go to Services, Compute, and select +EC2. +See Figure 22.

      +
      +AWS Services - EC2 +
      +

      Figure 22: AWS Services - EC2

      +
      +
      +
    2. +
    3. Click Snapshots. +See Figure 23.

      +
      +AWS Services - Snapshots +
      +

      Figure 23: AWS Services - Snapshots

      +
      +
      +
    4. +
    5. Locate the snaphot using the Snapshot ID. +See Figure 24.

      +
      +AWS Services - Snapshots +
      +

      Figure 24: AWS Services - Snapshots

      +
      +
      +
    6. +
    7. Right-click it and select Create Image.

    8. +
    9. Configure as follows:

      +
        +
      • Enter the name in the Name field

      • +
      • Enter the description in the Description field

      • +
      • Set the Architecture as x86_64

      • +
      • Set the Virtualization type as Hardware-assisted virtualization

      • +
      • Set the Root device name as /dev/sda1

      • +
      +

      See Figure 25.

      +
      +AWS Services - Snapshots +
      +

      Figure 25: AWS Services - Snapshots

      +
      +
      +
    10. +
    11. Click Create.

    12. +
    +
  • +
+
+
+

Launch an instance

+
    +
  1. Go to Services, Compute, and select +EC2. +See Figure 26.

    +
    +AWS Services - EC2 +
    +

    Figure 26: AWS Services - EC2

    +
    +
    +
  2. +
  3. Click the Launch Instance dropdown and select +Launch Instance. +See Figure 27.

    +
    +AWS Services - Launch instance +
    +

    Figure 27: AWS Services - Launch instance

    +
    +
    +
  4. +
  5. On the left navigation bar, select My AMIs. +See Figure 28.

    +
    +AWS Services - Select AMI +
    +

    Figure 28: AWS Services - Select AMI

    +
    +
    +
  6. +
  7. Find your AMI and click Select.

  8. +
  9. From here onward, configure the details of your instance as desired +and launch it.

  10. +
+
+
+

Connect to your Clear Linux OS instance

+
    +
  1. Follow these steps to connect to your instance.

  2. +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/cloud-install/qingcloud.html b/get-started/cloud-install/qingcloud.html new file mode 100644 index 000000000..aa30b36b6 --- /dev/null +++ b/get-started/cloud-install/qingcloud.html @@ -0,0 +1,1476 @@ + + + + + + + + + + Clear Linux* OS on QingCloud* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on QingCloud*

+

This tutorial describes how to create and launch a Clear Linux OS instance +from the QingCloud console.

+ +
+

Prerequisites

+

This tutorial assumes that you have completed the following configuration steps:

+
    +
  • Your environment can run SSH to access remote Clear Linux OS virtual hosts.

  • +
  • You know the absolute path where the browser downloaded the file.

  • +
  • You have set up a user account for QingCloud and that the account is +enabled and logged in to the QingCloud console. To learn more about +QingCloud and setting up an account, please visit QingCloud’s official +website.

  • +
+
+
+

Select and start Clear Linux OS virtual host with QingCloud console

+
    +
  1. Select 计算>主机 (Compute>Host) in the main menu of the +QingCloud console and click the 创建 (Create) option.

    +
    +QingCloud console +
    +
  2. +
  3. On the host creation page, first click the 系统 (System) option, +click the Clear Linux OS icon on the far right. Click the 下一步 (Next) +button to continue.

    +
    +Select Clear Linux OS to create virtual host +
    +

    Select Clear Linux OS to create a virtual host

    +
    +
    +
  4. +
  5. In the configuration selection interface, you can configure the +number of CPU cores, memory size, and the storage backup method. +For demonstration purposes, we will choose the default configuration. +Click the 下一步 (Next) button to go to the network settings +interface.

    +
    +Configuration selection +
    +

    Configuration selection

    +
    +
    +
  6. +
  7. Select 基础网络 (Basic Network) in the network settings +interface.

    +
    +Network settings +
    +

    Network Settings

    +
    +
    +
  8. +
  9. In the basic information setting interface, you need to enter the virtual +host name and set the SSH key login method.

  10. +
+
+

Create an SSH key (Optional)

+
    +
  1. If you haven’t created an SSH key before, click the 创建一个 +(Create one) button to create an SSH key.

    +
    +Create SSH key +
    +

    Create SSH Key

    +
    +
    +
  2. +
  3. In the SSH key creation interface, you can fill in the key name, and select +encryption method you prefer. After confirming that they are correct, click +the 提交 (Submit) button.

    +
    +New SSH key +
    +

    New SSH Key

    +
    +
    +
  4. +
  5. After the download button appears, please download the key within 10 +minutes, and save the key locally for connecting to the virtual host later.

    +
    +Download SSH key +
    +

    Download SSH Key

    +
    +
    +
  6. +
  7. After ensuring that the SSH key has been properly downloaded and saved, +check the basic information of the virtual host. After confirming that they +are correct, click the 创建 (Create) button.

    +
    +Confirm the information and create a virtual host +
    +

    Confirm the information and create a virtual host

    +
    +
    +
  8. +
+

QingCloud will now create the Clear Linux OS virtual host. You +can check the state of the virtual host in the new interface.

+
+
+
+

Apply for a public IP and add it to the virtual host

+
    +
  1. Since QingCloud does not automatically assign a public IP address to a +virtual host created using the default network, we need to manually apply +and add it to the virtual host. Click the 网络与CDN (Network and +CDN) button on the left side of the navigation bar .

    +
    +Network and CDN +
    +

    Network and CDN

    +
    +
    +
  2. +
  3. In the network and CDN configuration interface, click the 公网IP +(Public IP) button on the left , and click the 申请 (Apply) +button in the middle to create a public IP.

    +
    +Apply for public IP +
    +

    Apply for public IP

    +
    +
    +

    After clicking the apply button, a dialog will pop up. Read it +carefully and click the 继续申请公网IP (Continue to apply for +public IP) button.

    +
    +Confirmation dialog +
    +

    Confirmation dialog

    +
    +
    +
  4. +
  5. On the public network IP application page, confirm and fill in the +relevant information, including the charging mode and bandwidth upper limit +(the charge-by-bandwidth mode is used in this tutorial and the 2Mbps +bandwidth limit is set). After confirming that they are correct, click +提交 (Submit) button.

    +
    +Confirmation of Public IP Application +
    +

    Confirmation of Public IP Application

    +
    +
    +
  6. +
  7. After that, click the 计算>网卡 (Compute>Network Card) buttons +in the navigation bar to come to the network card interface.

    +
    +NIC interface +
    +

    Network Interface

    +
    +
    +
  8. +
  9. On the network card interface, select the network card of the Clear Linux OS host +that you just created. Click the 更多操作 (More Actions) +button above, and then click the 绑定公网IPv4 (Binding Public +Network IPv4) button.

    +
    +Bind selected +
    +

    Bind selected

    +
    +
    +
  10. +
  11. On the binding public network IP confirmation interface, select the public +IP address that has just been applied for, and click the 提交 +(Submit) button below . After waiting a moment, the state of the Clear Linux OS +virtual host will change.

    +
    +Commit binding +
    +

    Commit binding

    +
    +
    +
    +Public network IP binding succeeded +
    +

    Public network IP binding succeeded

    +
    +
    +
  12. +
+
+
+

Connect to Clear Linux OS virtual host

+

Click the 计算>主机 (Compute>Host) buttons on the left side of the +navigation bar to confirm that the current virtual host is running and has a public IP address.

+
+Confirm that the virtual host is currently in a normal state +
+

Confirm that the virtual host is currently in a normal state

+
+
+
    +
  1. Copy the public IP address of the current Clear Linux OS virtual host and +connect to it from an SSH client. Here we need to use the previously saved +SSH key.

  2. +
  3. In this tutorial, the MobaXterm client is used as an example to demonstrate +the login process. Check each item as shown. For the user name, we choose +root. For the key, select the SSH key that was downloaded and saved to +the local computer .

    +
    +SSH login virtual host settings +
    +

    SSH login virtual host settings

    +
    +
    +
  4. +
  5. Click Login to log in to the +Clear Linux OS virtual host after completing the setup process.

    +
    +SSH login successful +
    +

    SSH login successful

    +
    +
    +
  6. +
+
+
+

Remove Clear Linux OS virtual host

+

This section explains how to delete a Clear Linux OS virtual host created on QingCloud.

+

On the left navigation bar select 计算>主机 (Compute>Master), find +the Clear Linux OS host you just created, and click the checkbox next to it. Select +更多操作>删除 (More Actions>Delete) to delete the virtual host.

+
+Remove Clear Linux OS Virtual Host +
+

Remove Clear Linux OS Virtual Host

+
+
+
+
+

Delete the applied public IP

+

Select 网络与CDN>公网IP (Network and CDN>Public IP) from the +navigation bar on the left , and then find the public IP address just applied. +Select it as shown, then click 更多操作>删除 (More Actions>Delete) +to delete.

+
+Delete public network IP address +
+

Delete public network IP address

+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/compatibility-check.html b/get-started/compatibility-check.html new file mode 100644 index 000000000..d86fd511d --- /dev/null +++ b/get-started/compatibility-check.html @@ -0,0 +1,1307 @@ + + + + + + + + + + Check Processor Compatibility — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Check Processor Compatibility

+

Before installing Clear Linux* OS, check your host system’s processor compatibility using one of +the following options:

+
+

Note

+

This does not check other system components (for example: storage and +graphics) for compatibility with Clear Linux OS.

+
+
+

Option 1: Use the clear-linux-check-config.sh script on an existing Linux system

+
    +
  1. Download the clear-linux-check-config.sh file.

    +

    If a browser is not available, use:

    +
    curl -O https://cdn.download.clearlinux.org/current/clear-linux-check-config.sh
    +
    +
    +
  2. +
  3. Make the script executable.

    +
    chmod +x clear-linux-check-config.sh
    +
    +
    +
  4. +
  5. Run the script.

    +
      +
    1. Check to see if the host’s processor is capable of running Clear Linux OS.

      +
      ./clear-linux-check-config.sh host
      +
      +
      +
    2. +
    3. Check to see if the host is capable of running Clear Linux OS in a container.

      +
      ./clear-linux-check-config.sh container
      +
      +
      +
    4. +
    +

    The script prints a list of test results similar to the output below. +All items should return a SUCCESS status. This example indicates the +host’s processor supports running Clear Linux OS.

    +
    Checking if host is capable of running Clear Linux* OS
    +
    +SUCCESS: 64-bit CPU (lm)
    +SUCCESS: Supplemental Streaming SIMD Extensions 3 (ssse3)
    +SUCCESS: Streaming SIMD Extension v4.1 (sse4_1)
    +SUCCESS: Streaming SIMD Extensions v4.2 (sse4_2)
    +SUCCESS: Carry-less Multiplication extensions (pclmulqdq)
    +
    +
    +
  6. +
+
+

Option 2: Use a Clear Linux OS live image on a non-Linux system

+
    +
  1. Download either the Desktop or Server version of the live image ISO.

  2. +
  3. Follow the instruction to Create a bootable USB drive using Etcher*.

  4. +
  5. Boot up the Clear Linux OS live image on the USB.

  6. +
  7. Check compatibility as follows:

    +
      +
    • Desktop version:

      +
        +
      1. Open a terminal.

      2. +
      3. Check compatibility.

        +
        sudo clr-installer --system-check
        +
        +
        +
      4. +
      +
    • +
    • Server version:

      +
        +
      1. Log in as root and set a password.

      2. +
      3. Check compatibility.

        +
        clr-installer --system-check
        +
        +
        +
      4. +
      +
    • +
    +

    Expected output for a compatible host processor:

    +
    Checking for required CPU feature: lm [success]
    +Checking for required CPU feature: sse4_2 [success]
    +Checking for required CPU feature: sse4_1 [success]
    +Checking for required CPU feature: pclmulqdq [success]
    +Checking for required CPU feature: ssse3 [success]
    +Success: System is compatible
    +
    +
    +
  8. +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/containers/container-images.html b/get-started/containers/container-images.html new file mode 100644 index 000000000..e86b0e04b --- /dev/null +++ b/get-started/containers/container-images.html @@ -0,0 +1,1279 @@ + + + + + + + + + + Clear Linux* OS container images — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS container images

+

Clear Linux OS can run inside of a container on top of any operating system as long as +it is hosting a containerized environment, such as Docker* or Kubernetes*. A +Clear Linux OS base image is available for standalone use as well as variations of +popular application images built from the Clear Linux OS base image.

+

Browse all Clear Linux OS container images on the Docker Hub* website. Find the +Dockerfiles used to build Clear Linux OS container images on GitHub.

+

See the containers page for +the benefits of using Clear Linux OS containers and using Clear Linux OS as a container host.

+
+

Container image types

+
+

Clear Linux OS base image

+

The Clear Linux OS base container is +an official image on Docker Hub*. The Clear Linux OS base container image can be used to +run a standalone or as a parent image for building other +container images.

+

On a Docker host simply use the command docker run clearlinux to +pull and start a Clear Linux OS container.

+
+
+

Clear Linux OS-based runtime images

+

Clear Linux OS container images for programming languages and their runtimes are +available on Docker Hub*. These can be used by developers to create and run +applications using these popular runtimes.

+

Below are some popular Clear Linux OS-based runtime images:

+ +

More Clear Linux OS-based images can be found on Docker Hub: +https://hub.docker.com/u/clearlinux.

+
+
+

Clear Linux OS-based application images

+

Clear Linux OS container images for common applications are available on Docker Hub. +These can be used to create and deploy containerized services.

+

Below are some popular Clear Linux OS-based runtime images:

+ +

More Clear Linux OS-based images can be found on Docker Hub: +https://hub.docker.com/u/clearlinux.

+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/index.html b/get-started/index.html new file mode 100644 index 000000000..8fdf4fc67 --- /dev/null +++ b/get-started/index.html @@ -0,0 +1,1282 @@ + + + + + + + + + + Get started — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+ +
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/install-configfile.html b/get-started/install-configfile.html new file mode 100644 index 000000000..a8b94a956 --- /dev/null +++ b/get-started/install-configfile.html @@ -0,0 +1,1393 @@ + + + + + + + + + + Install using clr-installer and a configuration file — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Install using clr-installer and a configuration file

+

In addition to the interactive GUI and text-based modes, +clr-installer also supports an unattended mode where you +simply provide it a YAML configuration file.

+

This guide shows you two examples of how to use its unattended mode.

+ +
+

Prerequisites

+

For installation onto bare metal, ensure that your target system +supports these requirements:

+ +
+
+

Download and make bootable USB of the live server image

+

See Create a bootable USB drive using Etcher*.

+
+
+

Example 1: Fresh installation onto bare metal

+

This example uses a YAML configuration file to perform a new installation.

+
    +
  1. Boot up the Clear Linux OS Live Server USB thumb drive.

  2. +
  3. Select Clear Linux OS from the menu.

  4. +
  5. In the console window, log in as root and set a password.

  6. +
  7. Verify you have a network connection to the Internet and configure proxy +settings if you’re working behind a firewall.

  8. +
  9. Download a sample YAML configuration file. For example, if you want to +install Clear Linux OS with a desktop GUI, you might want to use live-desktop.yaml. +Or you can use the live-server.yaml if you want to install a non-GUI version +of Clear Linux OS.

    +
      +
    • Desktop:

      +
      curl -O https://cdn.download.clearlinux.org/current/config/image/live-desktop.yaml
      +
      +
      +
    • +
    • Server:

      +
      curl -O https://cdn.download.clearlinux.org/current/config/image/live-server.yaml
      +
      +
      +
    • +
    +
  10. +
  11. Edit the YAML configuration file and change the settings as needed.

    +

    Commonly-changed settings include (refer to the example below):

    +
      +
    1. Under block-devices (line 15), set your target media. For example: file: "/dev/sda".

    2. +
    3. Under targetMedia (line 34), set the third partition size to “0” to use the entire disk space.

    4. +
    5. Under bundles (line 37), add additional bundles as needed.

    6. +
    7. Delete the post-install section unless you have post-installation scripts.

    8. +
    9. Under Version (line 50), set a version number. To use the latest version, set to “0”.

    10. +
    +

    See Installer YAML Syntax for more details.

    +
     1          #clear-linux-config
    + 2
    + 3          # c-basic-offset: 2; tab-width: 2; indent-tabs-mode: nil
    + 4          # vi: set shiftwidth=2 tabstop=2 expandtab:
    + 5          # :indentSize=2:tabSize=2:noTabs=true:
    + 6
    + 7          # File:         developer-live-server.yaml
    + 8          # Use Case:     Live Image which boots into login prompt
    + 9          #               Optionally allows for installing Clear Linux OS
    +10          #               using the TUI clr-installer by running clr-installer
    +11
    +12          # switch between aliases if you want to install to an actual block device
    +13          # i.e /dev/sda
    +14          block-devices: [
    +15             {name: "bdevice", file: "/dev/sda"}
    +16          ]
    +17
    +18          targetMedia:
    +19          - name: ${bdevice}
    +20            type: disk
    +21            children:
    +22            - name: ${bdevice}1
    +23              fstype: vfat
    +24              mountpoint: /boot
    +25              size: "150M"
    +26              type: part
    +27            - name: ${bdevice}2
    +28              fstype: swap
    +29              size: "32M"
    +30              type: part
    +31            - name: ${bdevice}3
    +32              fstype: ext4
    +33              mountpoint: /
    +34              size: "0"
    +35              type: part
    +36
    +37          bundles: [os-core, os-core-update, NetworkManager, clr-installer, vim]
    +38
    +39          autoUpdate: false
    +40          postArchive: false
    +41          postReboot: false
    +42          telemetry: false
    +43          iso: true
    +44          keepImage: true
    +45
    +46          keyboard: us
    +47          language: en_US.UTF-8
    +48          kernel: kernel-native
    +49
    +50          version: 30010
    +
    +
    +
  12. +
  13. Start the unattended installation using the –config option.

    +
    clr-installer --config live-server.yaml
    +
    +
    +
  14. +
  15. Reboot your system after installation is completed.

  16. +
+
+
+

Example 2: Replicate a previous installation

+

This example uses a saved configuration file from a previous installation, +which you can use to easily clone the installation on additional machines +, ideally with the same hardware configuration.

+
+

Warning

+

Be aware of the following when applying a saved configuration on a new machine:

+
    +
  • Make sure the target media on the new machine matches up

  • +
  • The users’ credentials will be replicated as well

  • +
+
+
    +
  1. On a system where Clear Linux OS was installed, open a terminal window.

  2. +
  3. Get root privilege.

    +
    sudo su
    +
    +
    +
  4. +
  5. Copy the clr-installer.yaml from /root to a USB thumb drive.

    +
    cp /root/clr-installer.yaml <USB-thumb-drive>
    +
    +
    +
  6. +
  7. Install on target system.

    +
      +
    1. Boot up the Clear Linux OS Live Server USB thumb drive.

    2. +
    3. Select Clear Linux OS from the menu.

    4. +
    5. In the console window, log in as root and set a password.

    6. +
    7. Verify you have a network connection to the Internet and configure proxy +settings if you’re working behind a firewall.

    8. +
    9. Plug in and mount the USB thumb drive containing the retrieved +clr-installer.yaml configuration file.

    10. +
    11. Doublecheck to make sure the target media in the saved configuration file +matches with the target system’s.

    12. +
    13. Start the installation.

      +
      clr-installer --config clr-installer.yaml
      +
      +
      +
    14. +
    15. Reboot your system after installation is completed.

    16. +
    +
  8. +
+
+
+

References

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/ipxe-install.html b/get-started/ipxe-install.html new file mode 100644 index 000000000..2dd36456d --- /dev/null +++ b/get-started/ipxe-install.html @@ -0,0 +1,1778 @@ + + + + + + + + + + Install Clear Linux OS Over the Network with iPXE — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Install Clear Linux OS Over the Network with iPXE

+

PXE PXE is an industry standard +that describes client-server interaction with network-boot software and +uses the DHCP and TFTP protocols. iPXE, a fork of gPXE, is an open-source +version of PXE. It enables computers without built-in PXE capability to +network-boot using protocols such as HTTP, iSCSI, AoE, and +FCoE.

+

This guide demonstrates how to setup an iPXE server to install Clear Linux* OS +over the network.

+

Figure 1 depicts the flow of information between an iPXE server and a +PXE client.

+
+PXE information flow +
+

Figure 1: PXE information flow

+
+
+
+

Caution

+

The Clear Linux OS PXE image that boots through the iPXE process automatically +erases all data and partitions on the PXE client system and performs +a fresh installation according to a clr-installer YAML configuration +file.

+
+
+

Prerequisites

+

Your iPXE server must have:

+
    +
  • Ethernet/LAN boot option

  • +
  • At least two network adapters

  • +
  • Connection to a public (WAN) network

  • +
  • Secure Boot option disabled in BIOS

  • +
+

Your clients must have:

+
    +
  • Ethernet/LAN boot option

  • +
  • One network adapter

  • +
  • Secure Boot option disabled in BIOS

  • +
  • The minimum requirements to run Clear Linux OS. Review the Check Processor Compatibility.

  • +
+

Connect the iPXE server and clients to a network switch on a private +(LAN) network, as shown in Figure 2.

+
+Network topology +
+

Figure 2: Network topology

+
+
+
+
+

Install Clear Linux OS on server

+
    +
  1. Install Clear Linux OS on the system that will serve as the iPXE server. +We recommend using the server version.

  2. +
  3. Open a terminal window.

  4. +
  5. Add the pxe-server bundle to your Clear Linux OS system. +The bundle contains all the necessary apps (web server, iPXE firmwares, +dnsmasq which provides TFTP, DNS, DHCP functionalities) to run an +iPXE server.

    +
    sudo swupd bundle-add pxe-server
    +
    +
    +
  6. +
  7. Define the following variables used for setting up the iPXE server. +Be sure to substitute the value for the WAN_INTERFACE and +LAN_INTERFACE variables with your LAN and WAN interfaces names. +Use ip a to list your network devices and get their +names.

    +
    IPXE_APP_NAME=ipxe
    +IPXE_PORT=50000
    +WEB_ROOT_DIR=/var/www
    +IPXE_ROOT_DIR=${WEB_ROOT_DIR}/${IPXE_APP_NAME}
    +TFTP_ROOT_DIR=/srv/tftp
    +CLR_INSTALLER_CONF_DIR=clr-installer-configs
    +WAN_INTERFACE=eno1
    +LAN_INTERFACE=eno2
    +IPXE_SUBNET=192.168.100
    +IPXE_LAN_IP=${IPXE_SUBNET}.1
    +IPXE_SUBNET_MASK_IP=255.255.255.0
    +IPXE_SUBNET_BITMASK=16
    +
    +
    +
  8. +
+
+
+

Setup nginx web server to host iPXE

+
    +
  1. Set up an nginx web server to serve the Clear Linux OS PXE image to clients +using these steps:

    +
    # setup nginx
    +sudo mkdir -p /etc/nginx/conf.d
    +sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf
    +
    +# grant $USER permission to run the web server
    +sudo tee -a /etc/nginx/nginx.conf << EOF
    +user $USER;
    +EOF
    +
    +# web server config
    +sudo tee -a /etc/nginx/conf.d/${IPXE_APP_NAME}.conf << EOF
    +server {
    +  listen ${IPXE_PORT};
    +  server_name localhost;
    +
    +  # directory to store ipxe
    +  location /${IPXE_APP_NAME}/ {
    +    root ${WEB_ROOT_DIR}/${IPXE_APP_NAME};
    +    rewrite ^/${IPXE_APP_NAME}(/.*)$ \$1 break;
    +  }
    +
    +  # directory to store clr-installer configs
    +  location /${CLR_INSTALLER_CONF_DIR}/ {
    +    root ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR};
    +    rewrite ^/${CLR_INSTALLER_CONF_DIR}(/.*)$ \$1 break;
    +  }
    +}
    +EOF
    +
    +
    +
  2. +
  3. Set nginx to start automatically on boot and then start it.

    +
    sudo systemctl enable nginx --now
    +
    +
    +
  4. +
+
+
+

Configure iPXE

+
    +
  1. Download the latest Clear Linux OS PXE image and extract the files into the iPXE root.

    +
    sudo curl -o /tmp/clear-pxe.tar.xz \
    +  https://cdn.download.clearlinux.org/current/clear-$(curl \
    +  https://cdn.download.clearlinux.org/latest)-pxe.tar.xz
    +sudo mkdir -p ${IPXE_ROOT_DIR}
    +sudo tar -xJf /tmp/clear-pxe.tar.xz -C ${IPXE_ROOT_DIR}
    +sudo ln -sf $(ls ${IPXE_ROOT_DIR} | grep 'org.clearlinux.*') ${IPXE_ROOT_DIR}/linux
    +
    +
    +
    +

    Note

    +

    Ensure that the initial ramdisk file is named initrd and +the kernel file is named linux, which is a symbolic link to the +actual kernel file.

    +
    +
  2. +
  3. Create an iPXE boot script. The script presents a menu of bootable images to +download, boot, and install Clear Linux OS, according to a designated clr-installer +YAML configuration file.

    +
    sudo tee -a ${IPXE_ROOT_DIR}/ipxe_boot_script.ipxe << EOF
    +#!ipxe
    +
    +set menu-timeout 5000
    +set submenu-timeout \${menu-timeout}
    +isset \${menu-default} || set menu-default clr-server
    +
    +:menu
    +menu Select a version of Clear Linux OS to install
    +item clr-desktop Clear Linux OS (Desktop)
    +item clr-server Clear Linux OS (Server)
    +item ipxe-shell iPXE Shell
    +item reboot Reboot
    +
    +choose --timeout \${menu-timeout} --default \${menu-default} selected || goto cancel
    +set menu-timeout 0
    +goto \${selected}
    +
    +:clr-desktop
    +echo Booting and installing Clear Linux OS (Desktop)...
    +kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug \\
    +tsc=reliable no_timer_check noreplace-smp rw initrd=initrd \\
    +clri.descriptor=http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml
    +initrd initrd
    +boot || goto failed
    +
    +:clr-server
    +echo Booting and installing Clear Linux OS (Server)...
    +kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug \\
    +tsc=reliable no_timer_check noreplace-smp rw initrd=initrd \\
    +clri.descriptor=http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml
    +initrd initrd
    +boot || goto failed
    +
    +:cancel
    +echo Menu canceled, going to iPXE shell
    +
    +:ipxe-shell
    +echo Type 'exit' to return to the menu
    +shell
    +set menu-timeout 0
    +set submenu-timeout 0
    +goto menu
    +
    +echo Booting
    +:failed
    +echo Booting failed, going to iPXE shell
    +goto shell
    +
    +:reboot
    +echo Rebooting...
    +sleep 1
    +reboot
    +EOF
    +
    +
    +
    +

    Note

    +

    The clri.discriptor option tells clr-installer where to download a YAML +configuration file to use. Without this option, the Clear Linux OS PXE image will +simply boot and not perform any installation.

    +
    +
  4. +
+
+
+

Add clr-installer YAML configuration files

+

After the Clear Linux OS PXE image boot, clr-installer downloads the YAML configuration file +specified in the kernel command-line and installs accordingly.

+

See Installer YAML Syntax for more information on clr-installer configuration +YAML syntax.

+
    +
  1. Create the directory to store the configuration files.

    +
    sudo mkdir -p ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}
    +
    +
    +
  2. +
  3. Create this sample Desktop configuration called clr-desktop.yaml.

    +
    sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml << EOF
    +#clear-linux-config
    +
    +# switch between aliases if you want to install to an actuall block device
    +# i.e /dev/sda
    +block-devices: [
    +   {name: "bdevice", file: "/dev/sda"}
    +]
    +
    +targetMedia:
    +- name: \${bdevice}
    +  type: disk
    +  children:
    +  - name: \${bdevice}1
    +    fstype: vfat
    +    mountpoint: /boot
    +    size: "150M"
    +    type: part
    +  - name: \${bdevice}2
    +    fstype: swap
    +    size: "250M"
    +    type: part
    +  - name: \${bdevice}3
    +    fstype: ext4
    +    mountpoint: /
    +    size: "0"     # Use remaining disk space
    +    type: part
    +
    +bundles: [ bootloader, os-core, os-core-update, desktop-autostart, libreoffice,
    +           vlc, c-basic, git, openssh-server, vim ]
    +
    +autoUpdate: true
    +postArchive: false
    +postReboot: true
    +telemetry: false
    +hostname: clrlinux-desktop
    +keyboard: us
    +language: en_US.UTF-8
    +kernel: kernel-native
    +
    +users:
    +- login: clrlinux
    +  username: Clear Linux
    +  # Password is "clear123"
    +  password: $6$SJJMfnInWQg.CvMA$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/
    +  admin: true
    +- login: root
    +  username: Root Root
    +  # Password is "clear123"
    +  password: $6$SJJMfnInWQg.CvMA$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/
    +  admin: true
    +
    +pre-install: [
    +  {cmd: "curl -o /tmp/add-issue.sh http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh"},
    +  {cmd: "chmod +x /tmp/add-issue.sh"}
    +]
    +
    +post-install: [
    +  {cmd: "echo PermitRootLogin yes > \${chrootDir}/etc/ssh/sshd_config"},
    +  {cmd: "/tmp/add-issue.sh \${chrootDir}"}
    +]
    +EOF
    +
    +
    +
  4. +
  5. Create this sample Server configuration called clr-server.yaml.

    +
    sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml << EOF
    +#clear-linux-config
    +
    +# switch between aliases if you want to install to an actuall block device
    +# i.e /dev/sda
    +block-devices: [
    +   {name: "bdevice", file: "/dev/sda"}
    +]
    +
    +targetMedia:
    +- name: \${bdevice}
    +  type: disk
    +  children:
    +  - name: \${bdevice}1
    +    fstype: vfat
    +    mountpoint: /boot
    +    size: "150M"
    +    type: part
    +  - name: \${bdevice}2
    +    fstype: swap
    +    size: "250M"
    +    type: part
    +  - name: \${bdevice}3
    +    fstype: ext4
    +    mountpoint: /
    +    size: "0"     # Use remaining disk space
    +    type: part
    +
    +bundles: [ bootloader, os-core, os-core-update, vim ]
    +
    +autoUpdate: true
    +postArchive: false
    +postReboot: true
    +telemetry: false
    +hostname: clrlinux-server
    +keyboard: us
    +language: en_US.UTF-8
    +kernel: kernel-native
    +
    +users:
    +- login: clrlinux
    +  username: Clear Linux
    +  # Password is "clear123"
    +  password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/
    +  admin: true
    +- login: root
    +  username: Root Root
    +  # Password is "clear123"
    +  password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/
    +  admin: true
    +
    +pre-install: [
    +  {cmd: "curl -o /tmp/add-issue.sh http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh"},
    +  {cmd: "chmod +x /tmp/add-issue.sh"}
    +]
    +
    +post-install: [
    +  {cmd: "echo PermitRootLogin yes > \${chrootDir}/etc/ssh/sshd_config"},
    +  {cmd: "/tmp/add-issue.sh \${chrootDir}"}
    +]
    +EOF
    +
    +
    +
  6. +
  7. Add following content to the add-issue.sh script, which will be +used by the above two YAML configuration files:

    +
    sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh << EOF
    +#!/bin/bash
    +echo "Creating custom issue file for \$1"
    +
    +echo "Welcome to the Clear Linux* OS
    +
    +* Documentation:     https://clearlinux.org/documentation
    +* Community Support: https://community.clearlinux.org
    +
    +" >> \$1/etc/issue
    +
    +exit 0
    +EOF
    +
    +
    +
  8. +
+
+
+

Configure network

+
    +
  1. The DNS server, included with the pxe-server bundle, +conflicts with the DNS stub listener provided in systemd-resolved. +Disable the DNS stub listener and temporarily stop systemd-resolved.

    +
    sudo mkdir -p /etc/systemd
    +sudo tee -a /etc/systemd/resolved.conf << EOF
    +[Resolve]
    +DNSStubListener=no
    +EOF
    +
    +sudo systemctl stop systemd-resolved
    +
    +
    +
  2. +
  3. Disable NetworkManager. The base installation of Clear Linux OS comes with two +network managers, systemd-networkd and NetworkManager, with the latter +being the default. systemd-networkd is recommended for a server use case, +so we will disable NetworkManager.

    +
    sudo systemctl mask --now NetworkManager
    +
    +
    +
  4. +
  5. Assign a static IP address to the LAN side network adapter +and restart systemd-networkd.

    +
    sudo mkdir -p /etc/systemd/network
    +sudo tee -a /etc/systemd/network/70-internal-static.network << EOF
    +[Match]
    +Name=${LAN_INTERFACE}
    +[Network]
    +DHCP=no
    +Address=${IPXE_LAN_IP}/${IPXE_SUBNET_BITMASK}
    +EOF
    +
    +sudo systemctl enable systemd-networkd
    +sudo systemctl restart systemd-networkd
    +
    +
    +
  6. +
+
+
+

Setup NAT

+
    +
  1. Configure NAT to route traffic from +the LAN to the WAN network so clients can download upstream bundles for +installation. And to make these changes persistent during reboots, save the +changes to the firewall.

    +
    sudo iptables -t nat -F POSTROUTING
    +sudo iptables -t nat -A POSTROUTING -o ${WAN_INTERFACE} -j MASQUERADE
    +sudo systemctl enable iptables-save.service
    +sudo systemctl restart iptables-save.service
    +sudo systemctl enable iptables-restore.service
    +sudo systemctl restart iptables-restore.service
    +
    +
    +
  2. +
  3. Configure the kernel to forward network packets to different interfaces. +Otherwise, NAT will not work.

    +
    sudo mkdir -p /etc/sysctl.d
    +sudo tee -a /etc/sysctl.d/80-nat-forwarding.conf << EOF
    +net.ipv4.ip_forward=1
    +EOF
    +
    +sudo tee -a /proc/sys/net/ipv4/ip_forward << EOF
    +1
    +EOF
    +
    +
    +
  4. +
+
+
+

Setup dnsmaq for DHCP, DNS, and TFTP functionalities

+
    +
  1. Create a configuration file for dnsmasq to listen on a dedicated IP address +for TFTP, DNS, and DHCP functions. PXE clients on the LAN network will talk to +this IP address.

    +
    sudo tee -a /etc/dnsmasq.conf << EOF
    +listen-address=${IPXE_LAN_IP}
    +EOF
    +
    +
    +
  2. +
  3. Add the options to serve iPXE firmware images to clients over TFTP to +the dnsmasq configuration file.

    +
    sudo tee -a /etc/dnsmasq.conf << EOF
    +enable-tftp
    +tftp-root=${TFTP_ROOT_DIR}
    +EOF
    +
    +
    +
  4. +
  5. Add the options to host a DHCP server for clients to the dnsmasq +configuration file.

    +
    sudo tee -a /etc/dnsmasq.conf << EOF
    +dhcp-leasefile=/var/db/dnsmasq.leases
    +
    +dhcp-authoritative
    +dhcp-option=option:router,${IPXE_LAN_IP}
    +dhcp-option=option:dns-server,${IPXE_LAN_IP}
    +
    +dhcp-match=set:ipxeclient,60,IPXEClient*
    +dhcp-range=tag:ipxeclient,${IPXE_SUBNET}.2,${IPXE_SUBNET}.253,${IPXE_SUBNET_MASK_IP},15m
    +dhcp-range=tag:!ipxeclient,${IPXE_SUBNET}.2,${IPXE_SUBNET}.253,${IPXE_SUBNET_MASK_IP},6h
    +
    +dhcp-match=set:ipxeboot,175
    +dhcp-boot=tag:ipxeboot,http://${IPXE_LAN_IP}:${IPXE_PORT}/${IPXE_APP_NAME}/ipxe_boot_script.ipxe
    +dhcp-boot=tag:!ipxeboot,undionly.kpxe,${IPXE_LAN_IP}
    +EOF
    +
    +
    +

    The configuration provides the following important functions:

    +
      +
    • Directs clients without an iPXE implementation to the TFTP server +to acquire architecture-specific iPXE firmware images that allow them +to perform an iPXE boot.

    • +
    • Activates only on the network adapter that has an IP address on the +defined subnet.

    • +
    • Directs clients to the DNS server.

    • +
    • Directs clients to the iPXE server for routing via NAT.

    • +
    • Divides the private network into two pools of IP addresses. One pool +is for network boot and one pool is used after boot. Each pool has +their own lease times.

    • +
    +
  6. +
  7. Create a file for dnsmasq to record the IP addresses it provides +to clients.

    +
    sudo mkdir -p /var/db
    +sudo touch /var/db/dnsmasq.leases
    +
    +
    +
  8. +
  9. Create a TFTP hosting directory and populate it with the iPXE firmware.

    +
    sudo mkdir -p ${TFTP_ROOT_DIR}
    +sudo ln -sf /usr/share/ipxe/undionly.kpxe ${TFTP_ROOT_DIR}/undionly.kpxe
    +
    +
    +
  10. +
  11. Start dnsmasq and enable startup on boot.

    +
    sudo systemctl daemon-reload
    +sudo systemctl enable dnsmasq
    +sudo systemctl restart dnsmasq
    +
    +
    +
  12. +
  13. Start systemd-resolved.

    +
    sudo systemctl start systemd-resolved
    +
    +
    +
    +

    Note

    +

    systemd-resolved dynamically updates the list of DNS servers for the +LAN network if you use the dnsmasq DNS server. The setup creates a +pass-through DNS server that relies on the DNS servers listed in +/etc/resolv.conf.

    +
    +
  14. +
+
+
+

Verify setup

+

Verify you can access these URLs before deploying:

+
    +
  • http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${IPXE_APP_NAME}/ipxe_boot_script.ipxe

  • +
  • http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml

  • +
  • http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml

  • +
  • http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh

  • +
+
+
+

Deploy

+
    +
  1. Connect your client system to the LAN network.

  2. +
  3. Power on the client.

  4. +
  5. Set your client to network boot. It should get an IP address and download +the iPXE script.

  6. +
  7. When presented with the iPXE menu, select one of the options. The client +will then download and boot the Clear Linux OS image. Once booted, clr-installer will +download the assigned YAML configuration file and begin to install Clear Linux OS. +After installation, the client will reboot to Clear Linux OS.

  8. +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/virtual-machine-install/hyper-v.html b/get-started/virtual-machine-install/hyper-v.html new file mode 100644 index 000000000..5b12ec832 --- /dev/null +++ b/get-started/virtual-machine-install/hyper-v.html @@ -0,0 +1,1355 @@ + + + + + + + + + + Clear Linux* OS on Microsoft Hyper-V* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on Microsoft Hyper-V*

+

This page explains how to run a Clear Linux* OS VM on a +Microsoft* Hyper-V* hypervisor.

+ +
+

Overview

+

Hyper-V is a type 1 bare-metal hypervisor that runs directly on system +hardware. It is available for Windows* server and client operating +systems, including Windows 10.

+

Clear Linux OS provides a virtual disk image for Hyper-V, which also includes +a Hyper-V specific kernel and drivers.

+
+
+

Prerequisites

+ +
+
+

Download the Clear Linux OS disk image for Hyper-V

+
    +
  1. Download the clear-[VERSION]-azure-hyperv.vhd.gz for Microsoft* +Hyper-V from the downloads website.

  2. +
  3. Verify and extract the image using these instructions: +Download, verify, and decompress a Clear Linux* OS image.

  4. +
  5. Extract the compressed file using software such as the +7-Zip* tool or the WinZip* tool.

    +

    After extraction, the file should be named clear-[VERSION]-azure-hyperv.vhd.

    +
  6. +
+
+
+

Create and configure new VM

+
    +
  1. Open the Hyper-V Manager from the Start menu.

    +
    +Hyper-V Manager from the Start menu +
    +

    Figure 1: Hyper-V Manager from the Start menu

    +
    +
    +
    +

    Note

    +

    You may need to manually enable Hyper-V on a Windows* machine. Review +Windows Features.

    +
    +
  2. +
  3. Create a New Virtual Machine by clicking the Action menu, +then selecting New and Virtual Machine….

    +
    +New Virtual Machine in Hyper-V Manager +
    +

    Figure 2: New Virtual Machine in Hyper-V Manager

    +
    +
    +
  4. +
  5. Follow the New Virtual Machine Wizard to create a new virtual machine +specifying the options below:

    +
      +
    • Name: Choose name (for example, ClearLinuxOS-VM)

    • +
    • Specify Generation: Generation 1

    • +
    • Startup memory: 2048 MB or more

    • +
    • Configure Networking: Change Connection to Default Switch

    • +
    • Connect Virtual Hard Disk: Select Use an existing virtual +hard disk and browse to find the +clear-[VERSION]-azure-hyperv.vhd file.

    • +
    +

    After finishing the wizard, the VM will be created but not powered on.

    +
  6. +
  7. Configure the VM by right-clicking it in the Hyper-V Manager and selecting +Settings…. Figure 3 shows the Settings page after configuration selections.

    +

    Optional

    +
      +
    • If you wish to Encrypt state and virtual machine traffic, under +:guilabel:`Security, select Add Key Storage Drive.

    • +
    • Under Processor, consider increasing the number of virtual +processors assigned to the Clear Linux OS VM to improve performance.

    • +
    +
    +|CL| VM Settings in Hyper-V Manager +
    +

    Figure 3: Clear Linux OS VM Settings page after configuration

    +
    +
    +
  8. +
  9. Click Apply at the bottom of the VM Settings screen.

  10. +
  11. Click OK at the bottom of the VM Settings screen.

  12. +
+
+
+

Start the VM

+
    +
  1. Start the Clear Linux OS VM by right-clicking the VM in Hyper-V Manager and +selecting Start.

  2. +
  3. Connect to the VM console by right-clicking the VM in Hyper-V Manager and +selecting Connect…. A new Virtual Machine Connection +window is displayed.

  4. +
  5. After Clear Linux OS is booted, log in to the console with user root. You are +prompted to set a new password immediately.

    +
    > User: root
    +
    +
    +
  6. +
+

Clear Linux* OS on Microsoft Hyper-V* is ready for use.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/virtual-machine-install/kvm.html b/get-started/virtual-machine-install/kvm.html new file mode 100644 index 000000000..bf6125c5f --- /dev/null +++ b/get-started/virtual-machine-install/kvm.html @@ -0,0 +1,1423 @@ + + + + + + + + + + Clear Linux* OS on KVM — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on KVM

+

This page explains how to run Clear Linux* OS in a virtualized environment using +KVM.

+ +
+

Install QEMU-KVM

+
    +
  1. Enable the Intel® Virtualization Technology (Intel® VT) and the +Intel® Virtualization Technology for Directed I/O (Intel® VT-d) in the +host machine’s BIOS.

  2. +
  3. Log in and open a terminal emulator.

  4. +
  5. Install QEMU*-KVM on the host machine. Below are some examples using +different distros:

    + + + + + + + + + + + + + + + + + +

    Host OS

    Installation command

    Clear Linux OS

    sudo swupd bundle-add kvm-host

    Ubuntu* and Mint*

    sudo apt-get install qemu-kvm

    Fedora

    dnf install qemu-kvm

    +
  6. +
+
+
+

Download and launch the virtual machine image

+
    +
  1. Download the latest pre-built Clear Linux OS KVM image file from +the image directory. Look for +clear-<version>-kvm.img.xz. You can also use this command:

    +
    curl -o clear.img.xz https://cdn.download.clearlinux.org/image/$(curl https://cdn.download.clearlinux.org/image/latest-images.json | grep -o clear-'[0-9]'*-kvm.img.xz | head -1)
    +
    +
    +
  2. +
  3. Uncompress the downloaded image:

    +
    xz -dv clear.img.xz
    +
    +
    +
  4. +
  5. Download the 3 OVMF files (OVMF.fd, OVMF_CODE.fd, OVMF_VARS.fd) that +provides UEFI support for virtual machines.

    +
    curl -O https://cdn.download.clearlinux.org/image/OVMF.fd
    +curl -O https://cdn.download.clearlinux.org/image/OVMF_CODE.fd
    +curl -O https://cdn.download.clearlinux.org/image/OVMF_VARS.fd
    +
    +
    +
    +

    Note

    +

    The default OVMF files from Clear Linux OS may not work for some non-Clear Linux OS distro +version(s). You may get an ASSERT in the debug.log file when +starting the VM. If you encounter this, use the distro-specific OVMF +files instead.

    +
    +
  6. +
  7. Download the start_qemu.sh script from the +image directory. This script +will launch the Clear Linux OS VM and provide console interaction within the same +terminal emulator window.

    +
    curl -O https://cdn.download.clearlinux.org/image/start_qemu.sh
    +
    +
    +
  8. +
  9. Start the Clear Linux OS KVM virtual machine:

    +
    sudo bash ./start_qemu.sh clear.img
    +
    +
    +
  10. +
  11. Log in as root user and set a new password.

  12. +
+
+
+

Optional: Enable SSH access

+

To interact with the Clear Linux OS VM remotely through SSH instead of the console it +was launched from, follow these steps.

+
    +
  1. Enable and configure SSH in the Clear Linux OS VM to allow root login as described in +Enable and configure SSH service.

  2. +
  3. SSH into the Clear Linux OS VM using the port 10022. This port number is set in +start_qemu.sh and passed through to the SSH service running on port +22

    +
    ssh -p 10022 root@<ip-addr-of-kvm-host>
    +
    +
    +
  4. +
+
+
+

Optional: Install a graphical user interface (GUI)

+

To add GDM to the Clear Linux OS VM, follow these steps:

+
    +
  1. Shutdown the active Clear Linux OS VM.

    +
    poweroff
    +
    +
    +
  2. +
  3. Install the Spice viewer on the localhost or remote system. Below are some +examples using different distros:

    + + + + + + + + + + + + + + + + + +

    Host OS

    Installation command

    Clear Linux OS

    sudo swupd bundle-add virt-viewer

    Ubuntu* and Mint*

    sudo apt-get install virt-viewer

    Fedora

    dnf install virt-viewer

    +
  4. +
  5. Modify the start_qemu.sh script to increase memory (-m), add +graphics driver (-vga), and add Spice (-spice, -usb, and +-device) support.

    +
    qemu-system-x86_64 \
    +    -enable-kvm \
    +    ${UEFI_BIOS} \
    +    -smp sockets=1,cpus=4,cores=2 -cpu host \
    +    -m 4096 \
    +    -vga qxl \
    +    -nographic \
    +    -spice port=5924,disable-ticketing \
    +    -usb \
    +    -device usb-tablet,bus=usb-bus.0 \
    +    -drive file="$IMAGE",if=virtio,aio=threads,format=raw \
    +    -netdev user,id=mynet0,hostfwd=tcp::${VMN}0022-:22,hostfwd=tcp::${VMN}2375-:2375 \
    +    -device virtio-net-pci,netdev=mynet0 \
    +    -debugcon file:debug.log -global isa-debugcon.iobase=0x402 $@
    +
    +
    +
  6. +
  7. Due to changes in the start_qemu.sh script from the previous step, +having previously used OVMF files will result in the VM not booting +properly and you returning to the UEFI shell. The easiest way to avoid this +is to delete the 3 OVMF files and reobtain originals before relaunching the +VM:

    +
    rm -v OVMF*.fd
    +curl -O https://cdn.download.clearlinux.org/image/OVMF.fd
    +curl -O https://cdn.download.clearlinux.org/image/OVMF_CODE.fd
    +curl -O https://cdn.download.clearlinux.org/image/OVMF_VARS.fd
    +
    +
    +
  8. +
  9. Increase the size of the VM by 10GB to accommodate the GDM installation:

    +
    qemu-img resize -f raw clear-<version>-kvm.img +10G
    +
    +
    +
  10. +
  11. Relaunch the Clear Linux OS VM:

    +
    sudo ./start_qemu.sh clear.img
    +
    +
    +
  12. +
  13. Determine the IP address of the host on which you will launch the VM. +Substitute <ip-addr-of-kvm-host> in the next step with this information.

    +
    ip a
    +
    +
    +
  14. +
  15. From the local host or remote system, open a new terminal emulator window +and connect into the Clear Linux OS VM using the Spice viewer:

    +
    remote-viewer spice://<ip-address-of-kvm-host>:5924
    +
    +
    +
  16. +
  17. Log in as root user into the Clear Linux OS VM.

  18. +
  19. Follow these steps from Increase Virtual Disk Size of an Image to resize the +partition of the virtual disk of the VM.

  20. +
  21. Add GDM to the Clear Linux OS VM:

    +
    swupd bundle-add desktop-autostart
    +
    +
    +
  22. +
  23. Reboot the Clear Linux OS VM to start GDM:

    +
    reboot
    +
    +
    +
  24. +
  25. Go through the GDM out-of-box experience (OOBE).

  26. +
  27. The default aspect ratio of the GDM GUI for the Clear Linux OS VM is 4:3. To change +it, use GDM’s Devices > Displays setting tool (located at the top-right +corner).

  28. +
+

Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/virtual-machine-install/parallels.html b/get-started/virtual-machine-install/parallels.html new file mode 100644 index 000000000..8fbdbc084 --- /dev/null +++ b/get-started/virtual-machine-install/parallels.html @@ -0,0 +1,1354 @@ + + + + + + + + + + Clear Linux* OS on Parallels* Desktop for Mac* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on Parallels* Desktop for Mac*

+

This page explains how to run Clear Linux OS Server in CLI mode as a guest OS in Parallels Desktop 14 for Mac.

+

Parallels Desktop for Mac is virtualization software that allows other +operating systems, such as Linux, to run side-by-side with macOS*.

+ +
+

Prerequisites

+
    +
  • Install Parallels Desktop 14 for Mac.

  • +
+
+
+

Download ISO image

+
    +
  1. Download a live-server ISO installation file from https://clearlinux.org/downloads. +This guide uses Clear Linux OS Server 30140 as its example.

  2. +
  3. Unzip the ISO image with the command:

    +
    gunzip clear-30140-live-server.iso.xz
    +
    +
    +
  4. +
+
+
+

Initialize new VM

+

Start Parallels and initialize your VM with the +following steps.

+
    +
  1. Go to File > New.

  2. +
  3. In the opening dialog window, select +Install Windows or another OS from a DVD or image, then click +Continue. (See Figure 1.)

    +
    +Parallels opening dialog +
    +

    Figure 1: Parallels opening dialog

    +
    +
    +
  4. +
  5. On the next screen, select Image File, then click +Select a file… as shown in Figure 2.

    +
    +Dialog to select source for VM +
    +

    Figure 2: Dialog to select source for VM

    +
    +
    +
  6. +
  7. Select your ISO file. The system displays the warning message “Unable to +detect operating system”, as shown in Figure 3. This message is expected and +can be ignored. Click Continue.

    +
    +Warning that OS is not detected +
    +

    Figure 3: Warning that OS is not detected

    +
    +
    +
  8. +
  9. You are prompted to select your OS, as shown in Figure 4. Select +More Linux > Other Linux from the drop-down menu and click +Continue.

    +
    +Select OS from drop-down menu +
    +

    Figure 4: Select OS from drop-down menu

    +
    +
    +
  10. +
  11. Name your VM and check Customize settings before installation. +(See Figure 5.)

    +
    +Name and Location screen +
    +

    Figure 5: Name and Location screen

    +
    +
    +
  12. +
  13. Click Create. The Configuration window for the new VM opens, as +shown in Figure 6.

    +

    Select Hardware > Boot Order.

    +
    +VM Configuration window +
    +

    Figure 6: VM Configuration window

    +
    +
    +
  14. +
  15. Expand Advanced Settings. Set BIOS to “EFI 64-bit” +and in the Boot flags field, enter “vm.bios.efi=1” as shown in +Figure 7.

    +
    +Advanced configuration settings +
    +

    Figure 7: Advanced configuration settings

    +
    +
    +
  16. +
  17. Close the Configuration window and click Continue.

    +

    If camera and microphone access restriction warnings are displayed, you can +ignore them.

    +
  18. +
+
+
+

Install Clear Linux OS on VM

+
    +
  1. Follow the prompts and install Clear Linux OS using the text-based installer as shown +in Figure 8.

    +

    Refer to Install Clear Linux* OS from the live server for additional installation +instructions.

    +
    +On screen instructions from text-based installer +
    +

    Figure 8: On screen instructions from text-based installer

    +
    +
    +
  2. +
  3. After installation, reboot the VM. You are prompted to log in, as shown +in Figure 9. Log in with the credentials you used when you installed Clear Linux OS +on the VM.

    +
    +Log in prompt +
    +

    Figure 9: Log in prompt

    +
    +
    +
  4. +
+

Congratulations! You have successfully set up a Clear Linux OS VM using Parallels +Desktop for Mac.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/virtual-machine-install/proxmox.html b/get-started/virtual-machine-install/proxmox.html new file mode 100644 index 000000000..33cb00af7 --- /dev/null +++ b/get-started/virtual-machine-install/proxmox.html @@ -0,0 +1,1422 @@ + + + + + + + + + + Clear Linux* OS on Proxmox* Virtual Environment — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on Proxmox* Virtual Environment

+

This guide explains how to create a new VM in Proxmox VE 6.1-3, install and run Clear Linux OS on as a guest OS.

+ +
+

Prerequisites

+
    +
  • Proxmox VE 6.1-3 server already set up and you have familiarity with how +to use it.

  • +
+
+
+

Download the Latest Clear Linux OS Live Server Image

+
    +
  1. Visit our Downloads page.

  2. +
  3. Download the file clear-<release number>-live-server.iso, +also called the Clear Linux OS Server.

    +
    +

    Note

    +

    <release-number> is the latest Clear Linux OS auto-numbered release.

    +
    +
  4. +
+
+
+

Upload Clear Linux OS Live Server Image to Promox Server

+
    +
  1. Connect to your Proxmox server and log into an account with sufficient +permission to create and manage VMs.

  2. +
  3. Under the Server View window, select the local +storage. See Figure 1.

  4. +
  5. On the right window, click Upload.

    +
    +Proxmox - Upload ISO +
    +

    Figure 1: Proxmox - Upload ISO

    +
    +
    +
  6. +
  7. Set the Content as ISO image. See Figure 2.

  8. +
  9. Click Select File… and select the Clear Linux OS ISO.

  10. +
  11. Click Upload.

    +
    +Proxmox - Select ISO to upload +
    +

    Figure 2: Proxmox - Select ISO to upload

    +
    +
    +

    The ISO should now appear in the Content list. See Figure 3.

    +
    +Proxmox - Content list +
    +

    Figure 3: Proxmox - Content list

    +
    +
    +
  12. +
+
+
+

Create VM on Proxmox

+
    +
  1. Under the Server View window, select your Proxmox node. +See Figure 4.

  2. +
  3. On the right window, click Create VM.

    +
    +Proxmox - Create VM +
    +

    Figure 4: Proxmox - Create VM

    +
    +
    +
  4. +
  5. In the General tab: +| See Figure 5.

    +
      +
    1. Check the Advanced checkbox.

    2. +
    3. In the Name field, give the VM a name.

    4. +
    +
    +Proxmox - Create VM - General settings +
    +

    Figure 5: Proxmox - Create VM - General settings

    +
    +
    +
  6. +
  7. In the OS tab: +See Figure 6.

    +
      +
    1. Select Use CD/DVD disc image file (iso).

    2. +
    3. For Storage, select local.

    4. +
    5. For ISO image, select the Clear Linux OS ISO you uploaded earlier.

    6. +
    7. Set the Type to Linux.

    8. +
    9. Set the Version to 5.x - 2.6 kernel.

    10. +
    +
    +Proxmox - Create VM - OS settings +
    +

    Figure 6: Proxmox - Create VM - OS settings

    +
    +
    +
  8. +
  9. In the System tab: +See Figure 7.

    +
      +
    1. For BIOS, select OVMF (UEFI).

    2. +
    3. For Storage, select an appropriate location.

    4. +
    5. For Machine, select q35.

    6. +
    +
    +Proxmox - Create VM - System settings +
    +

    Figure 7: Proxmox - Create VM - System settings

    +
    +
    +
  10. +
  11. In the Hard Disk tab: +See Figure 8.

    +
      +
    1. For Disk size (GiB), set the desired disk size for your VM. +A minimum of 4GB is required for Clear Linux OS.

    2. +
    +
    +Proxmox - Create VM - Hard Disk settings +
    +

    Figure 8: Proxmox - Create VM - Hard Disk settings

    +
    +
    +
  12. +
  13. In the CPU tab: +See Figure 9.

    +
      +
    1. Set the Type to host.

    2. +
    3. For the Extra CPU Flags, scroll to the bottom and turn on the +aes setting by clicking the + radio button.

    4. +
    +
    +Proxmox - Create VM - CPU settings +
    +

    Figure 9: Proxmox - Create VM - CPU settings

    +
    +
    +
  14. +
  15. In the Memory tab: +See Figure 10.

    +
      +
    1. For Memory (MiB), set a desired value.

    2. +
    +
    +Proxmox - Create VM - Memory settings +
    +

    Figure 10: Proxmox - Create VM - Memory settings

    +
    +
    +
  16. +
  17. In the Network tab: +See Figure 11.

    +
      +
    1. For Model, select E1000.

    2. +
    +
    +Proxmox - Create VM - Network settings +
    +

    Figure 11: Proxmox - Create VM - Network settings

    +
    +
    +
  18. +
  19. In the Confirm tab: +See Figure 12.

    +
      +
    1. Confirm the settings.

    2. +
    3. Click Finish to create the VM. The new VM should appear +under the Server View window.

    4. +
    +
    +Proxmox - Create VM - Confirm settings +
    +

    Figure 12: Proxmox - Create VM - Confirm settings

    +
    +
    +
  20. +
+
+
+

Start VM and Install Clear Linux OS on Promox

+
    +
  1. Under the Server View window, select your newly-created VM. +See Figure 13.

  2. +
  3. On the right window, click Start.

  4. +
  5. Click Console button to bring up a console and interact with it.

    +
    +Proxmox - Start VM +
    +

    Figure 13: Proxmox - Start VM

    +
    +
    +
  6. +
  7. Follow the instructions in the Install Clear Linux* OS from the live server guide +starting at the Launch the Clear Linux OS Installer section.

  8. +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/virtual-machine-install/virt-manager.html b/get-started/virtual-machine-install/virt-manager.html new file mode 100644 index 000000000..06f2f69f3 --- /dev/null +++ b/get-started/virtual-machine-install/virt-manager.html @@ -0,0 +1,1427 @@ + + + + + + + + + + Clear Linux* OS using virt-manager — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS using virt-manager

+

This page explains how to create a Clear Linux* OS virtual machine using the +virt-mgr desktop application with Clear Linux OS as the guest operating system. +These instructions support the Clear Linux OS live-server installer to create the Clear Linux OS +VM.

+ +
+

Prerequisites

+
    +
  1. Enable virtualization, such as Intel® Virtualization Technology +(Intel® VT), on the host system from the UEFI firmware setup.

  2. +
  3. Install the software bundles kvm-host and virt-manager-gui using +swupd:

    +
    sudo swupd bundle-add kvm-host virt-manager-gui
    +
    +
    +
  4. +
  5. Add your userid to the kvm and libvirt groups.

    +
    sudo usermod -G kvm -a $USER
    +sudo usermod -G libvirt -a $USER
    +
    +
    +
  6. +
  7. Enable the libvirtd daemon and reboot the system to complete the +process.

    +
    sudo systemctl enable libvirtd
    +sudo reboot
    +
    +
    +
  8. +
+
+
+

Download the Clear Linux OS installer ISO

+

There are several options available to set up and use a Clear Linux OS VM with +virt-manager. You can either download the KVM image and run it +as-is or download the installer ISO and run it to create a new installation of +Clear Linux OS.

+

This example uses the live-server-installer ISO to create a new installation.

+
    +
  1. Download the Clear Linux* OS Server from the Downloads page.

  2. +
  3. (Optional) Validate the integrity of the downloaded image by checking the +file hash and signatures. Refer to Validate signatures for detailed +steps.

  4. +
+
+
+

Launch and set up virt-manager

+

Virt-manager is a GUI-based virtual machine manager that runs in your desktop +environment. This example uses the Gnome* desktop.

+
    +
  1. Launch the Virtual Machine Manager from the applications window. The +application window opens as shown in Figure 1.

    +
    +Virtual Machine Manager +
    +

    Figure 1: Virtual Machine Manager

    +
    +
    +
  2. +
  3. In the Name field, select and highlight the QEMU/KVM item, then select +Edit > Connection Details. A dialog box with +QEMU/KVM Connection Details opens as shown in Figure 2.

    +
    +QEMU/KVM Connection Details +
    +

    Figure 2: QEMU/KVM Connection Details

    +
    +
    +
  4. +
  5. On the Overview tab, check the Autoconnect field. Select the Virtual +Networks tab and in the lower left of the dialog window, select the ++ key to add a new network connection. The Create a new virtual +network dialog window opens as shown in Figure 3. To accept the default +values, select the Finish button.

    +
    +Create a new virtual network +
    +

    Figure 3: Create a new virtual network

    +
    +
    +
  6. +
  7. Close the QEMU/KVM Connection details dialog box and return to the Virtual +Machine Manager main console. You are ready to create your VM.

  8. +
+
+
+

Create a new virt-manager virtual machine

+

In the Virtual Machine Manager main console, either select +File > New Virtual Machine or click the Create a +new virtual machine icon. This launches the New VM wizard, shown in Figure 4.

+
+New VM +
+

Figure 4: New VM dialog box, step 1

+
+
+
    +
  1. Select Local install media (ISO image or CDROM) and select the +Forward button.

  2. +
  3. In step 2 of the New VM wizard, you can choose ISO or CDROM install +media.

    +
      +
    1. Uncheck Automatically detect from the installation media / source +field and select the Browse… button as shown in Figure 5.

      +
      +New VM +
      +

      Figure 5: New VM dialog box, step 2: Choose media

      +
      +
      +
    2. +
    3. In the Choose Storage Volume dialog, select the +Browse Local button as shown in Figure 6. Browse to +the ISO image that you downloaded earlier and open it.

      +
      +Choose storage volume +
      +

      Figure 6: Choose storage volume dialog box

      +
      +
      +
    4. +
    5. In the Choose the operating system you are installing search field, +type generic and select the Generic default value when it is displayed. +Select the Forward button as shown in Figure 7.

      +
      +New VM +
      +

      Figure 7: New VM dialog box, step 2: Choose operating system

      +
      +
      +
      +

      Note

      +

      A message may be displayed that says the emulator does not have +search permissions for the ISO image path. Select Yes to +proceed to the next step.

      +
      +
    6. +
    +
  4. +
  5. Step 3 of the New VM wizard allocates the memory and CPUs for +the new VM. Choose settings that are valid for the resources on your host +system. This example sets Memory to 2048GB and CPUs to 1. Once complete, +select the Forward button as shown in Figure 8.

    +
    +New VM Choose Memory and CPU settings dialog box +
    +

    Figure 8: New VM dialog box, step 3: Choose Memory and CPU settings

    +
    +
    +
  6. +
  7. Step 4 of the New VM wizard sets up the storage media for your VM. You +can create a new disk image or use an existing image. This example selects +Enable storage for this virtual machine and creates a 20GB image for it. +Once complete, select the Forward button as shown in Figure 9.

    +
    +New VM Enable storage dialog box +
    +

    Figure 9: New VM dialog box, step 4: Enable storage

    +
    +
    +
  8. +
  9. Step 5 of the New VM wizard displays the selections you made and allows +you to customize the configuration before running the installation. Select the +Customize configuration before install checkbox and select the +Finish button as shown in Figure 10.

    +
    +New VM Ready to begin the installation dialog box +
    +

    Figure 10: New VM dialog box, step 5: Ready to begin the installation

    +
    +
    +
  10. +
  11. Customize the installation process by changing the firmware from BIOS to +UEFI x86_64. Clear Linux OS requires UEFI firmware. In the Firmware field, select +the UEFI x86_64:/usr/share/qemu/OVMF.fd entry as shown in Figure 11 +and select the Apply button.

    +
    +vm1 on QEMU/KVM dialog box +
    +

    Figure 11: vm1 on QEMU/KVM dialog box

    +
    +
    +
  12. +
  13. Begin the installation by selecting the Begin Installation in +the upper left corner of the vm1 on QEMU/KVM dialog box.

  14. +
+
+
+

Install Clear Linux OS in the virt-manager VM

+

To install Clear Linux OS in your VM, follow the instructions in the getting started +guide Install Clear Linux* OS from the live server.

+
+

Note

+

You do not need to set up the network as described in the installation +guide, because you already downloaded the ISO image and connected to your +VM. Your network will show up as a wired connection.

+
+

Congratulations! You have successfully installed Clear Linux OS in your new VM and can +begin using it immediately. The virt-manager tool is maintained on GitHub* +at virt-manager-github.

+

Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/virtual-machine-install/virtualbox-cl-installer.html b/get-started/virtual-machine-install/virtualbox-cl-installer.html new file mode 100644 index 000000000..10788e136 --- /dev/null +++ b/get-started/virtual-machine-install/virtualbox-cl-installer.html @@ -0,0 +1,1579 @@ + + + + + + + + + + Clear Linux* OS on VirtualBox* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on VirtualBox*

+

This page explains how to create a virtual machine on the VirtualBox +hypervisor with Clear Linux* OS as the guest operating system. These instructions +support the Clear Linux OS live-server installer to create the Clear Linux OS virtual machine (VM).

+ +
+

Prerequisites

+
    +
  1. Enable virtualization, such as Intel® Virtualization Technology +(Intel® VT), on the host system from EFI/BIOS.

  2. +
  3. Download and install VirtualBox version 6.0 or later from +VirtualBox using the VirtualBox Installation Instructions for your +platform.

  4. +
+
+
+

Download and extract the Clear Linux OS installer ISO

+
    +
  1. Download the clear-<VERSION>-live-server.iso.xz of +Clear Linux OS on the Downloads page.

  2. +
  3. Validate the integrity of the downloaded image by checking the file hash +and signatures. Refer to Validate signatures for detailed steps.

  4. +
  5. Decompress the downloaded image.

    +
      +
    • On Windows, you can use 7zip to extract the file by right-clicking the +file to Extract Here (in the same directory)

    • +
    +
    +7zip extract here command +
    +

    Figure 1: 7zip extract here command

    +
    +
    +
      +
    • On Linux :

      +
      xz -d clear-<VERSION>-live-server.iso.xz
      +
      +
      +
    • +
    +
  6. +
  7. Delete the originally downloaded compressed file.

  8. +
+
+
+

Create a new VirtualBox virtual machine

+

A new VM needs to be created in VirtualBox Manager where Clear Linux OS +will be installed. General instructions for creating a virtual machine and +details about using different settings are available in the VirtualBox manual section Creating Your First Virtual Machine.

+
    +
  1. Launch the VirtualBox Manager from your host system.

  2. +
  3. Click the New button to create a new VM.

  4. +
  5. Choose Expert mode.

  6. +
  7. On the Create Virtual Machine screen, enter the following settings:

    +
      +
    • Name: Choose name (e.g. ClearLinuxOS-VM).

    • +
    • Type: Linux

    • +
    • Version: Linux 2.6 / 3.x / 4.x (64-bit)

    • +
    • Hard disk: Create a virtual hard disk now

    • +
    • Memory size default: 2048 MB (Adjust appropriately.)

      +
      +

      Note

      +

      Later, if you want to change the amount of RAM allocated, power down your VM. Return to Settings > System and change +Base Memory to the desired size.

      +
      +
    • +
    +
    +Create Virtual Machine +
    +

    Figure 2: Create Virtual Machine

    +
    +
    +
  8. +
  9. Click Create.

  10. +
  11. On the Create Virtual Hard Disk screen, select:

    +
      +
    • File location

    • +
    • File size: 32.00 GB. Adjust size to your needs.

    • +
    • Hard disk file type: VDI (VirtualBox Disk Image)

    • +
    • Storage on physical hard disk: Dynamically allocated

    • +
    +
    +Create Virtual Hard Disk +
    +

    Figure 3: Create Virtual Hard Disk

    +
    +
    +
  12. +
  13. Click Create.

    +

    A new virtual machine will be created and appear in the VirtualBox Manager.

    +
  14. +
  15. Click Settings to configure the Clear Linux OS VM.

  16. +
  17. In the left-hand menu, navigate to the System menu.

  18. +
  19. On the Motherboard tab, select the Chipset menu, and +then select ICH9. See Figure 4.

    +
    +

    Note

    +

    You can select which chipset will be presented to the virtual machine. +Consult the VM VirtualBox User Manual for more details.

    +
    +
  20. +
  21. In Enabled Features, check these boxes:

    +
      +
    • Enable I/O APIC

    • +
    • Enable EFI (special OSes only)

    • +
    +
    +Settings > System +
    +

    Figure 4: Settings > System

    +
    +
    +
    +

    Note

    +

    By default, only 1 virtual CPU is allocated to the new VM. Consider +increasing the number of virtual processors allocated to the virtual +machine under Settings > System > Processor for increased +performance.

    +
    +
  22. +
  23. Click OK.

  24. +
+
+
+

Install Clear Linux OS on the VirtualBox VM

+

Clear Linux OS is ready to be installed.

+
+

Mount the installation ISO

+

The Clear Linux OS installer ISO needs to be mounted as a virtual CD-ROM on the VM +before powering the VM on.

+
    +
  1. From the ClearLinux-OS Settings menu at left, select +Storage.

  2. +
  3. From Storage Devices, middle column, click the blue +disk labeled Empty.

  4. +
  5. From the Attributes menu, click the blue CD disk next to +the Optical Drive drop down menu and click +Choose Virtual Optical Disk File…

    +
    +Choose Virtual Optical Disk Drive +
    +

    Figure 5: Choose Virtual Optical Disk Drive

    +
    +
    +
  6. +
  7. Where there appears Please choose a virtual optical disk file, +select the ISO file and click Open.

    +
    +Mounting an ISO +
    +

    Figure 6: Mounting an ISO

    +
    +
    +
  8. +
  9. Click OK to exit and return to the main VirtualBox Manager.

  10. +
+
+
+

Install Clear Linux OS with live-server installer

+
    +
  1. In the VirtualBox Manager, select virtual machine you created and click Start.

    +
    +Start the installer +
    +

    Figure 7: Start the installer

    +
    +
    +
    +

    Note

    +

    To release the mouse cursor from the VM console window, press the right +Ctrl key on the keyboard.

    +
    +
  2. +
  3. When Clear Linux Installer in boot manager appears, +select Enter. Do not install the bundle desktop-autostart.

  4. +
  5. Follow the steps in Install Clear Linux* OS from the live server to +install Clear Linux OS onto the VM virtual disk. Note:

    +
      +
    1. In Configure Installation Media, navigate top +VBOX HARDDISK, and then select Confirm.

    2. +
    3. In Advanced options ‣ Manage User, create an +administrative user.

    4. +
    5. Do not install the bundle desktop-autostart.

    6. +
    +
  6. +
  7. When Clear Linux OS installation is complete, click Exit.

  8. +
  9. At the prompt, enter:

    +
    shutdown now
    +
    +
    +
  10. +
+
+
+

Unmount the ISO

+

The Clear Linux OS installer ISO needs to be unmounted to allow the VM to boot from the +virtual hard disk.

+
    +
  1. Return to the VirtualBox Manager.

  2. +
  3. Click Settings to configure the Clear Linux OS VM.

  4. +
  5. From the VM Settings window, navigate to the Storage +pane in the left menu.

  6. +
  7. From the middle Storage Devices column, click the blue CD disk +labeled clear-<VERSION>-live-server.iso under the +Controller: IDE.

  8. +
  9. From the Attributes column on the right, in Optical Drive, +select the blue CD icon beside and click +Remove Disk from Virtual Drive.

    +
    +Remove Disk from Virtual Drive +
    +

    Figure 8: Remove Disk from Virtual Drive

    +
    +
    +
  10. +
  11. Click OK to exit the VM Settings menu and return to +the main VirtualBox Manager.

  12. +
+
+
+

Install VirtualBox Linux Guest Additions

+

Clear Linux OS provides Linux Guest Additions drivers for full compatibility using an +install script in the kernel-lts (Long Term Support) bundle by Clear Linux OS.

+
    +
  1. From the VirtualBox Manager select the Clear Linux OS VM, and select Start.

  2. +
  3. In the VM Console, log in as the administrative user previously created.

    +
    +

    Note

    +

    A message may appear: “A kernel update is available: you may wish +to reboot the system.”

    +

    To update the kernel, enter:

    +
    sudo reboot
    +
    +
    +

    At initial login, enter the administrative user’s password and continue.

    +
    +
  4. +
  5. Validate the installed kernel is kernel-lts by checking the output +of the uname -r command. It should end in .lts or .lts2018.

    +
    uname -r
    +<VERSION>.lts
    +
    +
    +

    If the running kernel is not lts: install the LTS kernel manually, +update the bootloader, and check again:

    +
    sudo swupd bundle-add kernel-lts
    +clr-boot-manager set-kernel $(basename $(realpath /usr/lib/kernel/default-lts))
    +clr-boot-manager update
    +reboot
    +
    +
    +
  6. +
  7. Remove any kernel bundles that do not end in -lts or kernel-install +to simplify and avoid conflicts:

    +
    sudo swupd bundle-list | grep kernel
    +sudo swupd bundle-remove <NON-LTS-KERNEL>
    +
    +
    +
  8. +
  9. In the VM Console top menu, click Devices, and select +Insert Guest Additions CD image… to mount the VirtualBox driver +installation to the Clear Linux OS VM.

    +
    +Insert Guest Additions CD image +
    +

    Figure 9: Insert Guest Additions CD image

    +
    +
    +
  10. +
  11. If a dialogue appears, “VBx_GAs_6.0.8… Would you like to run it?”, +select Cancel.

    +

    Instead, we provide a script to patch and install VirtualBox drivers on Clear Linux OS.

    +
  12. +
  13. Open a Terminal and enter the script:

    +
    sudo install-vbox-lga
    +
    +
    +
    +

    Note

    +

    Successful installation shows: “Guest Additions installation complete”. +If drivers are already installed, don’t re-install them.

    +
    +
  14. +
  15. Shut down the system. Select Machine ‣ ACPI Shutdown.

    +
    +Powering off a VirtualBox VM +
    +

    Figure 10: Powering off a VirtualBox VM

    +
    +
    +
  16. +
  17. Select Settings, Display.

  18. +
  19. In Graphics Controller, select VBoxSVGA +to adjust screen size dynamically.

    +
    +Remove Disk from Virtual Drive +
    +

    Figure 11: VirtualBox hardware acceleration error

    +
    +
    +
  20. +
  21. In the VirtualBox Manager, select Start.

  22. +
  23. In the VM console, login and verify the VirtualBox drivers are loaded:

    +
    lsmod | grep ^vbox
    +
    +
    +

    You should see drivers loaded with names beginning with vbox: +(e.g., vboxvideo, vboxguest).

    +
  24. +
  25. Add desktop-autostart for a full desktop experience.

    +
    sudo swupd bundle-add desktop-autostart
    +
    +
    +
  26. +
  27. Reboot the VM and log in with the administrative user.

    +
    sudo reboot
    +
    +
    +
  28. +
+

The Clear Linux OS VM running on VirtualBox is ready to develop and explore.

+
+
+
+

Troubleshooting

+
    +
  1. Problem: On a Microsoft* Windows* OS, VirtualBox encounters an error when +trying to start a VM indicating VT-X/AMD-v hardware acceleration is not +available on your system.

    +
    +Remove Disk from Virtual Drive +
    +

    Figure 12: VirtualBox hardware acceleration error

    +
    +
    +

    Solution: First, double check the Prerequisites section to make +sure Hardware accelerated virtualization extensions have been enabled +in the host system’s EFI/BIOS.

    +

    Hardware accelerated virtualization, may get disabled for VirtualBox when +another hypervisor, such as Hyper-V is enabled.

    +

    To disable Hyper-V execute this command in an +Administrator: Command Prompt or Powershell, and reboot the system:

    +
    bcdedit /set {current} hypervisorlaunchtype off
    +
    +
    +

    To enable Hyper-V again, execute this command in an +Administrator: Command Prompt or Powershell, and reboot the system:

    +
    bcdedit /set {current} hypervisorlaunchtype Auto
    +
    +
    +
  2. +
+

Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/virtual-machine-install/vmw-player.html b/get-started/virtual-machine-install/vmw-player.html new file mode 100644 index 000000000..7042a7cac --- /dev/null +++ b/get-started/virtual-machine-install/vmw-player.html @@ -0,0 +1,1572 @@ + + + + + + + + + + Clear Linux* OS on VMware* Workstation Player — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on VMware* Workstation Player

+

This guide explains how to set up the VMware* Workstation Player 15.5.1 +hypervisor and instantiate a VM instance of Clear Linux OS by installing it using +an ISO or using a pre-built image.

+ +
+

Overview

+

VMware Workstation Player is a type 2 hypervisor. It runs on top of +Windows* or Linux* operating systems. With VMware Workstation Player, +you can create, configure, manage, and run Clear Linux* OS +VMs on your local system.

+

VMware offers a type 1 hypervisor called VMware ESXi designed for the +cloud environment. For information on how to install Clear Linux OS as guest OS on +it, see Clear Linux* OS on VMware* ESXi.

+
+

Note

+

The screenshots in this document show the Windows version of the +VMware Workstation Player 15.5.1. The menus and prompts are similar to those +in other versions and for the Linux version, save some minor wording +differences.

+
+
+
+

Install the VMware Workstation Player hypervisor

+
    +
  1. Enable Intel® Virtualization Technology (Intel® VT) and +Intel® Virtualization Technology for Directed I/O (Intel® VT-d) in +your system’s BIOS.

  2. +
  3. VMware Workstation Player is available for Windows and Linux. +Download your preferred version.

  4. +
  5. Install VMware Workstation Player by following the instructions +appropriate for your system’s OS:

    +
      +
    • On supported Linux distros:

      +
        +
      1. Ensure your Linux distro is running a GUI desktop.

      2. +
      3. Start a terminal emulator.

      4. +
      5. Start the installer by issuing the command below and follow the +guided steps.

        +
        sudo sh ./VMware-Player-<version number>.x86_64.bundle
        +
        +
        +
      6. +
      +
    • +
    • On Windows:

      +
        +
      1. Start the installer.

      2. +
      3. Follow the setup wizard.

      4. +
      +
    • +
    +
  6. +
+

For additional help, see the VMware Workstation Player Documentation.

+
+
+

Create a blank VM

+
    +
  1. Start the VMware Workstation Player app.

  2. +
  3. On the home screen, click Create a New Virtual Machine. See +Figure 1.

    +
    +VMware Workstation Player - Create a new virtual machine +
    +

    Figure 1: VMware Workstation Player - Create a new virtual +machine

    +
    +
    +
  4. +
  5. Select I will install the operating system later.

    +
    +I will install the operating system later. +
    +

    Figure 2: I will install the operating system later.

    +
    +
    +
  6. +
  7. Click the Next button.

  8. +
  9. On the Select a Guest Operating System window, set the +Guest operating system setting to Linux. See +Figure 3.

    +
    +VMware Workstation Player - Select guest operating system type +
    +

    Figure 3: VMware Workstation Player - Select guest operating system +type

    +
    +
    +
  10. +
  11. Set the Version setting to +Other Linux 5.x or later kernel 64-bit.

  12. +
  13. Click the Next button.

  14. +
  15. On the Name the Virtual Machine screen, name the new VM. See +Figure 4.

    +
    +VMware Workstation Player - Name virtual machine +
    +

    Figure 4: VMware Workstation Player - Name virtual machine

    +
    +
    +
  16. +
  17. Click the Next button.

  18. +
  19. On the Specify Disk Capacity screen, set the VM’s maximum disk +size. If you’re planning to use a pre-built image, just use the default +size for now. See Figure 5.

    +
    +VMware Workstation Player - Set disk capacity +
    +

    Figure 5: VMware Workstation Player - Set disk capacity

    +
    +
    +
    +

    Note

    +

    For optimal performance with the Clear Linux OS Desktop image, we recommend 32GB +of drive space. See Recommended minimum system requirements for more details.

    +
    +
  20. +
  21. Click the Next button.

  22. +
  23. On the Ready to Create Virtual Machine screen, click the +Customize Hardware… button. See Figure 6.

    +
    +VMware Workstation Player - Customize hardware +
    +

    Figure 6: VMware Workstation Player - Customize hardware

    +
    +
    +
  24. +
  25. Select Memory and set a desired value. See Figure 7.

    +
    +VMware Workstation Player - Set memory size +
    +

    Figure 7: VMware Workstation Player - Set memory size

    +
    +
    +
    +

    Note

    +

    The Clear Linux OS live installer ISO needs a minimum of 1GB of RAM. +After completing installation, Clear Linux OS can run on as little as +128MB of RAM. Thus, you can reduce the memory size if needed. +See Recommended minimum system requirements for more details.

    +
    +
  26. +
  27. Under the Device list, select Processors. See +Figure 8.

    +
    +VMware Workstation Player - Set virtualization engine option +
    +

    Figure 8: VMware Workstation Player - Set virtualization engine +option

    +
    +
    +
  28. +
  29. Under Processors and Number of processor cores, +enter the desired number of cores.

  30. +
  31. Under the Virtualization engine section, +check the Virtualize Intel VT-x/EPT or AMD-V/RVI box.

  32. +
  33. Click the Close button.

  34. +
  35. Click the Finish button.

  36. +
+
+
+

Enable UEFI boot support

+

Clear Linux OS needs UEFI support to boot and work properly. To enable it:

+
    +
  1. Close the VMware Workstation Player app.

  2. +
  3. Add the following line to the end of your VM’s .vmx file.

    +
    firmware = "efi"
    +
    +
    +
    +

    Note

    +

    Depending on the OS, you can typically find the VMware VM files under:

    +
    +
      +
    • On Linux distros: /home/username/vmware

    • +
    • On Windows: C:\Users\username\Documents\Virtual Machines

    • +
    +
    +
    +
  4. +
+
+
+

Instantiate Clear Linux OS

+

If you want to install Clear Linux OS from scratch, following the instructions +in the Install |CL| using ISO tab. Otherwise, follow the +Use |CL| pre-built VMware image tab to use our pre-built image.

+
+
    +
  1. Navigate to the Clear Linux OS Downloads page and download either the Server +or Desktop ISO image. After the download is complete, you will +attach this image.

  2. +
  3. Start the VMware Workstation Player app.

  4. +
  5. Select the VM that was created in section Create a blank VM. +See Figure 9.

  6. +
  7. Click Edit virtual machine settings.

    +
    +VMware Workstation Player - Edit virtual machine settings +
    +

    Figure 09: VMware Workstation Player - Edit virtual machine settings

    +
    +
    +
  8. +
  9. In the Virtual Machine settings window, +under Hardware, select guilabel:CD/DVD (IDE). +See Figure 10.

  10. +
  11. Under Connection at the right, select +Use ISO image file.

  12. +
  13. Click Browse and select the +Clear Linux OS installer ISO.

    +
    +VMware Workstation Player - Select |CL| installer ISO +
    +

    Figure 10: VMware Workstation Player - Select Clear Linux OS installer ISO

    +
    +
    +
  14. +
  15. Click OK to close the Virtual Machine settings +window.

  16. +
  17. Start the VM by clicking Play virtual machine.

  18. +
  19. Follow one of these guides to complete the installation of Clear Linux OS.

    + +
  20. +
  21. Reboot the VM after the installation completes.

  22. +
  23. Install the os-cloudguest-vmware bundle, the open source +VMware Tools for Linux* guest operating systems, which enables +new features and improves general performance.

    +
    sudo swupd bundle-add os-cloudguest-vmware
    +sudo systemctl enable --now open-vm-tools
    +
    +
    +

    More information is available on the VMWare Tools Product Documentation +site.

    +
  24. +
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/get-started/virtual-machine-install/vmware-esxi-install-cl.html b/get-started/virtual-machine-install/vmware-esxi-install-cl.html new file mode 100644 index 000000000..a55f0642a --- /dev/null +++ b/get-started/virtual-machine-install/vmware-esxi-install-cl.html @@ -0,0 +1,1508 @@ + + + + + + + + + + Clear Linux* OS on VMware* ESXi — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS on VMware* ESXi

+

This page explains how to create a new VM and +manually install Clear Linux* OS on the new VM with VMware ESXi 6.5.

+ +
+

Overview

+

VMware ESXi is a type 1 bare-metal hypervisor that runs directly on top +of server hardware. With VMware ESXi, you can create, configure, manage, and +run Clear Linux OS virtual machines in the cloud.

+

Manually installing Clear Linux OS on a new VM gives additional configuration flexibility +during installation. For example: alternate disk sizes, number of partitions, +pre-installed bundles, etc.

+
+

Note

+

VMware also offers a type 2 hypervisor designed for the desktop environment, called VMware Workstation Player. Refer to +Clear Linux* OS on VMware* Workstation Player for more information.

+

Visit Clear Linux* OS image types to learn more about all available images.

+
+
+
+

Download the latest Clear Linux OS installer ISO

+

Get the latest Clear Linux OS installer ISO image from the image repository. +Look for clear-[version number]-installer.iso.xz.

+

We also provide instructions for downloading and verifying a Clear Linux ISO. +For more information, refer to Download, verify, and decompress a Clear Linux* OS image.

+
+
+

Upload the Clear Linux OS installer ISO to the VMware server

+
    +
  1. Connect to the VMware server and log into an account with sufficient +permission to create and manage VMs.

  2. +
  3. Under the Navigator window, select Storage. +See Figure 1.

  4. +
  5. Under the Datastores tab, click the Datastore browser +button.

    +
    +VMware ESXi - Navigator > Storage +
    +

    Figure 1: VMware ESXi - Navigator > Storage

    +
    +
    +
  6. +
  7. Click the Create directory button and name the directory ISOs. +See Figure 2.

    +
    +VMware ESXi - Datastore > Create directory +
    +

    Figure 2: VMware ESXi - Datastore > Create directory

    +
    +
    +
  8. +
  9. Select the newly-created directory and click the Upload button. +See Figure 3.

    +
    +VMware ESXi - Datastore > Upload ISO +
    +

    Figure 3: VMware ESXi - Datastore > Upload ISO

    +
    +
    +
  10. +
  11. Select the decompressed Clear Linux OS installer ISO file clear-[version number]-installer.iso +and upload it.

  12. +
+
+
+

Create and configure a new VM

+

In this section, you will create a new VM, configure its basic parameters such +as drive size, number of CPUs, memory size, and then attach the Clear Linux OS installer ISO.

+
    +
  1. Under the Navigator window, select Virtual Machines. +See Figure 4.

  2. +
  3. In the right window, click the Create / Register VM button.

    +
    +VMware ESXi - Navigator > Virtual Machines +
    +

    Figure 4: VMware ESXi - Navigator > Virtual Machines

    +
    +
    +
  4. +
  5. On the Select creation type step:

    +
      +
    1. Select the Create a new virtual machine option. +See Figure 5.

    2. +
    3. Click the Next button.

      +
      +VMware ESXi - Create a new virtual machine +
      +

      Figure 5: VMware ESXi - Create a new virtual machine

      +
      +
      +
    4. +
    +
  6. +
  7. On the Select a name and guest OS step:

    +
      +
    1. Give the new VM a name in the Name field. See Figure 6.

    2. +
    3. Set the Compatibility option to ESXi 6.5 virtual machine.

    4. +
    5. Set the Guest OS family option to Linux.

    6. +
    7. Set the Guest OS version option to Other 3.x or later Linux (64-bit).

    8. +
    9. Click the Next button.

      +
      +VMware ESXi - Give a name and select guest OS type +
      +

      Figure 6: VMware ESXi - Give a name and select guest OS type

      +
      +
      +
    10. +
    +
  8. +
  9. On the Select storage step:

    +
      +
    1. Accept the default option.

    2. +
    3. Click the Next button.

    4. +
    +
  10. +
  11. On the Customize settings step:

    +
      +
    1. Click the Virtual Hardware button. See Figure 7.

    2. +
    3. Expand the CPU setting and enable Hardware virtualization by +checking Expose hardware assisted virtualization to the guest OS.

      +
      +VMware ESXi - Enable hardware virtualization +
      +

      Figure 7: VMware ESXi - Enable hardware virtualization

      +
      +
      +
    4. +
    5. Set Memory size to 2048MB (2GB). See Figure 8.

      +
      +VMware ESXi - Set memory size +
      +

      Figure 8: VMware ESXi - Set memory size

      +
      +
      +
      +

      Note

      +

      The Clear Linux OS installer ISO needs a minimum of 2GB of RAM to work properly. +You can reduce the memory size after the installation completes if you want, +because a minimum Clear Linux OS installation can function on as little as 128MB of RAM. +See Recommended minimum system requirements for more details.

      +
      +
    6. +
    7. Set Hard disk 1 to the desired capacity. See Figure 9.

      +
      +VMware ESXi - Set hard disk size +
      +

      Figure 9: VMware ESXi - Set hard disk size

      +
      +
      +
      +

      Note

      +

      A minimum Clear Linux OS installation can exist on 600MB of drive space. +See Recommended minimum system requirements for more details.

      +
      +
    8. +
    9. Attach the Clear Linux OS installer ISO. For the CD/DVD Drive 1 setting, +click the drop-down list to the right of it and select the Datastore ISO file +option. Then select the Clear Linux OS installer ISO clear-[version number]-installer.iso +that you previously uploaded to the VMware server. See Figure 10.

      +
      +VMware ESXi - Set CD/DVD to boot installer ISO +
      +

      Figure 10: VMware ESXi - Set CD/DVD to boot installer ISO

      +
      +
      +
    10. +
    +
  12. +
  13. Click the Next button.

  14. +
  15. Click the Finish button.

  16. +
+
+
+

Install Clear Linux OS into the new VM

+
    +
  1. Power on the VM.

    +
      +
    1. Under the Navigator window, select Virtual Machines. +See Figure 11.

    2. +
    3. In the right window, select the newly-created VM.

    4. +
    5. Click the Power on button.

    6. +
    7. Click on the icon representing the VM to bring it into view and maximize +its window.

      +
      +VMware ESXi - Navigator > Virtual Machines > Power on VM +
      +

      Figure 11: VMware ESXi - Navigator > Virtual Machines > Power on VM

      +
      +
      +
    8. +
    +
  2. +
  3. Follow the Install from live image guide to complete the installation of +Clear Linux OS.

  4. +
  5. After the installation is complete, follow the Clear Linux OS instruction to reboot it. +This will restart the installer again.

  6. +
+
+
+

Reconfigure the VM’s settings to boot the newly-installed Clear Linux OS

+

After Clear Linux OS has been installed using the installer ISO, it must be detached so +it will not run again. Also, in order to boot the newly-installed Clear Linux OS, you must +enable UEFI support.

+
    +
  1. Power off the VM.

    +
      +
    1. Click the Actions button - located on the top-right corner +of the VM’s windows - and go to the Power setting and +select the Power off option. See Figure 12.

      +
      +VMware ESXi - Actions > Power off +
      +

      Figure 12: VMware ESXi - Actions > Power off

      +
      +
      +
    2. +
    +
  2. +
  3. Edit the VM settings.

    +
      +
    1. Click the Actions button again and select Edit settings. +See Figure 13.

      +
      +VMware ESXi - Actions > Edit settings +
      +

      Figure 13: VMware ESXi - Actions > Edit settings

      +
      +
      +
    2. +
    +
  4. +
  5. Disconnect the CD/DVD to stop it from booting the Clear Linux OS installer ISO again.

    +
      +
    1. Click the Virtual Hardware button. See Figure 14.

    2. +
    3. For the CD/DVD Drive 1 setting, uncheck the +Connect checkbox.

      +
      +VMware ESXi - Disconnect the CD/DVD drive +
      +

      Figure 14: VMware ESXi - Disconnect the CD/DVD drive

      +
      +
      +
    4. +
    +
  6. +
  7. Clear Linux OS needs UEFI support in order to boot. Enable it.

    +
      +
    1. Click the VM Options button. See Figure 15.

    2. +
    3. Expand the Boot Options setting.

    4. +
    5. For the Firmware setting, click the drop-down list to the right +of it and select the EFI option.

      +
      +VMware ESXi - Set boot firmware to EFI +
      +

      Figure 15: VMware ESXi - Set boot firmware to EFI

      +
      +
      +
    6. +
    +
  8. +
  9. Click the Save button.

  10. +
+
+
+

Power on the VM and boot Clear Linux OS

+

After configuring the settings above, power on the VM.

+
    +
  1. Under the Navigator window, select Virtual Machines. +See Figure 16.

  2. +
  3. In the right window, select the VM.

  4. +
  5. Click the Power on button.

  6. +
  7. Click on the icon representing the VM to bring it into view and maximize +its window.

    +
    +VMware ESXi - Navigator > Virtual Machines > Power on VM +
    +

    Figure 16: VMware ESXi - Navigator > Virtual Machines > Power on VM

    +
    +
    +
  8. +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/autoproxy.html b/guides/clear/autoproxy.html new file mode 100644 index 000000000..e920afaaa --- /dev/null +++ b/guides/clear/autoproxy.html @@ -0,0 +1,1351 @@ + + + + + + + + + + Autoproxy — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Autoproxy

+

Autoproxy is provided to enable Clear Linux* OS to work smoothly behind a +corporate proxy.

+ +
+

Description

+

Autoproxy tries to detect a Proxy Auto-Config (PAC) script and use it to +automatically resolve the proxy needed for a given connection. With +Autoproxy, you can use Clear Linux OS inside any proxy environment without having to +manually configure the proxies.

+

Corporate and private networks can be very complex, needing to restrict and +control network connections for security reasons. The typical side effects +are limited or blocked connectivity, and require manual configuration of +proxies to perform the most mundane tasks, such as cloning a repo or checking +for updates. With Clear Linux OS, all of the work is done behind the scenes to +effortlessly use your network and have connections “just work”.

+

This feature removes severe complications with network connectivity due to +proxy issues. You can automate tasks, such as unit testing, without worrying +about the proxy not being set, and you can remove unset proxies from the +equation when dealing with network unavailability across systems.

+
+
+

How it works

+

We designed Autoproxy around tools provided by most Linux* +distributions with a few minor additions and modifications. We leveraged the +DHCP and network information obtained from systemd and created a +PAC-discovery daemon. The daemon uses the information to resolve a URL for a +PAC file. The daemon then passes the URL into PACrunner*. PACrunner +downloads the PAC file and uses the newly implemented Duktape* engine to +parse it.

+
+../../_images/autoproxy_0.png +
+

Figure 1: Autoproxy Flow

+
+
+

From that point on, any cURL* or network requests query PACrunner for the +correct proxy to use. We modified the cURL library to communicate with +PACrunner over DBus. However, cURL will ignore PACrunner and run normally if +no PAC file is loaded or if you manually set any proxies. Thus, your +environment settings are respected and no time is wasted trying to resolve a +proxy. All these steps happen in the background with no user interaction.

+
+
+

Troubleshooting

+

Autoproxy allows Clear Linux OS to operate seamlessly behind a proxy +because swupd and other Clear Linux OS tools are implemented on +top of libcurl. Tools that do not use libcurl, like git, must +be configured independently.

+

If you are familiar with PAC files and WPAD, you can use +pacdiscovery and FindProxyForURL to +troubleshoot problems with autoproxy.

+
+

Note

+

Learn more about WPAD, PAC files, and PAC functions at findproxyforurl.

+
+

Run pacdiscovery with no arguments to indicate

+
    +
  1. if there is a problem resolving the WPAD host name resolution:

    +
    sudo pacdiscovery
    +
    +
    +

    Sample output:

    +
    failed getaddrinfo: No address associated with hostname
    +Unable to find wpad host
    +
    +
    +
  2. +
  3. or if the pacrunner service is disabled (masked).

    +
    sudo pacdiscovery
    +
    +
    +

    Sample output:

    +
    PAC url: http://autoproxy.your.domain.com/wpad.dat
    +Failed to create proxy config: Unit pacrunner.service is masked.
    +
    +
    +
  4. +
+

Unmask the pacrunner service by running:

+
sudo systemctl unmask pacrunner.service
+
+
+

Use FindProxyForURL with busctl to indicate

+
    +
  1. the URL and port of the proxy server when an external URL and host are +provided as arguments:

    +
    busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client FindProxyForURL ss "http://www.google.com" "google.com"
    +
    +
    +

    Sample output showing proxy was found:

    +
    s "PROXY proxy.your.domain.com:<port>"
    +
    +
    +
  2. +
  3. if the pacrunner.service is masked:

    +
    busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client FindProxyForURL ss "http://www.google.com" "google.com"
    +
    +
    +

    Sample output:

    +
    Unit pacrunner.service is masked.
    +dig wpad, dig wpad.<domain>
    +
    +
    +
  4. +
  5. if a proxy server is not available, or if pacrunner is running +without a PAC file:

    +
    busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client FindProxyForURL ss "http://www.google.com" "google.com"
    +
    +
    +

    Sample output, indicating connection made directly, without proxy:

    +
    s "DIRECT"
    +
    +
    +
  6. +
+

Once pacdiscovery is able to look up WPAD, restart the +pacrunner service:

+
sudo systemctl stop pacrunner
+sudo systemctl restart pacdiscovery
+
+
+
+

Note

+

A “domain” or “search” entry in /etc/resolv.conf is required +for short name lookups to resolve. The resolv.conf man page has +additional details.

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/autospec.html b/guides/clear/autospec.html new file mode 100644 index 000000000..ad7202450 --- /dev/null +++ b/guides/clear/autospec.html @@ -0,0 +1,1735 @@ + + + + + + + + + + autospec — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

autospec

+

autospec is a tool used to assist with the automated creation and +maintenance of RPM packaging in Clear Linux* OS. Where a standard +RPM build process using rpmbuild +requires a tarball and .spec file to start, autospec requires only a +tarball and package name to start.

+ +
+

Description

+

The autospec tool attempts to infer the requirements of the .spec +file by analyzing the source code and Makefile information. It +continuously runs updated builds based on new information discovered from +build failures until it has a complete and valid .spec file. If +needed, you can influence the behavior of autospec and customize the build by providing optional control files to the autospec tool.

+

autospec uses mock as a sandbox to run the builds. Visit the mock wiki +for additional information on using mock.

+

For a general understanding of how an RPM works, visit +the rpm website or the RPM Packaging Guide.

+
+
+

How it works

+

Learn the autospec tool set up and process.

+ +
+

Prerequisites

+

The setup for building source in Clear Linux OS must be completed before using the +autospec tool.

+

Refer to Setup environment to build source for instructions on completing +the setup.

+
+
+

Create an RPM

+

The basic autospec process is described in the following steps:

+
    +
  1. The make autospec command generates a .spec file based +on the analysis of code and existing control files.

    +

    Any control files should be located in the same directory as the resulting +.spec file. View the autospec README for more information on control files.

    +
  2. +
  3. autospec creates a build root with mock config.

  4. +
  5. autospec attempts to build an RPM from the generated .spec.

  6. +
  7. autospec detects any missed declarations in the .spec.

  8. +
  9. If build errors occur, autospec scans the build log to try to detect +the root cause.

  10. +
  11. If autospec detects the root cause and knows how to continue, it restarts +the build automatically at step 1 with updated build instructions.

  12. +
  13. Otherwise, autospec stops the build for user inspection to resolve the +errors. Respond to the build process output by fixing source code issues +and/or editing control files to resolve issues, which may include +dependencies or exclusions. See autospec README for more information on +control files.

    +

    The user resumes the process at step 1 after errors are resolved.

    +

    If a binary dependency doesn’t exist in Clear Linux OS, you must build it +before running autospec again.

    +
  14. +
+

Following these steps, autospec continues to rebuild the package, based on +new information discovered from build failures, until it has a valid +.spec. If no build errors occur, RPM packages are successfully built.

+
+
+
+

Examples

+

Complete Setup environment to build source before using these examples.

+ +
+

Example 1: Build RPM with an existing spec file

+

This example shows how to build a RPM from a pre-packaged upstream package +with an existing spec file. The example uses the dmidecode package.

+
    +
  1. Navigate to the autospec workspace and clone the dmidecode package:

    +
    cd ~/clearlinux
    +make clone_dmidecode
    +
    +
    +
    +

    Note

    +

    You can clone all package repos at once using the following command:

    +
    make [-j NUM] clone-packages
    +
    +
    +

    The optional NUM is the number of threads to use.

    +

    For a list of available packages, view the +~/clearlinux/projects/common/packages file.

    +
    +
  2. +
  3. Navigate to the local copy of the dmidecode package and build it:

    +
    cd ~/clearlinux/packages/dmidecode/
    +make build
    +
    +
    +
  4. +
  5. The resulting RPMs are in ./rpms. Build logs and additional RPMs +are in ./results.

  6. +
+
+
+

Example 2: Build a new RPM

+

This example shows how to build a new RPM with no spec file. The example will +create a simple helloclear RPM.

+
    +
  1. Navigate to the autospec workspace and build the helloclear RPM. The +Makefile provides a make autospecnew that can +automatically generate an RPM package using the autospec tool. You must +pass the URL to the source tarball and the NAME of the RPM you wish to +create:

    +
    cd ~/clearlinux
    +make autospecnew URL="https://github.com/clearlinux/helloclear/archive/helloclear-v1.0.tar.gz" NAME="helloclear"
    +
    +
    +

    The resulting RPMs are in ./packages/helloclear/rpms. Build logs and additional RPMs are in ./packages/helloclear/results.

    +
  2. +
+
+
+

Example 3: Generate a new spec file with a pre-defined package

+

This example shows how to modify an existing package to create a custom RPM. +In this example you will make a simple change to the dmidecode package +and rebuild the package.

+
    +
  1. Navigate to the autospec workspace and clone the dmidecode package:

    +
    cd ~/clearlinux
    +make clone_dmidecode
    +
    +
    +
  2. +
  3. Navigate into the dmidecode directory:

    +
    cd packages/dmidecode
    +
    +
    +
  4. +
  5. Open the excludes file with an editor and add these lines:

    +
    /usr/bin/biosdecode
    +/usr/bin/ownership
    +/usr/bin/vpddecode
    +/usr/share/man/man8/biosdecode.8
    +/usr/share/man/man8/ownership.8
    +/usr/share/man/man8/vpddecode.8
    +
    +
    +
    +

    Note

    +

    These files aren’t needed by dmidecode, so we can remove them without +any issues.

    +
    +
  6. +
  7. In the dmidecode directory, build the modified dmidecode +package:

    +
    make autospec
    +
    +
    +
  8. +
  9. The resulting RPMs are in ./rpms. Logs are in ./results.

  10. +
+
+
+

Example 4: Provide control files to autospec

+

This example shows how to modify control files to correct build failures that +autospec is unable to resolve. In this example, you will add a missing +license and dependencies so autospec can complete a successful build.

+
    +
  1. Navigate to the autospec workspace:

    +
    cd ~/clearlinux
    +
    +
    +
  2. +
  3. If you have not already, clone all upstream package repos:

    +
    make [-j NUM] clone-packages
    +
    +
    +

    The optional NUM is the number of threads to use.

    +
    +

    Note

    +

    In a later step of this example, we will search the cloned package +repos for a missing dependency.

    +
    +
  4. +
  5. Build the opae-sdk RPM:

    +
    make autospecnew URL="https://github.com/OPAE/opae-sdk/archive/0.13.0.tar.gz" NAME="opae-sdk"
    +
    +
    +

    This results in an error for a missing license file:

    +
    [FATAL]    Cannot find any license or opae-sdk.license file!
    +
    +
    +
  6. +
  7. Navigate to the package with build failures:

    +
    cd packages/opae-sdk
    +
    +
    +
  8. +
  9. Add one or more valid license identifiers from the +SPDX License List. +In the example below, two different licenses are appropriate based on the +opae-sdk project licensing:

    +
    echo "BSD-3-Clause MIT" > opae-sdk.license
    +
    +
    +
  10. +
  11. Run autospec again:

    +
    make autospec
    +
    +
    +

    This results in a generic error:

    +
    [FATAL]    Build failed, aborting
    +
    +
    +
  12. +
  13. Open the build log to view the error details:

    +
    cat ./results/build.log
    +
    +
    +

    The build log contains details for the specific failures. In this +instance, there are missing dependencies:

    +
    CMake Error: The following variables are used in this project, but
    +they are set to NOTFOUND.  Please set them or make sure they are set and tested correctly in the CMake files:
    +
    +CJSON_LIBRARY
    +   linked by target "opae-c++-utils" in directory /builddir/build/BUILD/opae-sdk-0.13.0/tools/c++utilslib
    +json-c_LIBRARIES
    +   linked by target "opae-c" in directory /builddir/build/BUILD/opae-sdk-0.13.0/libopae
    +libuuid_LIBRARIES
    +   linked by target "opae-c" in directory /builddir/build/BUILD/opae-sdk-0.13.0/libopae
    +
    +
    +
  14. +
  15. Search the spec files of upstream Clear Linux OS packages to see if the json-c +library is available. In this case, it does exist and we’ll add the json-c ‘dev’ package into the buildreq_add:

    +
    grep 'json-c\.so$' ~/clearlinux/packages/*/*.spec
    +echo "json-c-dev" >> buildreq_add
    +
    +
    +
    +

    Note

    +

    This search step works only if the user cloned all of the upstream package repos. In this example, upstream package repos were cloned in a previous step.

    +
    +
  16. +
  17. Search the spec files of upstream Clear Linux OS packages to see if the libuuid +library is available. In this case, it exists in the util-linux package, so we’ll add util-linux-dev package into the buildreq_add:

    +
    grep 'libuuid\.so$' ~/clearlinux/packages/*/*.spec
    +echo "util-linux-dev" >> buildreq_add
    +
    +
    +
  18. +
  19. Run autospec again and find the successfully-generated RPMs in the +rpms directory:

    +
    make autospec
    +
    +
    +
    +

    Note

    +

    If you need a dependency that does not exist in the Clear Linux OS repo, you must first build it manually (see Example 2: Build a new RPM), then add the repo so that autospec knows the package exists. For example:

    +
    +
    cd ~/clearlinux/packages/<package-name>
    +make repoadd
    +make repostatus
    +
    +
    +

    You only need to add the dependency to the buildreq_add control +file if autospec is not able to automatically find the correct dependency +on its own.

    +
  20. +
+
+
+

Example 5: Update an existing package

+

The Clear Linux OS team prefers to carry no patches and seeks to make the latest +releases work. If we do need patches, we use autospec to add, +remove, or manage patches. The autospec control files are +integral to the patch management process. Developers can expect a more +streamlined approach to managing a large collection of packages with +autospec.

+
+

Adding and submitting patches

+ +

If you maintain a downstream derivative of Clear Linux OS and you want to integrate +new or patched packages into your mix, follow the process in mixer.

+

Assuming you have followed the above process, autospec has +generated a new spec file.

+
+
+

Refresh a package and inspect

+

In this example, we use autospec to refresh the m4 package and +recreate RPM files.

+
    +
  1. Navigate to the top-level directory of the workspace

    +
    cd clearlinux
    +
    +
    +
      +
    • where clearlinux is the top level of the tooling workspace

    • +
    +
  2. +
  3. Run the make_clone command and then navigate to the package.

    +
    make clone_m4
    +
    +cd packages/m4
    +
    +
    +
  4. +
  5. Make desired changes to the package, its control files, or +other files.

  6. +
  7. Finally, run:

    +
    make autospec
    +
    +
    +
  8. +
  9. To view spec file changes, run:

    +
    git show m4.spec
    +
    +
    +

    The output shows:

    +
    m4: Autospec creation for version 1.4.18
    +
    +diff --git a/m4.spec b/m4.spec
    +index f76c78d..97b846a 100644
    +--- a/m4.spec
    ++++ b/m4.spec
    +@@ -6,15 +6,14 @@
    +#
    +Name     : m4
    +Version  : 1.4.18
    +-Release  : 88
    ++Release  : 89
    +URL      : http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.xz
    +Source0  : http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.xz
    +-Source99 : http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.xz.sig
    ++Source1 : http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.xz.sig
    +Summary  : No detailed summary available
    +Group    : Development/Tools
    +...
    +
    +
    +
  10. +
  11. The following commands provide a more complete view of the changes.

    +
      +
    • git log -p

    • +
    • gitk

    • +
    +
  12. +
+
+
+
+
+

Test packaged software

+

After software has been packaged with autospec, the resulting RPMs can be +tested for functionality before being integrated and deployed into a Clear Linux OS +image with the Mixer tool.

+

The Clear Linux OS development tooling offers two ways to quickly test autospec +generated RPMs.

+
+

Note

+

The methods outlined below should only be used for temporary testing on +development systems.

+
+
+

Test in a Clear Linux OS virtual machine

+

The Clear Linux OS development tooling includes a method to install RPMs into a Clear Linux OS +virtual machine running on the KVM hypervisor. Using a VM allows testing in a completely isolated environment.

+

To test an autospec-created package inside a VM:

+
    +
  1. Download the Clear Linux OS KVM image into the ~/clearlinux directory as +clear.img. The location and name clear.img.xz is important +for the tooling to work:

    +
    cd ~/clearlinux
    +curl -o clear.img.xz https://download.clearlinux.org/image/$(curl https://download.clearlinux.org/image/latest-images | grep '[0-9]'-kvm)
    +
    +
    +
  2. +
  3. Extract the downloaded Clear Linux OS KVM image:

    +
    unxz -v clear.img.xz
    +
    +
    +
  4. +
  5. Copy the QEMU start script and virtual firmware needed for KVM into the +~/clearlinux directory:

    +
    cp ~/clearlinux/projects/common/start_qemu.sh .
    +cp /usr/share/qemu/OVMF.fd .
    +
    +
    +
  6. +
  7. Run make install from the package’s autospec directory. The +make install command mounts the downloaded Clear Linux OS KVM image and +installs the autospec-created RPM into it:

    +
    cd ~/clearlinux/packages/<package-name>
    +make install
    +
    +
    +

    The code that makes this possible can be viewed by searching for the +install: target in the Makefile.common file on GitHub.

    +
  8. +
  9. Return to the ~/clearlinux directory and start the Clear Linux OS VM:

    +
    cd ~/clearlinux/
    +sudo ./start_qemu.sh clear.img
    +
    +
    +
  10. +
  11. A new Clear Linux OS VM will launch in the console. Log into the VM as root and set +a new password for the VM.

  12. +
  13. Check that the software is installed in the Clear Linux OS VM as expected and perform +any relevant tests.

  14. +
  15. After testing has been completed, the Clear Linux OS VM can be powered off and +deleted:

    +
    poweroff
    +rm clear.img
    +
    +
    +
  16. +
+
+
+

Test directly on a development machine

+

The Clear Linux OS development tooling also includes a method to extract +autospec-created RPMs locally onto a Clear Linux OS development system for testing. +Extracting an RPM directly onto a system offers quicker testing; however +conflicts may occur and responsibility to remove the software after testing is +up to the developer.

+

To test an autospec created package directly on the Clear Linux OS development system:

+
    +
  1. Run make install-local from the package’s autospec directory. +The make install-local command extracts the RPM directly onto +the filesystem of the running Clear Linux OS system:

    +
    cd ~/clearlinux/packages/<package-name>
    +make install-local
    +
    +
    +

    The code that makes this possible can be viewed by searching for the +install-local: target in the Makefile.common file on GitHub.

    +
  2. +
  3. Check that the software is installed as expected and perform any relevant +tests.

  4. +
  5. After testing has been completed, the software and any related files must +be identified and deleted. The swupd repair --picky +command can help restore the state of the /usr directory (see +swupd) however any other files must be cleaned up +manually.

  6. +
+
+
+
+

References

+

Reference the autospec README for details regarding autospec commands and options.

+
+

Setup environment to build source

+

Setup of the workspace and tooling used for building source in Clear Linux OS is mostly +automated for you with a setup script. It uses tools from the +os-clr-on-clr bundle.

+

The setup script creates a workspace in the clearlinux folder, with the +subfolders Makefile, packages, and projects. The +projects folder contains the main tools used for making packages in +Clear Linux OS autospec and common.

+

Follow these steps to setup the workspace and tooling for building source:

+
    +
  1. Install the os-clr-on-clr bundle:

    +
    sudo swupd bundle-add os-clr-on-clr
    +
    +
    +
  2. +
  3. Download the user-setup.sh script:

    +
    curl -O https://raw.githubusercontent.com/clearlinux/common/master/user-setup.sh
    +
    +
    +
  4. +
  5. Make user-setup.sh executable:

    +
    chmod +x user-setup.sh
    +
    +
    +
  6. +
  7. Run the script as an unprivileged user:

    +
    ./user-setup.sh
    +
    +
    +
  8. +
  9. After the script completes, log out and log in again to complete the setup +process.

  10. +
  11. Set your Git user email and username for the repos on your system:

    +
    git config --global user.email "you@example.com"
    +git config --global user.name "Your Name"
    +
    +
    +

    This global setting is used by Clear Linux OS tools that make use of Git.

    +
  12. +
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/bundles.html b/guides/clear/bundles.html new file mode 100644 index 000000000..bdb0f6276 --- /dev/null +++ b/guides/clear/bundles.html @@ -0,0 +1,1238 @@ + + + + + + + + + + Bundles — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Bundles

+

Linux-based operating systems contain the code of several hundred, if +not thousands, of open source projects. To make this manageable, +distributions use a concept called “packages” to configure and compile +the source code of these projects into binaries.

+

Many distributions then split the content of these compiled packages +into so-called sub-packages, which are the granularity at which these +distributions deploy their software. With those kinds of distributions, +system administrators can then install and update sub-packages +individually or as a set, using tools such as “yum” and “apt-get.”

+

The Clear Linux* OS takes a slightly different approach. While we also use the +concept of packages to manage compiling source code into binaries, we do not +use the package concept to deploy software. Instead, we provide software +“bundles” that are installed and managed using swupd. +Each bundle contains as many or as few open source projects needed to provide a +complete functionality.

+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/compatible-kernels.html b/guides/clear/compatible-kernels.html new file mode 100644 index 000000000..8fdee91f1 --- /dev/null +++ b/guides/clear/compatible-kernels.html @@ -0,0 +1,1271 @@ + + + + + + + + + + Kernels — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Kernels

+

The Clear Linux* OS provides the following Linux kernels with a respective bundle. +This document describes the specific use cases these bundles serve +and provides links to their source code.

+
+

Bare metal only

+
+
Kernel native

The kernel-native bundle focuses on the bare metal platforms. It is +optimized for fast booting and performs best on the Intel® Architecture Processors +described on the supported hardware list. The +optimization patches are found in our Linux GitHub* repo.

+
+
+
+
+

Also compatible with VMs

+
+
Kernel LTS

The kernel-lts bundle focuses on the bare metal platforms but uses the +latest LTS Linux kernel. It is optimized for +fast booting and performs best on the Intel® Architecture Processors described +on the supported hardware list. Additionally, this +kernel includes the VirtualBox* kernel modules, see our +instructions on using Virtualbox for more +information. The optimization patches are found in our Linux-LTS GitHub +repo.

+
+
+
+
+

VM only

+
+
Kernel KVM

The kernel-kvm bundle focuses on the Linux +KVM. It is optimized for fast +booting and performs best on Virtual Machines running on the Intel® Architecture +Processors described on the +supported hardware list. Use this kernel when +running Clear Linux OS as the guest OS on top of qemu/kvm. Use this kernel with +cloud orchestrators using qemu/kvm internally as their hypervisor +. This kernel can be used as a standalone Clear Linux OS VM, see our +instructions on using KVM for more information. The +optimization patches are found in our Linux-KVM GitHub repo.

+
+
Kernel Hyper-V*

The kernel-hyperv bundle focuses on running Linux on Microsoft* +Hyper-V. It is optimized for fast booting and performs best on Virtual +Machines running on the Intel® Architecture Processors described on the +supported hardware list. +Use this kernel when running Clear Linux OS as the guest OS of Cloud Instances in +projects such as Microsoft Azure*. This kernel can be used in a +standalone Clear Linux OS VM, see our instructions on using Hyper-V +for more information. The optimization patches are found in our +Linux-HyperV GitHub repo.

+
+
+

Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/debug.html b/guides/clear/debug.html new file mode 100644 index 000000000..b398bfd36 --- /dev/null +++ b/guides/clear/debug.html @@ -0,0 +1,1292 @@ + + + + + + + + + + Debug system — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Debug system

+

Clear Linux* OS introduces a novel approach to system software debugging using +clr-debug-info. On the client side, the Clear Linux OS debug system obtains any +necessary debug information on-the-fly over a network during a debugging +session. On the server side, the system curates and compresses debug +information into small pieces for efficient downloading.

+

For developers, this avoids the interruption during debugging that usually +happens when debug information is missing. This can be especially useful on +systems where storage is limited.

+ +
+

Background

+

Software that is compiled and packaged for general usage in an operating +system typically only contains components that are used to execute the +program, such as binaries and libraries. Extra developer data, such as the +actual source code and symbol information, are separated and excluded for +efficiency.

+

The debug information helps relate binary code to human readable source code +lines and variables. Most of the time, this auxiliary information +is not needed; +however without it, debugging a program results in limited visibility.

+
+
+

Usage

+

The clr-debug-info system is integrated into Clear Linux OS and seamlessly engages once +installed.

+
    +
  1. Install the dev-utils bundle.

    +
    sudo swupd bundle-add dev-utils
    +
    +
    +
    +

    Note

    +

    The telemetrics and performance-tools bundles also include +clr-debug-info.

    +
    +
  2. +
  3. Start a debugging session against a program using a debugger, such as GDB. +For example, to debug gnome-control-center execute the following +command:

    +
    gdb /usr/bin/gnome-control-center
    +
    +
    +
  4. +
+

As you step through the program and debug information is needed, the +clr_debug_daemon obtains it in the background.

+
+
+

Implementation

+

The implementation of the Clear Linux OS debug system is open source and available on +GitHub at: https://github.com/clearlinux/clr-debug-info/

+
+Debug system communication flow +
+

Figure 1: The communication flow of the Clear Linux OS debug system

+
+
+

The Clear Linux OS debug system implements a FUSE +filesystem mounted at /usr/lib/debug and /usr/src/debug. The +FUSE filesystem starts automatically. You can verify its status by executing +systemctl status clr_debug_fuse.service.

+

The clr_debug_daemon is responsible for fetching the appropriate package +debug content from the server and making it available for any debugging +programs that need it. It is socket activated whenever a request to the local +FUSE filesystem occurs. You can verify its status with systemctl +status clr_debug_daemon.service.

+

Clear Linux OS hosts debuginfo content packaged for consumption by Clear Linux OS debug clients at +https://download.clearlinux.org/debuginfo/

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/k8s-migration.html b/guides/clear/k8s-migration.html new file mode 100644 index 000000000..1aeab35a0 --- /dev/null +++ b/guides/clear/k8s-migration.html @@ -0,0 +1,1489 @@ + + + + + + + + + + Kubernetes* migration — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Kubernetes* migration

+

This guide describes how to migrate Kubernetes container orchestration system on Clear Linux* OS from 1.17.x to 1.19.x.

+ +
+

Background

+

The version of Kubernetes* was bumped from 1.17.7 to 1.19.4 in Clear Linux* OS +release 34090. This guide and the Clear Linux OS bundle k8s-migration were created +to help facilitate migration of a cluster from 1.17.x to the latest 1.19.x .

+

The new Clear Linux OS bundle k8s-migration was added in Clear Linux* OS release 34270.

+
+
+

Prerequisites

+
    +
  • Make sure you check any updates to kubernetes upgrade doc for caveats related to the version that is running in the cluster.

  • +
  • Make sure ALL the nodes are in Ready state. Without that, the cluster cannot be upgraded. +Either fix the broken nodes or remove them from the cluster.

  • +
+
+
+

Upgrade 1.17.x —> 1.18.15

+
    +
  1. Upgrade Control Node to 1.18.15 first

    +

    First step would be to upgrade one of the main control node and +update kubernetes components on them. You will need to have a newer +version of kubeadm for the upgrade to work. Please consult +kubeadm upgrade guide +for any caveats from your current version to the new one.

    +

    Update Clear Linux OS to the latest release to update the kubernetes version.

    +
    sudo -E swupd update
    +
    +
    +
    +

    Note

    +

    Note: PLEASE DO NOT REBOOT YOUR SYSTEM AT THIS TIME. Clear Linux OS is awesome and +your stuff will work just fine.

    +
    +
  2. +
  3. Add the new Kubernetes migration bundle which contains the 1.18.15 binaries.

    +
    sudo -E swupd bundle-add k8s-migration
    +
    +
    +
  4. +
  5. Find the upgrade version of kubeadm that can used. This should be 1.18.15.

    +

    This command will show the command and possible jumps that can be made from the current kubernetes version.

    +
    sudo -E /usr/k8s-migration/bin/kubeadm upgrade plan
    +
    +
    +

    Sample output:

    +
    [upgrade/config] Making sure the configuration is correct:
    +[upgrade/config] Reading configuration from the cluster...
    +[upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
    +[preflight] Running pre-flight checks.
    +[upgrade] Running cluster health checks
    +[upgrade] Fetching available versions to upgrade to
    +[upgrade/versions] Cluster version: v1.17.17
    +[upgrade/versions] kubeadm version: v1.18.15
    +I0209 21:12:49.868786  832739 version.go:252] remote version is much newer: v1.20.2; falling back to: stable-1.18
    +[upgrade/versions] Latest stable version: v1.18.15
    +[upgrade/versions] Latest stable version: v1.18.15
    +[upgrade/versions] Latest version in the v1.17 series: v1.17.17
    +[upgrade/versions] Latest version in the v1.17 series: v1.17.17
    +
    +Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
    +COMPONENT   CURRENT       AVAILABLE
    +Kubelet     3 x v1.17.7   v1.18.15
    +
    +Upgrade to the latest stable version:
    +
    +COMPONENT            CURRENT    AVAILABLE
    +API Server           v1.17.17   v1.18.15
    +Controller Manager   v1.17.17   v1.18.15
    +Scheduler            v1.17.17   v1.18.15
    +Kube Proxy           v1.17.17   v1.18.15
    +CoreDNS              1.6.5      1.6.7
    +Etcd                 3.4.3      3.4.3-0
    +
    +You can now apply the upgrade by executing the following command:
    +
    +  kubeadm upgrade apply v1.18.15
    +
    +
    +
  6. +
  7. Upgrade the node to the intermediate 1.18.15 version of Kubernetes.

    +
    sudo -E /usr/k8s-migration/bin/kubeadm upgrade apply v1.18.15
    +
    +
    +
    +

    Note

    +

    Note: Do not reboot the system yet.

    +
    +
  8. +
  9. Upgrade Additional Control Nodes to 1.18.15

    +

    In multi-node control plane, verify all the control plane nodes are updated prior to upgrading the worker nodes/SUTs.

    +
  10. +
  11. Upgrade Other Nodes to 1.18.15

    +

    For each of the other nodes:

    +
      +
    1. Update Clear Linux OS to the latest release to update the kubernetes version.

      +
      sudo -E swupd update
      +
      +
      +
    2. +
    3. Add the new Kubernetes migration bundle which contains the 1.18.15 binaries.

      +
      sudo -E swupd bundle-add k8s-migration
      +
      +
      +
    4. +
    5. On the Admin node, drain the Client node FIRST

      +
      /usr/k8s-migration/bin/kubectl drain <CLIENT_NODE_NAME> --ignore-daemonsets --delete-local-data
      +
      +
      +
    6. +
    7. Back on the Client node, upgrade Kubernetes on the Client

      +
      sudo -E /usr/k8s-migration/bin/kubeadm upgrade node
      +
      +
      +
    8. +
    9. On the Admin node, re-enable the Client

      +
      /usr/k8s-migration/bin/kubectl uncordon <CLIENT_NODE_NAME>
      +
      +
      +
    10. +
    11. Back on the Client node, restart Kubernetes on the Client

      +
      sudo -E systemctl restart kubelet
      +
      +
      +
    12. +
    +
  12. +
  13. Restart Kubernetes on the Admin node(s) to finish the 1.18.x upgrade

    +
    sudo -E systemctl restart kubelet
    +
    +
    +
    +

    Note

    +

    Note: Wait for all nodes to be Ready and showing the 1.19.x version. +This version will now show as it is the released version the +service files will see and use, but the Nodes are not upgraded yet.

    +
    +
  14. +
+
+
+

Upgrade 1.18.15 —> 1.19.x

+
    +
  1. Upgrade Control Node to 1.19.x

    +

    Now that systems are upgraded to the intermediate release of 1.18.15 +each of the nodes can be upgraded to the latest 1.19.x release.

    +
  2. +
  3. Find the upgrade version of kubeadm that can used. This should be 1.19.x.

    +

    This command will show the command and possible jumps that can be made from the current kubernetes version.

    +
    sudo -E kubeadm upgrade plan
    +
    +
    +

    Sample output:

    +
    [upgrade/config] Making sure the configuration is correct:
    +[upgrade/config] Reading configuration from the cluster...
    +[upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
    +[preflight] Running pre-flight checks.
    +[upgrade] Running cluster health checks
    +[upgrade] Fetching available versions to upgrade to
    +[upgrade/versions] Cluster version: v1.18.15
    +[upgrade/versions] kubeadm version: v1.19.7
    +I0209 23:08:23.810900  925910 version.go:252] remote version is much newer: v1.20.2; falling back to: stable-1.19
    +[upgrade/versions] Latest stable version: v1.19.7
    +[upgrade/versions] Latest stable version: v1.19.7
    +[upgrade/versions] Latest version in the v1.18 series: v1.18.15
    +[upgrade/versions] Latest version in the v1.18 series: v1.18.15
    +
    +Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
    +COMPONENT   CURRENT       AVAILABLE
    +kubelet     3 x v1.17.7   v1.19.7
    +
    +Upgrade to the latest stable version:
    +
    +COMPONENT                 CURRENT    AVAILABLE
    +kube-apiserver            v1.18.15   v1.19.7
    +kube-controller-manager   v1.18.15   v1.19.7
    +kube-scheduler            v1.18.15   v1.19.7
    +kube-proxy                v1.18.15   v1.19.7
    +CoreDNS                   1.6.7      1.7.0
    +etcd                      3.4.3-0    3.4.13-0
    +
    +You can now apply the upgrade by executing the following command:
    +
    +  kubeadm upgrade apply v1.19.7
    +
    +The table below shows the current state of component configs as understood by this version of kubeadm.
    +Configs that have a "yes" mark in the "MANUAL UPGRADE REQUIRED" column require manual config upgrade or
    +resetting to kubeadm defaults before a successful upgrade can be performed. The version to manually
    +upgrade to is denoted in the "PREFERRED VERSION" column.
    +
    +API GROUP                 CURRENT VERSION   PREFERRED VERSION   MANUAL UPGRADE REQUIRED
    +kubeproxy.config.k8s.io   v1alpha1          v1alpha1            no
    +kubelet.config.k8s.io     v1beta1           v1beta1             no
    +
    +
    +
  4. +
  5. Upgrade the node to the latest 1.19.x version of Kubernetes.

    +
    sudo -E /usr/bin/kubeadm upgrade apply v1.19.7
    +
    +
    +
    +

    Note

    +

    Note: Do not reboot the system yet.

    +
    +
  6. +
  7. Upgrade Additional Control Nodes to 1.19.x

    +

    In multi-node control plane, verify all the control plane nodes are updated prior to upgrading the worker nodes/SUTs.

    +
  8. +
  9. Upgrade Other Nodes to 1.19.x

    +

    For each of the other nodes:

    +
      +
    1. On the Admin node, drain the Client FIRST

      +
      kubectl drain <CLIENT_NODE_NAME> --ignore-daemonsets
      +
      +
      +
    2. +
    3. Back on the Client node, upgrade Kubernetes on the Client

      +
      sudo -E kubeadm upgrade node
      +
      +
      +
    4. +
    5. On the Admin node, re-enable the Client

      +
      kubectl uncordon <CLIENT_NODE_NAME>
      +
      +
      +
    6. +
    7. Back on the Client node, if you wish reboot the Client, it is now safe to do so.

      +
      sudo reboot
      +
      +
      +
    8. +
    +
  10. +
  11. Reboot the Control Node (optional)

  12. +
+
+

If you wish reboot the nodes, it is now safe to do so.

+
+
sudo reboot
+
+
+
+
+

Congratulations!

+

You’ve successfully installed and set up Kubernetes in Clear Linux OS using CRI-O and kata-runtime. You are now ready to follow on-screen instructions to deploy a pod network to the cluster and join worker nodes with the displayed token and IP information.

+

Clean up: Remove the migration bundle for each node

+
sudo -E swupd bundle-remove k8s-migration
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/mixer.html b/guides/clear/mixer.html new file mode 100644 index 000000000..abb84b8b9 --- /dev/null +++ b/guides/clear/mixer.html @@ -0,0 +1,2213 @@ + + + + + + + + + + mixer — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

mixer

+

The Clear Linux* OS team uses mixer to generate official update content and +releases. The update content generated by mixer is then consumed by swupd on +a downstream client. The same mixer tool is available to those who wish to create customized update content and releases.

+ +
+

Description

+

mixer uses the following sources as inputs to generate update content:

+
    +
  • Upstream Clear Linux OS bundles with their corresponding RPM packages

  • +
  • Locally-defined bundles with their corresponding local RPM packages

  • +
  • Locally-defined bundles with upstream RPM packages

  • +
  • Locally-defined bundles with non-RPM content

  • +
+

Using the mixer tool, you select which content from these sources that +becomes part of your update. Your selection of sources produces a unique +combination of functionality for your custom update content, known as +a mix.

+

The update content that mixer generates consists of various pieces of OS +content, update metadata, as well as a complete image. The OS content +includes all files in an update, as well as zero- and delta-packs for +improved update performance. The update metadata, stored as manifests, +describes all of the bundle information for the update. Update content +produced by mixer is then published to a web server and consumed by clients +via swupd. Refer to swupd for additional +information regarding updates and update content.

+
+
+

How it works

+

Learn the mixer tool set up and workflow.

+ +
+

Prerequisites

+
    +
  • mixer bundle

    +

    Add the mixer tool by installing the mixer bundle. Refer to +swupd for more information on installing bundles.

    +
  • +
  • If you’re working behind a corporate proxy, configure proxy settings using +the General proxy settings for many applications steps.

  • +
  • Location to host the update content and images

    +

    In order for swupd to make use of your mix, the update content for your mix must be hosted on a web server. Your mix will be configured with an update location URL, which swupd will use to pull down updates.

    +

    Refer to Set up a nginx web server for mixer for an simple example of +setting up an update location.

    +
  • +
+
+
+

Mix setup

+

Follow these steps to create and initialize the mixer workspace. Complete +the setup before you create a mix.

+
    +
  1. Create workspace.

    +

    The mixer tool uses a simple workspace to contain all input and output in a +basic directory structure. The workspace is simply an empty folder from +which you execute the mixer commands. Each mix uses its own separate +workspace.

    +
  2. +
  3. Initialize the workspace and mix.

    +

    Before you create a mix, you must explicitly initialize the mixer workspace. +During initialization, the mixer workspace is configured and the base for +your mix is defined. By default, your mix is based on the latest +upstream version and starts with the minimum set of bundles. Your first custom +mix version number starts at 10. Alternatively, you can select other +versions or bundle sets from which to start.

    +

    Initialization creates the directory structure within the workspace and adds +the builder.conf file, which is used to configure the mixer tool.

    +

    View the mixer.init man page for more information on mixer +initialization.

    +

    View the list of suitable releases from which to mix.

    +
  4. +
  5. Edit builder.conf.

    +

    builder.conf tells the mixer tool how to configure the mix. For +example, it allows you to configure where mixer output is located and where swupd update content will be located.

    +

    At minimum, set the URL of your update server so your custom OS knows where to get update content.

    +

    Refer to the builder.conf section for more information.

    +
  6. +
+
+
+

Create a mix

+

A mix is created with the following steps:

+
    +
  1. Add custom RPMs and set up local repo (optional).

    +

    If you are adding custom RPMs to your mix, you must add the RPMs to +your mix workspace and set up a corresponding local repository.

    +

    Go to the autospec guide to learn to build RPMs from +scratch. If the RPMs are not built on Clear Linux OS, make sure your +configuration and toolchain builds them correctly for Clear Linux OS. Otherwise there +is no guarantee they will be compatible.

    +

    Refer to the autospec guide for more information on using autospec to +build RPMs.

    +
  2. +
  3. Update and build bundles.

    +

    Add, edit, or remove bundles that will be part of your content and build +them. mixer automatically updates the mixbundles file when you +update the bundles in your mix.

    +

    View the mixer.bundle man page for more information on configuring bundles +in a mix.

    +

    View the mixer.build man page for more information on building bundles.

    +

    View the Bundles section for more information on how mixer manages +bundles.

    +
  4. +
  5. Create the update content.

    +

    mixer creates update content with this step. Zero-packs are created +automatically, and delta-packs can be optionally created at the same time +(for all builds after version 0).

    +

    A zero-pack is the full set of content needed to go from mix version 0 +(nothing) to the mix version for which you just built content.

    +

    A delta-pack provides the content delta between a PAST_VERSION to a +MIX_VERSION that allows the transition from one mix version to another.

    +

    View swupd for more information on update content.

    +
  6. +
  7. Create image.

    +

    mixer creates a bootable image from your updated content using +the clr-installer tool. In this step you can specify which bundles you want +preinstalled in the image. Users can later install other bundles available +in your mix.

    +
  8. +
  9. Make update available.

    +

    Deploy update content and images to your update server.

    +

    View the Example 5: Deploy updates to target for a simple deployment +scenario.

    +
  10. +
+
+
+

Maintain or modify mix

+

Update or modify your content to a new version by following the steps to +create a mix. Increment the mix version number for the next mix.

+
+
+
+

Examples

+

The following examples are designed to work together and in order. The examples +use:

+
    +
  • A stock installation of Clear Linux OS.

  • +
  • A web server that comes with Clear Linux OS to host the content updates.

  • +
  • A simple VM that updates against the locally produced content created in +Example 2.

  • +
+

Complete all Prerequisites before using these examples.

+
+

Example 1: Mix set up

+

This example shows the basic steps for the first-time setup of +mixer for a new mix.

+
    +
  1. Create a directory to use as a workspace for mixer:

    +
    mkdir ~/mixer
    +
    +
    +
  2. +
  3. In your mixer workspace, generate an initial mix based on the latest +upstream Clear Linux OS version, with minimum bundles. In the initialization +output, be aware that your initial mix version is set to 10 and that the +minimum bundles have been added.

    +
    cd ~/mixer
    +mixer init
    +
    +
    +
    +

    Note

    +

    If you want to add all upstream bundles in your mix, +initialize your mix as shown below.

    +
    +
    mixer init --all-upstream
    +
    +
    +
  4. +
  5. Look up your IP address:

    +
    networkctl status
    +
    +
    +
  6. +
  7. Copy the IP “Address”, from above, for the next step.

    +
    +

    Note

    +

    In this example, we put mixer and nginx on the same system. In a production environment, they would likely reside on different systems.

    +
    +
  8. +
  9. Edit builder.conf. Paste the IP address from the previous step +as the value after http:// for CONTENTURL and VERSIONURL. For example:

    +
    CONTENTURL="http://192.168.25.52"
    +VERSIONURL="http://192.168.25.52"
    +
    +
    +
  10. +
  11. Set up a nginx web server for mixer.

  12. +
+
+
+

Example 2: Create a simple mix

+

This example shows how to create a simple custom mix using upstream content. +We’ll create an image for a QEMU virtual machine that we can use later to +test our mix.

+

We can use the default bundles that were added during initialization, but +these include the native-kernel bundle that is intended to be +used on a bare metal system instead of a VM. So we will modify the default +bundle set to get a smaller kernel image, which will also be faster to load.

+
+

Note

+

The only bundles available to swupd for a given release are +those that were added to the mix during build time. A mix doesn’t +automatically inherit all upstream bundles.

+
+
    +
  1. Ensure that you have run mixer init, shown in Example 1.

  2. +
  3. Update bundles in mix:

    +
    mixer bundle remove kernel-native
    +mixer bundle add kernel-kvm
    +
    +
    +
    +

    Note

    +

    The mixer bundle commands operate on the bundle description files but not on the bundle contents. To remove bundle contents and their tracking completely, follow Example 6: Remove a bundle from client system, Advanced.

    +
    +
  4. +
  5. In this case, we will add the editors bundle from upstream, but we will +remove the joe editor.

    +
    mixer bundle add editors
    +mixer bundle edit editors
    +
    +
    +
  6. +
  7. Use an editor and manually remove joe from the bundle definition.

    +
    $EDITOR ./local-bundles/editors
    +
    +
    +
  8. +
  9. List the bundles in the mix again to confirm removal of joe.

    +
    mixer bundle list  --tree
    +
    +
    +
  10. +
  11. Build bundles:

    +
    sudo mixer build bundles
    +
    +
    +
  12. +
  13. First, browse to web server from Example 1. The web page appears yet +has no update content. Build the update content:

    +
    sudo mixer build update
    +
    +
    +

    After that is completed, on your web server, you can see the update +content for mix version 10.

    +
  14. +
+
+
+

Example 3: Create an update for your mix

+

Next, let’s create a new version of the mix. We’ll add a new bundle.

+
    +
  1. Create a new version of your mix, for the live image to +update to. Increment your mix version by 10:

    +
    mixer versions update
    +
    +
    +
  2. +
  3. Add the upstream curl bundle to version 20 of the mix:

    +
    mixer bundle add curl
    +
    +
    +
  4. +
  5. Build your next mix version that incorporates the new bundle.

    +
    sudo mixer build bundles
    +sudo mixer build update
    +
    +
    +
  6. +
  7. Optionally, you can build delta-packs, which help reduce client update +time:

    +
    sudo mixer build delta-packs --from 10 --to 20
    +
    +
    +
  8. +
+

Refresh your web server to see the update content for mix version 20.

+

You can also look in ~/mixer/update/www/<mix version> to see the update +content in your workspace.

+
+
+

Example 4: Build an image

+

This example shows how to build a bootable image containing the +kernel-kvm, os-core, and the os-core-update +bundles from Example 2: Create a simple mix. Complete that example before starting this one.

+

Underneath, mixer uses clr-installer to generate the image.

+
    +
  1. Change directory into your mix.

  2. +
  3. Configure image.

    +

    Create a YAML configuration file to specify aspects of your image +such as image name, target media, bundles, etc. See Installer YAML Syntax +for more information on clr-installer configuration YAML syntax.

    +

    For this example, we will download a sample YAML and modify it.

    +
    curl -O https://raw.githubusercontent.com/clearlinux/clr-installer/master/scripts/kvm.yaml
    +
    +
    +

    Make the following revisions to kvm.yaml:

    +
      +
    • Reduce overall image size and root partition size by 5GB.

    • +
    • Remove these bundles from the image: editors, network-basic, +openssh-server, sysadmin-basic

    • +
    • Add version: 10 to tell mixer to generate an image based +on mix version 10

    • +
    +
    +

    Note

    +

    When creating an image, it is not necessary to include all of the bundles +that are in your entire mix. Once you have a working image, you can use +swupd to add them as needed.

    +
    +

    Your kvm.yaml should look like below:

    +
     1#clear-linux-config
    + 2
    + 3# switch between aliases if you want to install to an actuall block device
    + 4# i.e /dev/sda
    + 5block-devices: [
    + 6   {name: "bdevice", file: "kvm.img"}
    + 7]
    + 8
    + 9targetMedia:
    +10- name: ${bdevice}
    +11  size: "3.54G"
    +12  type: disk
    +13  children:
    +14  - name: ${bdevice}1
    +15    fstype: vfat
    +16    mountpoint: /boot
    +17    size: "512M"
    +18    type: part
    +19  - name: ${bdevice}2
    +20    fstype: swap
    +21    size: "32M"
    +22    type: part
    +23  - name: ${bdevice}3
    +24    fstype: ext4
    +25    mountpoint: /
    +26    size: "3G"
    +27    type: part
    +28
    +29bundles: [
    +30    bootloader,
    +31    os-core,
    +32    os-core-update,
    +33  ]
    +34
    +35autoUpdate: false
    +36postArchive: false
    +37postReboot: false
    +38telemetry: false
    +39
    +40keyboard: us
    +41language: en_US.UTF-8
    +42kernel: kernel-kvm
    +43
    +44version: 10
    +
    +
    +
  4. +
  5. Build the image.

    +
    sudo mixer build image --template $PWD/kvm.yaml
    +
    +
    +

    The output from this step will be kvm.img, which is a live +image.

    +
  6. +
+
+
+

Example 5: Deploy updates to target

+

The image created in Example 4 is directly bootable in QEMU. In this example, +we’ll boot the image and verify it. Then we’ll update the image from +mix version 10 to mix version 20.

+
    +
  1. Set up the QEMU environment.

    +

    Install the kvm-host bundle to your Clear Linux OS:

    +
    sudo swupd bundle-add kvm-host
    +
    +
    +
  2. +
  3. Get the virtual EFI firmware, download the image launch script, and make +it executable:

    +
    curl -O https://download.clearlinux.org/image/OVMF.fd
    +curl -O https://download.clearlinux.org/image/start_qemu.sh
    +chmod +x start_qemu.sh
    +
    +
    +
  4. +
  5. Start your VM image (created in Example 4):

    +
    sudo ./start_qemu.sh kvm.img
    +
    +
    +
  6. +
  7. Log in as root and set a password.

  8. +
  9. By default, the swupd client is designed to communicate with an +HTTPS server. For development purposes, the swupd client can talk to +an HTTP server if you add the flag allow-insecure-http.

    +

    To avoid adding a flag each time when invoking swupd, enter:

    +
    mkdir -p /etc/swupd
    +cat > /etc/swupd/config << EOF
    +[GLOBAL]
    +allow_insecure_http=true
    +EOF
    +
    +
    +
  10. +
  11. Try out your mix.

    +
      +
    1. Show the version and update URLs

      +
      swupd info
      +
      +
      +
    2. +
    3. List the bundles installed in your mix:

      +
      swupd bundle-list
      +
      +
      +
    4. +
    5. List available bundles on your update server.

      +
      swupd bundle-list -a
      +
      +
      +
    6. +
    7. Now we will add the editors bundle that we modified.

      +
      swupd bundle-add editors
      +
      +
      +
    8. +
    9. Try to start the joe editor.

      +
      joe
      +
      +
      +

      It should not work because we removed it from the original +editors bundle.

      +
    10. +
    11. Next we will update from version 10 to 20 to capture the +newly-available bundles.

      +
      swupd check-update
      +swupd update
      +swupd bundle-list -a
      +
      +
      +
    12. +
    13. Now your mix should be at version 20 and curl is available. +Try using curl. This will fail because it is not yet installed.

      +
      curl: command not found
      +To install curl use: swupd bundle-add curl
      +
      +
      +
    14. +
    15. Add the new bundle from your update server to your VM. Retry curl. +It works!

      +
      swupd bundle-add curl
      +curl -O https://download.clearlinux.org/image/start_qemu.sh
      +
      +
      +
    16. +
    +
  12. +
  13. Shutdown your VM:

    +
    poweroff
    +
    +
    +
  14. +
+
+
+

Example 6: Remove a bundle from client system

+

Removing a bundle in a future release requires more steps than deleting the +bundle description file, as shown in Example 2. After a bundle is built in +the mix, you must assure all of the files that are part of the bundle are +removed from the client where that bundle is installed. To do this, create a +version of this bundle in which all of its content is marked for deletion.

+

In the following example, we show how to remove the contents of the editors +bundle that we added to our mix in Example 2.

+
    +
  1. First update your mix version. This will set the mix to the next version.

    +
    mixer versions update
    +
    +
    +
    +

    Note

    +

    Run this command every time that you want to build a new version.

    +
    +
  2. +
  3. Navigate to local-bundles:

    +
    cd local-bundles
    +
    +
    +
  4. +
  5. Open the editors bundle with an editor and delete +all lines that follow after the [MAINTAINERS] line.

  6. +
  7. Afterward, it should look like this:

    +
    # [TITLE]: editors
    +# [DESCRIPTION]: Run popular terminal text editors.
    +# [STATUS]: Active
    +# [CAPABILITIES]:
    +# [TAGS]: Tools and Utilities, Editor
    +# [MAINTAINER]: Developer <developer@intel.com>
    +
    +
    +
  8. +
  9. Save and exit.

  10. +
  11. Next, run a build to capture recently edited bundles and update your mix.

    +
    sudo mixer build all
    +
    +
    +
    +

    Note

    +

    mixer build all runs both mixer build bundles and mixer build update in one step.

    +
    +
  12. +
+

At this point the new mix, version 30, is complete. All the content of the +editors bundles is marked as deleted. If any clients of this mix upgraded to +mix build version 30, the content of the editors bundle would be removed. +Note that the bundle still exists and is being tracked by swupd, +but it contains no files.

+
+
+

Example 7: Execute a format bump

+

As a maintainer of your mix, you must execute a format bump if you wish to:

+
    +
  • Track upstream’s format bump on your downstream derivative

  • +
  • Delete any custom bundles that were added

  • +
+

Follow the appropriate use case below depending on your needs.

+
+

Basic

+

If you maintain your own downstream derivative and you want to track +upstream, you need to do a format bump when one occurs on upstream. This +method helps you track the latest changes on upstream; however, it does not +change any local content that was added or deleted. For example, if you +deprecated bundles, this method will not remove the bundle tracking. +Refer to Advanced for help on managing your local mix and removing bundle +tracking.

+

In this example, we show a mix version that was initialized to upstream +version 29740 (format 27). You need to update your mix to upstream version +30700 (format 28). To do so, you will go through a format bump.

+
    +
  1. Change to your mix location and verify the current version of the mix and +its format.

    +
    mixer versions
    +
    +
    +
  2. +
  3. Update to upstream version, which has a newer format.

    +
    mixer versions update --upstream-version 30700
    +
    +
    +

    The output will look like this:

    +
    Old mix:      10
    +Old upstream: 29740 (format: 27)
    +
    +New mix:      20
    +New upstream: 30700 (format: 28)
    +[...]
    +
    +
    +

    Read the output carefully:

    +
      +
    • The Old mix shows the current version (10) of your mix.

    • +
    • The Old upstream shows the version and format (27) on which it’s based.

    • +
    • The New mix shows the new version (20) of your mix.

    • +
    • The New upstream shows the version and format (28) on which it’s based.

    • +
    +
  4. +
  5. Given that the format in the output differs, you need to run a +format bump:

    +
    sudo mixer build upstream-format --new-format 28
    +
    +
    +
    +

    Note

    +

    You specify the --new-format to indicate the format (28) to which you transition.

    +
    +
  6. +
  7. Your mix is now synchronized with the new format (28); however, you must +still advance to the desired or latest version.

    +
    mixer versions update --upstream-version 30700
    +
    +
    +
  8. +
+
+
+

Advanced

+

To properly remove a bundle from being tracked by swupd, +do a manual format bump. This process can also be used to perform +customizations during the update, such as:

+
    +
  • Adjustment in the command parameters

  • +
  • Change the content of the chroot

  • +
+

Follow the afb.sh reference script to learn how to do a manual format bump. The afb.sh reference script shows an example of how to:

+
    +
  • Create a mix

  • +
  • Add a bundle

  • +
  • Deprecate a bundle

  • +
  • Do a format bump to remove the deprecated bundle

  • +
+
+
+
+
+

References

+

Reference the mixer man page for details regarding mixer commands and options.

+ +
+

builder.conf

+

mixer initialization creates a builder.conf that stores the basic +configuration for the mixer tool. The items of primary interest are CONTENTURL +and VERSIONURL, which will be used by systems updating against your custom +content.

+
#builder.conf
+
+#VERSION 1.2
+
+[Builder]
+   CERT = "/home/clr/mix/Swupd_Root.pem"
+   SERVER_STATE_DIR = "/home/clr/mix/update"
+   VERSIONS_PATH = "/home/clr/mix"
+   YUM_CONF = "/home/clr/mix/.yum-mix.conf"
+
+[Swupd]
+   BUNDLE = "os-core-update"
+   CONTENTURL = "<URL where the content will be hosted>"
+   VERSIONURL = "<URL where the version of the mix will be hosted>"
+   COMPRESSION = ["external-xz"]
+   UPSTREAM_BUNDLES_URL = "https://github.com/clearlinux/clr-bundles/archive/"
+
+[Server]
+   DEBUG_INFO_BANNED = "true"
+   DEBUG_INFO_LIB = "/usr/lib/debug"
+   DEBUG_INFO_SRC = "/usr/src/debug"
+
+[Mixer]
+   LOCAL_BUNDLE_DIR = "/home/clr/mix/local-bundles"
+   LOCAL_REPO_DIR = "/home/clr/mix/local-yum"
+   LOCAL_RPM_DIR = "/home/clr/mix/local-rpms"
+   OS_RELEASE_PATH = ""
+
+
+

Additional explanation of variables in builder.conf is provided in +Table 1.

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1: Variables in builder.conf

Variable

Description

CERT

Sets the path where mixer stores the certificate file used to sign +content for verification. mixer automatically generates the +certificate if you do not provide the path to an existing one, and +signs the Manifest.MoM file to provide security for the +updated content you create.

+

chroot-builder uses the certificate file to sign the root :file:` +Manifest.MoM` file to provide security for content verification. +swupd uses this certificate to verify the Manifest.MoM file’s +signature.

+

For now, we strongly recommend that you do not modify this variable, +as swupd expects a certificate with a very specific configuration to sign and verify properly.

+

CONTENTURL and VERSIONURL

Set these variables to the IP address of the web server hosting the +update content.

+

VERSIONURL is the IP address where the swupd client +looks to determine if a new version is available.

+

CONTENTURL is the location from which swupd pulls content updates. If +the web server is on the same machine as the SERVER_STATE_DIR +directory, you can create a symlink to the directory in your web +server’s document root to easily host the content.

+

These URLs are embedded in the images created by mixer.

+

LOCAL_BUNDLE_DIR

Sets the path where mixer stores the local bundle definition files. +The bundle definition files include any new, original bundles you +create, along with any edited versions of upstream bundles.

SERVER_STATE_DIR

Sets the path to which mixer outputs content. By default, mixer +automatically sets the path.

VERSIONS_PATH

Sets the path for the mix version and upstream version’s two state +files: mixversion and upstreamversion. mixer creates +both files for you when you set up the workspace.

YUM_CONF

Sets the path where mixer automatically generates the +.yum-mix.conf file. The yum configuration file points the +chroot-builder to where the RPMs are stored.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Variable

Explanation

CERT

Sets the path where mixer stores the certificate file +used to sign content for verification. mixer +automatically generates the certificate if you do not +provide the path to an existing one, and signs the +Manifest.MoM file to provide security for the +updated content you create.

+

chroot-builder uses the certificate file to sign +the root Manifest.MoM file to provide +security for content verification.

+

swupd uses this certificate to verify the +Manifest.MoM file’s signature.

+

For now, we strongly recommend that you do not modify +this variable, as swupd expects a certificate with a +very specific configuration to sign and verify +properly.

+

CONTENTURL and VERSIONURL

Set these variables to the IP address of the web server +hosting the update content.

+

VERSIONURL is the IP address where the swupd client +looks to determine if a new version is available.

+

CONTENTURL is the location from which swupd pulls +content updates.

+

If the web server is on the same machine as the +SERVER_STATE_DIR directory, you can create a symlink to +the directory in your web server’s document root to +easily host the content.

+

These URLs are embedded in the images created by mixer.

+

LOCAL_BUNDLE_DIR

Sets the path where mixer stores the local bundle +definition files. The bundle definition files include +any new, original bundles you create, along with any +edited versions of upstream bundles.

SERVER_STATE_DIR

Sets the path to which mixer outputs content. By +default, mixer automatically sets the path.

VERSIONS_PATH

Sets the path for the mix version and upstream version’s +two state files: mixversion and +upstreamversion. mixer creates both files for +you when you set up the workspace.

YUM_CONF

Sets the path where mixer automatically generates the +.yum-mix.conf file.

+

The yum configuration file points the chroot-builder to +where the RPMs are stored.

+

Table 1: Variables in builder.conf

+
+

Format version

+

Compatible versions of an OS are tracked with an OS compatibility epoch. +Versions of an OS within an epoch are fully compatible and can update to any +other version within that epoch. The compatibility epoch is set as the +Format variable in the mixer.state file. Variables in the +mixer.state are used by mixer between executions and should not be +manually changed.

+
+
+

Format bump

+

Mixer needs to produce content that is consumable by swupd. For swupd to +consume the content, it needs a consistent protocol that describes the +requirements of the Manifest.

+

If the Format increments to a new epoch (a “format bump”), the underlying +swupd protocol has changed such that updating from one build version in an +old format to a new build version in a new format is only allowed if one +performs a corresponding format bump.

+

Format bumps are “checkpoints” (see Figure 1). The first release (20) is +built on the previous format with a swupd that is capable of interpreting +the next format. The second release (30) has the same content, but it’s +built in the new format.

+

Suppose you have build version 10, but you need the tools in build version +40. Whereas version 10 belongs to Format 27, version 40 belongs to Format +28. The swupd client needs to follow formats sequentially. First, you must +update to version 20, which effectively enables a format bump to version 30. +Doing a format bump bridges the gap so your mix can progress to build +version 40.

+
+Format bump +
+

Figure 1: Format bump

+
+
+
+

Note

+

if you update to build 20 and then check which format of the distro is +used, the new build version will show 30, and the new format will show 28.

+
+
+
+
+

Bundles

+

mixer stores information about the bundles included in a mix in a flat file +called mixbundles, which is located in the path set by the +VERSIONS_PATH variable in builder.conf. mixbundles is +automatically created when the mix is initiated. mixer will refresh the file +each time you change the bundles in the mix.

+

Bundles belong in one of two categories: upstream or local. Upstream +bundles are those provided by Clear Linux OS. Local bundles are either modified upstream bundles or new local bundles.

+
+

Upstream bundles

+

mixer automatically downloads and caches upstream bundle definition files. +These definition files are stored in the upstream-bundles directory in the +workspace. Do not modify the files in this directory. This directory is +simply a mirror for mixer to use. mixer will automatically delete the +contents of this directory before repopulating it on-the-fly if a new +version must be downloaded.

+

The mixer tool automatically caches the bundles for the Clear Linux OS version +configured in the upstreamversion file. mixer also +cleans up old versions once they are no longer needed.

+
+
+

Local bundles

+

Local bundles are bundles that you create, or are edited versions of upstream +bundles. Local bundle definition files are stored in the local-bundles +directory in the workspace. The LOCAL_BUNDLE_DIR variable sets the path of this directory in the builder.conf file.

+

mixer always checks for local bundles first and the upstream bundles +second. So bundles in the local-bundles directory will always take +precedence over any upstream bundles that have the same name. This +precedence enables you to copy upstream bundles locally, and edit into a +local variation.

+
+
+

Bundle definition files

+

A bundle definition file consists of a header, followed by a list +of packages and directives. The header holds important meta-data, like +the TITLE, DESCRIPTION, and STATUS. Other meta-data include TAGS, which +define a bundle’s function in the ecosystem, and MAINTAINER, which gives +contact information.

+

Following the header are the directives, shown in Table 2.

+ + ++++ + + + + + + + + + + + + + + + + +
Table 2: Bundle directives

Directive

Description

include(<required-bundle-name>)

Add <required-bundle-name> with this bundle

also-add(<optional-bundle-name>)

Add <optional-bundle-name> unless the option --skip-optional is used with swupd bundle-add.

content(<full/path/to/non-packaged/content>)

Add the non-packaged content to the bundle. Refer to swupd 3rd-party for usage of this directive.

+

Following is cluster-tools, an upstream bundle definition file. The +directives are highlighted, and the rest are packages.

+
[TITLE]: cluster-tools
+[DESCRIPTION]: Utilities to manage computer clusters
+[STATUS]: Active
+[CAPABILITIES]: HPC
+[TAGS]: Tools and Utilities
+[MAINTAINER]: Juro Bystricky <juro.bystricky@intel.com>
+
+include(curl)
+include(libglib)
+include(libX11client)
+also-add(openmpi)
+also-add(modules)
+munge
+pmix
+pdsh
+slurm
+
+
+
+
+

Bundle configuration

+

mixer provides commands to configure the bundles for a mix, such as to add a +bundle to a mix, to create a new bundle for a mix, or to remove a bundle from a mix. View the mixer.bundle man page for a full list of commands and more information on configuring bundles in a mix.

+

Editing an existing local bundle is as simple as opening the bundle definition +file in your favorite editor, making the desired edits, and saving your changes.

+
+

Note

+

Removing bundles from a mix: By default, removing a bundle will only +remove the bundle from the mix. The local bundle definition file will +still remain. To completely remove a bundle, including its local bundle definition file, use the --local flag.

+

If you remove the bundle definition file for a local, edited version of an +upstream bundle in a mix, the mix reverts to reference the original upstream version of the bundle.

+
+
+
+
+

Set up a nginx web server for mixer

+

A web server is needed to host your update content. In this example, +the nginx web server is used.

+
    +
  1. Install the nginx bundle.

    +
    sudo swupd bundle-add nginx
    +
    +
    +
  2. +
  3. Create a symbolic link to the mixer update content directory.

    +
    sudo mkdir -p /var/www
    +
    +sudo ln -sf $HOME/mixer/update/www /var/www/mixer
    +
    +
    +
  4. +
  5. Set up nginx configuration files.

    +
    sudo mkdir -p  /etc/nginx/conf.d
    +
    +sudo cp -f /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf
    +
    +
    +
  6. +
  7. Grant $USER permission to run the web server.

    +
    sudo tee -a /etc/nginx/nginx.conf << EOF
    +user $USER;
    +EOF
    +
    +
    +
  8. +
  9. Configure the mixer update server.

    +
    sudo tee -a /etc/nginx/conf.d/mixer-server.conf << EOF
    +server {
    +  server_name localhost;
    +  location / {
    +    root /var/www/mixer;
    +    autoindex on;
    +  }
    +}
    +EOF
    +
    +
    +
  10. +
  11. Restart the daemon, enable nginx on boot, and start the service.

    +
    sudo systemctl daemon-reload
    +
    +sudo systemctl enable nginx --now
    +
    +
    +
  12. +
  13. Verify the web server is running at http://<IP-address-of-web-server>. +If there’s no mix content yet, the expected response from nginx will be +a 404 Not Found.

  14. +
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/performance.html b/guides/clear/performance.html new file mode 100644 index 000000000..dc802b41f --- /dev/null +++ b/guides/clear/performance.html @@ -0,0 +1,1434 @@ + + + + + + + + + + Performance — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Performance

+

Clear Linux* OS is built with optimizations across the whole stack for improved +performance. Clear Linux OS achieves its performance through a variety of design decisions +and software building techniques.

+ +
+

Overview

+

The Clear Linux OS philosophy is to do everything with performance in mind. The Clear Linux OS team +applies this philosophy in the project’s codebase and operating culture.

+

Below are some examples of the Clear Linux OS philosophy:

+
+
Consider performance holistically.

Performance optimizations are considered across hardware and software. Clear Linux OS +shows the performance potential of a holistic approach on Linux, using Intel® +architecture with optimizations across the full stack.

+
+
Optimize for runtime performance.

In general, Clear Linux OS will trade the one-time cost of longer build time and larger +storage footprint for the repeated benefit of improved runtime performance. +Clear Linux OS users benefit from the optimized software but aren’t affected by the +increased build time because the Clear Linux OS team builds the software before +distributing it to Clear Linux OS clients.

+
+
Optimize performance for server and cloud use cases first.

Design decisions that optimize performance for server and cloud also benefit +other use cases, such as IoT devices and desktop clients.

+
+
+

Clear Linux OS has become well-known for the performance it can deliver. +Phoronix publishes +Linux performance comparisons +that include Clear Linux OS.

+
+
+

Software build toolchain

+

Clear Linux OS uses many techniques in its software build toolchain to improve software +performance, such as aggressive compiler flags and CPU-specific optimizations. +If maintained manually, these techniques can become complex to support due to +the volume of packages and the potential for technical drift of package +performance configurations. The Clear Linux OS team built the autospec tool to +manage this complexity and to apply the techniques used in the software build +toolchain across the entire project. autospec is available as part of the OS for +developers to use when they build their own projects on Clear Linux OS.

+
+

Latest versions of compilers and low-level libraries

+

Clear Linux OS is a rolling release distribution and follows upstream software +repositories, including compilers and libraries, for updates. Clear Linux OS includes +upstream source-level optimizations as soon as they’re available.

+
+
+

A benchmark approach to compiler performance

+

Clear Linux OS chooses the compiler used to build each software package on a case-by-case +basis to maximize performance. Typically, Clear Linux OS uses the open source GNU Compiler +Collection (GCC) with the standard low-level +libraries Glibc and +libstdc++ for C and C++ +programming languages. If there is a performance advantage, Clear Linux OS will build +packages with Clang / LLVM.

+

Clear Linux OS uses patched compilers and low-level libraries for exact control of the +software build. Patches include changes that default to more aggressive +optimizations or optimizations that haven’t yet been merged upstream.

+

View the full list of patches in the autospec repositories on GitHub:

+ +
+
+

Aggressive compiler flags

+

Clear Linux OS uses aggressive +compiler flags to +optimize software builds for runtime performance. Some significant flags that +Clear Linux OS often implements are:

+
+
mtune and march

Options used to tune generated code with optimized instructions for specific +CPU types instead of creating generic code for maximum compatibility.

+

Clear Linux OS defines its minimum hardware requirements to be second-generation +Intel® microarchitecture code name Westmere (released in 2010) or later. +This enables compiler optimizations that are available only on newer +architectures. Whenever possible, Clear Linux OS tunes code for the Haswell generation +processors or newer.

+

Clear Linux OS sets march=westmere and mtune=haswell.

+
+

Note

+

Clear Linux OS doesn’t require Advanced Encryption Standard (AES), so it should +run on some Intel CPUs from the first generation of Intel® microarchitecture code name Nehalem (released in 2008). Refer to the +recommended minimum system requirements for specific requirements.

+
+
+
O3

The largest preset of compiler options optimizations for performance. O3 +favors runtime performance.

+

View the “Optimize Options” section of the GCC man page for additional +information: man gcc

+
+
LTO

Link-time optimization that performs an optimization between compiled object +files and creation of executable binaries by adding extra information to the +compiled object to help the linker.

+
+
PGO

Profile guided optimization or field guided optimization performs +optimization based on information sampled during the execution of the program.

+
+
+

Compiler flags are set at different levels in the Clear Linux OS build environment:

+
+
User flags

The set of default flags used by Clear Linux OS when a user compiles software +from source. The flags are exported as system-wide environment variables from +the +/usr/share/defaults/etc/profile file to the user’s shell by default. These are the +standard variables read by the compiler, named *FLAGS, depending +on the compiler.

+
+

Note

+

Source code may come with software build systems that +override these values. This will cause a difference in expected flags. +The Clear Linux OS autospec tooling will attempt to ignore these overrides, but +the build system may still need patching. A manual build will not ignore +the build system override values if they exist.

+
+
+
Global flags

Compiler flags applied at a global level for all packages. The Clear Linux OS RPM +configuration (clr-rpm-config) +contains global compiler flags. Search the macros file for +global_cflags and search the rpmrc file for +optflags. Global compiler flags may be overridden.

+
+

Note

+

Clear Linux OS doesn’t use RPMs to install software. Clear Linux OS +distributes software in the form of Bundles. The RPM format +is only used during the Clear Linux OS build process as a way to resolve +dependencies.

+
+
+
Per-package flags

Compiler flags applied at a per-package level. The package’s autospec +repository contains the package-specific compiler flags. Search the +.spec file for the +section starting with export CFLAGS.

+
+
+
+
+

Multiple builds of libraries with CPU-specific optimizations

+

To fully use the capabilities in different generations of CPU hardware, Clear Linux OS +will perform multiple builds of libraries with CPU-specific optimizations. For +example, Clear Linux OS builds libraries with Intel® Advanced Vector Extensions 2 (Intel® +AVX2) and Intel® Advanced Vector Extensions 512 (Intel® AVX-512). Clear Linux OS can then +dynamically link to the library with the newest optimization based on the +processor in the running system. Runtime libraries used by ordinary applications +benefit from these CPU specific optimizations.

+

The autospec repository for Python* shows an example of this optimization: +https://github.com/clearlinux-pkgs/python3

+
+
+
+

Kernel

+
+

A modern kernel with variants optimized for different platforms

+

Clear Linux OS is a rolling release distribution that uses the newest upstream Linux +kernel. The Linux kernel has frequent updates which can include performance +enhancements. It’s a policy of the Clear Linux OS team to try to upstream any performance +enhancements in the Linux kernel for all to use.

+

Clear Linux OS builds different kernel variants for compatibility with specific platforms. +For example, kernels meant to run on virtual machines skip support for much of +the physical hardware that doesn’t show up in VM environments and will slow down +boot.

+

View the kernel configuration and patches to the default native kernel in the +autospec repository: https://github.com/clearlinux-pkgs/linux/

+
+
+

Utility to enforce kernel runtime parameters

+

The Linux kernel exposes parameters for tuning the behavior of drivers and +devices such as certain buffers and resource management strategies. Clear Linux OS uses a +small utility, clr-power-tweaks, +to set and enforce kernel parameter values weighted towards performance upon +boot. View the set performance values by running sudo clr_power --debug.

+
+
+
+

Operating system

+

Operating system and software build-time optimizations set the stage for high +performance. Decisions made after the installation of Clear Linux OS are equally as +important.

+
+

CPU performance governor

+

Clear Linux OS uses the performance CPU governor which calls for the CPU to operate at +maximum clock frequency. In other words, P-state P0. The idea behind prioritizing +maximum CPU performance is that the faster a program finishes execution, the +faster the CPU can return to a low energy idle state. See the CPU Power and +Performance documentation +for further details.

+
+
+

Restructured boot sequence

+

To optimize boot speed, Clear Linux OS uses a restructured order for boot processes that +minimizes the time services wait on slow operations and the time boot processes +wait on each other.

+

Systemd-bootchart is a tool for graphing the boot sequence and writes logs to a +file under /run/log. The tool and corresponding log file make diagnosing slow +boot problems easier. All Clear Linux OS systems have systemd-bootchart enabled by default for every boot. systemd-bootchart configuration is +non-blocking to not materially slow down boot performance.

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/security.html b/guides/clear/security.html new file mode 100644 index 000000000..52c2fa9a6 --- /dev/null +++ b/guides/clear/security.html @@ -0,0 +1,1340 @@ + + + + + + + + + + OS Security — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

OS Security

+

Clear Linux* OS aims to make systemic and layered security-conscious decisions +that are both performant and practical. This security philosophy is rooted +within the project’s codebase and operating culture.

+ +
+

Security in updates

+

The Clear Linux OS team believes in the benefits of software security through open +sourcing, incremental updates, and rapidly resolving known security advisories.

+
+

The latest Linux* codebase

+

Clear Linux OS uses the newest version of the Linux kernel which allows the operating +system to leverage the latest features from the upstream Linux kernel, +including security fixes.

+
+
+

Automated effective updating

+

Clear Linux OS is incrementally updated multiple times per day.

+

This rolling release model allows Clear Linux OS to consume the latest security fixes +of software packages as soon as they become available. There is no waiting for +major or minor releases on Clear Linux OS.

+

An update is not effective if it is just simply downloaded onto a system. +It needs to be obtained AND ensured that the new patched copy is being +used; not an older copy loaded into memory. Clear Linux OS will let you know when a +service needs to be rebooted or do it for your automatically after +a software update, if desired.

+

In Clear Linux OS updates are delivered automatically, efficiently, and effectively. For +more information about software updates in Clear Linux OS, refer to the swupd +guide.

+
+
+

Automated CVE scanning and remediation

+

The sheer number of software packages and security vulnerabilities is growing +exponentially. Repositories of Common Vulnerabilities and Exposures (CVEs) +and their fixes, if known, are published by NIST in a +National Vulnerability Database https://nvd.nist.gov/ and at https://cve.mitre.org/ .

+

Clear Linux OS employs a proactive and measured approach to addressing known +and fixable CVEs. +Packages are automatically scanned against CVEs daily, and security +patches are deployed as soon as they are available.

+

These combined practices minimize the amount of time Clear Linux OS systems are exposed to unnecessary security risk.

+
+
+
+

Security in software

+
+

Minimized attack surface

+

Clear Linux OS removes legacy, unneeded, or redundant standards and components as much as +possible to enable the use of best known security standards. Below are some +examples:

+
    +
  • RC4, SSLv3, 3DES, and SHA-1 ciphers which have had known +vulnerabilities, have been explicitly disabled within many Clear Linux OS packages to +avoid their accidental usage.

  • +
  • Services and subsystems which expose sensitive system information +have been removed such as the finger and tcpwrappers.

  • +
  • SFTP has been disabled by default due to security considerations.

  • +
+
+
+

Verified trust

+

Clear Linux OS encourages the use of secure practices such as encryption +and digital signature verification throughout the system and discourages blind +trust. Below are some examples:

+
    +
  • All update operations from swupd are transparently encrypted and checked +against the Clear Linux OS maintainers’ public key for authenticity. +More information about swupd security can be found in the +Security for software update in Clear Linux* OS blog post.

  • +
  • Before being built, packages available from Clear Linux OS verify checksums and +signatures provided by third party project codebases and maintainers.

  • +
  • Clear Linux OS features a unified certificate store, clrtrust which comes +ready to work with well-known Certificate Authorities out of the box. +clrtrust also offers an easy to use command line interface for managing +system-wide chains of trust, instead of ignoring foreign certificates.

  • +
+
+
+

Compiled with secure options

+

While Clear Linux OS packages are optimized for performance on Intel® architecture, +security conscious kernel and compiler options are sensibly taken advantage of. +Below are some examples:

+ +
+
+
+

Security in system design

+

Simple, yet effective, techniques are used throughout the Clear Linux OS system design to +defend against common attack vectors and enable good security hygiene. Below are +some examples:

+
    +
  • Full disk encryption using LUKS is available +during installation. Refer to cryptsetup for additional information about +LUKS.

  • +
  • Clear Linux OS uses the PAM cracklib module to harden user login and password +security resulting in:

    +
      +
    • No default username or root password set out of the box with +Clear Linux OS, you will be asked to set your own password immediately.

    • +
    • Simple password schemes, which are known to be easily compromised, +cannot be set in Clear Linux OS.

    • +
    • A password blacklist, to avoid system passwords being set to +passwords which have been compromised in the past.

    • +
    +
  • +
  • Tallow, a lightweight service which monitors and blocks suspicious SSH +login patterns, is installed with the openssh-server bundle.

  • +
+

Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/stateless.html b/guides/clear/stateless.html new file mode 100644 index 000000000..24c56b388 --- /dev/null +++ b/guides/clear/stateless.html @@ -0,0 +1,1343 @@ + + + + + + + + + + Stateless — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Stateless

+

In most operating systems, user data, system data, and configuration files +can become intermingled, which can make them challenging to manage.

+
+Stateless: User and system files mixed +
+

Figure 1: Without stateless, user and system files become mixed on the filesystem over time.

+
+
+

Clear Linux* OS has a stateless design philosophy with the goal to provide an +OS that functions without excessive user +configuration or customization. Stateless in this context does not mean +ephemeral or non-persistent.

+ +
+

File-level separation

+

To accomplish a stateless design, the Clear Linux OS filesystem hierarchy is separated +between user-owned areas and Clear Linux OS-owned areas.

+
+Stateless: User and system files separation +
+

Figure 2: With stateless, user and system files are separated on the filesystem.

+
+
+
+

System area

+

Files under the /usr directory are managed by Clear Linux OS as system files +(except /usr/local). +Files written under the /usr directory by users can get removed +through system updates with swupd. This operating +assumption allows Clear Linux OS to verify and maintain integrity of system files.

+
+
+

User areas

+

Files under the /usr/local, /etc/, /opt, /home, +and /var directories are owned and managed by the user. A freshly +installed Clear Linux OS system will only have a minimal set of files in the +/etc/ directory and software installed by Clear Linux OS does not write to +/etc. This operating assumption allows Clear Linux OS users to clearly identify +the configuration that makes their system unique.

+
+
+
+

Software configuration

+

With stateless separation, default software configurations are read in order +from predefined source code, Clear Linux OS provided defaults, and user-provided +configuration.

+
+

Default configurations

+

Software in Clear Linux OS provides default configuration values so that it is +immediately functional, except for some that require additional configuration.

+

If an upstream software puts default configurations in multiple locations +such as /usr/ and /etc, it will be modified by the Clear Linux OS +distro to comply with the stateless design. Also, some default configurations +may be modified to close security loopholes. Defaults will reside +under /usr/share/defaults. These files can be referenced as +templates for customization.

+

For example, after installing the httpd bundle for Apache web server, its +default configurations appear in the /usr/share/defaults/httpd/ directory.

+
+
+

Overriding configurations

+

If a configuration needs to be changed, the appropriate file should be +modified by the user under /etc/. If the configuration file does not +already exist, it can be created in the appropriate location.

+

User-defined configuration files should contain the minimal set of desired +changes and rely on default configuration for the rest.

+

For example, a customized Apache configuration can be used instead by:

+
    +
  1. Install the Apache web server bundle.

    +
    sudo swupd bundle-add httpd
    +
    +
    +
  2. +
  3. Create the destination directory for the configuration.

    +
    sudo mkdir /etc/httpd
    +
    +
    +
  4. +
  5. Copy the default configuration as a reference template.

    +
    sudo cp /usr/share/defaults/httpd/httpd.conf /etc/httpd/
    +
    +
    +
  6. +
  7. Make any desired modifications to the configurations.

    +
    sudoedit /etc/httpd/httpd.conf
    +
    +
    +
  8. +
  9. Reload the service or reboot the system to pickup any changes.

    +
    systemctl daemon-reload httpd && systemctl restart httpd
    +
    +
    +
  10. +
+

This pattern can be used to modify the configurations of other programs too. +The stateless man page has application-specific examples.

+
+
+
+

System reset

+

One advantage of the stateless design is that the system defaults can be +easily restored by simply deleting everything under /etc/ and +/var.

+

Running the commands below effectively performs a system reset as if it was +just installed:

+
sudo rm -rf /etc
+sudo rm -rf /var
+
+
+

In other Linux distributions, this can be a catastrophic action that may render +a system unable to boot and/or inaccessible.

+
+
+

Additional information

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/swupd-3rd-party.html b/guides/clear/swupd-3rd-party.html new file mode 100644 index 000000000..3de92ae3e --- /dev/null +++ b/guides/clear/swupd-3rd-party.html @@ -0,0 +1,1525 @@ + + + + + + + + + + swupd 3rd-party — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

swupd 3rd-party

+

Upstream Clear Linux OS offers a plethora of bundles to choose from.

+

For users who want access to additional software outside of the distro, +Clear Linux OS provides support for 3rd-party bundles.

+

There are two components to 3rd-party bundles:

+
    +
  • Use mixer to create 3rd-party bundles

  • +
  • Use the swupd subcommand 3rd-party to manage repos, +consume and manage bundles

  • +
+

Follow this guide to set up a web server to host 3rd-party bundles, +build an example 3rd-party bundle, install and manage the bundle on a +client system.

+ +

Also, see our general guidelines on sharing 3rd-party bundles.

+
+

Prerequisite

+
    +
  • Familiarity with mixer

  • +
  • Familiarity with swupd

  • +
  • You must be running Clear Linux OS version 32570 or higher

  • +
+
+

Set up a nginx web server for mixer

+

A web server is needed to host your update content. In this example, +the nginx web server is used.

+
    +
  1. Install the nginx bundle.

    +
    sudo swupd bundle-add nginx
    +
    +
    +
  2. +
  3. Create a symbolic link to the mixer update content directory.

    +
    sudo mkdir -p /var/www
    +
    +sudo ln -sf $HOME/mixer/update/www /var/www/mixer
    +
    +
    +
  4. +
  5. Set up nginx configuration files.

    +
    sudo mkdir -p  /etc/nginx/conf.d
    +
    +sudo cp -f /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf
    +
    +
    +
  6. +
  7. Grant $USER permission to run the web server.

    +
    sudo tee -a /etc/nginx/nginx.conf << EOF
    +user $USER;
    +EOF
    +
    +
    +
  8. +
  9. Configure the mixer update server.

    +
    sudo tee -a /etc/nginx/conf.d/mixer-server.conf << EOF
    +server {
    +  server_name localhost;
    +  location / {
    +    root /var/www/mixer;
    +    autoindex on;
    +  }
    +}
    +EOF
    +
    +
    +
  10. +
  11. Restart the daemon, enable nginx on boot, and start the service.

    +
    sudo systemctl daemon-reload
    +
    +sudo systemctl enable nginx --now
    +
    +
    +
  12. +
  13. Verify the web server is running at http://<IP-address-of-web-server>. +If there’s no mix content yet, the expected response from nginx will be +a 404 Not Found.

  14. +
+
+
+
+

Create directory to hold 3rd-party app

+
    +
  1. Create a top-level directory to hold all apps.

    +
    mkdir ~/my-3rd-party-apps && pushd $_
    +
    +
    +
  2. +
  3. Create a directory for each app and put the content of your software in it.

    +

    In this example, the helloclear.sh app simply prints +“Hello Clear!” when invoked.

    +
    # make helloclear directory
    +mkdir -p helloclear/usr/bin && pushd $_
    +
    +# create helloclear.sh script
    +cat > helloclear.sh << EOF
    +#!/bin/bash
    +echo "Hello Clear!"
    +EOF
    +
    +# make script executable
    +chmod +x helloclear.sh
    +
    +popd
    +
    +
    +
    +

    Note

    +
      +
    • You can put whatever you want in your app’s directory. All of the content +within each directory will get copied onto the client system under +/opt/3rd-party/bundles/<repo-name>/.

    • +
    • To use a 3rd-party RPM, it is recommended to extract the content of the RPM +into a directory. Use rpm2cpio <RPM>| sudo cpio -idv.

    • +
    +
    +
  4. +
+
+
+

Create bundle of 3rd-party app with mixer

+

Next, use mixer to create a bundle for each of the apps from the previous +section.

+
    +
  1. Install the mixer tool.

    +
    sudo swupd bundle-add mixer
    +
    +
    +
  2. +
  3. Create a mixer workspace.

    +
    mkdir ~/mixer && cd $_
    +
    +
    +
  4. +
  5. Initialize a mix without any default bundles.

    +
    mixer init --no-default-bundles
    +
    +
    +
  6. +
  7. Configure builder.conf to set the default bundle, CONTENTURL, and VERSIONURL. +For the “URL”s in this example, it will be IP address of the web server that was +set up earlier. +Substitute <IP-address-of-web-server> with the IP address of your host.

    +
    mixer config set Swupd.BUNDLE "os-core"
    +mixer config set Swupd.CONTENTURL "http://<IP-address-of-web-server>"
    +mixer config set Swupd.VERSIONURL "http://<IP-address-of-web-server>"
    +
    +
    +
  8. +
  9. Create an empty local os-core bundle. swupd client expects the +os-core bundle to exist in a mix even if it’s empty.

    +
    mixer bundle create os-core --local
    +
    +
    +
  10. +
  11. Using the helloclear app as an example, create the helloclear bundle +and use the content() directive with the path to the helloclear directory in +the bundle definition.

    +

    Refer to bundle definition for addition information on how to define a bundle.

    +
    mixer bundle create helloclear --local
    +echo "content($HOME/my-3rd-party-apps/helloclear/)" >> local-bundles/helloclear
    +
    +
    +
  12. +
  13. Add both bundles to the mix.

    +
    mixer bundle add os-core
    +mixer bundle add helloclear
    +
    +
    +
  14. +
  15. Build the bundles and generate the update content.

    +
    sudo mixer build bundles
    +sudo mixer build update
    +
    +
    +
  16. +
+
+
+

Install and manage 3rd-party bundle on client system

+

Finally, use the swupd client tool to install and +manage the bundle created with mixer earlier. +All installed 3rd-party bundles reside in /opt/3rd-party/bundles/<repo-name>/.

+
    +
  1. First, add a repo link to the web server. +The os-core bundle will be added automatically when adding a repo. +It contains items that mixer injected into the mix such as version information, +format, CONTENTURL, VERSIONURL, and certificate.

    +
    sudo swupd 3rd-party add my-3rd-party-repo \
    +http://<IP-address-of-web-server> --allow-insecure-http
    +
    +
    +
    +

    Note

    +

    By default, the swupd client is designed to communicate +with an HTTPS server. For development purposes, the swupd client +can talk to an HTTP server if you add the flag --allow-insecure-http.

    +

    To avoid adding this flag each time when invoking swupd, enter:

    +
    sudo mkdir -p /etc/swupd
    +
    +sudo tee -a /etc/swupd/config << EOF
    +[GLOBAL]
    +allow-insecure-http=true
    +EOF
    +
    +
    +
    +
  2. +
  3. Query the list of bundles from the repo.

    +
    sudo swupd 3rd-party bundle-list -a
    +
    +
    +
  4. +
  5. Add the helloclear bundle.

    +
    sudo swupd 3rd-party bundle-add helloclear
    +
    +
    +
  6. +
  7. List installed 3rd-party bundles.

    +
    sudo swupd 3rd-party bundle-list
    +
    +
    +
  8. +
  9. Look in /opt/3rd-party to confirm they were installed there.

    +
    tree /opt/3rd-party
    +
    +
    +

    Example output:

    +
    /opt/3rd-party/
    +├── bin
    +│   └── helloclear.sh
    +├── bundles
    +│   └── my-3rd-party-repo
    +│       └── usr
    +│           ├── bin
    +│           │   └── helloclear.sh
    +│           ├── lib
    +│           │   └── os-release
    +│           └── share
    +│               ├── clear
    +│               │   ├── bundles
    +│               │   │   ├── helloclear
    +│               │   │   └── os-core
    +│               │   ├── update-ca
    +│               │   │   └── Swupd_Root.pem
    +│               │   ├── version
    +│               │   └── versionstamp
    +│               └── defaults
    +│                   └── swupd
    +│                       ├── contenturl
    +│                       ├── format
    +│                       └── versionurl
    +└── repo.ini
    +
    +12 directories, 12 files
    +
    +
    +
  10. +
+
+
+

Create more bundles and add to client

+

From here on, to add new bundles to your mix, follow these steps:

+
    +
  1. Follow the steps above to add a new directory for each app and put content into it.

  2. +
  3. In the mixer workspace, run mixer versions update.

  4. +
  5. Follow the remaining mixer process to add and build bundles.

  6. +
+

On the client side:

+
    +
  1. Run sudo swupd 3rd-party update to update to the latest version of your mix.

    +
    +

    Note

    +

    If swupd autoupdate is enabled, 3rd-party repositories will update +automatically as well during regular swupd update.

    +
    +
  2. +
  3. Now, you can see and add the new bundles.

  4. +
+
+
+

Some limitations of 3rd-party bundles

+
    +
  1. You cannot upload your bundles to a shared community repo because bundles +are tied to your particular mix with its own certificate. +You have to host your own and share your repo.

  2. +
  3. As with upstream bundles, 3rd-party bundles installation is simply the unpacking +of files onto your system. It cannot perform pre or post-installation actions such as +adding a favorite shortcut to the Gnome desktop dock, for example.

  4. +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/swupd.html b/guides/clear/swupd.html new file mode 100644 index 000000000..aec9f449d --- /dev/null +++ b/guides/clear/swupd.html @@ -0,0 +1,1511 @@ + + + + + + + + + + swupd — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

swupd

+

swupd links a Clear Linux* OS installation with upstream updates and +software.

+ +
+

Description

+

swupd has two main functions:

+
    +
  1. Manage software and replace APT or YUM, by installing bundles +rather than packages.

  2. +
  3. Check for system updates and install them.

  4. +
+

swupd manages overlapping dependencies behind the scenes, ensuring +that all software is compatible across the system. It can be used to verify +the OS, clean cached files, and fix issues.

+

Bundles contain everything needed to deliver a software +capability. They are the smallest granularity component that is +managed by Clear Linux OS. A bundle comes with all of its dependencies rather than +downloading a cascade of package dependencies when installing a piece of +software.

+
+

Versioning

+

Using package managers to monitor software version compatibility or +compare multiple systems on many Linux distributions can be cumbersome.

+

With Clear Linux OS swupd, versioning happens at the individual file level. +This means Clear Linux OS generates an entirely new OS version with any set of software +changes to the system, including software downgrades or removals. This +rolling release versioning model is similar to git internal version +tracking, where any of the individual file commits are tracked and move the +pointer forward when changed.

+

A number that represents the current release of the OS describes the +versions of all the software on the OS. Each build is composed of a specific +set of bundles made from a particular version of packages. On a daily basis, +this matters to system administrators who need to determine which of their +systems do not have the latest security fixes, or which combinations of +software have been tested. Every release of the same number is guaranteed to +contain the same versions of software, so there’s no ambiguity between two +systems running the same version of Clear Linux OS.

+
+
+

Updating

+

Clear Linux OS enforces regular updating of the OS by default and automatically +checks for updates against a version server. The content server provides the +file and metadata content for all versions and can be the same as the +version server. The content url server provides metadata in the form of +manifests, which list and describe file contents, symlinks, +and directories. Additionally, the actual content is provided to clients +in the form of archive files.

+

Software updates with Clear Linux OS are also efficient. Unlike package-based +distributions, swupd only updates files that have changed, rather +than entire packages. For example, it is quite common for an OS security +patch to be as small as 15 KB. Using binary deltas, Clear Linux OS is able to +apply only what is needed.

+

For details on how to generate update content for Clear Linux OS, see the +mixer tool.

+
+
+
+

How it works

+
+

Prerequisites

+ +
+
+

Updates

+

Clear Linux OS updates are automatic by default, but can be set to occur only on +demand. swupd makes sure that regular updates are simple and +secure. It can also check the validity of currently installed files and +software, and can correct any problems.

+
+

Manifests

+

The Clear Linux OS software update content consists of data and metadata. The data is +the files that end up in the OS. The metadata contains relevant information to +properly provision the data to the OS file system, as well as update the +system and add or remove additional content to the OS.

+

The manifests are mostly long lists of hashes that describe content. +Each bundle gets its own manifest file. There is a master manifest +file that describes all manifests to tie it all together.

+
+
+

Fullfiles, packs, and delta packs

+

To speed up updates and optimize content delivery, update data provisioned to +a system is obtained by one of the following methods:

+
    +
  • Fullfiles are always generated for every file in every release. This +allows any Clear Linux OS to obtain the exact copy of the content +for each version directly. This is used if the OS verification +needs to replace a single file, for instance.

  • +
  • Packs are available for some releases. They combine many files to speed +up the creation of installation media and large updates.

  • +
  • Delta packs are an optimized version of packs that only contain updates +(binary diffs). They cannot be used without having the original file content.

  • +
+
+
+ +
+
+

Examples

+
+

Example 1: Disable and enable automatic updates

+

Clear Linux OS updates are automatic by default, but can be set to occur only +on demand.

+
    +
  1. Verify your current auto-update setting.

    +
    sudo swupd autoupdate
    +
    +
    +

    Output:

    +
    Enabled
    +
    +
    +
  2. +
  3. Disable automatic updates.

    +
    sudo swupd autoupdate --disable
    +
    +
    +

    Output:

    +
    Warning: disabling automatic updates may take you out of compliance with your IT policy
    +
    +Running systemctl to disable updates
    +Created symlink /etc/systemd/system/swupd-update.service → /dev/null.
    +Created symlink /etc/systemd/system/swupd-update.timer → /dev/null.
    +
    +
    +
  4. +
  5. Check manually for updates.

    +
    sudo swupd check-update
    +
    +
    +
  6. +
  7. Install an update after identifying one that you need.

    +
    sudo swupd update --version <version number>
    +
    +
    +
  8. +
  9. Re-enable automatic installs.

    +
    sudo swupd autoupdate --enable
    +
    +
    +
  10. +
+
+
+

Example 2: Find and install Kata Containers*

+

Kata Containers is a popular container implementation. Unlike other +container implementations, each Kata Container has its own +kernel instance and runs on its own VM for +improved security.

+

Clear Linux OS makes it very easy to install, since you only need to add +one bundle to use Kata Containers: containers-virt, despite a +number of dependencies. Also, check out our tutorial: Kata Containers*.

+
    +
  1. Find the correct bundle.

    +

    To return all possible matches for the search string, enter +swupd search, followed by ‘kata’:

    +
    sudo swupd search kata
    +
    +
    +

    The output should be similar to:

    +
    Bundle with the best search result:
    +
    +containers-virt - Run container applications from Dockerhub in
    +lightweight virtual machines
    +
    +This bundle can be installed with:
    +
    +     swupd bundle-add  containers-virt
    +
    +Alternative bundle options are
    +
    +     cloud-native-basic - Contains ClearLinux native software for Cloud
    +
    +
    +
    +

    Note

    +

    If your search does not produce results with a specific term, shorten +the search term. For example, use kube instead of kubernetes.

    +
    +
  2. +
  3. Add the bundle.

    +
    sudo swupd bundle-add containers-virt
    +
    +
    +
    +

    Note

    +

    To add multiple bundles, add a space followed by the bundle name.

    +
    +

    The output of a successful installation should be similar to:

    +
    Downloading packs...
    +
    +Extracting containers-virt pack for version 24430
    +    ...50%
    +Extracting kernel-container pack for version 24430
    +    ...100%
    +Starting download of remaining update content. This may take a while...
    +    ...100%
    +Finishing download of update content...
    +Installing bundle(s) files...
    +    ...100%
    +Calling post-update helper scripts.
    +Successfully installed 1 bundle
    +
    +
    +
  4. +
+
+
+

Example 3: Verify and correct system file mismatch

+

swupd can determine whether system directories and files have +been added to, overwritten, removed, or modified (e.g., permissions).

+
sudo swupd diagnose
+
+
+

All directories that are watched by swupd are verified according +to the manifest data. Hash mismatches are flagged as follows:

+
Verifying version 23300
+Verifying files
+   ...0%
+Hash mismatch for file: /usr/bin/chardetect
+...
+...
+Hash mismatch for file: /usr/lib/python3.6/site-packages/urllib3/util/wait.py
+   ...100%
+Inspected 237180 files
+   423 files did not match
+Verify successful
+
+
+

In this case, Python* packages that were installed on top of the default +install were flagged as mismatched. swupd can be directed to +ignore or fix issues based on command line options.

+

swupd can correct any issues it detects. Additional directives +can be added including a white list of directories to be ignored.

+

The following command repairs issues, removes unknown items, and +ignores files or directories matching /usr/lib/python:

+
sudo swupd repair --picky --picky-whitelist=/usr/lib/python
+
+
+
+
+
+

Quick reference

+
+
swupd info

Returns the currently installed version and update servers.

+
+
swupd update <version number>

Updates to a specific version or updates to latest version if no +arguments are used.

+
+
swupd bundle-list [–all]

Lists installed bundles.

+
+
swupd search <term>

Finds a bundle that contains your search term.

+
+
swupd bundle-add <bundle name>

Adds a bundle.

+
+
swupd bundle-remove <bundle name>

Removes a bundle.

+
+
swupd –help

Lists additional swupd commands.

+
+
man swupd

Opens the swupd man page.

+
+
+

Refer to swupd source documentation on GitHub for more details.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/clear/telemetrics.html b/guides/clear/telemetrics.html new file mode 100644 index 000000000..6278bf837 --- /dev/null +++ b/guides/clear/telemetrics.html @@ -0,0 +1,2033 @@ + + + + + + + + + + Telemetrics — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Telemetrics

+

This guide describes the Clear Linux* OS telemetry solution.

+
+

Important

+

Telemetry in Clear Linux OS is opt-in. The telemetry client is not active +and sends no data until you explicitly enable it.

+
+
+

Note

+

The telemetry functionality adheres to +Intel privacy policies +regarding the collection and use of PII and is open source.

+

No intentionally identifiable information about the user or system owner is +collected.

+
+ +
+

Overview

+

Telemetrics in Clear Linux OS is a client and server solution used to collect +data from running Clear Linux OS systems to help quickly identify and fix bugs in the +OS. Both client and server are customizable, and an API is available on the +client side for instrumenting your code for debug and analysis.

+

Telemetry, one of the key features of Clear Linux OS, enables developers to observe and +proactively address issues in the OS before end users are impacted.

+

Telemetrics is a +portmanteau word made from:

+
    +
  • Telemetry, which is sensing and reporting data.

  • +
  • Analytics, which is using visualization and statistical inferencing to make +sense of the reported data.

  • +
+

Clear Linux OS telemetry reports system-level debug/crash information using specialized +probes. The probes monitor system tasks such as swupd, kernel oops, machine +error checks, and the BIOS error report table for unhandled hardware +failures. Telemetry enables real-time issue reporting to allow system +developers to focus quickly on an issue and monitor corrective actions.

+

Clear Linux OS telemetry is fully customizable and can also be used during software +development for debugging purposes. You can use the libtelemetry library in +your code to create custom telemetry records. You can also use the +telem-record-gen utility in script files for light-touch record creation +where instrumenting code files doesn’t make sense. For more information on +configuring the telemetry client, refer to section Client Configuration.

+

The Clear Linux OS telemetrics solution is an opt-in choice on the client side. +By default, the telemetry client is disabled until you choose to enable it. +Enabling the client is covered in this guide.

+
+

Architecture

+

Clear Linux OS telemetry has two fundamental components, which are shown in Figure 1:

+
    +
  • Client, which generates and delivers records to the backend server via the +network.

  • +
  • Backend, which receives records sent from the client and displays the +cumulative content through a specialized web interface.

  • +
+
+Figure 1, Telemetry Architecture +
+

Figure 1: |CL| Telemetry Architecture

+
+
+

The telemetry client provides the front end of the telemetrics solution and +includes the following components:

+
    +
  • telemprobd, which is a daemon that receives and prepares telemetry records +from probes and spools them to disk.

  • +
  • telempostd, which is a daemon that manages spooled telemetry records and +delivers these records according to configurable settings.

  • +
  • probes, which collect specific types of data from the operating system.

  • +
  • libtelemetry, which is the API that telemetrics probes use to create +records.

  • +
+

The telemetry backend provides the server-side component of the telemetrics +solution and consists of:

+
    +
  • Nginx web server.

  • +
  • Two Flask apps:

    +
      +
    • Collector, which is an ingestion web app for records received from client +probes.

    • +
    • TelemetryUI, which is a web app that exposes different views to visualize +the telemetry data.

    • +
    +
  • +
  • PostgreSQL as the underlying database server.

  • +
+
+

Note

+

The default telemetry backend server is hosted by the Intel Clear Linux OS +development team and is not viewable outside the Intel firewall. To +collect your own records, you must set up your own telemetry backend +server.

+
+
+
+
+

How to use

+

From a workflow perspective, the Clear Linux OS telemetrics system is straightforward. +On the client side, the main decisions after installation and enabling +telemetry involve what to do with the record data generated by the probes. +You can send the data to the default telemetry server or a custom backend +server, keep the data local to the system, or both. The backend server has a +more complex setup, but once it’s running, it is simple to configure and use.

+

This section describes some of the possible scenarios for configuring +the Clear Linux OS telemetrics system, and suggests which ones make sense according to +your needs.

+

For more information on configuring the telemetry client, refer to section +Client Configuration.

+
+

Scenarios

+
    +
  1. Enable telemetry:

    +

    You must opt-in and start telemetry before probes can generate records. +You can configure the client before starting telemetry by creating a +custom telemetrics.conf file that you place in the +/etc/telemetrics directory. If you choose to use the built-in +default settings, records will be sent to the telemetrics backend server +managed by the Clear Linux OS development team at Intel.

    +
  2. +
  3. Save record data locally:

    +

    You can configure the telemetry client to save records locally. This is +convenient when you want instant feedback during a development cycle, or +to track system issues if you believe there is a machine-specific problem. +The client can be set not to send records at all or to both keep the +records locally and send to the backend server.

    +
  4. +
  5. Set up a server to collect data:

    +

    Whether you are managing a network of Clear Linux OS systems or you don’t want to +send records to the default telemetry server, you can set up a backend +server to collect your records. The backend server can be installed on any +Linux system and provides the same dashboard as the default server.

    +
  6. +
  7. Instrument your code with the libtelemetry API:

    +

    The telemetrics bundle includes the libtelemetry C library, +which exposes an API used by the telemprobd and telempostd daemons. You +can use these in your applications as well. The API documentation is +located in the telemetry.h file in Telemetrics client +repository.

    +
  8. +
+
+
+
+

Examples

+ +
+

Enable or disable telemetry

+
    +
  1. Enabling during installation:

    +

    During the initial installation of Clear Linux OS, you are requested to join the +stability enhancement program and allow Clear Linux OS to collect anonymous reports +to improve system stability. If you choose not to join this program, then +the telemetry software bundle is not added to your system. If you do +choose to join the program, the installer will automatically enable +telemetry on your system by installing the telemetrics bundle, creating +the file /etc/telemetrics/opt-in, and enabling the telemetrics +systemd services to run after installation is complete and the system is +restarted.

    +
  2. +
  3. Enabling after install:

    +

    To install telemetry on your system, run the following commands:

    +
    sudo swupd bundle-add telemetrics
    +sudo telemctl opt-in
    +sudo telemctl start
    +
    +
    +

    This installs the necessary software, enables telemetry by creating the +file /etc/telemetrics/opt-in, and starts the telemprobd +and telempostd daemons. Your system will begin to send +telemetry data to the backend server.

    +
  4. +
  5. Disabling after install:

    +

    To disable both of the telemetry daemons, run the following command:

    +
    sudo telemctl stop
    +
    +
    +
  6. +
  7. Opt in to telemetry:

    +

    To opt-in to the telemetry services, simply enter the opt-in command:

    +
    sudo telemctl opt-in
    +sudo telemctl start
    +
    +
    +

    This creates the /etc/telemetrics/opt-in file, if it doesn’t +already exist. You will need to explicitly start the telemetry services +after you have opted in.

    +
  8. +
  9. Opt out of telemetry:

    +

    To stop sending telemetrics data from your system, opt out of the +telemetry service:

    +
    sudo telemctl opt-out
    +
    +
    +

    This removes the file /etc/telemetrics/opt-in and stops the +telemetry services.

    +
  10. +
+
+
+

Saving data locally

+

This example requires Clear Linux OS to be installed and telemetry to be enabled on the +system.

+

To change how records are managed, copy the default +/usr/share/defaults/telemetrics/telemetrics.conf file to +/etc/telemetrics/telemetrics.conf and edit it. The changes in the +/etc/telemetrics/telemetrics.conf file will override the built-in +defaults referenced in the +/usr/share/defaults/telemetrics/telemetrics.conf file. +You will need root permissions to create and edit files in /etc. For +each example, and for any time you make changes to the configuration file, +you must restart the client daemons to pick up the changes:

+
sudo telemctl restart
+
+
+

The telemctl journal command gives you access to features and +options of the telemetry journal to assist with system analytics and debug. +telemctl journal has a number of options to help filter records. +Use -h or --help to view usage options.

+
    +
  1. Keep a local copy and send records to backend server:

    +

    To keep a local copy of the telemetry record and also send it on to the +backend server, we will need to change the +record_retention_enabled configuration key value to +true.

    +
  2. +
  3. Keep all records – don’t send to backend server:

    +

    To keep records on the system without sending them to a backend server, set +the record_server_delivery_enabled key value to +false. Note that you will also need to ensure the +record_retention_enabled configuration key value is set to +true or the system will not keep local copies.

    +
  4. +
  5. Keep and send records to custom server:

    +

    This assumes you have set up a custom server according to the next example.

    +

    The server is identified by the server setting, and by default +records are sent to the Clear Linux OS server +server=https://clr.telemetry.intel.com/v2/collector. To change +this, you can use an IP address or fully qualified domain name.

    +
  6. +
+
+
+

Set up a backend server to collect telemetry records

+

For this example, start with a clean installation of Clear Linux OS on a new system +using the Install Clear Linux* OS from the live server getting started guide and:

+
    +
  1. Join the Stability Enhancement Program to install and +enable the telemetrics components.

  2. +
  3. Select the manual installation method with the following settings:

    +
      +
    • Set the hostname to clr-telem-server,

    • +
    • Create an administrative user named clear and add this user +to sudoers

    • +
    +
  4. +
  5. Log in with your administrative user, from your $HOME directory, +run git to clone the telemetrics-backend repository +into the $HOME/telemetrics-backend directory:

    +
    git clone https://github.com/clearlinux/telemetrics-backend
    +
    +
    +
    +

    Note

    +

    You may need to set up the https_proxy environment variable if +you have issues reaching github.com.

    +
    +
  6. +
  7. Change your current working directory to +telemetrics-backend/scripts.

  8. +
  9. Before you install the telemetrics backend with the deploy.sh +script file in the next step, here is an explanation of the options to be +specified:

    +
      +
    • -a install to perform an install

    • +
    • -d clr to install to a Clear Linux OS distro

    • +
    • -H localhost to set the domain to localhost

    • +
    +
    +

    Caution

    +

    The deploy.sh shell script has minimal error checking and makes +several changes to your system. Be sure that the options you define on +the cmdline are correct before proceeding.

    +
    +
  10. +
  11. Run the shell script from the $HOME/telemetrics-backend/scripts +directory:

    +
    ./deploy.sh -H localhost -a install -d clr
    +
    +
    +

    The script starts and lists all the defined options and prompts you for +the PostgreSQL database password.

    +
    Options:
    + host: localhost
    + distro: clr
    + action: install
    + repo: https://github.com/clearlinux/telemetrics-backend
    + source: master
    + type: git
    + DB password: (default: postgres):
    +
    +
    +
  12. +
  13. For the DB password:, press the Enter key to accept the +default password postgres.

    +
    +

    Note

    +

    The deploy.sh script uses sudo to run commands and +you may be prompted to enter your user password at any time while the +script is executing. If this occurs, enter your user password to +execute the sudo command.

    +
    +
  14. +
  15. After all the server components have been installed, you are prompted to +enter the PostgreSQL database password to change it as +illustrated below:

    +
    Enter password for 'postgres' user:
    +New password:
    +Retype new password:
    +passwd: password updated successfully
    +
    +
    +

    Enter postgres for the current value of the password and then enter a new +password. Retype it to verify the new password and the +PostgreSQL database password will be updated.

    +
  16. +
  17. After the installation is complete, you can use your web browser to view +the new server by opening the browser on the system and typing in +localhost in the address bar. You should see a web page similar +to the one shown in Figure 2 below.

    +
    +Telemetry UI +
    +

    Figure 2: Telemetry UI

    +
    +
    +
  18. +
+
+
+

Create records with telem-record-gen

+

The telemetrics bundle provides a record generator tool called +telem-record-gen. This tool can be used to create records from shell +scripts or the command line when it is not desirable to write a probe in C. +Records are sent to the backend server, and can also be echoed to stdout.

+

There are three ways to supply the payload to the record:

+
    +
  1. On the command line, use the -p <string> option:

    +
    telem-record-gen -c a/b/c -n -o -p 'payload goes here'
    +
    +
    +
    record_format_version: 4
    +classification: a/b/c
    +severity: 1
    +machine_id: FFFFFFFF
    +creation_timestamp: 1539023189
    +arch: x86_64
    +host_type: innotek GmbH|VirtualBox|1.2
    +build: 25180
    +kernel_version: 4.14.71-404.lts
    +payload_format_version: 1
    +system_name: clear-linux-os
    +board_name: VirtualBox|Oracle Corporation
    +cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz
    +bios_version: VirtualBox
    +event_id: 2236710e4fc11e4a646ce956c7802788
    +
    +payload goes here
    +
    +
    +
  2. +
  3. Specify a file that contains the payload with the option +-P path/to/file.

    +
    telem-record-gen -c a/b/c -n -o -P ./payload_file.txt
    +
    +
    +
    record_format_version: 4
    +classification: a/b/c
    +severity: 1
    +machine_id: FFFFFFFF
    +creation_timestamp: 1539023621
    +arch: x86_64
    +host_type: innotek GmbH|VirtualBox|1.2
    +build: 25180
    +kernel_version: 4.14.71-404.lts
    +payload_format_version: 1
    +system_name: clear-linux-os
    +board_name: VirtualBox|Oracle Corporation
    +cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz
    +bios_version: VirtualBox
    +event_id: d73d6040afd7693cccdfece479df9795
    +
    +payload read from file
    +
    +
    +
  4. +
  5. If the -p or -P options are absent, the tool reads +from stdin so you can use it in a heredoc in scripts.

    +
    #telem-record-gen -c a/b/c -n -o << HEOF
    +payload read from stdin
    +HEOF
    +
    +
    +
    record_format_version: 4
    +classification: a/b/c
    +severity: 1
    +machine_id: FFFFFFFF
    +creation_timestamp: 1539023621
    +arch: x86_64
    +host_type: innotek GmbH|VirtualBox|1.2
    +build: 25180
    +kernel_version: 4.14.71-404.lts
    +payload_format_version: 1
    +system_name: clear-linux-os
    +board_name: VirtualBox|Oracle Corporation
    +cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz
    +bios_version: VirtualBox
    +event_id: 2f070e8e71679f2b1f28794e3a6c42ee
    +
    +payload read from stdin
    +
    +
    +
  6. +
+
+
+

Set a static machine id

+

The machine id reported by the telemetry client is rotated every three days +for privacy reasons. If you wish to have a static machine id for testing +purposes, you can opt in by creating a file named +opt-in-static-machine-id in the directory /etc/telemetrics/.

+
    +
  1. Create a directory telemetrics.

    +
    sudo mkdir -p /etc/telemetrics
    +
    +
    +
  2. +
  3. Create the file and replace the “unique machine ID” with your desired +static machine ID.

    +
    echo "unique machine ID" | sudo tee /etc/telemetrics/opt-in-static-machine-id
    +
    +
    +
  4. +
+
+

Note

+

The machine ID is different from the system hostname.

+
+
+
+

Instrument your code with the libtelemetry API

+
+

Prerequisites

+

Confirm that the telemetrics header file is located on the system at +usr/include/telemetry.h. The latest version of the file can also +be found on github for reference, but installing the telemetrics +bundle will install the header file that matches your Clear Linux OS version.

+
    +
  1. Includes and variables:

    +

    You must include the following headers in your code to use the API:

    +
    #define _GNU_SOURCE
    +#include <stdlib.h>
    +#include <stdio.h>
    +#include <string.h>
    +#include <telemetry.h>
    +
    +
    +

    Use the following code to create the variables needed to hold the data for +the record to be created:

    +
    uint32_t severity = 1;
    +uint32_t payload_version = 1;
    +char classification[30] = "org.clearlinux/hello/world";
    +struct telem_ref *tm_handle = NULL;
    +char *payload;
    +int ret = 0;
    +
    +
    +
    +
    Severity:

    Type: uint32_t +Value: Severity field value. Accepted values are in the range 1-4, with +1 being the lowest severity and 4 being the highest severity. Values +provided outside of this range are clamped to 1 or 4 [low, med, high, +crit].

    +
    +
    Payload_version:

    Type: uint32_t +Value: Payload format version. The only currently supported value is 1, +which indicates that the payload is a freely-formatted (unstructured) +string. Values greater than 1 are reserved for future use.

    +
    +
    Classification:

    Type: char array +Value: It should have the form, DOMAIN/PROBENAME/REST: DOMAIN is the +reverse domain to use as a namespace for the probe (e.g. org.clearlinux), +PROBENAME is the name of the probe, and REST is an arbitrary value that +the probe should use to classify the record. The maximum length for the +classification string is 122 bytes. Each sub-category may be no longer +than 40 bytes long. Two '/' delimiters are required.

    +
    +
    Tm_handle:

    Type: Telem_ref struct pointer +Value: Struct pointer declared by the caller. The struct is initialized +if the function returns success.

    +
    +
    Payload:

    Type: char pointer +Value: The payload to set.

    +
    +
    +
  2. +
  3. For this example, we’ll set the payload to “hello” by using +asprintf():

    +
    if (asprintf(&payload, "hello\n") < 0) {
    +  exit(EXIT_FAILURE);
    +   }
    +
    +
    +

    The functions asprintf() and vasprintf() are analogs +of sprintf(3) and vsprintf(3), except that they +allocate a string large enough to hold the output including the +terminating null byte (’0’), and return a pointer to it via the first +argument. This pointer should be passed to free(3) to release +the allocated storage when it is no longer needed.

    +
  4. +
  5. Create the new telemetry record:

    +

    The function tm_create_record() initializes a telemetry +record and sets the severity and classification of that record, as well as +the payload version number. The memory needed to store the telemetry +record is allocated and should be freed with tm_free_record() +when no longer needed.

    +
    if ((ret = tm_create_record(&tm_handle, severity,    classification, payload_version)) < 0) {
    +printf("Failed to create record: %s\n", strerror(-ret));
    +ret = 1;
    +goto fail;
    +}
    +
    +
    +
  6. +
  7. Set the payload field of a telemetrics record:

    +

    The function tm_set_payload() attaches the provided telemetry +record data to the telemetry record. The current maximum payload size is +8192b.

    +
    if ((ret = tm_set_payload(tm_handle, payload)) < 0) {
    +   printf("Failed to set record payload: %s\n", strerror(-ret));
    +   ret = 1;
    +   goto fail;
    +}
    +free(payload);
    +
    +
    +

    The free() function frees the memory space pointed to by ptr, +which must have been returned by a previous call to malloc(), +calloc(), or realloc(). Otherwise, or if +free(ptr) has already been called before, undefined behavior +occurs. If ptr is NULL, no operation is performed.

    +
  8. +
  9. Send a record to the telemetrics daemon:

    +

    The function tm_send_record() delivers the record to the local +telemprobd(1) service. Since the telemetry record was allocated +by the program it should be freed with tm_free_record() when it +is no longer needed.

    +
    if ((ret = tm_send_record(tm_handle)) < 0) {
    +   printf("Failed to send record to daemon: %s\n", strerror(-ret));
    +   ret = 1;
    +   goto fail;
    +} else {
    +   printf("Successfully sent record to daemon.\n");
    +   ret = 0;
    +}
    +fail:
    +tm_free_record(tm_handle);
    +tm_handle = NULL;
    +
    +return ret;
    +
    +
    +
  10. +
  11. A full sample application with compiling flags:

    +

    Create a new file test.c and add the following code:

    +
    #define _GNU_SOURCE
    +#include <stdlib.h>
    +#include <stdio.h>
    +#include <string.h>
    +#include <telemetry.h>
    +
    +int main(int argc, char **argv)
    +{
    +      uint32_t severity = 1;
    +      uint32_t payload_version = 1;
    +      char classification[30] = "org.clearlinux/hello/world";
    +      struct telem_ref *tm_handle = NULL;
    +      char *payload;
    +
    +      int ret = 0;
    +
    +      if (asprintf(&payload, "hello\n") < 0) {
    +              exit(EXIT_FAILURE);
    +      }
    +
    +      if ((ret = tm_create_record(&tm_handle, severity, classification, payload_version)) < 0) {
    +              printf("Failed to create record: %s\n", strerror(-ret));
    +              ret = 1;
    +              goto fail;
    +      }
    +
    +      if ((ret = tm_set_payload(tm_handle, payload)) < 0) {
    +              printf("Failed to set record payload: %s\n", strerror(-ret));
    +              ret = 1;
    +              goto fail;
    +      }
    +
    +      free(payload);
    +
    +      if ((ret = tm_send_record(tm_handle)) < 0) {
    +              printf("Failed to send record to daemon: %s\n", strerror(-ret));
    +              ret = 1;
    +              goto fail;
    +      } else {
    +              printf("Successfully sent record to daemon.\n");
    +              ret = 0;
    +      }
    +fail:
    +      tm_free_record(tm_handle);
    +      tm_handle = NULL;
    +
    +      return ret;
    + }
    +
    +
    +

    Compile with the gcc compiler, using this command:

    +
    gcc test.c -ltelemetry -o test_telem
    +
    +
    +

    Test to ensure the program is working:

    +
    ./test_telem
    +Successfully sent record to daemon.
    +
    +
    +
    +

    Note

    +

    A full example of the heartbeat probe in C is documented in the +source code.

    +
    +
  12. +
+
+
+
+
+

Reference

+ +
+

The telemetry API

+

Installing the telemetrics bundle includes the libtelemetry C +library, which exposes an API used by the telemprobd and telempostd daemons. +You can use these in your applications as well. The API documentation is found +in the telemetry.h file in Telemetrics client repository.

+
+
+

Client configuration

+

The telemetry client will look for the configuration file located at +/etc/telemetrics/telemetrics.conf and use it if it exists. If the +file does not exist, the client will use the default configuration defined +at build time. There is a sample configuration file located at +/usr/share/defaults/telemetrics/telemetrics.conf and represents the +default values that are used when the programs are built. To modify or +customize the configuration, copy the file from +/usr/share/defaults/telemetrics/telemetrics.conf to the file +/etc/telemetrics/telemetrics.conf and edit it to add your +customizations.

+
sudo mkdir -p /etc/telemetrics
+cp /usr/share/defaults/telemetrics/telemetrics.conf /etc/telemetrics/telemetrics.conf
+
+
+
+

Note

+

Telemetrics configuration is a layered mechanism since the defaults are +defined at build time and each field can be overwritten individually. +Therefore you only need to add the specific field that you want to change +from the default value to your customized value in the +/etc/telemetrics/telemetrics.conf file.

+
+
+

Configuration options

+

The client can use the following configuration options from the config file:

+
+
server

This specifies the web server to which telempostd sends the telemetry +records.

+
+
socket_path

This specifies the path of the unix domain socket on which telemprobd +listens for connections from the probes.

+
+
spool_dir

This configuration option is related to spooling. If the daemon is not +able to send the telemetry records to the backend server due to reasons +such as the network availability, then it stores the records in a spool +directory. This option specifies the path of the spool directory. This +directory should be owned by the same user as the daemon.

+
+
record_expiry

This is the time, in minutes, after which the records in the spool +directory are deleted by the daemon.

+
+
spool_process_time

This specifies the time interval, in seconds, that the daemon waits +before checking the spool directory for records. The daemon picks up the +records in the order of modification date and tries to send the record to +the server. It sends a maximum of 10 records at a time. If it was able to +send a record successfully, it deletes the record from the spool. If the +daemon finds a record older than the “record_expiry” time, then it deletes +that record. The daemon looks at a maximum of 20 records in a single spool +run loop.

+
+
rate_limit_enabled

This determines whether rate-limiting is enabled or disabled. When +enabled, there is a threshold on both records sent within a window of +time, and record bytes sent within a window a time.

+
+
record_burst_limit

This is the maximum amount of records allowed to be passed by the daemon +within the record_window_length of time. If set to -1, the rate-limiting +for record bursts is disabled.

+
+
record_window_length

The time, in minutes (0-59), that establishes the window length for the +record_burst_limit. For example, if record_burst_window=1000 and +record_window_length=15, then no more than 1000 records can be passed +within any given fifteen-minute window.

+
+
byte_burst_limit

This is the maximum amount of bytes that can be passed by the daemon +within the byte_window_length of time. If set to -1, the rate-limiting +for byte bursts is disabled.

+
+
byte_window_length

This is the time, in minutes (0-59), that establishes the window length +for the byte_burst_limit.

+
+
rate_limit_strategy

This is the strategy chosen once the rate-limiting threshold has been +reached. Currently the options are ‘drop’ or ‘spool’, with spool being the +default. If spool is chosen, records will be spooled and sent at a later +time.

+
+
record_retention_enabled

When this key is enabled (true), the daemon saves a copy of the payload on +disk from all valid records. To avoid the excessive use of disk space, +only the latest 100 records are kept. The default value for this +configuration key is false.

+
+
record_server_delivery_enabled
+

This key controls the delivery of records to the server; when enabled +(default value), the record will be posted to the address in the +configuration file. If this configuration key is disabled (false), +records will not be spooled or posted to backend. This configuration key +can be used in combination with record_retention_enabled to keep copies +of telemetry records locally only.

+
+
+

Note

+

Configuration options may change as the telemetry client evolves. +Please use the comments in the default file itself as the most accurate +reference for configuration.

+
+
+
+
+
+
+

Client run-time options

+

The Clear Linux OS telemetry client provides an admin tool called telemctl +for managing the telemetry services and probes. The tool is located in +/usr/bin. Running it with no argument results in the following:

+
sudo telemctl
+
+
+
/usr/bin/telemctl - Control actions for telemetry services
+  stop       Stops all running telemetry services
+  start      Starts all telemetry services
+  restart    Restarts all telemetry services
+  is-active  Checks if telemprobd and telempostd are active
+  opt-in     Opts in to telemetry, and starts telemetry services
+  opt-out    Opts out of telemetry, and stops telemetry services
+  journal    Prints telemetry journal contents. Use -h argument for more
+             options
+
+
+
+

start/stop/restart

+

The commands to start, stop, and restart the telemetry services manage all +required services and probes on the system. There is no need to separately +start/stop/restart the two client daemons telemprobd and telempostd. +The restart command option will call telemctl stop +followed by telemctl start .

+
+
+

is-active

+

The is-active option reports whether the two client daemons are +active. This is useful to verify that the opt-in and +opt-out options have taken effect, or to ensure that telemetry is +functioning on the system. Note that both daemons are verified.

+
sudo telemctl is-active
+
+
+
telemprobd : active
+telempostd : active
+
+
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/index.html b/guides/index.html new file mode 100644 index 000000000..47a420477 --- /dev/null +++ b/guides/index.html @@ -0,0 +1,1294 @@ + + + + + + + + + + Guides — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+ +
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/kernel/change-kernel-boot.html b/guides/kernel/change-kernel-boot.html new file mode 100644 index 000000000..1062b652b --- /dev/null +++ b/guides/kernel/change-kernel-boot.html @@ -0,0 +1,1432 @@ + + + + + + + + + + Change Kernel Boot — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Change Kernel Boot

+

This tutorial explains the process of change kernel boot entry Clear Linux* OS.

+ +
+

Description

+

For this tutorial, you will modify your kernel list to boot with the kernel you want to use. This process is valid when you cannot compile third-party kernel modules and need to come back to old, or if you compile your custom kernel.

+
+
+

Get the current boot status

+
bootctl status
+
+
+

This is an example output:

+
System:
+    Firmware: UEFI 2.70 (HP 265.256)
+    Firmware Arch: x64
+    Secure Boot: disabled
+    TPM2 Support: yes
+    Measured UKI: no
+    Boot into FW: supported
+
+Current Boot Loader:
+      Product: systemd-boot 255
+     Features:  Boot counting
+                Menu timeout control
+                One-shot menu timeout control
+                Default entry control
+                One-shot entry control
+                Support for XBOOTLDR partition
+                Support for passing random seed to OS
+                Load drop-in drivers
+                Support Type #1 sort-key field
+                Support @saved pseudo-entry
+                Support Type #1 devicetree field
+                Enroll SecureBoot keys
+                Retain SHIM protocols
+                Menu can be disabled
+                Boot loader sets ESP information
+          ESP: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5
+         File: └─/EFI/org.clearlinux/loaderx64.efi
+
+Random Seed:
+ System Token: set
+       Exists: yes
+
+Available Boot Loaders on ESP:
+          ESP: /boot (/dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5)
+         File: ├─/EFI/systemd/systemd-bootx64.efi (systemd-boot 255)
+               └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 255)
+
+Boot Loaders Listed in EFI Variables:
+        Title: Linux bootloader
+           ID: 0x0007
+       Status: active, boot-order
+    Partition: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5
+         File: └─/EFI/org.clearlinux/bootloaderx64.efi
+
+        Title: Linux Boot Manager
+           ID: 0x0001
+       Status: active, boot-order
+    Partition: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5
+         File: └─/EFI/systemd/systemd-bootx64.efi
+
+        Title: Windows Boot Manager
+           ID: 0x0000
+       Status: active, boot-order
+    Partition: /dev/disk/by-partuuid/48d8a9eb-d84d-4a62-8302-edff383290e5
+         File: └─/EFI/Microsoft/Boot/bootmgfw.efi
+
+Boot Loader Entries:
+        $BOOT: /boot (/dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5)
+        token: clear-linux-os
+
+Default Boot Loader Entry:
+         type: Boot Loader Specification Type #1 (.conf)
+        title: Clear Linux OS (Clear-linux-native-6.8.10-1434.conf)
+           id: Clear-linux-native-6.8.10-1434.conf
+       source: /boot//loader/entries/Clear-linux-native-6.8.10-1434.conf
+        linux: /boot//EFI/org.clearlinux/kernel-org.clearlinux.native.6.8.10-1434
+       initrd: /boot//EFI/org.clearlinux/freestanding-00-early-ucode.cpio
+               /boot//EFI/org.clearlinux/initrd-org.clearlinux.native.6.8.10-1434
+               /boot//EFI/org.clearlinux/freestanding-clr-init.cpio.gz
+               /boot//EFI/org.clearlinux/freestanding-i915-firmware.cpio
+      options: root=UUID=67e7ac9a-f7a1-4d5e-bbd6-012f5fa81cb5 rd.luks.uuid=abe6aaf2-3425-4eb1-b7f5-3f36746426fa quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests init=/usr/bin/initra-desktop initcall>
+lines 20-71/71 (END)
+                Support @saved pseudo-entry
+                Support Type #1 devicetree field
+                Enroll SecureBoot keys
+                Retain SHIM protocols
+                Menu can be disabled
+                Boot loader sets ESP information
+          ESP: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5
+         File: └─/EFI/org.clearlinux/loaderx64.efi
+
+Random Seed:
+ System Token: set
+       Exists: yes
+
+Available Boot Loaders on ESP:
+          ESP: /boot (/dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5)
+         File: ├─/EFI/systemd/systemd-bootx64.efi (systemd-boot 255)
+               └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 255)
+
+Boot Loaders Listed in EFI Variables:
+        Title: Linux bootloader
+           ID: 0x0007
+       Status: active, boot-order
+    Partition: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5
+         File: └─/EFI/org.clearlinux/bootloaderx64.efi
+
+        Title: Linux Boot Manager
+           ID: 0x0001
+       Status: active, boot-order
+    Partition: /dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5
+         File: └─/EFI/systemd/systemd-bootx64.efi
+
+        Title: Windows Boot Manager
+           ID: 0x0000
+       Status: active, boot-order
+    Partition: /dev/disk/by-partuuid/48d8a9eb-d84d-4a62-8302-edff383290e5
+         File: └─/EFI/Microsoft/Boot/bootmgfw.efi
+
+Boot Loader Entries:
+        $BOOT: /boot (/dev/disk/by-partuuid/ea2e4278-5c0c-4498-bc99-dfc48a71ceb5)
+        token: clear-linux-os
+
+Default Boot Loader Entry:
+         type: Boot Loader Specification Type #1 (.conf)
+        title: Clear Linux OS (Clear-linux-native-6.8.10-1434.conf)
+           id: Clear-linux-native-6.8.10-1434.conf
+       source: /boot//loader/entries/Clear-linux-native-6.8.10-1434.conf
+        linux: /boot//EFI/org.clearlinux/kernel-org.clearlinux.native.6.8.10-1434
+       initrd: /boot//EFI/org.clearlinux/freestanding-00-early-ucode.cpio
+               /boot//EFI/org.clearlinux/initrd-org.clearlinux.native.6.8.10-1434
+               /boot//EFI/org.clearlinux/freestanding-clr-init.cpio.gz
+               /boot//EFI/org.clearlinux/freestanding-i915-firmware.cpio
+      options: root=UUID=67e7ac9a-f7a1-4d5e-bbd6-012f5fa81cb5 rd.luks.uuid=abe6aaf2-3425-4eb1-b7f5-3f36746426fa quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests init=/usr/bin/initra-desktop initcall_debug intel_iommu=igfx_off kvm-intel.nested=1 no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 rootfstype=ext4,btrfs,xfs,f2fs tsc=reliable rw module.sig_unenforce rootflags=x-systemd.device-timeout=0
+
+
+
+
+

Get the kernel list installed

+
bootctl list
+
+
+

And example output:

+
type: Boot Loader Specification Type #1 (.conf)
+title: Clear Linux OS (Clear-linux-preempt_rt-6.1.38-105.conf)
+id: Clear-linux-preempt_rt-6.1.38-105.conf
+source: /boot//loader/entries/Clear-linux-preempt_rt-6.1.38-105.conf
+linux: /boot//EFI/org.clearlinux/kernel-org.clearlinux.preempt_rt.6.1.38-105
+initrd: /boot//EFI/org.clearlinux/freestanding-00-early-ucode.cpio
+        /boot//EFI/org.clearlinux/freestanding-clr-init.cpio.gz
+        /boot//EFI/org.clearlinux/freestanding-i915-firmware.cpio
+options: root=UUID=67e7ac9a-f7a1-4d5e-bbd6-012f5fa81cb5 rd.luks.uuid=abe6aaf2-3425-4eb1-b7f5-3f36746426fa quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests init=/usr/bin/initra-desktop initcall_debug intel_iommu=igfx_off kvm-intel.nested=1 no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 rootfstype=ext4,btrfs,xfs t>
+
+type: Boot Loader Specification Type #1 (.conf)
+title: Clear Linux OS (Clear-linux-native-6.9.1-1436.conf)
+id: Clear-linux-native-6.9.1-1436.conf
+source: /boot//loader/entries/Clear-linux-native-6.9.1-1436.conf
+linux: /boot//EFI/org.clearlinux/kernel-org.clearlinux.native.6.9.1-1436
+initrd: /boot//EFI/org.clearlinux/freestanding-00-early-ucode.cpio
+        /boot//EFI/org.clearlinux/initrd-org.clearlinux.native.6.9.1-1436
+        /boot//EFI/org.clearlinux/freestanding-clr-init.cpio.gz
+        /boot//EFI/org.clearlinux/freestanding-i915-firmware.cpio
+options: root=UUID=67e7ac9a-f7a1-4d5e-bbd6-012f5fa81cb5 rd.luks.uuid=abe6aaf2-3425-4eb1-b7f5-3f36746426fa quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests init=/usr/bin/initra-desktop initcall_debug intel_iommu=igfx_off kvm-intel.nested=1 no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 rootfstype=ext4,btrfs,xfs,f>
+
+type: Boot Loader Specification Type #1 (.conf)
+title: Clear Linux OS (Clear-linux-native-6.8.10-1434.conf) (default) (selected)
+id: Clear-linux-native-6.8.10-1434.conf
+source: /boot//loader/entries/Clear-linux-native-6.8.10-1434.conf
+linux: /boot//EFI/org.clearlinux/kernel-org.clearlinux.native.6.8.10-1434
+initrd: /boot//EFI/org.clearlinux/freestanding-00-early-ucode.cpio
+        /boot//EFI/org.clearlinux/initrd-org.clearlinux.native.6.8.10-1434
+        /boot//EFI/org.clearlinux/freestanding-clr-init.cpio.gz
+        /boot//EFI/org.clearlinux/freestanding-i915-firmware.cpio
+options: root=UUID=67e7ac9a-f7a1-4d5e-bbd6-012f5fa81cb5 rd.luks.uuid=abe6aaf2-3425-4eb1-b7f5-3f36746426fa quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests init=/usr/bin/initra-desktop initcall_debug intel_iommu=igfx_off kvm-intel.nested=1 no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 rootfstype=ext4,btrfs,xfs,f>
+
+type: Automatic
+title: Reboot Into Firmware Interface
+id: auto-reboot-to-firmware-setup
+source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
+
+
+
+
+

Set default kernel to boot

+

You can check the id from the latest command:

+
bootctl list |grep id: |cut -f 2 -d ":"
+  id: Clear-linux-preempt_rt-6.1.38-105.conf
+  id: Clear-linux-native-6.9.1-1436.conf
+  id: Clear-linux-native-6.8.10-1434.conf
+  id: auto-reboot-to-firmware-setup
+
+
+

Set the kernel

+
sudo bootctl set-default ID
+
+
+

For example to set 6.9.1 entry:

+
sudo bootctl set-default Clear-linux-native-6.9.1-1436.conf
+
+
+

Just reboot

+
sudo systemctl reboot
+
+
+

You will boot with the kernel set before.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/kernel/firmware.html b/guides/kernel/firmware.html new file mode 100644 index 000000000..418c25004 --- /dev/null +++ b/guides/kernel/firmware.html @@ -0,0 +1,1298 @@ + + + + + + + + + + Firmware — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Firmware

+

This guide shows how Clear Linux* OS handles firmware and microcode loading.

+ +
+

Overview

+

Many devices and system components require firmware or microcode, software +that runs directly on the device, to function correctly. Because firmware +loading requires privileged hardware access, the kernel is involved in the +process.

+

Firmware does not typically come with source code. Instead, firmware is +provided as binary blobs which are licensed for free or non-free use.

+

In Clear Linux OS firmware is loaded during device initialization which typically +happens at boot time.

+
+
+

Included firmware

+

The Linux kernel project contains a repository for firmware binaries that are +licensed to allow free redistribution. The Linux kernel’s firmware repository +can be found here: +https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

+

If the firmware for your device is included upstream, no action is required +for it to be automatically detected and loaded.

+

Clear Linux OS packages these firmware binaries +in the linux-firmware bundles and +automatically includes them with the kernel.

+

You can double-check the linux-firmware bundle is installed with the commands below:

+
+
sudo swupd bundle-add linux-firmware
+find /lib/firmware/
+
+
+
+
+
+

Additional firmware loading

+

Some device hardware manufacturers have a license that limits redistribution +of firmware. This means Clear Linux OS is unable to distribute those firmware and you +must manually obtain them from the manufacturer or another source.

+

You can place additional firmware in /etc/firmware. Clear Linux OS reads this +directory for additional firmware files in conjunction with the typical +/lib/firmware path to provide a stateless design.

+
    +
  1. Create the /etc/firmware directory

    +
    sudo mkdir -p /etc/firmware
    +
    +
    +
  2. +
  3. Obtain the additional firmware binary from a trusted source.

  4. +
  5. Copy the firmware files including any subdirectories to +/etc/firmware. It is important to place the firmware files in +expected path for proper loading.

    +
    sudo cp -Rv <directory>/<filename>.<fw|bin> /etc/firmware
    +
    +
    +
  6. +
+
+
+

CPU microcode loading

+

Microcode is low level code for processors loaded during the boot process that +contain stability and security updates.

+

Microcode updates can be updated by motherboard firmware however this is not +always feasible or does not happen in a timely fashion. The Linux microcode +loader included in the Linux kernel allows for more flexibility and more +frequent updates.

+

Clear Linux OS uses the early loading mechanism described in the Linux microcode +loader documented by which the CPU microcode is loaded as early as possible +in the boot process by using an initial RAM disk (initrd).

+
+
+

Troubleshooting

+

Look at the output of sudo dmesg to see device initialization and +expected firmware paths

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/kernel/kernel-boot-msg.html b/guides/kernel/kernel-boot-msg.html new file mode 100644 index 000000000..7478ae05f --- /dev/null +++ b/guides/kernel/kernel-boot-msg.html @@ -0,0 +1,1276 @@ + + + + + + + + + + Capture Kernel Boot Messages in the Journal — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Capture Kernel Boot Messages in the Journal

+

By default Clear Linux OS does not capture kernel boot messages in the journal logs, +where they’re reported as “Missed” messages. This design decision was made +to provide a faster boot performance. On the other hand, if you wish to +see the messages, follow this guide.

+

Here’s an example a journal log with “Missed” messages:

+
1-- Reboot --
+2Apr 10 19:55:43 kernel systemd-journald[300]: Journal started
+3Apr 10 19:55:43 kernel systemd-journald[300]: Runtime Journal (/run/log/journal/d01862ca79d1064ea379cd715cfdd53a) is 5.8M, max 47.0M, 41.1M free.
+4Apr 10 19:55:43 kernel systemd-journald[300]: Missed 2233 kernel messages
+5Apr 10 19:55:43 kernel systemd[1]: Started Journal Service.
+
+
+ +
+

Prerequisites

+
    +
  • systemd-journald version 245 and higher

  • +
+
+
+

Enable journaling of kernel boot messages

+
    +
  1. Open a terminal window.

  2. +
  3. Create a base journald configuration file.

    +
    sudo mkdir -p /etc/systemd/journald.conf.d
    +sudo cp /usr/lib/systemd/journald.conf.d/clear.conf /etc/systemd/journald.conf.d/
    +
    +
    +
  4. +
  5. Append BootKMsg=true to it.

    +
    echo "BootKMsg=true" | sudo tee -a /etc/systemd/journald.conf.d/clear.conf
    +
    +
    +
  6. +
  7. Reboot.

  8. +
+
+

Tip

+

If you need to increase the kernel buffer length (for example, 1M), do this:

+
sudo mkdir -p /etc/kernel/cmdline.d/
+echo "log_buf_len=1M" | sudo tee /etc/kernel/cmdline.d/log_buf_len.conf
+sudo clr-boot-manager update
+
+
+
+
+
+

Alternative

+

An alternative is to use dmesg.

+
sudo dmesg
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/kernel/kernel-development.html b/guides/kernel/kernel-development.html new file mode 100644 index 000000000..61a83e705 --- /dev/null +++ b/guides/kernel/kernel-development.html @@ -0,0 +1,1638 @@ + + + + + + + + + + Kernel development — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Kernel development

+

This guide shows how to obtain and compile a Linux* kernel source using +Clear Linux* OS development tooling.

+ +
+

Overview

+

The Kernels available in Clear Linux OS aim to be performant and +practical. In some cases, it may be necessary to modify the kernel to suit +your specific needs or test new kernel code as a developer.

+

Source RPMs (SRPMS) are also available for all Clear Linux OS kernels, and can be +used for development instead.

+
+
+

Request changes be included with the Clear Linux OS kernel

+

If the kernel modification you need is already open source and likely to be +useful to others, consider submitting a request to include it in the +Clear Linux OS kernels. If your change request is accepted, you do not need to maintain +your own modified kernel.

+

Make enhancement requests to the Clear Linux OS Distribution Project on GitHub*.

+
+
+

Set up kernel development environment

+

In some cases, it may be necessary to modify the kernel to suit your specific +needs or to test new kernel code.

+

You can build and install a custom kernel; however you must:

+
    +
  • Disable Secure Boot

  • +
  • Maintain any updates to the kernel going forward

  • +
+

To create a custom kernel, start with the Clear Linux OS development environment. +Then make changes to the kernel, build it, and install it.

+
+

Install the Clear Linux OS development tooling framework

+

Setup of the workspace and tooling used for building source in Clear Linux OS is mostly +automated for you with a setup script. It uses tools from the +os-clr-on-clr bundle.

+

The setup script creates a workspace in the clearlinux folder, with the +subfolders Makefile, packages, and projects. The +projects folder contains the main tools used for making packages in +Clear Linux OS autospec and common.

+

Follow these steps to setup the workspace and tooling for building source:

+
    +
  1. Install the os-clr-on-clr bundle:

    +
    sudo swupd bundle-add os-clr-on-clr
    +
    +
    +
  2. +
  3. Download the user-setup.sh script:

    +
    curl -O https://raw.githubusercontent.com/clearlinux/common/master/user-setup.sh
    +
    +
    +
  4. +
  5. Make user-setup.sh executable:

    +
    chmod +x user-setup.sh
    +
    +
    +
  6. +
  7. Run the script as an unprivileged user:

    +
    ./user-setup.sh
    +
    +
    +
  8. +
  9. After the script completes, log out and log in again to complete the setup +process.

  10. +
  11. Set your Git user email and username for the repos on your system:

    +
    git config --global user.email "you@example.com"
    +git config --global user.name "Your Name"
    +
    +
    +

    This global setting is used by Clear Linux OS tools that make use of Git.

    +
  12. +
+
+
+

Clone the kernel package

+

Clone the existing kernel package repository from Clear Linux OS as a starting point.

+
    +
  1. Clone the Linux kernel package from Clear Linux OS. Using the +make clone_<PACKAGENAME> command in the +clearlinux/ directory clones the package from the +clearlinux-pkgs repo on GitHub.

    +
    cd ~/clearlinux
    +make clone_linux
    +
    +
    +
  2. +
  3. Navigate into the cloned package directory.

    +
    cd ~/clearlinux/packages/linux
    +
    +
    +
  4. +
+

The “linux” package is the kernel that comes with Clear Linux OS in the +kernel-native bundle. Alternatively, you can use a different kernel +variant as the base for modification. For a list of kernel package names which +you can clone instead, see the clearlinux-pkgs repo on GitHub.

+
+

Note

+

The latest version of the Clear Linux OS kernel package is pulled as a starting +point. An older version can pulled by switching to different git tag by using +git checkout tag/<TAG_NAME>.

+
+
+
+

Change the kernel version

+

Clear Linux OS tends to use the latest kernel available from kernel.org, the Linux +upstream. The kernel version that will be built can be changed in the +RPM SPEC file. While most packages in Clear Linux are typically packaged +using autospec, the kernel is not. This means control files +provided by autospec are not available and changes must be made manually.

+
    +
  1. Open the Linux kernel package RPM SPEC file in an editor.

    +
    $EDITOR linux.spec
    +
    +
    +
  2. +
  3. Modify the Version, Release, and Source0 URL entries at the top of the +file to change the version of Linux kernel that will be compiled.

    +

    A list of current and available kernel release can be found on +kernel.org.

    +
     1Name:           linux
    + 2Version:        4.20.8
    + 3Release:        696
    + 4License:        GPL-2.0
    + 5Summary:        The Linux kernel
    + 6Url:            http://www.kernel.org/
    + 7Group:          kernel
    + 8Source0:        https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.20.8.tar.xz
    + 9Source1:        config
    +10Source2:        cmdline
    +11
    +12%define ktarget  native
    +
    +
    +
    +

    Note

    +
      +
    • Consider changing the Name from linux in the RPM spec file to easily +identify a modified kernel.

    • +
    • Consider changing the ktarget from native in the RPM spec file to +easily identify a modified kernel.

    • +
    +
    +
  4. +
  5. Commit and save the changes to the file.

  6. +
+
+
+

Pull a copy of the Linux kernel source code

+

Obtain a local copy of the source code to make modifications against.

+
    +
  1. Run make sources to pull the kernel source code specified in the RPM +SPEC file. In the example, it downloads the linux-4.20.8.tar.xz +file.

    +
    make sources
    +
    +
    +
  2. +
  3. Extract the kernel source code archive. This will create a working copy +of the Linux source that you can modify.

    +
    tar -xvf linux-4.20.8.tar.xz
    +
    +
    +
  4. +
  5. Navigate to the extracted directory. In this example, it has been +extracted into a linux-4.20.8 directory.

    +
    cd linux-4.20.8/
    +
    +
    +
  6. +
+
+
+
+

Customize the Linux kernel source

+

After the kernel sources have been obtained, customizations to the kernel +configuration or source code can be made for inclusion with the kernel +build. These customizations are optional.

+
+

Modify kernel configuration

+

The kernel source has many configuration options available to pick support for +different hardware and software features.

+

These configuration values must be provided in the .config file at +compile time. You will need to make modifications to the .config +file, and include it in the kernel package.

+
    +
  1. Make sure you have followed the steps to Pull a copy of the Linux kernel source code +and are in the kernel source working directory.

  2. +
  3. If you have an existing .config file from an old kernel, copy it +into the working directory as .config for comparison. +Otherwise, use the Clear Linux OS kernel configuration file as template

    +
    cp ~/clearlinux/packages/linux/config .config
    +
    +
    +
  4. +
  5. Make any desired changes to the .config using a kernel +configuration tool. Below are some popular options:

    +
      +
    • $EDITOR .config - the .config file can be directly edited +for simple changes with names that are already known.

    • +
    • make config - a text-based tool that asks questions +one-by-one to decide configuration options.

    • +
    • make menuconfig - a terminal user interface that provides +menus to decide configuration options.

    • +
    • make xconfig - a graphical user interface that provides +tree views to decide configuration options.

    • +
    +

    More configuration tools can be found by looking at the make help: +make help | grep config

    +
  6. +
  7. Commit and save the changes to the .config file.

  8. +
  9. Copy the .config file from the kernel source directory into +the kernel package directory as config for inclusion in the build.

    +
    cp .config ../config
    +
    +
    +
  10. +
+
+
+

Modify kernel source code

+

Changes to kernel code are applied with patch files. Patch files are +formatted git commits that can be applied to the main source code.

+

You will need to obtain a copy of the source code, +make modifications, generate patch file(s), and add them to the RPM SPEC +file for inclusion during the kernel build.

+

If you have a large number of patches or a more complex workflow, +consider using a patch management tool in addition to Git such as +Quilt.

+
    +
  1. Make sure you have followed the steps to Pull a copy of the Linux kernel source code and +are in the kernel source working directory.

  2. +
  3. Initialize the kernel source directory as a new git repo and create a +commit with all the existing source files to begin tracking changes.

    +
    git init
    +git add -A
    +git commit -m "Initial commit of Linux kernel source"
    +
    +
    +
  4. +
  5. Apply patches provided by the Clear Linux OS kernel package to the kernel source +in the working directory.

    +
    git am ../*.patch
    +
    +
    +
  6. +
  7. Make any of your desired code changes to the Linux source code files.

  8. +
  9. Track and commit your changes to the local git repo.

    +
    git add <FILENAME>
    +git commit -m "My patch for driver A" <FILENAME>
    +
    +
    +
  10. +
  11. Generate a patch file based on your git commits. +<n> represents the number of local commits to create patch file. +See the git-format-patch documentation for detailed information +on using git format-patch

    +
    git format-patch -<n>
    +
    +
    +
  12. +
  13. Copy the patch files from the patches directory in the linux +source tree to the RPM build directory.

    +
    cp *.patch ~/clearlinux/packages/linux/
    +
    +
    +
  14. +
  15. Navigate back to the RPM build directory.

    +
    cd ~/clearlinux/packages/linux/
    +
    +
    +
  16. +
  17. Open the Linux kernel package RPM SPEC file in an editor.

    +
    $EDITOR linux.spec
    +
    +
    +
  18. +
  19. Locate the section of the SPEC file that contains existing patch +variable definitions and append your patch file name. Ensure the +patch number does not collide with an existing patch. +In this example, the patch file is called +2001-my-patch-for-driver-A.patch

    +
     1#
    + 2# Small Clear Linux Tweaks
    + 3#
    + 4Patch0501: 0501-zero-extra-registers.patch
    + 5Patch0502: 0502-locking-rwsem-spin-faster.patch
    + 6
    + 7#Serie1.name WireGuard
    + 8#Serie1.git  https://git.zx2c4.com/WireGuard
    + 9#Serie1.tag  00bf4f8c8c0ec006633a48fd9ee746b30bb9df17
    +10Patch1001: 1001-WireGuard-fast-modern-secure-kernel-VPN-tunnel.patch
    +11#Serie1.end
    +12
    +13Patch2001: 2001-my-patch-for-driver-A.patch
    +
    +
    +
  20. +
  21. Locate the section of the SPEC file further down that contains +patch application and append your patch file number used in the step above. +In this example, patch2001 is added.

    +
     1#
    + 2# Small tweaks
    + 3#
    + 4%patch0501 -p1
    + 5%patch0502 -p1
    + 6
    + 7#Serie1.patch.start
    + 8%patch1001 -p1
    + 9#Serie1.patch.end
    +10
    +11%patch2001 -p1
    +
    +
    +
  22. +
  23. Commit and save the changes to the RPM SPEC file.

  24. +
+
+
+

Modify kernel boot parameters

+

The kernel boot options are passed from the bootloader to the kernel with +command-line parameters.

+

While temporary changes can be made to kernel parameters on a running +system or on a during boot, you can also modify the default parameters that +are persistent and distributed with a customized kernel.

+
    +
  1. Open the kernel cmdline file in an editor.

    +
    $EDITOR cmdline
    +
    +
    +
  2. +
  3. Make any desired change to the kernel parameters. +For example, you can remove the quiet parameter to see more +verbose output of kernel log messages during the boot process.

  4. +
  5. Commit and save the changes to the cmdline file.

  6. +
+

See the kernel parameters documentation for a list of available +parameters.

+
+
+
+

Build and install the kernel

+

After changes have been made to the kernel source and RPM SPEC file, +the kernel is ready to be compiled and packaged into an RPM.

+

The Clear Linux OS development tooling makes use of mock environments to +isolate building of packages in a sanitized workspace.

+
    +
  1. Start the compilation process by issuing the make build +command. This process is typically resource intensive and will take a +while.

    +
    make build
    +
    +
    +
    +

    Note

    +

    The mock plugin ccache can be enabled to help speed up any future +rebuilds of the kernel package by caching compiler outputs and reusing +them.

    +
    +
  2. +
  3. The result will be multiple .rpm files in the rpms +directory as output.

    +
    ls rpms/
    +
    +
    +

    The kernel RPM will be named +linux<NAME>-<VERSION>-<RELEASE>.x86_64.rpm

    +
  4. +
  5. The kernel RPM file can be input to the mixer to create a +custom bundle and mix of Clear Linux OS.

  6. +
+

Alternatively, the kernel RPM bundle can be installed manually on a local +machine for testing. This approach works well for individual development or +testing. For a more scalable and customizable approach, consider using the +mixer to provide a custom kernel with updates.

+
    +
  1. Install the kernel onto the local system by extracting the RPM with the +rpm2cpio command.

    +
    rpm2cpio linux<NAME>-<VERSION>-<RELEASE>.x86_64.rpm | (cd /; sudo cpio -i -d -u -v);
    +
    +
    +
  2. +
  3. Optionally, increase the bootloader timeout to make interrupting the boot +process and choosing a different kernel easier.This can be helpful to if +you encounter a kernel that does not boot gracefully.

    +
    sudo clr-boot-manager set-timeout 20
    +
    +
    +
  4. +
  5. Update the Clear Linux OS boot manager to use the new kernel using +clr-boot-manager and reboot.

    +
    sudo clr-boot-manager update
    +sudo clr-boot-manager list-kernels
    +sudo clr-boot-manager set-kernel org.clearlinux.<TARGET>.<VERSION>-<RELEASE>
    +
    +sudo reboot
    +
    +
    +
  6. +
  7. After a reboot, verify the customized kernel is running.

    +
    uname -a
    +
    +
    +
  8. +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/kernel/kernel-modules-dkms.html b/guides/kernel/kernel-modules-dkms.html new file mode 100644 index 000000000..acb92f748 --- /dev/null +++ b/guides/kernel/kernel-modules-dkms.html @@ -0,0 +1,1544 @@ + + + + + + + + + + Add kernel modules with DKMS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Add kernel modules with DKMS

+

This guide describes how to add kernel modules with +DKMS.

+ +
+

Overview

+

Certain kernel modules are enabled by default in Clear Linux* OS. To use additional +kernel modules that are not part of the Linux source tree, you may need to +build out-of-tree kernel modules. Use this guide to add kernel modules with +DKMS or refer to Add kernel modules manually.

+
+
+

Description

+

Kernel modules are additional pieces of software capable of being inserted +into the Linux kernel to add functionality, such as a hardware driver. +Kernel modules may already be part of the Linux source tree (in-tree) or may +come from an external source, such as directly from a vendor (out-of-tree).

+

DKMS is a framework that facilitates the building and installation of kernel +modules. DKMS allows Clear Linux OS to provide hooks that automatically rebuild modules +against new kernel versions.

+
+
+

Kernel module availability

+

Clear Linux OS comes with many upstream kernel modules available for use. Using an +existing module is significantly easier to maintain and retains signature +verification of the Clear Linux OS kernel. For more information on Clear Linux OS security +practices, see the OS Security page.

+

Before continuing, check if the kernel module you’re looking for is already +available in Clear Linux OS or submit a request to add the module.

+
+

Check if the module is already available

+

You can search for kernel module file names, which end with the .ko +file extension, using the swupd search command, as shown in the +following example. See swupd for more information.

+
sudo swupd search ${module_name}.ko
+
+
+
+
+

Submit a request to add the module

+

If the kernel module you need is already open source (for example, in the +Linux kernel upstream) and likely to be useful to others, consider submitting +a request to add or enable it in the Clear Linux OS kernel.

+

Make enhancement requests to the Clear Linux OS Distribution Project on GitHub.

+
+
+
+

Install DKMS

+

The kernel-native-dkms bundle provides the DKMS program and Linux +kernel headers, which are placed under /usr/lib/modules/$(uname +-r)/build/include/ and are required to compile kernel modules.

+

The kernel-native-dkms bundle also:

+
    +
  • Adds a systemd update trigger +(/usr/lib/systemd/system/dkms-new-kernel.service) to automatically +run DKMS to rebuild modules after a kernel upgrade occurs with swupd +update.

  • +
  • Disables kernel module signature verification by appending a kernel +command-line parameter (module.sig_unenforce) from the +/usr/share/kernel/cmdline.d/clr-ignore-mod-sig.conf file.

  • +
  • Adds a notification to the Message of the Day (MOTD) indicating kernel +module signature verification is disabled.

  • +
+
+

Warning

+

We recommend that you always review the swupd update output +to make sure kernel modules were successfully rebuilt against the new +kernel. This is especially important for systems where a successful boot +relies on a kernel module.

+
+

Install the kernel-native-dkms or kernel-lts-dkms +bundle.

+
    +
  1. Determine which kernel variant is running on Clear Linux OS. Only the native +and lts kernels are enabled to build and load out-of-tree kernel modules +with DKMS.

    +
    $ uname -r
    +5.XX.YY-ZZZZ.native
    +
    +
    +

    Ensure .native or .lts is in the kernel name.

    +
  2. +
  3. Install the DKMS bundle corresponding to the installed kernel. Use +kernel-native-dkms for the native kernel or +kernel-lts-dkms for the lts kernel.

    +
    sudo swupd bundle-add kernel-native-dkms
    +
    +
    +

    or

    +
    sudo swupd bundle-add kernel-lts-dkms
    +
    +
    +
  4. +
  5. Update the Clear Linux OS bootloader and reboot, and +ensure that you can start the new kernel.

    +
    sudo clr-boot-manager update
    +reboot
    +
    +
    +
  6. +
+
+
+

Build, install, and load an out-of-tree module

+

Follow the steps in this section if you are an individual user or testing, +and you need an out-of-tree kernel module that is not available through +Clear Linux OS. For a more scalable and customizable approach, we recommend using +mixer to provide a custom kernel and updates.

+
+

Prerequisites

+

Before you begin, you must:

+
    +
  • Disable Secure Boot in UEFI/BIOS. The loading of new out-of-tree modules +modifies the signatures that Secure Boot relies on for trust.

  • +
  • Obtain a kernel module package in the form of source code or +pre-compiled binaries.

  • +
+
+
+

Obtain kernel module source

+

A required dkms.conf file inside of the kernel module’s source code +directory informs DKMS how the kernel module should be compiled.

+

Kernel modules may come packaged as:

+
    +
  • Source code without a dkms.conf file

  • +
  • Source code with a premade dkms.conf file

  • +
  • Source code with a premade dkms.conf file and precompiled module +binaries

  • +
  • Precompiled module binaries only (without source code)

  • +
+

Of the package types listed above, only precompiled kernel module binaries +will not work, because Clear Linux OS requires kernel modules to be built against the +same kernel source tree before they can be loaded. If you are only able to +obtain source code without a dkms.conf file, you must manually create +a dkms.conf file, described later in this document.

+
    +
  1. Download the kernel module’s source code.

    +
      +
    • Review the available download options. Some kernel modules provide +separate archives that are specifically enabled for DKMS support.

    • +
    • Review the README documentation, because it often provides required +information to build the module with DKMS support.

    • +
    +
    curl -O http://<URL-TO-KERNEL-MODULE-SOURCE>.tar.gz
    +tar -xvf <KERNEL-MODULE-SOURCE>.tar.gz
    +cd <KERNEL-MODULE-SOURCE>/
    +cat README
    +
    +
    +
  2. +
+
+
+

Build kernel module with an existing dkms.conf

+

If the kernel module maintainer packaged the source archive with the +dkms mktarball command, the entire archive can be passed to the +dkms ldtarball which completes many steps for you.

+

The archive contains the required dkms.conf file, and may contain +a dkms_source_tree directory and a dkms_binaries_only +directory.

+
    +
  1. Run the dkms ldtarball command against the kernel +module archive.

    +
    dkms ldtarball <KERNEL-MODULE-SOURCE_WITH_DKMS>.tar.gz
    +
    +
    +

    dkms ldtarball places the kernel module source under +/usr/src/<MODULE-NAME>-<MODULE-VERSION>/, builds it if necessary, +and adds the module into the DKMS tree.

    +
  2. +
  3. Verify the kernel module is detected by checking the output of the +dkms status command.

    +
    dkms status
    +
    +
    +
  4. +
  5. Install the kernel module.

    +
    dkms install -m <MODULE-NAME> -v <MODULE-VERSION>
    +
    +
    +
  6. +
+
+
+

Build kernel module without an existing dkms.conf

+

If the kernel module source does not contain a dkms.conf file or the +dkms ldtarball command encounters errors, you must manually +create the file.

+

Review the kernel module README documentation for guidance on what needs to be +in the dkms.conf file, including special variables that may be +required to build successfully.

+

Here are some additional resources that can be used for reference:

+
    +
  • DKMS manual page (man dkms) shows detailed syntax in the +DKMS.CONF section.

  • +
  • Ubuntu community wiki entry for the Kernel DKMS Package shows an example +where a single package contains multiple modules.

  • +
  • Sample dkms.conf file in the GitHub* repository for the DKMS project.

  • +
+
+

Note

+

AUTOINSTALL=yes must be set in the dkms.conf for the module to +be automatically recompiled with Clear Linux OS updates.

+
+

The instructions below show a generic example:

+
    +
  1. Create or modify the dkms.conf file inside of the extracted source +code directory.

    +
    $ EDITOR dkms.conf
    +
    +MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
    +CLEAN="make -C src/ clean"
    +BUILT_MODULE_NAME=custom_module
    +BUILT_MODULE_LOCATION=src/
    +PACKAGE_NAME=custom_module
    +PACKAGE_VERSION=1.0
    +DEST_MODULE_LOCATION=/kernel/drivers/other
    +AUTOINSTALL=yes
    +
    +
    +

    This example identifies a kernel module named custom_module with version +1.0.

    +
  2. +
  3. Copy the kernel module source code into the /usr/src/ directory.

    +
    sudo mkdir /usr/src/<PACKAGE_NAME>-<PACKAGE_VERSION>
    +sudo cp -Rv . /usr/src/<PACKAGE_NAME>-<PACKAGE_VERSION>
    +
    +
    +
    +

    Note

    +

    <PACKAGE_NAME> and <PACKAGE_VERSION> must match the entries in the +dkms.conf file.

    +
    +
  4. +
  5. Add the kernel module to the DKMS tree so that it is tracked by DKMS.

    +
    sudo dkms add -m <MODULE-NAME>
    +
    +
    +
  6. +
  7. Build the kernel module using DKMS. If the build encounters errors, +you may need to edit the dkms.conf file.

    +
    sudo dkms build -m <MODULE-NAME> -v <MODULE-VERSION>
    +
    +
    +
  8. +
  9. Install the kernel module using DKMS.

    +
    sudo dkms install -m <MODULE-NAME> -v <MODULE-VERSION>
    +
    +
    +
  10. +
+
+
+

Load kernel module

+

By default, DKMS installs modules “in-tree” under /lib/modules so the +modprobe command can be used to load them.

+
    +
  1. Load the installed module with the modprobe command.

    +
    +
    sudo modprobe <MODULE-NAME>
    +
    +
    +
    +
  2. +
  3. Validate the kernel module is loaded.

    +
    lsmod | grep <MODULE-NAME>
    +
    +
    +
  4. +
+
+
+
+

Examples

+
+

Optional: Specify module options and aliases

+

Use the modprobe command to load a module and set options.

+

modprobe may add or remove more than one module due to module +interdependencies. You can specify which options to use with individual +modules, by using configuration files under the /etc/modprobe.d +directory.

+
sudo mkdir /etc/modprobe.d
+
+
+

All files underneath the /etc/modprobe.d directory that end with the +.conf extension specify module options to use when loading. You can +use .conf files to create convenient aliases for modules or to +override the normal loading behavior altogether for those with special +requirements.

+

Learn more about modprobe on the modprobe.d manual page:

+
man modprobe.d
+
+
+
+
+

Optional: Configure kernel modules to load at boot

+

Use the /etc/modules-load.d configuration directory to specify kernel +modules to load automatically at boot.

+
sudo mkdir /etc/modules-load.d
+
+
+

All files underneath the /etc/modules-load.d directory that end with +the .conf extension contain a list of module names of aliases (one per +line) to load at boot.

+

Learn more about module loading in the modules-load.d manual page:

+
man modules-load.d
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/kernel/kernel-modules.html b/guides/kernel/kernel-modules.html new file mode 100644 index 000000000..c842492d7 --- /dev/null +++ b/guides/kernel/kernel-modules.html @@ -0,0 +1,1402 @@ + + + + + + + + + + Add kernel modules manually — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Add kernel modules manually

+

This guide describes how to add kernel modules manually.

+ +
+

Overview

+

Certain kernel modules are enabled by default in Clear Linux* OS. To use additional +kernel modules that are not part of the Linux source tree, you may need to +build out-of-tree kernel modules. Use this guide to add kernel modules +manually, or refer to Add kernel modules with DKMS.

+
+
+

Description

+

Kernel modules are additional pieces of software capable of being inserted +into the Linux kernel to add functionality, such as a hardware driver. +Kernel modules may already be part of the Linux source tree (in-tree) or may +come from an external source, such as directly from a vendor (out-of-tree).

+
+
+

Kernel module availability

+

Clear Linux OS comes with many upstream kernel modules available for use. Using an +existing module is significantly easier to maintain and retains signature +verification of the Clear Linux OS kernel. For more information on Clear Linux OS security +practices, see the OS Security page.

+

Before continuing, check if the kernel module you’re looking for is already +available in Clear Linux OS or submit a request to add the module.

+
+

Check if the module is already available

+

You can search for kernel module file names, which end with the .ko +file extension, using the swupd search command, as shown in the +following example. See swupd for more information.

+
sudo swupd search ${module_name}.ko
+
+
+
+
+

Submit a request to add the module

+

If the kernel module you need is already open source (for example, in the +Linux kernel upstream) and likely to be useful to others, consider submitting +a request to add or enable it in the Clear Linux OS kernel.

+

Make enhancement requests to the Clear Linux OS Distribution Project on GitHub.

+
+
+
+

Build, install, and load an out-of-tree module

+

Follow the steps in this section if you are an individual user or testing, and +you need an out-of-tree kernel module that is not available through Clear Linux OS. For +a more scalable and customizable approach, we recommend using the +mixer to provide a custom kernel and updates.

+
+

Prerequisites

+

Before you begin, you must:

+
    +
  • Disable Secure Boot.

  • +
  • Disable kernel module integrity checking.

  • +
  • Have a kernel module package in the form of source code.

  • +
  • Rebuild the module against new versions of the Linux kernel.

  • +
+
+

Note

+

Any time the kernel is upgraded on your Clear Linux system, you must +rebuild your out-of-tree modules.

+
+
+
+

Build and install kernel module

+
    +
  1. Determine which kernel variant is running on Clear Linux OS. In the example below, +the native kernel is in use.

    +
    $ uname -r
    +5.XX.YY-ZZZZ.native
    +
    +
    +
  2. +
  3. Install the kernel dev bundle corresponding to the installed kernel. The +kernel dev bundle contains the kernel headers, which are placed under +/usr/lib/modules/$(uname -r)/build/include/ and are required to +compile kernel modules. For example:

    +
      +
    • linux-dev for developing against the native kernel.

    • +
    • linux-lts-dev for developing against the LTS kernel.

    • +
    +
    sudo swupd bundle-add linux-dev
    +
    +
    +
  4. +
  5. Follow instructions from the kernel module source code to compile the +kernel module. For example:

    +
    curl -O http://<URL-TO-KERNEL-MODULE-SOURCE>.tar.gz
    +tar -xvf <KERNEL-MODULE-SOURCE>.tar.gz
    +cd <KERNEL-MODULE-SOURCE>/
    +cat README
    +
    +
    +
  6. +
+
+
+

Load kernel module

+
    +
  1. Disable Secure Boot in your system’s UEFI settings, if you have enabled +it. The loading of new out-of-tree modules modifies the signatures that +Secure Boot relies on for trust.

  2. +
  3. Disable signature checking for the kernel by modifying the kernel boot +parameters and reboot the system.

    +

    All kernel modules from Clear Linux OS have been signed to enforce kernel security. +However, out-of-tree modules break this chain of trust so this mechanism +needs to be disabled.

    +
    sudo mkdir -p /etc/kernel/cmdline.d
    +echo "module.sig_unenforce" | sudo tee /etc/kernel/cmdline.d/allow-unsigned-modules.conf
    +
    +
    +
  4. +
  5. Update the boot manager and reboot the system to implement the changed +kernel parameters.

    +
    sudo clr-boot-manager update
    +sudo reboot
    +
    +
    +
    +

    Note

    +

    If successful, the clr-boot-manager update command does not +return any console output.

    +
    +
  6. +
  7. After rebooting, manually load out-of-tree modules using the +insmod command.

    +
    sudo insmod </PATH/TO/MODULE.ko>
    +
    +
    +
  8. +
+
+
+
+

Examples

+
+

Optional: Specify module options and aliases

+

Use the modprobe command to load a module and set options.

+

modprobe may add or remove more than one module due to module +interdependencies. You can specify which options to use with individual +modules, by using configuration files under the /etc/modprobe.d +directory.

+
sudo mkdir /etc/modprobe.d
+
+
+

All files underneath the /etc/modprobe.d directory that end with the +.conf extension specify module options to use when loading. You can +use .conf files to create convenient aliases for modules or to +override the normal loading behavior altogether for those with special +requirements.

+

Learn more about modprobe on the modprobe.d manual page:

+
man modprobe.d
+
+
+
+
+

Optional: Configure kernel modules to load at boot

+

Use the /etc/modules-load.d configuration directory to specify kernel +modules to load automatically at boot.

+
sudo mkdir /etc/modules-load.d
+
+
+

All files underneath the /etc/modules-load.d directory that end with +the .conf extension contain a list of module names of aliases (one per +line) to load at boot.

+

Learn more about module loading in the modules-load.d manual page:

+
man modules-load.d
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/architect-lifecycle.html b/guides/maintenance/architect-lifecycle.html new file mode 100644 index 000000000..d25b1501e --- /dev/null +++ b/guides/maintenance/architect-lifecycle.html @@ -0,0 +1,1283 @@ + + + + + + + + + + Architect the life-cycle of Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Architect the life-cycle of Clear Linux* OS

+

This guide describes the basic, recommended infrastructure and workflow for +maintaining a Clear Linux* OS derivative.

+ +
+

Prerequisites

+
    +
  • A repository with software RPM artifacts and a CI/CD system with a Clear Linux OS +machine for building mixes

  • +
  • Experience using mixer to create a Clear Linux OS-based distro

  • +
  • Experience using swupd for maintaining the Clear Linux OS +build environment

  • +
  • Familiarity with Clear Linux OS architecture and reuse of its content in releases

  • +
+
+
+

Description

+

Maintaining a Clear Linux OS derivative requires:

+
    +
  • Monitoring upstream Clear Linux OS for new releases

  • +
  • Building software packages and staging

  • +
  • Employing CI/CD automation for building releases

  • +
  • Integrating Quality Assurance for testing and validation

  • +
+

Coordinated infrastructure is deployed to automate the life-cycle +of your Clear Linux OS derivative. We divide deployment of this infrastructure in two +parts: Content Workflow; and Release Workflow, shown in Figure 1.

+
+Architect the life-cycle +
+

Figure 1: Architect the life-cycle

+
+
+
+
+

Content Workflow

+

The Content Workflow (Figure 1) orchestrates the processes used to manage +the creation of content for the distribution. This includes everything from +detecting a new release in a custom software repository to generating RPM +package files. The RPM files serve as intermediary artifacts that track software +dependencies and provide file-level data consumed in a Release Workflow. The +Watcher Pipeline checks Clear Linux OS and a content provider, such as Koji, to +determine if a new release is necessary.

+
+
+

Release Workflow

+

The Release Workflow (Figure 1) gathers the content of the RPMs and +ensures it can be consumed by mixer. A content web server +hosts the Clear Linux OS derivative, to which targets connect for updating their OSes. +As an integral part of this toolchain, the Release Pipeline enables these +derivatives to incorporate Clear Linux OS content into their own custom +content. The Watcher Pipeline triggers the Release Pipeline to create +new releases.

+
+
+

Implementation

+

The Clear Linux OS Distro Factory manages the Release Workflow. For detailed information +about Distro Factory deployment, refer to the clr-distro-factory GitHub* repo.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/configure-hugepages.html b/guides/maintenance/configure-hugepages.html new file mode 100644 index 000000000..156d1e625 --- /dev/null +++ b/guides/maintenance/configure-hugepages.html @@ -0,0 +1,1277 @@ + + + + + + + + + + Configure Huge Pages — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Configure Huge Pages

+

In Clear Linux OS hugepages are enabled by default. The default hugepage size is 2MB. +The total number of hugepages is set to 0 by default. This guide shows you how +to add hugepages to the system and how to change the default hugepage size.

+
    +
  1. To check the enabled state, run the following command.

    +
    cat /sys/kernel/mm/transparent_hugepage/enabled
    +
    +
    +

    The output will look like

    +
    [always] madvise never
    +
    +
    +
    +

    Note

    +

    The active option is enclosed in brackets. In this case, always is active, +which means hugepages are enabled for every process. The madvise +option means that hugepages are enabled for processes that explicitly +call madvise.

    +
    +
  2. +
  3. To check the size of hugepages, run the below command.

    +
    cat /proc/meminfo | grep Huge
    +
    +
    +

    The output should look similar to the following. Although hugepages is +enabled, there are no hugepages available to allocate.

    +
    AnonHugePages:    624640 kB
    +ShmemHugePages:        0 kB
    +FileHugePages:         0 kB
    +HugePages_Total:       0
    +HugePages_Free:        0
    +HugePages_Rsvd:        0
    +HugePages_Surp:        0
    +Hugepagesize:       2048 kB
    +Hugetlb:               0 kB
    +
    +
    +
  4. +
  5. If you need 1GB (1,048,576 bytes) of hugepages enabled, then HugePages_Total +should be set to 512. Enable it temporarily using the following.

    +
    echo 512 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
    +
    +
    +

    To view the change, run the command in the previous setp again.

    +
  6. +
  7. Changing hugepages from the default 2MB to 1GB must be done at system boot +through kernel boot parameters. In this example, we configure the size and +number of allocatable huge pages at boot.

    +
    sudo mkdir -p /etc/kernel/cmdline.d
    +cat << EOF | sudo tee -a /etc/kernel/cmdline.d/hugepages.conf
    +default_hugepagesz=1G
    +hugepagesz=1G
    +hugepages=10
    +EOF
    +sudo clr-boot-manager update
    +sudo reboot
    +
    +
    +
  8. +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/container-image-modify.html b/guides/maintenance/container-image-modify.html new file mode 100644 index 000000000..a95cb44bc --- /dev/null +++ b/guides/maintenance/container-image-modify.html @@ -0,0 +1,1639 @@ + + + + + + + + + + Modify a Clear Linux OS-based container image — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Modify a Clear Linux OS-based container image

+

This guide describes how to customize Clear Linux* OS-based container +images on Docker Hub, which include popular applications and runtimes.

+ +
+

Overview

+

Most of these images utilize a Docker build feature called a multi-stage +build to reduce image size while some use single-stage build Dockerfiles. An +official base clearlinux image on Docker Hub is also available. To create a +generic Clear Linux OS container image, see our guide.

+
+
+

Prerequisites

+
    +
  • Set up a functional Docker environment as described in Docker*.

  • +
  • Download the Clear Linux OS microservice Dockerfile repo with the following +command:

    +
    git clone https://github.com/clearlinux/dockerfiles.git
    +
    +
    +
  • +
  • Navigate to and operate from the cloned dockerfiles directory.

    +
    +
    cd dockerfiles/
    +
    +
    +
    +
  • +
+
+
+

Example 1: Add a bundle

+

In this example, we add wget to the clearlinux/redis +Dockerfile.

+
    +
  1. Enter swupd search wget to discover which Clear Linux OS bundle includes +the software. The output should tell you that wget is available +in the wget bundle.

  2. +
  3. Open a an editor to modify the Dockerfile.

    +
    $EDITOR redis/Dockerfile
    +
    +
    +
  4. +
  5. Append the wget bundle to the --bundles= parameter +of the swupd os-install command.

  6. +
  7. Run git diff.

    +

    The output shows the edits made after adding wget in the +clearlinux/redis Dockerfile.

    +
    diff --git a/redis/Dockerfile b/redis/Dockerfile
    +index af977cb..b1effab 100644
    +--- a/redis/Dockerfile
    ++++ b/redis/Dockerfile
    +@@ -15,7 +15,7 @@ RUN source /os-release && \
    +    mkdir /install_root \
    +    && swupd os-install -V ${VERSION_ID} \
    +    --path /install_root --statedir /swupd-state \
    + -    --bundles=redis-native,findutils,su-exec --no-boot-update
    + +    --bundles=redis-native,findutils,su-exec,wget --no-boot-update
    +
    +
    +
  8. +
  9. Build the Dockerfile and apply a unique tag name. In this this example, +we use wget_added and add proxies.

    +
    docker build \
    +--no-cache \
    +--build-arg http_proxy=$http_proxy \
    +--build-arg https_proxy=$https_proxy \
    +--tag clearlinux/redis:wget_added \
    +redis/
    +
    +
    +
  10. +
  11. Run the Dockerfile with the wget –version command to verify that +wget has been added to the image.

    +
    docker run clearlinux/redis:wget_added wget --version
    +
    +
    +
  12. +
  13. The output shows:

    +
    GNU Wget 1.20.3 built on linux-gnu.
    +
    +-cares +digest -gpgme +https +ipv6 -iri +large-file -metalink +nls
    +-ntlm +opie -psl +ssl/openssl
    +
    +
    +
  14. +
+
+
+

Example 2: Change Clear Linux OS version (single-stage build)

+

This example shows how to rebuild single-stage containers against a specific +OS version, <CL_VERSION>, by adding a new argument to the Docker build +command line.

+
    +
  1. Rebuild the clearlinux/machine-learning-ui. Add an extra build +argument swupd_args="-m <CL_VERSION>"; in this case, the build +version is 31110.

    +
    1docker build \
    +2--no-cache \
    +3--build-arg http_proxy=$http_proxy \
    +4--build-arg https_proxy=$https_proxy \
    +5--build-arg swupd_args="-m 31110" \
    +6--tag clearlinux/machine-learning-ui:31110 \
    +7machine-learning-ui/
    +
    +
    +
  2. +
  3. Run the docker container image:

    +
    docker run clearlinux/machine-learning-ui:31110 swupd info
    +
    +
    +
  4. +
  5. Sample output shows:

    +
    Distribution:      Clear Linux OS
    +Installed version: 31110
    +Version URL:       https://cdn.download.clearlinux.org/update
    +Content URL:       https://cdn.download.clearlinux.org/update
    +
    +
    +
  6. +
+
+
+

Example 3: Change Clear Linux OS version (multi-stage build)

+

This example shows how to rebuild the cgit Dockerfile to use a specific Clear Linux OS +version. The clearlinux/cgit Dockerfile has a multi-stage build with multiple +layers: os-core, httpd, and cgit. This can be used as reference for +building other multi-stage images with any number of layers.

+
+

Important

+

All upper layers of multi-stage Dockerfiles inherit the Clear Linux OS version from +the base layer. Rebuild the all underlying base layers against the desired +OS version. In this example, four base layers must be rebuilt.

+
+
+

First layer: os-core

+
    +
  1. Rebuild the first layer, os-core. Add an extra build argument +swupd_args="-m <CL_VERSION>"; in this case, the build +version is 31110.

    +
    1docker build \
    +2--no-cache \
    +3--build-arg http_proxy=$http_proxy \
    +4--build-arg https_proxy=$https_proxy \
    +5--build-arg swupd_args="-m 31110" \
    +6--tag clearlinux/os-core:31110 \
    +7os-core/
    +
    +
    +
  2. +
  3. Verify the version-specific image is available:

    +
    docker images clearlinux/os-core:31110
    +
    +
    +
  4. +
+
+
+

Second layer: httpd

+

The next layer is clearlinux/httpd.

+
    +
  1. Change the httpd/Dockerfile to use the version-specific +os-core:31110 image that was previously built.

    +
    $EDITOR httpd/Dockerfile
    +
    +
    +
  2. +
  3. Run git diff.

    +

    The output shows a diff of a modified clearlinux/httpd Dockerfile +that uses the previously built clearlinux/os-core:31110.

    +
    diff --git a/httpd/Dockerfile b/httpd/Dockerfile
    +index 6b2a6bf..9df89e4 100644
    +--- a/httpd/Dockerfile
    ++++ b/httpd/Dockerfile
    +@@ -7,7 +7,7 @@ RUN swupd update --no-boot-update $swupd_args
    +
    +# Grab os-release info from the minimal base image so
    +# that the new content matches the exact OS version
    +-COPY --from=clearlinux/os-core:latest /usr/lib/os-release /
    ++COPY --from=clearlinux/os-core:31110 /usr/lib/os-release /
    +
    +# Install additional content in a target directory
    +# using the os version from the minimal base
    +@@ -26,7 +26,7 @@ COPY --from=clearlinux/os-core:latest / /
    +os_core_install/
    +RUN cd / && \
    +    find os_core_install | sed -e 's/os_core_install/install_root/' | xargs rm -d &> /dev/null || true
    +
    +-FROM clearlinux/os-core:latest
    ++FROM clearlinux/os-core:31110
    +
    +
    +
  4. +
  5. Build Dockerfile.

    +
    docker build \
    +--no-cache \
    +--build-arg http_proxy=$http_proxy \
    +--build-arg https_proxy=$https_proxy \
    +--tag clearlinux/httpd:31110 \
    +httpd/
    +
    +
    +
  6. +
+
+
+

Third layer: cgit

+

The next layer is clearlinux/cgit.

+
    +
  1. Change the cgit/Dockerfile to use the desired OS +version; in this case, the build version is 31110.

    +
    $EDITOR cgit/Dockerfile
    +
    +
    +
  2. +
  3. Run git diff.

    +

    The output shows:

    +
    diff --git a/cgit/Dockerfile b/cgit/Dockerfile
    +index 9a3796d..59260fe 100644
    +--- a/cgit/Dockerfile
    ++++ b/cgit/Dockerfile
    +@@ -7,7 +7,7 @@ RUN swupd update --no-boot-update $swupd_args
    +
    +# Grab os-release info from the minimal base image so
    +# that the new content matches the exact OS version
    +-COPY --from=clearlinux/httpd:latest /usr/lib/os-release /
    ++COPY --from=clearlinux/httpd:31110 /usr/lib/os-release /
    +
    +# Install additional content in a target directory
    +# using the os version from the minimal base
    +@@ -22,11 +22,11 @@ RUN source /os-release && \
    +# file exists on different layers. To minimize docker
    +# image size, remove the overlapped files before copy.
    +RUN mkdir /os_core_install
    +-COPY --from=clearlinux/httpd:latest / /os_core_install/
    ++COPY --from=clearlinux/httpd:31110 / /os_core_install/
    +RUN cd / && \
    +    find os_core_install | sed -e 's/os_core_install/install_root/' | xargs rm -d &> /dev/null || true
    +
    +-FROM clearlinux/httpd:latest
    ++FROM clearlinux/httpd:31110
    +
    +
    +
  4. +
  5. Build Dockerfile.

    +
    docker build \
    +--no-cache \
    +--build-arg http_proxy=$http_proxy \
    +--build-arg https_proxy=$https_proxy \
    +--tag clearlinux/cgit:31110 \
    +cgit/
    +
    +
    +
  6. +
  7. Verify the installed OS version by noting the VERSION_ID value +in the /usr/lib/os-release file in the container filesystem.

    +
     1docker run clearlinux/cgit:31110 cat /usr/lib/os-release
    + 2NAME="Clear Linux OS"
    + 3VERSION=1
    + 4ID=clear-linux-os
    + 5ID_LIKE=clear-linux-os
    + 6VERSION_ID=31110
    + 7PRETTY_NAME="Clear Linux OS"
    + 8ANSI_COLOR="1;35"
    + 9HOME_URL="https://clearlinux.org"
    +10SUPPORT_URL="https://clearlinux.org"
    +11BUG_REPORT_URL="mailto:dev@lists.clearlinux.org"
    +12PRIVACY_POLICY_URL=http://www.intel.com/privacy
    +
    +
    +
  8. +
+
+
+
+

Example 4: Customize an application image at runtime

+

This section describes how to modify a published Clear Linux OS container at runtime. +In this example, we add Tensorflow* into a clearlinux/python +container. This approach can help accelerate the feature development process.

+

In this example, three separate console windows are used to easily interact +inside and outside of the container.

+
+

First console: Start the container

+
    +
  1. Launch the clearlinux/python container.

    +
    docker run -it --rm clearlinux/python
    +Python 3.7.3 (default, Jun 17 2019, 00:47:04)
    +[GCC 9.1.1 20190616 gcc-9-branch@272336] on linux
    +Type "help", "copyright", "credits" or "license" for more information.
    +
    +
    +
  2. +
  3. Try to import Tensorflow inside the container using the command: +import tensorflow as tf. The example below shows the expected +error message because the Docker image does not yet include the Tensorflow +module.

    +
    >>> import tensorflow as tf
    +Traceback (most recent call last):
    +File "<stdin>", line 1, in <module>
    +ModuleNotFoundError: No module named 'tensorflow'
    +>>>
    +
    +
    +
  4. +
+
+
+

Second console: Add a bundle

+
    +
  1. In another console, find the <Container_ID> of +clearlinux/python launched. This example Container ID is d4ce9d526fa6.

    +
    docker ps
    +
    +
    +
  2. +
  3. The output shows:

    +
    CONTAINER ID   IMAGE               COMMAND   CREATED             STATUS              PORTS          NAMES
    +d4ce9d526fa6   clearlinux/python   python3   About a minute ago  Up About a minute                  amazing_villani
    +
    +
    +
  4. +
  5. Connect to the running clearlinux/python container.

    +
    docker exec -it d4ce9d526fa6 /usr/bin/bash
    +root@d4ce9d526fa6/ #
    +
    +
    +
  6. +
  7. Use swupd to install the machine-learning-tensorflow bundle.

    +
    root@d4ce9d526fa6/ # swupd bundle-add machine-learning-tensorflow
    +Loading required manifests...
    +Downloading packs (692.32 Mb) for:
    +- machine-learning-tensorflow
    +… …
    +...100%
    +Finishing packs extraction...
    +No extra files need to be downloaded
    +Installing bundle(s) files...
    +...100%
    +Calling post-update helper scripts.
    +Successfully installed 1 bundle
    +
    +
    +
  8. +
  9. After the machine-learning-tensorflow bundle is installed in the +container, in the first console, import Tensorflow, which will be +successful now. You could also save the updated container using the +command docker commit <Container_ID>.

    +
    >>> import tensorflow as tf
    +>>> tf.__version__
    +'1.13.1'
    +
    +
    +
  10. +
+
+
+

Third console: Save the modified container

+
    +
  1. In a third console, save the container with a new tag. Our example uses +the tag tensorflow_added to identify our modified container.

    +
    docker commit d4ce9d526fa6 clearlinux/python:tensorflow_added
    +
    +
    +
  2. +
  3. Launch the modified container, and then import Tensorflow with success.

    +
    docker run -it clearlinux/python:tensorflow_added
    +Python 3.7.3 (default, Jun 17 2019, 00:47:04)
    +[GCC 9.1.1 20190616 gcc-9-branch@272336] on linux
    +Type "help", "copyright", "credits" or "license" for more information.
    +
    +
    +
    >>> import tensorflow as tf
    +>>> tf.__version__
    +'1.13.1'
    +>>>
    +
    +
    +
  4. +
+
+
+
+

Background

+

Multi-stage Dockerfiles contain more than one FROM directive. All +of the multi-stage Clear Linux OS Dockerfiles share a common base layer +called clearlinux/os-core:latest. All of the higher level layers +inherit the Clear Linux OS version from this base layer.

+

For details on how we leveraged multi-stage Docker builds, see the article +Minimizing Clear Linux OS container sizes.

+
    +
  1. clearlinux/os-core is built once per day. It is a container +containing a minimal Linux userspace.

  2. +
  3. The target container image uses either clearlinux/os-core as a +base layer or another container image clearlinux/ as a base +layer.

  4. +
  5. Bundle(s) containing the application are downloaded during the first stage +of the build process using swupd.

  6. +
  7. The final container image is a composition of its base layer and the +specific feature layer, via FROM clearlinux/<base layer>:latest +, such as: os-core, httpd, and via :command:`COPY --from=builder / +install_root /. Using this method, the target container images are kept +up to date without file duplication. For application-centric containers, +os-core-update is excluded to improve size optimization.

  8. +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/container-image-new.html b/guides/maintenance/container-image-new.html new file mode 100644 index 000000000..4f6557d67 --- /dev/null +++ b/guides/maintenance/container-image-new.html @@ -0,0 +1,1513 @@ + + + + + + + + + + Build a new Clear Linux OS-based container image — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Build a new Clear Linux OS-based container image

+

This guide describes how to build a new Clear Linux* OS-based container image. The +official base Clear Linux* OS container image is published on Docker* Hub and is +updated on a regular basis.

+ +
+

Prerequisites

+
    +
  • You must perform these steps on a Clear Linux OS system because the +swupd is used to manage bundles in the +container.

  • +
  • You must install the containers-basic bundle on the Clear Linux OS system +or Docker will not work.

  • +
  • You have a basic understanding of Docker.

  • +
+
+
+

Build the base container image

+
    +
  1. Log in and get root privileges.

    +
    sudo -s
    +
    +
    +
  2. +
  3. Verify Docker is installed and running.

    +
    docker info
    +
    +
    +

    If Docker is installed and running, the output is similar to +this example:

    +
    Containers: 0
    + Running: 0
    + Paused: 0
    + Stopped: 0
    +Images: 4
    +Server Version: 17.05.0-ce
    +Storage Driver: overlay
    + Backing Filesystem: extfs
    + Supports d_type: true
    +Logging Driver: json-file
    +Cgroup Driver: cgroupfs
    +Plugins:
    + Volume: local
    + Network: bridge host macvlan null overlay
    +Swarm: inactive
    +Runtimes: runc
    +Default Runtime: runc
    +Init Binary: docker-init
    +containerd version:  (expected: 9048e5e50717ea4497b757314bad98ea3763c145)
    +runc version: N/A (expected: 9c2d8d184e5da67c95d601382adf14862e4f2228)
    +init version: N/A (expected: )
    +Kernel Version: 4.12.7-377.native
    +Operating System: Clear Linux OS for Intel Architecture
    +OSType: linux
    +Architecture: x86_64
    +CPUs: 4
    +Total Memory: 15.62GiB
    +Name: clr-os
    +ID: XQHJ:DYEM:3Q4D:DKLM:JOA4:RUSF:GAFR:DLPA:HOJP:W5FF:ULEE:7HZ3
    +Docker Root Dir: /var/lib/docker
    +Debug Mode (client): false
    +Debug Mode (server): false
    +Registry: https://index.docker.io/v1/
    +Experimental: false
    +Insecure Registries:
    + 127.0.0.0/8
    +Live Restore Enabled: false
    +
    +
    +

    If Docker is not installed, enter the commands:

    +
    swupd bundle-add containers-basic
    +systemctl start docker
    +
    +
    +
  4. +
  5. Use os-install to download and install the bundles.

    +
    swupd os-install --url https://cdn.download.clearlinux.org/update --statedir "$PWD"/swupd-state --no-boot-update -B os-core-update,editors,network-basic base
    +
    +
    +

    The swupd example uses the following flags:

    +
      +
    • os-install tells swupd to download and install.

    • +
    • --url specifies the URL of the bundles repository.

    • +
    • --statedir specifies the state directory where downloaded bundles and any state information are stored.

    • +
    • --no-boot-update tells swupd to skip updating boot files because +boot files are not required for a container.

    • +
    +

    For more information on swupd flags, enter the swupd os-install -h +command.

    +

    Example output:

    +
    swupd-client software verify 3.12.2
    +Copyright (C) 2012-2017 Intel Corporation
    +
    +Verifying version 17870
    +Attempting to download version string to memory
    +Downloading packs...
    +
    +Extracting python-basic pack for version 17820
    +  ...14%
    +Extracting perl-basic pack for version 17790
    +  ...28%
    +Extracting openssh-server pack for version 17660
    +  ...42%
    +Extracting editors pack for version 17850
    +  ...57%
    +Extracting network-basic pack for version 17650
    +  ...71%
    +Extracting os-core pack for version 17870
    +  ...85%
    +Extracting os-core-update pack for version 17870
    +  ...100%
    +Adding any missing files
    +  ...88%
    +Inspected 33982 files
    +  33974 files were missing
    +    33974 of 33974 missing files were replaced
    +    0 of 33974 missing files were not replaced
    +Calling post-update helper scripts.
    +WARNING: boot files update skipped due to --no-boot-update argument
    +Fix successful
    +
    +
    +
    +

    Note

    +

    The WARNING message is expected and can be ignored.

    +
    +
  6. +
  7. Create a tarball and compress it.

    +
    tar -C base -cf base.tar .
    +xz -v -T0 base.tar
    +
    +
    +
  8. +
  9. Create the Dockerfile to build the image.

    +
    cat > Dockerfile << EOF
    +FROM scratch
    +MAINTAINER First Last <first.last@example.com>
    +ADD base.tar.xz /
    +CMD ["/bin/bash"]
    +EOF
    +
    +
    +
  10. +
  11. Build the Clear Linux OS container image.

    +
    docker build -t my-custom-clear-linux-container .
    +
    +
    +

    Example output:

    +
    Sending build context to Docker daemon  806.5MB
    +Step 1/4 : FROM scratch
    +  --->
    +Step 2/4 : MAINTAINER First Last <first.last@example.com>
    +  ---> Running in 7238f35abcd0
    +  ---> ec5064287c60
    +Removing intermediate container 7238f35abcd0
    +Step 3/4 : ADD base.tar.xz /
    +  ---> 2723b7d20716
    +Removing intermediate container 16e3ed0df8da
    +Step 4/4 : CMD /bin/bash
    +  ---> Running in efa893350647
    +  ---> 5414c3a12993
    +Removing intermediate container efa893350647
    +Successfully built 5414c3a12993
    +Successfully tagged my-custom-clear-linux-container:latest
    +
    +
    +
  12. +
  13. List the newly created Clear Linux OS container image.

    +
    docker images
    +
    +
    +

    Example output:

    +
    REPOSITORY                        TAG                 IMAGE ID            CREATED              SIZE
    +my-custom-clear-linux-container   latest              5414c3a12993        About a minute ago   616MB
    +
    +
    +
  14. +
  15. Launch the built Clear Linux OS container.

    +
    docker run -it my-custom-clear-linux-container
    +
    +
    +
  16. +
+
+
+

Manage bundles in a container

+

You can add and remove bundles from a Clear Linux OS container using the +RUN swupd command in the Dockerfile.

+
+

Add a bundle

+

This example Dockerfile adds the pxe-server bundle to an existing Clear Linux OS +Docker image:

+
cat > Dockerfile << EOF
+FROM my-customer-clear-linux-container
+MAINTAINER First Last <first.last@example.com>
+RUN swupd bundle-add pxe-server
+CMD ["/bin/bash/bash"]
+EOF
+
+
+

Example output:

+
docker build -t my-clearlinux-with-pxe-server-bundle .
+
+Sending build context to Docker daemon  806.5MB
+Step 1/4 : FROM my-custom-clear-linux-container
+ ---> 5414c3a12993
+Step 2/4 : MAINTAINER First Last <first.last@example.com>
+ ---> Running in 19b4411cf4bd
+ ---> 08d400baffde
+Removing intermediate container 19b4411cf4bd
+Step 3/4 : RUN swupd bundle-add pxe-server
+ ---> Running in 3e634d6e0792
+swupd-client bundle adder 3.12.2
+   Copyright (C) 2012-2017 Intel Corporation
+
+Attempting to download version string to memory
+Downloading packs...
+
+Extracting pxe-server pack for version 17820
+.
+Installing bundle(s) files...
+..............................................................................
+..............................................................................
+..............................................................................
+..............................................................................
+..............................................................................
+..............................................................................
+Calling post-update helper scripts.
+WARNING: systemctl not operable, unable to run systemd update triggers
+Bundle(s) installation done.
+ ---> 8ead5f2c0c33
+Removing intermediate container 3e634d6e0792
+Step 4/4 : CMD /bin/bash
+ ---> Running in 0ceae320279b
+ ---> dcd9adb40611
+Removing intermediate container 0ceae320279b
+Successfully built dcd9adb40611
+Successfully tagged my-clearlinux-with-pxe-server-bundle:latest
+
+
+
+

Note

+

The WARNING message can be ignored because systemd does not run inside +a container.

+
+
+
+

Remove a bundle

+

This example Dockerfile removes the pxe-server bundle from an existing +Clear Linux OS Docker image:

+
cat > Dockerfile << EOF
+FROM my-clearlinux-with-pxe-server-bundle
+MAINTAINER First Last <first.last@example.com>
+RUN swupd bundle-remove pxe-server
+CMD ["/bin/bash/bash"]
+EOF
+
+
+

Example output:

+
docker build -t my-clearlinux-remove-pxe-server-bundle .
+
+Sending build context to Docker daemon  806.5MB
+Step 1/4 : FROM my-clearlinux-with-pxe-server-bundle
+ ---> dcd9adb40611
+Step 2/4 : MAINTAINER First Last <first.last@example.com>
+ ---> Running in 71b60f15003e
+ ---> 742192751c1a
+Removing intermediate container 71b60f15003e
+Step 3/4 : RUN swupd bundle-remove pxe-server
+ ---> Running in ad28a3390ecc
+swupd-client bundle remover 3.12.2
+   Copyright (C) 2012-2017 Intel Corporation
+
+Removing bundle: pxe-server
+Deleting bundle files...
+Total deleted files: 92
+Untracking bundle from system...
+Success: Bundle removed
+1 bundle(s) were removed successfully
+ ---> d6ee7903e14d
+Removing intermediate container ad28a3390ecc
+Step 4/4 : CMD /bin/bash
+ ---> Running in 7694989e97de
+ ---> ec23189ef954
+Removing intermediate container 7694989e97de
+Successfully built ec23189ef954
+Successfully tagged my-clearlinux-remove-pxe-server-bundle:latest
+
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/cpu-performance.html b/guides/maintenance/cpu-performance.html new file mode 100644 index 000000000..19ca15514 --- /dev/null +++ b/guides/maintenance/cpu-performance.html @@ -0,0 +1,1430 @@ + + + + + + + + + + CPU Power and Performance — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

CPU Power and Performance

+

This guide explains the CPU power and performance mechanisms in Clear Linux* OS.

+ +
+

Overview

+

Modern x86 CPUs employ a number of features +to balance performance, energy, and thermal efficiency.

+

By default, Clear Linux OS prioritizes maximum CPU performance, assuming that +the faster the program finishes execution, the faster the CPU can return to a +low energy idle state. It is important to understand and evaluate the impact +of each feature when troubleshooting or considering changing the defaults.

+
+
+

CPU power saving mechanisms

+

C-states and P-states are both CPU power saving mechanisms that are entered +under different operating conditions. The tradeoff is a slightly longer time +to exit these states when the CPU is needed.

+
+

C-states (idle states)

+

Hardware enters a C-state when the CPU is idle and not executing instructions. +C-states decrease power utilization by reducing clock frequency, +voltages, and features in each state. Although C-states can typically be +limited or disabled in a system’s UEFI or BIOS configuration, these settings +are overridden when the intel_idle driver is in use.

+

To view the current cpuidle driver run this command in a terminal:

+
cat /sys/devices/system/cpu/cpuidle/current_driver
+
+
+

For troubleshooting, C-states can be limited with a kernel command line boot +parameter by adding processor.max_cstate=N intel_idle.max_cstate=N +or completely disabled with idle=poll.

+
+

Note

+
    +
  • processor.max_cstate=0 is changed to a valid value by the +kernel: processor.max_cstate=1.

  • +
  • intel_idle.max_cstate=0 disables the Intel Idle driver rather +than set it to C-state 0.

  • +
+
+
+
+

P-states (performance states)

+

The CPU can enter a P-state, also known as Intel SpeedStep® technology on +Intel processors or AMD* Cool’n’Quiet* technology, while it is active +and executing instructions. P-states reduce power utilization by adjusting CPU +clock frequency and voltages based on CPU demand. P-states can typically be +limited or disabled in a system’s firmware (UEFI/BIOS).

+
+

Turbo boost

+

Intel® Turbo Boost Technology, found on some modern Intel CPUs, allows +cores on a processor to temporarily operate at a higher than rated CPU clock +frequency to accommodate demanding workloads if the CPU is under defined power +and thermal thresholds. Intel Turbo Boost Technology is an extension of +P-states, so it can be impacted by limiting C-states or P-states.

+

Intel Turbo Boost Technology can be disabled in a system’s UEFI/BIOS or in +Clear Linux OS:

+
echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
+
+
+
+
+
+
+

Linux CPU clock frequency scaling

+

The CPUFreq subsystem in Linux allows the OS to control +C-states and P-states +via CPU drivers and governors that provide algorithms that define how and when +to enter these states.

+
+

Scaling driver

+

Linux uses the Intel P-state driver, intel_pstate, for +modern Intel processors from the Sandy Bridge generation or newer. Other +processors may default to the acpi-cpufreq driver which reads +values from the systems UEFI or BIOS.

+

To view the current CPU frequency scaling driver, run this command in a +terminal:

+
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
+
+
+
+
+

Scaling governor

+

Clear Linux OS sets the CPU governor to performance which calls for the CPU to +operate at maximum clock frequency. In other words, P-state P0. While this may +sound wasteful at first, it is important to remember that power utilization +does not increase significantly simply because of a locked clock frequency +without a workload.

+

To view the current CPU frequency scaling governor, run this command in a +terminal:

+
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
+
+
+

Each core will report its own status. Your output should look similar to this +example with four cores:

+
performance
+performance
+performance
+performance
+
+
+

The list of all governors can be found in the Linux kernel documentation on +CPUFreq Governors.

+
+

Note

+

The intel_pstate driver only supports performance and powersave governors.

+
+

There are 2 ways to change the CPU frequency scaling governor:

+
    +
  1. Disable Clear Linux OS enforcement of certain power and performance settings:

    +
    sudo systemctl mask clr-power.timer
    +
    +
    +
  2. +
  3. Change the governor value in /sys/devices. In the example below, +the governor is set to performance:

    +
    echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    +
    +
    +
  4. +
+
+
+
+

Thermal management

+

thermald is a Linux thermal management daemon used to prevent platforms +from overheating. thermald forces a C-state by inserting CPU sleep +cycles and adjusting any available cooling methods. This can be especially +desirable for laptops.

+

thermald is disabled by default in Clear Linux OS and starts automatically +if it detects battery power. Enable thermald manually by using +the systemd service by running the command:

+
sudo systemctl enable --now thermald
+
+
+

For more information, see the thermald man page:

+
man thermald
+
+
+

ThermalMonitor is a GUI application that can visually graph and log +temperatures from thermald. To use ThermalMonitor, add the +desktop-apps-extras bundle and add your user account to the power +group:

+
sudo swupd bundle-add desktop-apps-extras
+sudo usermod -a -G power <USER>
+ThermalMonitor
+
+
+
+

Note

+

After adding a new group, you must log out and log back in for the new group +to take effect.

+
+
+

Enhanced thermal configuration

+

Better thermal control and performance can be achieved by providing platform +specific configuration to thermald.

+

Linux DPTF Extract Utility is a companion tool to thermald, +This tool uses Intel® Dynamic Platform and Thermal Framework (Intel® DPTF) +technology and can convert to the thermal_conf.xml configuration format +used by thermald. Closed-source projects, like this one, cannot be +packaged as a bundle in Clear Linux OS, so you must install it manually:

+
    +
  1. Make sure your machine’s BIOS has DPTF feature and is enabled. It will usually be in the Advanced or Advanced>Power section of the BIOS.

    +
    +../../_images/dptf_bios.png +
    +
    +

    Note

    +

    Intel DPTF requires BIOS support and is typically only available on +laptops.

    +
    +
  2. +
  3. Generate thermal configuration. thermald configuration files +will be generated and saved to /etc/thermal/ folder.

    +
    sudo swupd bundle-add acpica-unix2  # install acpi tools
    +git clone https://github.com/intel/dptfxtract.git
    +cd dptfxtract
    +sudo acpidump > acpi.out
    +acpixtract -a acpi.out
    +sudo ./dptfxtract *.dat
    +
    +
    +
  4. +
  5. Restart thermald service to take effect.

    +
    sudo systemctl restart thermald.service
    +
    +
    +
  6. +
  7. Check whether the configuration is in use.

    +
    sudo systemctl status thermald.service
    +
    +
    +
  8. +
+

The following output means the configuration has already been applied:

+
thermald[*]: [WARN]Using generated /etc/thermald/thermal-conf.xml.auto
+
+
+

Intel® Turbo Boost Technology requires a PC with a processor with Intel Turbo +Boost Technology capability. Intel Turbo Boost Technology performance varies +depending on hardware, software and overall system configuration. Check with +your PC manufacturer on whether your system delivers Intel Turbo Boost Technology. +For more information, see http://www.intel.com/technology/turboboost

+

Intel, Intel SpeedStep, and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/deploy-at-scale.html b/guides/maintenance/deploy-at-scale.html new file mode 100644 index 000000000..37602b0dc --- /dev/null +++ b/guides/maintenance/deploy-at-scale.html @@ -0,0 +1,1424 @@ + + + + + + + + + + Deploy at Scale — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Deploy at Scale

+

This guide describes deployment considerations and strategies when deploying +Clear Linux* OS at scale in your environment.

+ +
+

Overview

+

In this guide the term endpoint refers to a system targeted for Clear Linux OS +installation, whether that is a datacenter system or unit deployed in field.

+
+

Note

+

This guide is not a replacement or blueprint for designing your own IT +operating environment.

+

Implementation details for a scale deployment are beyond the scope of this +guide.

+

Your Clear Linux OS deployment should complement your existing environment and +available tools. It is assumed core IT dependencies of your environment, +such as your network, are healthy and scaled to suit the deployment.

+
+
+
+

Pick a usage and update strategy

+

Different business scenarios call for different deployment methodologies. +Clear Linux OS offers the flexibility to continue consuming the upstream Clear Linux OS +distribution or the option to fork away from the Clear Linux OS distribution and +act as your own OSV.

+

Below is an overview of some considerations.

+
+

Create your own Linux distribution (mix)

+

This approach forks away from the Clear Linux OS upstream and has you act as your own +OSV by leveraging the mixer process to +create customized images based on Clear Linux OS. This is a level of responsibility +that requires having more infrastructure and processes to adopt. In return, +this approach offers you a high degree of control and customization. Consider:

+
    +
  • Development systems that generate bundles and updates should have +sufficient performance for the task and be separate from the swupd update +webservers that serve update content to production machines.

  • +
  • swupd update webservers that serve update content to production machines +should be appropriately scaled. Specific implementation details for a scalable, +resilient web server are beyond the scope of this document.

    +

    (See mixer for more information about update servers.)

    +
  • +
+
+
+

Adopt an agile methodology

+

The cloud, and other scaled deployments, are all about flexibility and speed. +It only makes sense that any Clear Linux OS deployment strategy should follow suit.

+

Manually rebuilding your own bundles or mix for every release is not +sustainable at a large scale. A Clear Linux OS deployment pipeline should be agile +enough to validate and produce new versions with speed. Whether or not those +updates actually make their way to your production can be separate +business decision. However this ability to frequently roll new versions of +software to your endpoints is an important prerequisite.

+

You own the validation and lifecycle of the OS and should treat it like any +other software development lifecycle. Below are some pointers:

+
    +
  • Thoroughly understand the custom software packages that you will need to +integrate with Clear Linux OS and maintain along with their dependencies.

  • +
  • Setup a path to production for building Clear Linux OS based images. At minimum this +should include:

    +
      +
    • A development clr-on-clr environment to test building packages and +bundles for Clear Linux OS systems.

    • +
    • A pre-production environment to deploy Clear Linux OS versions to before +production

    • +
    +
  • +
  • Employ a continuous integration and continuous deployment (CI/CD) +philosophy in order to:

    +
      +
    • Automatically pull custom packages as they are updated from their +upstream projects or vendors.

    • +
    • Generate Clear Linux OS bundles and potentially bootable images with your +customizations, if any.

    • +
    • Measure against metrics and indicators which are relevant to your +business (e.g. performance, power, etc) from release to release.

    • +
    • Integrate with your organization’s governance processes, such as change +control.

    • +
    +
  • +
+
+
+

Versioning infrastructure

+

Clear Linux OS version numbers are very important as they apply to the whole +infrastructure stack from OS components to libraries and applications.

+

Good record keeping is important, so you should keep a detailed registry and +history of previously deployed versions and their contents.

+

With a glance at the Clear Linux OS version numbers deployed, you should be able to +tell if your Clear systems are patched against a particular security +vulnerability or incorporate a critical new feature.

+
+
+
+

Pick an image distribution strategy

+

Once you have decided on a usage and update strategy, you should understand +how Clear Linux OS will be deployed to your endpoints. In a large scale deployment, +interactive installers should be avoided in favor of automated installations +or prebuilt images.

+

There are many well-known ways to install an operating system at scale. Each +have their own benefits, and one may lend itself easier in your environment +depending on the resources available to you.

+

See the available Clear Linux* OS image types.

+

Below are some common ways to install Clear Linux OS to systems at scale:

+
+

Bare metal

+

Preboot Execution Environments (PXE) or other out-of-band booting options are +one way to distribute Clear Linux OS to physical bare metal systems on a LAN.

+

This option works well if your customizations are fairly small in size +and infrastructure can be stateless.

+

The Clear Linux OS Downloads page offers a live image that can be deployed as +a PXE boot server if one doesn’t already exist in your environment. Also see +documentation on how to Install Clear Linux* OS from the live server.

+
+
+

Cloud instances or virtual machines

+

Image templates in the form of cloneable disks are an effective way to +distribute Clear Linux OS for virtual machine environments, whether on-premises or +hosted by a Cloud Solution Provider (CSP).

+

When used in concert with cloud VM migration features, this can be a good option +for allowing your applications a degree of high availability and workload +mobility; VMs can be restarted on a cluster of hypervisor host or moved between +datacenters transparently.

+

The Clear Linux OS Downloads page offers example prebuilt VM images and is readily +available on popular CSPs. Also see documentation on how to +Install in a virtual machine.

+
+
+

Containers

+

Containerization platforms allow images to be pulled from a repository and +deployed repeatedly as isolated containers.

+

Containers with a Clear Linux OS image can be a good option to blueprint and ship +your application, including all its dependencies, as an artifact while +allowing you or your customers to dynamically orchestrate and scale +applications.

+

Clear Linux OS is capable of running a Docker host, has a container image which can +be pulled from DockerHub, or can be built as a customized container. +For more information visit the Containers page.

+
+
+
+

Considerations with stateless systems

+

An important Clear Linux OS concept is statelessness and partitioning of system data +from user data. This concept can change the way you think about an at scale +deployment.

+
+

Backup strategy

+

A Clear Linux OS system and its infrastructure should be considered a commodity and +be easily reproducible. Avoid focusing on backing up the operating system +itself or default values.

+

Instead, focus on backing up what’s important and unique - the application +and data. In other words, only focus on backing up critical areas like +/home, /etc, and /var.

+
+
+

Meaningful logging & telemetry

+

Offload logging and telemetry from endpoints to external servers, so it is +persistent and can be accessed on another server when an issue occurs.

+
    +
  • Remote syslogging in Clear Linux OS is available through the +systemd-journal-remote.service

  • +
  • Clear Linux OS offers a Telemetrics, which can be a powerful tool +for a large deployment to quickly crowdsource issues of interest. Take +advantage of this feature with careful consideration of the target audience +and the kind of data that would be valuable, and expose events +appropriately.

    +

    Like any web server, the telemetry server should be appropriately scaled and +resilient. Specific implementation details for a scalable, resilient web +server are beyond the scope of this document.

    +
  • +
+
+
+

Orchestration and configuration management

+

In cloud environments, where systems can be ephemeral, being able to +configure and maintain generic instances is valuable.

+

Clear Linux OS offers an efficient cloud-init style solution, micro-config-drive, +through the os-cloudguest bundles which allow you to configure many Day 1 +tasks such as setting hostname, creating users, or placing +SSH keys in an automated way at boot. For more information on +automating configuration during deployment of Clear Linux OS endpoints see the +Install Clear Linux OS Over the Network with iPXE guide.

+

A configuration management tool is useful for maintaining consistent system +and application-level configuration. Ansible* is offered through the +sysadmin-hostmgmt bundle as a configuration management and automation +tool.

+
+
+

Cloud-native applications

+

An Infrastructure OS can design for good behavior, but it is ultimately up +to applications to make agile design choices. Applications deployed +on Clear Linux OS should aim to be host-aware but not depend on any specific host to +run. References should be relative and dynamic when possible.

+

The application architecture should incorporate an appropriate tolerance for +infrastructure outages. Don’t just keep stateless design as a noted feature. +Continuously test its use; Automate its use by redeploying Clear Linux OS and +application on new hosts. This naturally minimizes configuration drift, +challenges your monitoring systems, and business continuity plans.

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/developer-workstation.html b/guides/maintenance/developer-workstation.html new file mode 100644 index 000000000..430e9c4ff --- /dev/null +++ b/guides/maintenance/developer-workstation.html @@ -0,0 +1,1457 @@ + + + + + + + + + + Developer Workstation — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Developer Workstation

+

This guide helps you find the minimum set of bundles needed to start your +Clear Linux* OS development project.

+

Before continuing, review the swupd guide to learn more +about the swupd tool and how Clear Linux OS simplifies software versioning compared to +other Linux* distributions.

+ +
+

Workstation Setup

+

After installing the minimum set of bundles required to get started, you can +add more bundles relevant to your specific use case.

+

To run any process required for Clear Linux OS development, you can add the large +bundle *os-clr-on-clr*. However, you may want to deploy a leaner OS with only bundles relevant to your project.

+

Use the Developer Profiles tabs to start installing suggested bundles +based on your role or project. Installing any dkms bundle gives all the +tools you need to start. Consider these profiles as a starting point.

+
+

Tip

+

Click on a bundle to learn how to install it using swupd.

+
+
+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function

Bundle

Build machine learning applications with a full suite of libraries.

machine-learning-basic

Build machine learning applications with PyTorch, an optimized tensor library for deep learning.

machine-learning-pytorch

Build machine learning applications using Tensorflow, a library for numerical computation using deep neural networks.

machine-learning-tensorflow

Web-based, interactive tools for machine learning.

machine-learning-web-ui

Machine learning Docker container.

machine-learning

Pre-built Python libraries for Data Science.

python-extras

API helper for cloud access.

cloud-api

+
+
+ +
+

Core Concepts

+

We recommend that you understand these core concepts in Clear Linux OS before +developing your project.

+ + +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/download-verify-decompress.html b/guides/maintenance/download-verify-decompress.html new file mode 100644 index 000000000..7a8f4c2b5 --- /dev/null +++ b/guides/maintenance/download-verify-decompress.html @@ -0,0 +1,1435 @@ + + + + + + + + + + Download, verify, and decompress a Clear Linux* OS image — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Download, verify, and decompress a Clear Linux* OS image

+

This guide describes the available types of Clear Linux OS images, where to +download them, how to verify their integrity, and how to decompress them. +Follow the steps for your OS.

+ +

Clear Linux* OS offers many types of images for different platforms and environments.

+

The naming convention of a Clear Linux OS image filename is:

+
clear-[version number]-[image type].[compression type]
+
+
+
    +
  • The [version number] field specifies the version number.

  • +
  • The [image type] field specifies the type of image and its corresponding +file format.

  • +
  • The [compression type] field specifies the compression type. Two types of +compression methods are used: GNU* zip (.gz) and XZ (.xz).

  • +
+
+

Linux OS steps

+
+

Verify the integrity of the Clear Linux OS image

+

Before you use a downloaded Clear Linux OS image, verify its integrity. This action +eliminates the small chance of a corrupted image due to download issues. To +support verification, each released Clear Linux OS image has a corresponding SHA512 +checksum file designated with the suffix -SHA512SUMS.

+
    +
  1. Download the corresponding SHA512 checksum file of your Clear Linux OS image.

  2. +
  3. Open a Terminal.

  4. +
  5. Go to the directory with the downloaded image and checksum files.

  6. +
  7. Verify the integrity of the image and compare it to its original checksum +with the command:

    +
    sha512sum -c ./clear-[version number]-[image type].[compression type]-SHA512SUMS
    +
    +
    +
  8. +
+

If the checksum of the downloaded image is different than the original +checksum, a warning is displayed with a message indicating the computed +checksum does not match. Otherwise, the name of the image is printed on +the screen followed by OK.

+

For a more in-depth discussion of image verification including checking the +certificate see Image content validation.

+
+
+

Decompress the Clear Linux OS image

+

Released Clear Linux OS images are compressed with either GNU zip (.gz) or XZ +(.xz). The compression type depends on the target platform or +environment. To decompress the image, follow these steps:

+
    +
  1. Open a Terminal.

  2. +
  3. Go to the directory with the downloaded image.

    +

    To decompress an XZ image, enter:

    +
    unxz clear-[version number]-[image type].xz
    +
    +
    +

    To decompress a GZ image, enter:

    +
    gunzip clear-[version number]-[image type].gz
    +
    +
    +
  4. +
+
+
+
+

macOS* steps

+
+

Verify the integrity of the Clear Linux OS image

+

Before you use a downloaded Clear Linux OS image, verify its integrity. This action +eliminates the small chance of a corrupted image due to download issues. To +support verification, each released Clear Linux OS image has a corresponding SHA512 +checksum file designated with the suffix -SHA512SUMS.

+
    +
  1. Download the corresponding SHA512 checksum file of your Clear Linux OS image.

  2. +
  3. Open a Terminal.

  4. +
  5. Go to the directory with the downloaded image and checksum files.

  6. +
  7. Verify the integrity of the image and compare it to its original checksum +with the command:

    +
    shasum -a512 clear-[version number]-[image type].[compression type] | diff clear-[version number]-[image type].[compression type]-SHA512SUMS -
    +
    +
    +
  8. +
+

If the checksum of the downloaded image is different than the original +checksum, the differences will be displayed. Otherwise, an empty output indicates +a match and your downloaded image is good.

+
+
+

Decompress the Clear Linux OS image

+

We compress all released Clear Linux OS images by default with either GNU zip +(.gz) or xz (.xz). The compression type we use depends on the target +platform or environment. To decompress the image, follow these steps:

+
    +
  1. Open a Terminal.

  2. +
  3. Go to the directory with the downloaded image.

  4. +
  5. Use the gunzip command to decompress either compression type. For example:

    +
    gunzip clear-[version number]-[image type].xz
    +gunzip clear-[version number]-[image type].gz
    +
    +
    +
  6. +
+
+
+
+

Windows* OS steps

+
+

Verify the integrity of the Clear Linux OS image

+

Before you use a downloaded Clear Linux OS image, verify its integrity. This action +eliminates the small chance of a corrupted image due to download issues. To +support verification, each released Clear Linux OS image has a corresponding SHA512 +checksum file designated with the suffix -SHA512SUMS.

+
    +
  1. Download the corresponding SHA512 checksum file of your Clear Linux OS image.

  2. +
  3. Start Command Prompt.

  4. +
  5. Go to the directory with the downloaded image and checksum files.

  6. +
  7. Get the SHA512 checksum of the image with the command:

    +
    CertUtil -hashfile ./clear-[version number]-[image type].[compression type] SHA512
    +
    +
    +
  8. +
  9. Manually compare the output with the original checksum value shown in +the downloaded checksum file and make sure they match.

  10. +
+
+
+

Decompress the Clear Linux OS image

+

Released Clear Linux OS images are compressed with either GNU zip (.gz) or XZ +(.xz). The compression type depends on the target platform or +environment. To decompress the image, follow these steps:

+
    +
  1. Download and install 7-Zip.

  2. +
  3. Go to the directory with the downloaded image and right-click it.

  4. +
  5. From the pop-up menu, select 7-Zip and select +Extract Here as shown in Figure 1.

    +
    +7-Zip extract file +
    +

    Figure 1: Windows 7-Zip extract file.

    +
    +
    +
  6. +
+
+
+
+

Image types

+

Table 1 lists the currently available images that are platform independent. +Table 2 lists the currently available images that are platform specific.

+ + ++++ + + + + + + + + + + + + + +
Table 1: Types of platform-independent Clear Linux OS images

Image Type

Description

live-desktop.img or live-desktop.iso

Image for booting to GNOME* desktop to preview or install the OS.

live-server.img or live-server.iso

Image for booting to server command prompt to preview or install the OS.

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2: Types of platform-specific Clear Linux OS images

Image Type

Description

aws.img

Image suitable for use with Amazon* AWS*.

cloudguest.img

Image with generic cloud guest virtual machine (VM) requirements +installed.

gce.tar

Image with the Google Compute Engine (GCE) specific kernel.

azure-hyperv.vhd

Image for Microsoft* Azure and Hyper-V generation 1 VMs. Includes +optimized kernel for Hyper-V.

kvm.img

Image for booting in a simple VM with start_qemu.sh. Includes +optimized kernel for KVM.

kvm-legacy.img

Image for booting in a simple VM using legacy BIOS, if using +start_qemu.sh make sure to remove -bios parameter.

pxe.tar

Image suitable for use with PXE server.

vmware.vmdk

Virtual Machine Disk for VMware* platforms including Player, +Workstation, and ESXi.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/enable-systemd-boot-menu.html b/guides/maintenance/enable-systemd-boot-menu.html new file mode 100644 index 000000000..5ecfc9e36 --- /dev/null +++ b/guides/maintenance/enable-systemd-boot-menu.html @@ -0,0 +1,1232 @@ + + + + + + + + + + Enable systemd-boot Menu — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Enable systemd-boot Menu

+

The default installation of Clear Linux OS does not set a timeout value for the systemd-boot +bootloader. At boot time, you will not be presented with the systemd-boot menu. Without +a menu, you cannot interact with systemd-boot such as selecting a different kernel, +editing kernel command line parameters, etc.

+

To set a timeout value for the systemd-boot menu, follow these steps:

+
    +
  1. Boot up Clear Linux OS.

  2. +
  3. Log in.

  4. +
  5. Set a timeout (for example: 20 seconds).

    +
    sudo clr-boot-manager set-timeout 20
    +
    +
    +
  6. +
  7. Reboot.

  8. +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/enable-user-space.html b/guides/maintenance/enable-user-space.html new file mode 100644 index 000000000..412f654ee --- /dev/null +++ b/guides/maintenance/enable-user-space.html @@ -0,0 +1,1298 @@ + + + + + + + + + + Create and enable a new user space — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Create and enable a new user space

+

This guide provides steps to complete the following basic setup tasks for +a newly installed Clear Linux* OS system:

+ +
+

Create a new user

+

To create a new user and set a password for that user, enter the following +commands as a root user:

+
useradd <userid>
+passwd <userid>
+
+
+

Replace the <userid> with the name of the user account you want to create +including the password for that user. The passwd command prompts +you to enter a new password. Retype the new password for the new user +account just created.

+
+
+

Add the new user to the wheel group

+

Before logging off as root and logging into your new user account, +enable the sudo command for your new <userid>.

+

To be able to execute all applications with root privileges, add the +<userid> to the wheel group.

+
    +
  1. Add <userid> to the wheel group:

    +
    usermod -G wheel -a <userid>
    +
    +
    +
  2. +
  3. Log out of root and into the new <userid>.

    +

    To log off as root, enter exit.

    +
  4. +
  5. Enter the new <userid> and the password created earlier.

    +

    You will now be in the home directory of <userid>.

    +
  6. +
+
+
+

Install and update the OS software to its current version

+

The Clear Linux OS software utility swupd allows you to perform +system updates while reaping the benefits of upstream development.

+

To update your newly installed OS, run:

+
sudo swupd update
+
+
+
+
+

Add a bundle

+

Software applications are installed as bundles using the command +swupd bundle-add. Experienced Linux users might compare swupd +to running apt-get or yum install for package +management. However Clear Linux OS manages packages at the level of bundles, which +are integrated stacks of packages.

+

For example, the sysadmin-basic bundle installs the majority of +applications useful to a system administrator. To install it, enter:

+
swupd bundle-add sysadmin-basic
+
+
+

View a full list of bundles and packages installed with the sysadmin-basic +bundle. You can also view all bundles for Clear Linux OS, active or deprecated.

+

Expand your knowledge of swupd and check out our developer resources:

+ +
+
+

Next steps

+

Check out our guides and tutorials.

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/fix-broken-install.html b/guides/maintenance/fix-broken-install.html new file mode 100644 index 000000000..dcfd318d3 --- /dev/null +++ b/guides/maintenance/fix-broken-install.html @@ -0,0 +1,1319 @@ + + + + + + + + + + Fix a broken installation — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Fix a broken installation

+

This guide explains how to fix a broken installation of Clear Linux* OS using a live +desktop image on a USB.

+ +
+

Overview

+

This guide assumes you have installed Clear Linux OS on a target system, but the OS +does not boot or function properly.

+

The process described in this guide can only verify and fix files that +swupd owns in /usr and /var. Files outside +of this path, such as /home/, /etc, etc., cannot be +repaired by this process.

+
+
+

Prerequisites

+ +
+
+

Boot a live desktop image to fix target system

+
    +
  1. Boot the Clear Linux OS live desktop image.

  2. +
  3. Select Clear Linux OS in the boot menu.

  4. +
+
+
+

Mount root partition, verify, and fix

+
    +
  1. Ensure the system is connected to the Internet in order to access the +the Clear Linux OS update server.

  2. +
  3. Open a terminal window.

  4. +
  5. Find the Clear Linux OS root partition by using the lsblk command with +these options: -o NAME,LABEL,PARTTYPE,PARTLABEL.

    +
    lsblk -o NAME,LABEL,PARTTYPE,PARTLABEL
    +
    +
    +

    Example output:

    +
    NAME          SIZE LABEL       PARTTYPE                             PARTLABEL
    +/dev/loop0  643.6M
    +/dev/sda     14.3G CLR_ISO
    +├─/dev/sda1   835M CLR_ISO     0x0
    +└─/dev/sda2   100M "CLEAR_EFI" 0xef
    +/dev/sdb     74.5G
    +├─/dev/sdb1   142M boot        c12a7328-f81f-11d2-ba4b-00a0c93ec93b EFI
    +├─/dev/sdb2   244M swap        0657fd6d-a4ab-43c4-84e5-0933c84b4f4f linux-swap
    +└─/dev/sdb3  74.2G root        4f68bce3-e8cd-4db1-96e7-fbcaf984b709 /
    +
    +
    +

    In the example above, /dev/sdb3/ is the root partition.

    +
  6. +
  7. Next, mount the root partition.

    +
    sudo mount /dev/sdb3 /mnt
    +
    +
    +
  8. +
  9. Verify that you mounted the correct root partition by verifying the content +of /mnt/usr/lib/os-release looks similar to the example below.

    +
    cat /mnt/usr/lib/os-release
    +
    +
    +

    Example output:

    +
    NAME="Clear Linux OS"
    +VERSION=1
    +ID=clear-linux-os
    +ID_LIKE=clear-linux-os
    +VERSION_ID=32150
    +PRETTY_NAME="Clear Linux OS"
    +ANSI_COLOR="1;35"
    +HOME_URL="https://clearlinux.org"
    +SUPPORT_URL="https://clearlinux.org"
    +BUG_REPORT_URL="mailto:dev@lists.clearlinux.org"
    +PRIVACY_POLICY_URL="http://www.intel.com/privacy"
    +
    +
    +
  10. +
  11. Next, run swupd repair to fix any issues on the target system.

    +
    sudo swupd repair --picky --path=/mnt --statedir=/mnt/var/lib/swupd
    +
    +
    +

    Learn more about how swupd works.

    +
  12. +
  13. After the process is complete, unmount the root partition.

    +
    sudo umount /mnt
    +
    +
    +
  14. +
  15. Reboot the system, remove the live desktop USB drive, +and boot into the repaired system.

    +
    sudo reboot
    +
    +
    +
  16. +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/hostname.html b/guides/maintenance/hostname.html new file mode 100644 index 000000000..73d1775b6 --- /dev/null +++ b/guides/maintenance/hostname.html @@ -0,0 +1,1285 @@ + + + + + + + + + + Modify hostname — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Modify hostname

+

This guide describes how to modify and view the hostname of your Clear Linux* OS +system.

+ +
+

Overview

+

By default, Clear Linux OS installations have a machine generated name, which is a +long string of letters and numbers. The generated name is fine for computers +but is not human-friendly. Administrators and users will often want to rename +their machines with a name that is easier to remember, type, and search +for. Renaming a machine also makes it easier to identify, by including +meaningful data in the name. The following examples show human-friendly machine +names:

+
    +
  • regression-test

  • +
  • sally-test-box1

  • +
  • az-bldg2-lab

  • +
+
+
+

Set your hostname

+

Clear Linux OS uses the hostnamectl command to display and modify the machine +name. hostnamectl is part of the os-core bundle, which +provides a basic Linux* user space and utilities.

+

This example sets the hostname to telemetry-test-2-h15, to identify a +Clear Linux OS telemetry test machine on the second floor at grid location H15. +Make sure to reboot after setting a new hostname.

+
sudo hostnamectl set-hostname telemetry-test-2-h15
+sudo reboot
+
+
+
+

Note

+

There are three types of hostname: static, transient, and pretty. +The most common is the static hostname. Static hostnames must be between +two and 63 characters long, must start and end with a letter or number, +and may contain letters (case-insensitive), numbers, dashes, or dots.

+

If the static hostname exists, it is used to generate the transient hostname, +which is maintained by the kernel. The transient hostname can be changed +by DHCP or mDNS at runtime.

+

The pretty hostname is a free-form UTF8 name used for presentation to the user.

+
+
+
+

View your hostname

+

View your current hostname using the following command:

+
hostnamectl
+
+
+

You should see output similar to:

+
Static hostname   : telemetry-test-2-h15
+Pretty hostname   : telemetry-test-2-h15
+Icon name         : computer-desktop
+Chassis           : desktop
+Machine ID        : 4d0d60207a904ebbab96680a51ac1339
+Boot ID           : 98d3514e5a984e8cbbdf46a2f0d6b397
+Operating System  : Clear Linux OS
+Kernel            : Linux 4.18.8-632.native
+Architecture      : x86-64
+
+
+

Congratulations! You successfully modified the hostname of your Clear Linux OS system.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/increase-virtual-disk-size.html b/guides/maintenance/increase-virtual-disk-size.html new file mode 100644 index 000000000..5de1db9e9 --- /dev/null +++ b/guides/maintenance/increase-virtual-disk-size.html @@ -0,0 +1,1378 @@ + + + + + + + + + + Increase Virtual Disk Size of an Image — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Increase Virtual Disk Size of an Image

+

Clear Linux* OS pre-built images come in different sizes, ranging from 300 MB to 20 +GB. This guide describes how to increase the disk size of your pre-built +image if you need more capacity. We will use the KVM image as +an example to demonstrate the process of increasing disk size and expanding +the last partition to take up the added space.

+ +
+

Determine disk size and list of partitions

+

There are two methods to find the disk size and the list of partitions of +a pre-built Clear Linux OS image.

+
+

Method 1: Use lsblk on the VM

+

The first method is to boot up your VM and execute the lsblk +command as shown below:

+
lsblk
+
+
+

An example output of the lsblk command:

+
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
+fd0      2:0    1    4K  0 disk
+sr0     11:0    1 1024M  0 rom
+vda    254:0    0  8.6G  0 disk
+├─vda1 254:1    0  510M  0 part
+├─vda2 254:2    0   33M  0 part [SWAP]
+└─vda3 254:3    0    8G  0 part /
+
+
+

An example of this can also be seen in Figure 1.

+
+
+

Method 2: Look at the image configuration YAML file

+

The second method to look at the image configuration YAML file that was +used to produce the image.

+

For example, to find the size of the KVM image version number 31880, +follow these steps:

+
    +
  1. Go to the releases repository.

  2. +
  3. Drill down into the 31880 > clear > config > image directory.

  4. +
  5. Download and open the kvm.yaml file.

  6. +
  7. Locate the targetMedia section.

    +

    The example shows a total disk size of 8.54 GB, 512 MB for the EFI +partition, 32 MB for the swap partition, and 8 GB for the root partition.

    +
     1targetMedia:
    + 2- name: ${bdevice}
    + 3  size: "8.54G"
    + 4  type: disk
    + 5  children:
    + 6  - name: ${bdevice}1
    + 7    fstype: vfat
    + 8    mountpoint: /boot
    + 9    size: "512M"
    +10    type: part
    +11  - name: ${bdevice}2
    +12    fstype: swap
    +13    size: "32M"
    +14    type: part
    +15  - name: ${bdevice}3
    +16    fstype: ext4
    +17    mountpoint: /
    +18    size: "8G"
    +19    type: part
    +
    +
    +
  8. +
+
+
+
+

Increase virtual disk size

+

Before you can expand the last partition of your image, you must make +space available by increasing the virtual disk size. After that, you +can resize the last partition and finally resize the filesystem. +Follow these steps:

+
+

Increase virtual disk size

+
    +
  1. Shut down your VM.

  2. +
  3. Use the process defined by your hypervisor or cloud provider to increase +the virtual disk size of your Clear Linux OS VM.

  4. +
  5. Power up your VM.

  6. +
+
+
+

Resize the last partition of the virtual disk

+
    +
  1. Log in.

  2. +
  3. Open a terminal window.

  4. +
  5. Add the storage-utils bundle to install the +parted and resize2fs tools.

    +
    sudo swupd bundle-add storage-utils
    +
    +
    +
  6. +
  7. Launch the parted tool.

    +
    sudo parted
    +
    +
    +
  8. +
  9. In the parted tool, perform these steps:

    +
      +
    1. Press p to print the partitions table.

    2. +
    3. If the warning message below is displayed, enter Fix.

      +
      Warning: Not all of the space available to :file:`/dev/sda` appears
      +to be used, you can fix the GPT to use all of the space (an extra ...
      +blocks) or continue with the current setting?
      +
      +Fix/Ignore?
      +
      +
      +
    4. +
    5. Enter resizepart <partition number> where +<partition number> is the number of the partition to modify.

    6. +
    7. Enter the new End size.

      +
      +

      Note

      +

      If you want a partition to take up the remaining disk space, then +enter the total size of the disk. When you print the partitions +table with the p command, the total disk size is shown +after the Disk label.

      +

      An example of this can be seen in Figure 1.

      +
      +
    8. +
    9. Enter q to exit parted when you are finished resizing the +partition.

      +

      Figure 1 depicts the described steps to resize the partition of the +virtual disk from 8.5 GB to 30 GB.

      +
      +Increase root partition size +
      +

      Figure 1: Increase root partition size

      +
      +
      +
    10. +
    +
  10. +
+
+
+

Resize the filesystem

+
    +
  1. Enter sudo resize2fs -p /dev/<modified partition name> where +<modified partition name> is the partition that was changed in the parted +tool.

  2. +
  3. Run lsblk to verify that the filesystem size has increased.

    +

    Figure 2 depicts the described steps to resize the filesystem of the virtual +disk from 8.5 GB to 30 GB.

    +
    +Increase root filesystem with resize2fs +
    +

    Figure 2: Increase root filesystem with resize2fs

    +
    +
    +
  4. +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/query-upstream.html b/guides/maintenance/query-upstream.html new file mode 100644 index 000000000..3d350e6d7 --- /dev/null +++ b/guides/maintenance/query-upstream.html @@ -0,0 +1,1406 @@ + + + + + + + + + + Query package info from upstream repository — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Query package info from upstream repository

+

This guide describes how to query package information from the Clear Linux OS upstream +repositories. This guide is intended for developers and advanced users.

+ +
+

Overview

+

In Clear Linux* OS, the swupd tool manages software +dependencies and installs bundles instead of packages. Although a bundle is +a collection of one or more packages, Clear Linux OS does not work with packages on +the client side. However, on the upstream/factory side, Clear Linux OS does work with +packages using a process called mixing.

+

Currently, swupd does not report which packages are installed, +provide package version information, or return other package details. This +guide describes a method for retrieving package information from the Clear Linux OS +upstream repositories using DNF commands.

+
+
+

Prerequisites

+

This guide assumes you have installed Clear Linux OS on your host system. +For detailed instructions on installing Clear Linux OS on a bare metal system, visit +the bare metal installation guide.

+

Before you install any new packages, update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+
+
+

Configure DNF

+
    +
  1. Install the DNF bundle with the command:

    +
    sudo swupd bundle-add dnf
    +
    +
    +
  2. +
  3. Create a dnf.conf file with the commands:

    +
    sudo mkdir -p /etc/dnf
    +sudo curl -L https://github.com/clearlinux/common/raw/master/conf/dnf.conf --output /etc/dnf/dnf.conf
    +
    +
    +
  4. +
  5. Edit the /etc/dnf/dnf.conf file and set the baseurl variable +for binary and source RPMs as shown in lines 3 and 9 in the following +example.

    +
     1[clear]
    + 2name=Clear
    + 3baseurl=https://cdn.download.clearlinux.org/releases/$releasever/clear/x86_64/os/
    + 4enabled=1
    + 5gpgcheck=0
    + 6[clear-source]
    + 7name=Clear sources
    + 8failovermethod=priority
    + 9baseurl=https://cdn.download.clearlinux.org/releases/$releasever/clear/source/SRPMS/
    +10enabled=1
    +11gpgcheck=0
    +
    +
    +
  6. +
  7. Initialize the RPM database with the command:

    +
    sudo rpm --initdb
    +
    +
    +
  8. +
+
+
+

DNF command usage examples

+ +
+

List all binary and source RPMs in the current release

+

Command:

+
dnf repoquery --releasever=current
+
+
+

Sample output:

+
Clear                                    5.1 MB/s |  13 MB     00:02
+Clear sources                            1.8 MB/s | 1.7 MB     00:00
+AVB-AudioModules-0:4.1.0-1.src
+AVB-AudioModules-0:4.1.0-1.x86_64
+AVB-AudioModules-data-0:4.1.0-1.x86_64
+AVB-AudioModules-dev-0:4.1.0-1.x86_64
+AVB-AudioModules-lib-0:4.1.0-1.x86_64
+AVB-AudioModules-license-0:4.1.0-1.x86_64
+AVBStreamHandler-0:1.1.0-21.src
+AVBStreamHandler-0:1.1.0-21.x86_64
+AVBStreamHandler-abi-0:1.1.0-21.x86_64
+AVBStreamHandler-bin-0:1.1.0-21.x86_64
+AVBStreamHandler-data-0:1.1.0-21.x86_64
+AVBStreamHandler-dev-0:1.1.0-21.x86_64
+AVBStreamHandler-lib-0:1.1.0-21.x86_64
+AVBStreamHandler-license-0:1.1.0-21.x86_64
+...
+<trimmed>
+
+
+
+
+

Show version information for a package in current release

+

This example queries version information for the zstd package.

+

Command:

+
dnf repoquery --releasever=current zstd
+
+
+

Sample output:

+
Last metadata expiration check: 0:02:30 ago on Tue 16 Jul 2019 03:03:34 PM PDT.
+zstd-0:1.4.0-46.src
+zstd-0:1.4.0-46.x86_64
+
+
+
+
+

Show version information for a package in a specific release

+

This example queries version information for the zstd package in release +21000.

+

Command:

+
dnf repoquery --releasever=21000 zstd
+
+
+

Sample output:

+
Clear
+2.7 MB/s | 3.9 MB     00:01
+Clear sources
+628 kB/s | 559 kB     00:00
+zstd-0:1.3.3-20.src
+zstd-0:1.3.3-20.x86_64
+
+
+
+
+

Show only version and release information for a package in a specific release

+

This example queries version and release information for the zstd package in +release 15000.

+

Command:

+
dnf repoquery --releasever=15000 --qf="%{VERSION}\n%{RELEASE}" zstd
+
+
+

Sample output:

+
Clear
+3.4 MB/s | 3.9 MB     00:01
+Clear sources
+345 kB/s | 528 kB     00:01
+1.1.4
+5
+
+
+
+
+

Show the binary package for a specified binary file

+

This example returns the binary package that contains the +/usr/bin/zip binary file.

+

Command:

+
dnf repoquery --releasever=current --whatprovides /usr/bin/zip
+
+
+

Sample output:

+
Last metadata expiration check: 0:04:47 ago on Tue 16 Jul 2019 03:03:34 PM PDT.
+zip-bin-0:3.0-23.x86_64
+
+
+
+
+

Show the source package for a specified binary file

+

This example returns the source package that contains the +/usr/bin/zip binary file.

+

Command:

+
dnf repoquery --releasever=current --whatprovides /usr/bin/zip --srpm
+
+
+

Sample output:

+
Last metadata expiration check: 0:05:50 ago on Tue 16 Jul 2019 03:03:34 PM PDT.
+zip-0:3.0-23.src
+
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/resource-limits.html b/guides/maintenance/resource-limits.html new file mode 100644 index 000000000..7d3b2c3f0 --- /dev/null +++ b/guides/maintenance/resource-limits.html @@ -0,0 +1,1307 @@ + + + + + + + + + + Resource limits — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Resource limits

+

Linux systems employ limiting or quota mechanisms to provide quality of +service for system resources and contain rogue processes.

+

These limits are layered at the system-level and user-level. If these limits +need to be modified, it is useful to understand the different limit +configurations.

+ +
+

System-wide limits

+

Some global resource limits are implemented in the Linux kernel and are +controllable with kernel parameters.

+

For example, a global limit for the maximum number of open files is set with +the fs.file-max parameter. This limit applies to all processes and users an +cannot be exceeded other limit values.

+
+

Checking limit

+

You can check a current value with sysctl -n <PARAMETER>. For +example:

+
sysctl -n fs.file-max
+
+
+

This fs.file-max value is set intentionally high on Clear Linux OS systems by +default. You can check the maximum value supported by the system with:

+
cat /proc/sys/fs/file-max
+
+
+
+
+

Overriding limit

+

You can override a value with sysctl -w <PARAMETER>. For +example:

+
sudo sysctl -w fs.file-max=<NUMBER>
+
+
+

If needed permanently, the value can be set by creating a +/etc/sysctl.d/*.conf file (see man sysctl.d for details). +For example:

+
sudo mkdir -p /etc/sysctl.d/
+
+sudo tee /etc/sysctl.d/fs-file-max.conf  > /dev/null <<'EOF'
+fs.file-max=<NUMBER>
+EOF
+
+
+
+
+
+

Per-user limits

+

For processes not managed by systemd, resource limits can be set for PAM +logins on a per-user basis with upper and lower limits in the +/etc/security/limits.conf file.

+

You can set temporary values and check the current values with the +ulimit command. For example, to change the soft limit of maximum +number of open file descriptors for the current user:

+
ulimit -S -n <NUMBER>
+
+
+

See man limits.conf for details.

+
+
+

Service limits

+

Resource limits for services started with systemd units do not follow normal +user limits because the process is started in a separate Linux control group +(cgroup) Linux +cgroups associate related process groups and provide resource accounting.

+

Resource limits for individual systemd services can be controlled inside their +unit files or its configuration drop-in directory with the resource Limit +directives. See process properties section of the systemd.exec man page.

+

Resource limits for all systemd services can be controlled with a file in the +/etc/systemd/system.conf.d/ directory. For example, to have no +restriction on the number of open files:

+
sudo mkdir -p /etc/systemd/system.conf.d/
+
+sudo tee /etc/systemd/system.conf.d/50-nfiles.conf  > /dev/null <<'EOF'
+[Manager]
+DefaultLimitNOFILE=infinity
+EOF
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/restart.html b/guides/maintenance/restart.html new file mode 100644 index 000000000..ee05675db --- /dev/null +++ b/guides/maintenance/restart.html @@ -0,0 +1,1358 @@ + + + + + + + + + + Restart system services after an OS update — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Restart system services after an OS update

+

This guide describes how to use the clr-service-restart tool.

+ +
+

Overview

+

Clear Linux* OS includes a clr-service-restart tool that shows which +system daemons require a restart.

+

clr-service-restart reads various files in the procfs +filesystem provided by the kernel and relies on systemd to +determine which services to restart.

+
+
+

How it works

+

clr-service-restart implements a whitelist to identify which +daemons can be restarted. As a system administrator, you can customize the +default Clear Linux OS OS whitelist using allow or disallow options +for restarting system services. When a software update occurs, +clr-service-restart consults the whitelist to see if a service daemon +is allowed to be restarted or not.

+
+
+

Basic options

+

clr-service-restart has three basic options: allow, +disallow, and default.

+
+

allow

+

The allow option identifies a daemon to restart after an OS software +update. The clr-service-restart daemon creates a symlink in +/etc/clr-service-restart as a record. The example below tells +clr-service-restart to restart the tallow daemon after an +OS software update.

+
sudo clr-service-restart allow tallow.service
+
+
+
+
+

disallow

+

The disallow option tells clr-service-restart not to +restart the specified daemon even if the OS defaults permit the daemon to be +restarted. The clr-service-restart daemon creates a symlink in +/etc/clr-service-restart that points to /dev/null as a +record. The example below tells clr-service-restart not to +restart the rngd daemon after an OS software update.

+
sudo clr-service-restart disallow rngd
+
+
+
+
+

default

+

The default option makes clr-service-restart revert back +to the OS defaults and delete any symlink in /etc/clr-service-restart. +The example below tells clr-service-restart to restart rngd +automatically again, because rngd is whitelisted for automatic service +restarts by default in Clear Linux OS.

+
sudo clr-service-restart default rngd
+
+
+
+
+
+

Monitor options

+

clr-service-restart works in the background and is invoked with +swupd automatically. Review the journal output to verify that +services are restarted after an OS software update.

+

If you pass both options (-a and -n) described below, +clr-service-restart displays a complete list of system services +that require a restart. Use both options to verify that all desired daemons +are restarted.

+
+

-n option

+

The -n option makes clr-service-restart perform no restarts. +Instead it displays the services that could potentially be restarted. When used, +clr-service-restart outputs a list of messages showing:

+
    +
  • Which service needs a restart.

  • +
  • What unit it is.

  • +
  • Why it needs a restart.

  • +
  • Which command is required to restart the unit.

  • +
+
+
+

-a option

+

The -a option makes clr-service-restart consider all system +services, not only the ones that are whitelisted. Because the default whitelist +in Clear Linux OS is relatively short, you can use this option to restart all impacted +services when you log in on the system.

+
+
+
+

Example

+

In the example below, clr-service-restart is invoked with both the +-a and -n options, which displays a complete list of system +services that require a restart.

+

Command:

+
sudo clr-service-restart -a -n
+
+
+

Sample output:

+
upower.service: needs a restart (a library dependency was updated)
+/usr/bin/systemctl --no-ask-password try-restart upower.service
+NetworkManager.service: needs a restart (a library dependency was
+updated)
+/usr/bin/systemctl --no-ask-password try-restart NetworkManager.service
+....
+
+
+
+
+

Telemetry

+

clr-service-restart may cause problems such as a short service +outage when a daemon is being restarted, or if a daemon fails to properly +restart. To minimize issues, clr-service-restart creates a +telemetry record and sends it to the optional Clear Linux OS telemetry service if both +conditions below are met:

+
    +
  • If a unit fails to automatically restart after an OS update.

  • +
  • If that unit resides in the system location /usr/lib/systemd/system.

  • +
+

If you do not install the Clear Linux OS telemetrics bundle, the data is discarded. If +you install the telemetrics bundle and you opt to send telemetry, then the +system unit name is sent to the Clear Linux OS telemetry service. We evaluate the +report and update the whitelist to remove services that are not safe to +restart.

+
+
+

Conclusion

+

The Clear Linux OS team enjoys coming up with simple and efficient solutions to make +your work easier. We made a GitHub* project of clr-service-restart +and we invite you to look at the code, share your thoughts, and work with us +on improving the project. You can find the project at:

+

https://github.com/clearlinux/clr-service-restart

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/maintenance/validate-signatures.html b/guides/maintenance/validate-signatures.html new file mode 100644 index 000000000..1fc0a8a61 --- /dev/null +++ b/guides/maintenance/validate-signatures.html @@ -0,0 +1,1339 @@ + + + + + + + + + + Validate signatures — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Validate signatures

+

This guide describes how to validate the contents of a Clear Linux* OS image.

+ +
+

Overview

+

Validating the contents of an image is a manual process and is the same process +that swupd performs internally.

+

Clear Linux OS offers a way to validate the content of an image or an update. All +validation of content works by creating and signing a hash. A valid signature +creates a chain of trust. A broken chain of trust, seen as an invalid +signature, means the content is not valid.

+
+
+

Image content validation

+

In the steps below, we used the installer image of the latest release +of Clear Linux OS. You may use any image of Clear Linux OS you choose.

+
    +
  1. Download the image, the signature of the SHA512 sum of the image, and the +Clear Linux OS certificate used for signing the SHA512 sum.

    +
    # Image
    +curl -O https://cdn.download.clearlinux.org/current/clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz
    +# Signature of SHA512 sum of image
    +curl -O https://cdn.download.clearlinux.org/current/clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz-SHA512SUMS.sig
    +# Certificate
    +curl -O https://cdn.download.clearlinux.org/releases/$(curl https://cdn.download.clearlinux.org/latest)/clear/ClearLinuxRoot.pem
    +
    +
    +
  2. +
  3. Generate the SHA256 sum of the Clear Linux OS certificate.

    +
    sha256sum ClearLinuxRoot.pem
    +
    +
    +
  4. +
  5. Ensure the generated SHA256 sum of the Clear Linux OS certificate matches the +following SHA256 sum to verify the integrity of the certificate.

    +
    4b0ca67300727477913c331ff124928a98bcf2fb12c011a855f17cd73137a890  ClearLinuxRoot.pem
    +
    +
    +
  6. +
  7. Generate the SHA512 sum of the image and save it to a file.

    +
    sha512sum clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz > sha512sum.out
    +
    +
    +
  8. +
  9. Ensure the signature of the SHA512 sum of the image was created using the +Clear Linux OS certificate. This confirms that the image is trusted and has not +been modified.

    +
    openssl smime -verify -purpose any -in clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz-SHA512SUMS.sig -inform der -content sha512sum.out -CAfile ClearLinuxRoot.pem
    +
    +
    +
    +

    Note

    +

    The -purpose any option is required when using OpenSSL 1.1. +If you use an earlier version of OpenSSL, omit this option to perform +signature validation. The openssl version command may be used +to determine the version of OpenSSL in use.

    +
    +
  10. +
  11. The output should contain “Verification successful”. If the output +contains “bad_signature” anywhere, then the image is not trustworthy.

  12. +
+
+
+

Update content validation

+

swupd validates all update content automatically before applying the +update content. The process swupd follows internally is illustrated here +with manual steps using the latest Clear Linux OS release. There is no need to perform +these steps manually when performing a swupd update.

+
    +
  1. Download the MoM, the signature of the MoM, +and the Swupd certificate used for signing the signature of the MoM.

    +
    # MoM
    +curl -O https://cdn.download.clearlinux.org/update/$(curl https://cdn.download.clearlinux.org/latest)/Manifest.MoM
    +# Signature of MoM
    +curl -O https://cdn.download.clearlinux.org/update/$(curl https://cdn.download.clearlinux.org/latest)/Manifest.MoM.sig
    +# Swupd certificate
    +curl -O https://cdn.download.clearlinux.org/releases/$(curl https://cdn.download.clearlinux.org/latest)/clear/Swupd_Root.pem
    +
    +
    +
  2. +
  3. Generate the SHA256 sum of the swupd certificate.

    +
    sha256sum Swupd_Root.pem
    +
    +
    +
  4. +
  5. Confirm that the generated SHA256 sum of the swupd certificate matches the +SHA256 sum shown below to verify the integrity of the certificate.

    +
    ff06fc76ec5148040acb4fcb2bc8105cc72f1963b55de0daf3a4ed664c6fe72c  Swupd_Root.pem
    +
    +
    +
  6. +
  7. Confirm that the signature of the MoM was created using the Swupd +certificate. This signature validates the update content is trustworthy and +has not been modified.

    +
    openssl smime -verify -purpose any -in Manifest.MoM.sig -inform der -content Manifest.MoM -CAfile Swupd_Root.pem
    +
    +
    +
    +

    Note

    +

    The -purpose any option is required when using OpenSSL 1.1. +If you use an earlier version of OpenSSL, omit this option to perform +signature validation. The openssl version command may be used +to determine the version of OpenSSL in use.

    +
    +
    +

    Note

    +

    The SHA512 sum of the MoM is not generated and then signed. Instead, the +MoM is signed directly because it is small in size compared to an image of +Clear Linux OS.

    +
    +
  8. +
  9. The output should contain “Verification successful”. If the output +contains “bad_signature” anywhere, then the MoM cannot be trusted. +Because the MoM contains a list of hashes for bundle manifests, if the MoM +cannot be trusted, then the bundle content cannot be trusted.

  10. +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/network/assign-static-ip.html b/guides/network/assign-static-ip.html new file mode 100644 index 000000000..6f22a906d --- /dev/null +++ b/guides/network/assign-static-ip.html @@ -0,0 +1,1362 @@ + + + + + + + + + + Assign a static IP address — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Assign a static IP address

+

This guide explains how to assign a static IP address. This may be helpful in +scenarios such as a network with no DHCP server.

+ +
+

Identify which program is managing the interface

+

New installations of Clear Linux* OS use NetworkManager as the default network +interface manager for all network connections.

+
+

Note

+
    +
  • The cloud Clear Linux OS images continue to use systemd-networkd to manage +network connections.

  • +
  • In earlier Clear Linux OS versions, systemd-network was used to manage Ethernet +interfaces and NetworkManager was used for wireless interfaces.

  • +
+
+

Before defining a configuration for assigning a static IP address, verify +which program is managing the network interface.

+
    +
  1. Check the output of nmcli device to see if NetworkManager is +managing the device.

    +
    nmcli device status
    +
    +
    +

    If the STATE column for the device shows connected or disconnected, the +network configuration is being managed by NetworkManager, then use the +instructions for using NetworkManager.

    +

    If the STATE column for the device shows unmanaged, then check if the +device is being managed by systemd-networkd.

    +
  2. +
  3. Check the output of networkctl list to see if +systemd-networkd is managing the device.

    +
    networkctl list
    +
    +
    +

    If the SETUP column for the device shows configured, the network +configuration is being managed by systemd-networkd, then use the +instructions for using systemd-networkd.

    +
  4. +
+
+
+

Using NetworkManager

+

Network connections managed by NetworkManager are stored as files with the +.nmconnection file extension in the +/etc/NetworkManager/system-connections/ directory.

+

A few tools exists to aid to manipulate network connections managed by +NetworkManager:

+
    +
  • nmcli - a command-line tool

  • +
  • nmtui - a text user interface that provides a pseudo graphical menu in the +terminal

  • +
  • nm-connection-editor - a graphical user interface

  • +
+

The method below uses the command line tool nmcli to modify network +connection.

+
    +
  1. Identify the existing connection name:

    +
    nmcli connection show
    +
    +
    +

    Sample output:

    +
    NAME                UUID                                  TYPE            DEVICE
    +Wired connection 1  00000000-0000-0000-0000-000000000000  802-3-etherneten01
    +
    +
    +

    If a connection does not exist, create it with the +nmcli connection add command.

    +
  2. +
  3. Modify the connection to use a static IP address. Replace the variables in +brackets with the appropriate values. Replace [CONNECTION_NAME] with the +NAME from the command above.

    +
    sudo nmcli connection modify "[CONNECTION_NAME]" \
    +ipv4.method "manual" \
    +ipv4.addresses "[IP_ADDRESS]/[CIDR_NETMASK]" \
    +ipv4.gateway "[GATEWAY_IP_ADDRESS]" \
    +ipv4.dns "[PRIMARY_DNS_IP],[SECONDARY_DNS_IP]"
    +
    +
    +

    See the nmcli developer page for more +configuration options. For advanced configurations, the +/etc/NetworkManager/system-connections/*.nmconnection. can be edited +directly.

    +
  4. +
  5. Restart the NetworkManager server to reload the DNS servers:

    +
    sudo systemctl restart NetworkManager
    +
    +
    +
  6. +
  7. Verify your static IP address details have been set:

    +
    nmcli
    +
    +
    +
  8. +
+
+
+

Using systemd-networkd

+

Network connections managed by systemd-networkd are stored as files with the +.network file extension the /etc/systemd/network/ directory.

+

Files to manipulate network connections managed by systemd-networkd must be +created manually.

+
    +
  1. Create the /etc/systemd/network directory if it does not already exist:

    +
    sudo mkdir -p /etc/systemd/network
    +
    +
    +
  2. +
  3. Create a .network file and add the following content. Replace the +variables in brackets with the appropriate values. Replace [INTERFACE_NAME] +with LINK from the output of the networkctl list command that was +run previously.

    +
    sudo $EDITOR /etc/systemd/network/70-static.network
    +
    +[Match]
    +Name=[INTERFACE_NAME]
    +
    +[Network]
    +Address=[IP_ADDRESS]/[CIDR_NETMASK]
    +Gateway=[GATEWAY_IP_ADDRESS]
    +DNS=[PRIMARY_DNS_IP]
    +DNS=[SECONDARY_DNS_IP]
    +
    +
    +

    See the systemd-network man page +for more configuration options.

    +
  4. +
  5. Restart the systemd-networkd service:

    +
    sudo systemctl restart systemd-networkd
    +
    +
    +
  6. +
  7. Verify your static IP address details have been set:

    +
    networkctl status
    +
    +
    +
  8. +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/network/dpdk.html b/guides/network/dpdk.html new file mode 100644 index 000000000..7bd18aaa4 --- /dev/null +++ b/guides/network/dpdk.html @@ -0,0 +1,1526 @@ + + + + + + + + + + Use DPDK to send packets between platforms — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Use DPDK to send packets between platforms

+

This guide describes how to send packets between two platforms.

+ +
+

Overview

+

Figure 1 shows how to send packets between two platforms in a simple +configuration. The example uses the Data Plane Development Kit, +which is a set of libraries, drivers, sample applications, and tools for fast +packet processing.

+
+Platform A and B +
+

Figure 1: Environment for l3fwd DPDK application

+
+
+

This example uses the following DPDK components:

+
    +
  • pktgen: Traffic generator. See pktgen documentation for details.

  • +
  • l3fwd: Layer 3 forwarding example application. See +l3fwd documentation for details.

  • +
+
+
+

Prerequisites

+
    +
  • Two platforms using Clear Linux* OS release 31130 or higher.

  • +
  • Both images must include the kernel-native bundle.

  • +
  • Install the following packages:

    +
    sudo swupd bundle-add network-basic-dev dpdk devpkg-dpdk
    +
    +
    +
  • +
  • Each platform must have at least one NIC. +Check the DPDK project for the list of supported dpdk.org NICs.

  • +
  • Two network cables.

  • +
+
+
+

Install dpdk and build l3fwd example (Platform B)

+
    +
  1. Change to the l3fwd example directory.

    +
    sudo cd /usr/share/dpdk/examples/l3fwd
    +
    +
    +
  2. +
  3. Assign RTE_SDK variable to the makefiles path.

    +
    sudo export RTE_SDK=/usr/share/dpdk/
    +
    +
    +
  4. +
  5. Assign RTE_TARGET variable to the location of the gcc* config +file.

    +
    sudo export RTE_TARGET=x86_64-native-linux-gcc
    +
    +
    +
  6. +
  7. Build the l3fwd application and add the configuration header to +the CFLAGS variable.

    +
    sudo make
    +
    +
    +
  8. +
+
+
+

Build pktgen (Platform A)

+
    +
  1. Download the pktgen tar package v3.1.2 or newer.

  2. +
  3. Decompress packages and move to uncompressed source directory.

  4. +
  5. Assign RTE_SDK variable to the path where makefiles are located.

    +
    sudo export RTE_SDK=/usr/share/dpdk/
    +
    +
    +
  6. +
  7. Assign RTE_TARGET to the location of the gcc config file.

    +
    sudo export RTE_TARGET=x86_64-native-linux-gcc
    +
    +
    +
  8. +
  9. Build the pktgen project and set the CONFIG_RTE_BUILD_SHARED_LIB variable +to “n”.

    +
    sudo make CONFIG_RTE_BUILD_SHARED_LIB=n
    +
    +
    +
  10. +
+
+
+

Bind NICs to DPDK kernel drivers (Platforms A and B)

+

The l3fwd application uses two NICs. The DPDK includes tools for binding +NICs to DPDK modules to run DPDK applications.

+
    +
  1. Load the DPDK I/O kernel module.

    +
    sudo modprobe vfio-pci
    +
    +
    +
  2. +
  3. Check the NIC status to determine which network cards are not +busy. When another application is using them, the status shows “Active”, +and those NICs cannot be bound.

    +
    sudo dpdk-devbind --status
    +
    +
    +
  4. +
  5. Bind two available NICs. The general syntax for binding is: +dpdk-devbind --bind=vfio-pci <device-entry>. +A working example is shown below:

    +
    sudo dpdk-devbind --bind=vfio-pci 01:00.0
    +
    +
    +
  6. +
  7. Check the NIC status to verify that the NICs are bound correctly. If +successful, drv displays the value igb_uio, which confirms +that the NICs are using the DPDK modules.

  8. +
+
+
+

Set hugepages (Platforms A and B)

+

Clear Linux OS supports hugepages for the large memory pool allocation used for +packet buffers.

+
    +
  1. Set the number of hugepages.

    +
    echo 1024 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
    +
    +
    +
  2. +
  3. Allocate pages on NUMA machines.

    +
    echo 1024 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
    +echo 1024 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
    +
    +
    +
  4. +
  5. Make memory available for DPDK.

    +
    sudo mkdir -p /mnt/huge $ mount -t hugetlbfs nodev /mnt/huge
    +
    +
    +

    For more information, refer to the DPDK guide System Requirements +section.

    +
  6. +
+
+
+

Set up the physical environment (Platforms A and B)

+

Connect the NICs on Platform A to the NICs on Platform B using the network +cables as shown in figure 2.

+
+../../_images/pyshical_net.png +
+

Figure 2: Physical network environment

+
+
+
+
+

Run l3fwd application (Platform B)

+

The l3fwd application is one of the DPDK examples available when you +install the dpdk-dev bundle. l3fwd forwards packets from one +NIC to another. For details, refer to the l3fwd documentation.

+
    +
  1. Open the l3fwd example directory.

    +
    sudo cd  /usr/share/dpdk/examples/l3fwd
    +
    +
    +
  2. +
  3. This step is very important.

    +
      +
    1. DPDK needs poll mode drivers to operate.

    2. +
    3. Poll mode drivers are shared objects in /usr/lib64.

    4. +
    5. See the full list of supported NICs at dpdk.org NICs.

    6. +
    7. You must know which kernel module each NIC is using and choose a poll +mode driver that corresponds to your NICs.

    8. +
    +
  4. +
  5. NIC binding and pktgen configuration depends upon network use cases and +available system resources. Use the -d flag to set the poll mode +driver.

    +

    The following example assumes that the NICs use the e1000 network driver +and the e1000 poll mode driver. The librte_pmd_e1000.so is +located in /usr/lib64 in Clear Linux OS.

    +
    sudo ./build/l3fwd -c 0x3 -n 2 -d librte_pmd_e1000.so -- -p 0x3 --config="(0,0,0),(1,0,1)"
    +
    +
    +
  6. +
  7. The l3fwd application shows port initialization details at startup. +After port 0 initialization completes, l3fwd shows a MAC address and +information for port 1.

    +

    Save the MAC address for configuring the pktgen project.

    +
  8. +
+
+
+

Run pktgen application (Platform A)

+

pktgen is a network traffic generator included in the DPDK.

+
    +
  1. pktgen configuration depends upon the network setup and the +available system resources. The following example shows a basic +configuration.

    +
    sudo ./app/app/x86_64-native-linux-gcc/pktgen -c 0xf -n 4 -- -p 0xf -P -m "1.0, 2.1"
    +
    +
    +
  2. +
  3. Enable active colorful output (optional).

    +
    Pktgen> theme enable
    +
    +
    +
  4. +
  5. Use the MAC addresses shown by the l3fwd application during initialization. +The command to set the MAC addresses in pktgen has the format:

    +
    set mac <port number> <mac address>
    +
    +
    +

    Here is a working example:

    +
    Pktgen> set mac 0 00:1E:67:CB:E8:C9
    +Pktgen> set mac 1 00:1E:67:CB:E8:C9
    +
    +
    +
  6. +
  7. Send packets.

    +
    Pktgen> start 0-1
    +
    +
    +
  8. +
+

For more details, see the pktgen documentation.

+
+
+

Appendix A: Use pass-through for virtual machines

+

This section explains how to set up a virtual environment where virtual +machines control the NICs on the host.

+
    +
  1. Create a new directory and move to it.

  2. +
  3. Download or create a start_qemu.sh script for running a kvm virtual +machine:

    +
    sudo curl -O https://cdn.download.clearlinux.org/image/start_qemu.sh
    +
    +
    +
  4. +
  5. Download a bare-metal image of Clear Linux OS and rename it as clear.img.

  6. +
  7. Look for an Ethernet* device entry that contains vendor and device ID:

    +
    sudo lspci -nn | grep Ethernet
    +
    +
    +

    An example output:

    +
    03:00.0 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521]
    +
    +
    +

    where 03:00.0 is the device entry and 8086:1521 is the vendor:device +ID. Record this information, because you need it to unbind the NICs from a +host.

    +
  8. +
  9. Unbind the NICs from the host to do pass-through with virtual machines. Clear Linux OS +supports this action. The commands take the format:

    +
    echo "vendor device_ID" > /sys/bus/pci/drivers/pci-stub/new_id
    +echo "entry for device" > /sys/bus/pci/drivers/igb/unbind
    +echo "entry for device" > /sys/bus/pci/drivers/pci-stub/bind
    +echo "vendor device_ID" > /sys/bus/pci/drivers/pci-stub/remove_id
    +
    +
    +

    Here is a working example:

    +
    echo "8086 1521" | sudo tee /sys/bus/pci/drivers/pci-stub/new_id
    +echo "0000:03:00.0" | sudo tee /sys/bus/pci/drivers/igb/unbind
    +echo "0000:03:00.0" | sudo tee /sys/bus/pci/drivers/pci-stub/bind
    +echo "8086 1521" | sudo tee /sys/bus/pci/drivers/pci-stub/remove_id
    +
    +
    +
  10. +
  11. Assign the unbound NICs to the KVM virtual machine (guest). +Modify the start_qemu.sh script in qemu-system-x86_64 arguments, and +add the lines with the host’s NICs information in the format:

    +
    -device pci-assign,host="<entry for device>",id=passnic0,addr=03.0
    +-device pci-assign,host="<entry for device>",id=passnic1,addr=04.0
    +
    +
    +

    Here is a working example:

    +
    -device pci-assign,host=03:00.0,id=passnic0,addr=03.0 \
    +-device pci-assign,host=03:00.3,id=passnic1,addr=04.0 \
    +
    +
    +
  12. +
  13. Add more NUMA machines to the virtual machine by adding lines to the +Makefile boot target in the format:

    +
    -numa node,mem=<memory>,cpus=<number of cpus>
    +
    +
    +

    Here is a working example for a virtual machine with 4096 memory and four +CPUs:

    +
    -numa node,mem=2048,cpus=0-1 \
    +-numa node,mem=2048,cpus=2-3 \
    +
    +
    +
    +

    Note

    +

    Each NUMA machine must use the same quantity of memory.

    +
    +
  14. +
  15. Run the start_qemu.sh script.

  16. +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/network/firewall.html b/guides/network/firewall.html new file mode 100644 index 000000000..1f11c367e --- /dev/null +++ b/guides/network/firewall.html @@ -0,0 +1,1384 @@ + + + + + + + + + + Firewall — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Firewall

+

Firewalls control access to and from systems based on network packet +attributes like IP address, port, payload and more.

+

The Netfilter framework in the Linux kernel +performs packet filtering and provides the means for implementing a software +firewall in Linux. Clear Linux* OS has a couple different firewall front-end options +for managing the Linux firewall.

+ +
+

Default ruleset

+

Clear Linux OS does not impose a firewall policy out of the box. All traffic is allowed +inbound and all traffic is allowed outbound. However, tallow is installed +by default and may dynamically create a rule temporarily restricting access +from external hosts.

+
+

Warning

+

Changing firewall configuration can cause abrupt network disconnection. If +this happens on a remote host, local recovery may be required.

+

Be sure to test your firewall configuration before committing it +permanently to ensure your system will remain accessible remotely, if +required.

+
+
+
+

Firewall software

+
+

iptables

+

iptables is a well-known user-space administration tool for +configuring IPv4 Linux firewall rules. ip6tables is the +complimentary tool for configuring IPv6 Linux firewall rules.

+

Below is information on using iptables on Clear Linux OS:

+
    +
  1. Make sure the iptables bundle is installed

    +
    sudo swupd bundle-add iptables
    +
    +
    +
  2. +
  3. Define new iptables rules/chains for the running configuration using the +iptables command. See man iptables for iptables +concepts and configuration options.

    +

    Below is a common restrictive firewall configuration which denies all +incoming connections, unless the connection was initiated by the host.

    +
    # Set default chain policies
    +sudo iptables -P INPUT DROP
    +sudo iptables -P FORWARD DROP
    +sudo iptables -P OUTPUT ACCEPT
    +
    +# Accept on localhost loopback device
    +sudo iptables -A INPUT -i lo -j ACCEPT
    +sudo iptables -A OUTPUT -o lo -j ACCEPT
    +
    +# Allow established sessions to receive traffic
    +sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    +
    +
    +
  4. +
  5. Test the running firewall configuration to make sure it behaving as +you expect.

  6. +
  7. Run the iptables-save service to make the running configuration +persistent. This will perform a one-time save of the running configuration +to /etc/iptables.rules :

    +
    sudo systemctl start iptables-save
    +
    +
    +
  8. +
  9. Enable the iptables-resolve service the iptables rules to be +automatically applied at boot from the /etc/iptables.rules file:

    +
    sudo systemctl enable iptables-restore.service
    +
    +
    +
  10. +
+
+
+

ipset

+

ipset is a framework in the Linux kernel for +storing and efficiently indexing combinations of IP addresses, networks, +(TCP/UDP) port numbers, MAC addresses, and interface names.

+

IP sets makes writing network policy rules simpler and processing them against +a large and/or changing sets of hosts more efficient.

+

By themselves, IP sets do not enforce network traffic rules but can be used to +extend iptables rules for matching. It is important to note that the ipset +must be defined before a netfilter rule can match against it.

+
    +
  • Running IP sets can be manipulated with the ipset utility.

  • +
  • Custom IP sets can be stored in the /etc/ipset.conf file

  • +
  • IP sets in /etc/ipset.conf can be automatically applied at boot by +enabling the ipset service with the command sudo systemctl +enable ipset.

  • +
+

See man ipset to learn more about using ipsets.

+
+
+

firewalld

+

firewalld is based on nftables, the successor to +iptables and parts of the netfilter framework. The description of firewalld +helps highlight some of the differences compared to iptables:

+
+

firewalld provides a dynamically managed firewall with support for +network/firewall zones to define the trust level of network connections or +interfaces. It has support for IPv4, IPv6 firewall settings and for +ethernet bridges and has a separation of runtime and permanent +configuration options. It also supports an interface for services or +applications to add firewall rules directly.

+
+

See man firewalld for more information.

+

Below is information on using firewalld on Clear Linux OS:

+
    +
  1. Install he firewalld bundle:

    +
    sudo swupd bundle-add firewalld
    +
    +
    +
  2. +
  3. Disable iptables and ipset services as they conflict with firewalld:

    +
    sudo systemctl mask iptables-restore ipset
    +
    +
    +
  4. +
  5. firewall-cmd can be used to configure the running or permanent +firewall configuration. See the firewalld documentation to learn more about +firewalld concepts and configuration options.

    +

    Below is a common example to allow HTTPS traffic in public zones:

    +
    sudo firewall-cmd --permanent --zone=public --add-service=https
    +
    +
    +
  6. +
  7. Enable the firewalld service the so that the firewalld daemon is +automatically started and rules applied at boot from the +/etc/firewalld/* file:

    +
    sudo systemctl enable --now firewalld.service
    +
    +
    +
  8. +
  9. Verify that firewalld is running:

    +
    sudo firewall-cmd --state
    +
    +
    +
  10. +
+
+
+
+

Troubleshooting

+

When troubleshooting connectivity issues that may be related to firewall +rules.

+
    +
  • Consider restrictions at the physical network level.

  • +
  • For inbound connections, make sure your application is listening on the +network port you’re expecting with lsof or netstat.

  • +
  • For outbound connections, make sure the destination host is responding to +the network port you’re expecting with nc. If the connection is +refused, then there may be a problem with the destination server.

  • +
  • If you’re using firewalld, check the daemon status with the command: +systemctl status firewalld.

  • +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/network/network-bonding.html b/guides/network/network-bonding.html new file mode 100644 index 000000000..b2e1255fe --- /dev/null +++ b/guides/network/network-bonding.html @@ -0,0 +1,1316 @@ + + + + + + + + + + Combine multiple interfaces with network bonding — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Combine multiple interfaces with network bonding

+

This guide describes how to configure systemd to use the bonding +driver.

+

Network bonding combines multiple network interfaces into a single logical +interface to provide redundancy and bandwidth aggregation.

+

Clear Linux* OS includes the Linux Bonding driver and Team driver .

+

The example demonstrates how to:

+
    +
  • Bond all four ports of a quad-port NIC in 802.3ad mode.

  • +
  • Enable jumbo frames to optimize large data transfers on the local network.

  • +
+

Your NICs and network switch must support 802.3ad mode and jumbo frames. The +example explains how to configure your NICs for both features. Your switch may +require additional configuration. See your switch documentation for details.

+
+

Note

+

You must run all commands in this guide as root.

+
+
    +
  1. Log in and get root privileges.

    +
    sudo -s
    +
    +
    +
  2. +
  3. Create the /etc/systemd/network directory.

    +
    mkdir -p /etc/systemd/network
    +
    +
    +

    The /etc/systemd/network directory contains configuration files and +network settings for the virtual device and its underlying physical +interfaces.

    +
  4. +
  5. Configure systemd to create a virtual network device called bond1. Use a +text editor to create a file named 30-bond1.netdev.

    +
    [NetDev]
    +Name=bond1
    +Kind=bond
    +
    +[Bond]
    +Mode=802.3ad
    +TransmitHashPolicy=layer3+4
    +MIIMonitorSec=1s
    +LACPTransmitRate=fast
    +
    +
    +

    Refer to the systemd.netdev manpage for 30-bond1.netdev file +syntax. This example is based on Example 9 on the manpage. Modify the +example for your configuration.

    +
  6. +
  7. Configure the slave interfaces. Create a text file named +30-bond1-enp1s0.network. Assign the slave interfaces to the virtual +bond1 device and use the syntax shown in systemd.network.

    +
    [Match]
    +Name=enp1s0f*
    +
    +[Network]
    +Bond=bond1
    +
    +[Link]
    +MTUBytes=9000
    +
    +
    +

    The example bonds all four ports of a quad-port NIC as a slave of bond1. +The example uses a wildcard match because the NIC names are in the range +enp1s0f0-enp1s0f3. If your NIC names are not wildcard-compatible, create +a separate .network file for each NIC.

    +

    For best results, do not assign addresses or DHCP support to the individual +NICs.

    +

    The MTUBytes setting enables jumbo frames of up to 9000 bytes. Your +switch may require additional configuration to support this setting.

    +
  8. +
  9. Configure the bonded interface in a file named 30-bond1.network.

    +
    [Match]
    +Name=bond1
    +
    +[Network]
    +BindCarrier=enp1s0f0 enp1s0f1 enp1s0f2 enp1s0f3
    +Address=192.168.1.201/24
    +
    +[Link]
    +MTUBytes=9000
    +
    +
    +

    bond1 is a virtual interface with no physical link status.

    +

    BindCarrier indicates that the bond1 link status is determined by the +status of the listed slave devices.

    +

    Address contains an IP address that you assign to the logical interface. +DHCP bonded interfaces are complex and outside the scope of this example.

    +

    MTUBytes must be set to 9000 on all slave interfaces and on the bonded +interface for successful jumbo frames operation. If MTUBytes is not the +same on all interfaces, then the lowest value is used.

    +
  10. +
  11. Apply the new network configuration with the command:

    +
    systemctl restart systemd-networkd
    +
    +
    +

    The MTUBytes settings do not take effect until you reboot or manually +apply the settings with a utility such as ifconfig.

    +
  12. +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/network/openssh-server.html b/guides/network/openssh-server.html new file mode 100644 index 000000000..83ba06533 --- /dev/null +++ b/guides/network/openssh-server.html @@ -0,0 +1,1353 @@ + + + + + + + + + + Enable and configure SSH service — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Enable and configure SSH service

+

This guide describes how to set up the SSH service.

+ +
+

Overview

+

The openssh-server bundle provides the OpenSSH package that +enables an SSH service in Clear Linux* OS. Remote users require an SSH service to be +able to use an encrypted login shell. The SSH daemon has all of its configuration built in and no template configuration file is present on the file system.

+

Clear Linux OS enables the sshd.socket unit, which listens on port 22 by default +and starts the OpenSSH service as required. The first time OpenSSH starts, it +generates the server SSH keys needed for the service.

+
+
+

Prerequisites

+

Ensure the openssh-server bundle is installed.

+

To list all bundles on your host, enter:

+
sudo swupd bundle-list
+
+
+

To add the openssh-server bundle, enter:

+
sudo swupd bundle-add openssh-server
+
+
+
+
+

Change default port

+

Perform the following steps to change the default listening port for the +OpenSSH service.

+
    +
  1. Open the sshd.socket file:

    +
    sudo systemctl edit sshd.socket
    +
    +
    +
  2. +
  3. Add the [Socket] section and ListenStream option to the sshd.socket +file as shown below. The first ListenStream entry removes the Clear Linux OS +default listen port value. The second ListenStream entry sets the new +default listen port value. In this example, we set the new default port +to 4200:

    +
    [Socket]
    +ListenStream=
    +ListenStream=4200
    +
    +
    +

    Make sure to include a new line after the last line of text in the sshd.socket file.

    +
  4. +
  5. Verify your changes:

    +
    cat /etc/systemd/system/sshd.socket.d/override.conf
    +
    +
    +

    The following output is displayed:

    +
    [Socket]
    +ListenStream=
    +ListenStream=4200
    +
    +
    +
  6. +
  7. Reload the systemd daemon configurations:

    +
    sudo systemctl daemon-reload
    +
    +
    +
  8. +
  9. Restart the sshd.socket unit:

    +
    sudo systemctl restart sshd.socket
    +
    +
    +
  10. +
  11. Confirm the sshd.socket unit is listening on your new port:

    +
    sudo systemctl status sshd.socket
    +
    +
    +
    +

    Note

    +

    Output should show Active: as active(listening).

    +
    +
  12. +
+
+
+

Enable SFTP

+

Clear Linux OS disables the SFTP subsystem by +default due to security considerations. To enable the SFTP subsystem, you can +configure the /etc/ssh/sshd_config file.

+
    +
  1. Create the following file, if it does not already exist: +/etc/ssh/sshd_config

  2. +
  3. Add the the SFTP subsystem in /etc/ssh/sshd_config:

    +
    subsystem sftp /usr/libexec/sftp-server
    +
    +
    +
  4. +
+

Congratulations! The SFTP subsystem is enabled. You do not need to restart the sshd service.

+
+
+

Enable root login

+

To enable root login via SSH, perform the following steps:

+
    +
  1. Create the following file, if it does not already exist: +/etc/ssh/sshd_config

  2. +
  3. Set the configuration variable in /etc/ssh/sshd_config:

    +
    PermitRootLogin yes
    +
    +
    +
  4. +
+

You have now enabled root login on your system. You do not need to restart the sshd service.

+
+
+

Enable X11-forwarding

+

X11 forwarding allows you to securely run graphical applications (that is, X +clients) over the SSH connection. This enables remote GUI apps without the need +for full VNC or remote desktop setup. To enable X11-forwarding via SSH, +perform the following steps:

+
    +
  1. Create the following file, if it does not already exist: +/etc/ssh/sshd_config

  2. +
  3. Set the following configuration variables.

    +
    AllowTcpForwarding yes
    +X11UseLocalhost yes
    +X11DisplayOffset 10
    +X11Forwarding yes
    +
    +
    +
  4. +
+

You have now enabled X11-forwarding! You do not need to restart the sshd service.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/network/proxy.html b/guides/network/proxy.html new file mode 100644 index 000000000..eb5b61c1c --- /dev/null +++ b/guides/network/proxy.html @@ -0,0 +1,1317 @@ + + + + + + + + + + Proxy Configuration — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Proxy Configuration

+

When working behind a corporate proxy server, one typically has to configure +proxy settings for applications to reach the Internet. Clear Linux* OS has +implemented an Autoproxy feature to try and eliminate manual +configurations as much as possible. However, there are still some applications +that cannot take full advantage of the Autoproxy feature due to their +own ways of configuring proxy settings. This guide shows you how to configure +proxy settings for some of the known applications manually.

+ +
+

Prerequisites

+
    +
  • You have installed Clear Linux OS on your host system.

    +

    For detailed instructions on installing Clear Linux OS on a bare metal system, visit +the bare metal installation guide.

    +
  • +
+
+

General proxy settings for many applications

+
    +
  1. First, apply these general proxy settings which should work for many +applications. If they do not work for a specific application, such as the +ones listed below, apply application-specific proxy settings as needed.

    +

    Proxy settings:

    +
    export http_proxy=http://<YOUR.HTTP-PROXY.URL:PORT>
    +export https_proxy=http://<YOUR.HTTPS-PROXY.URL:PORT>
    +export ftp_proxy=http://<YOUR.FTP-PROXY.URL:PORT>
    +export socks_proxy=http://<YOUR.SOCKS-PROXY.URL:PORT>
    +export no_proxy="<YOUR-DOMAIN>,localhost"
    +export HTTP_PROXY=$http_proxy
    +export HTTPS_PROXY=$https_proxy
    +export FTP_PROXY=$ftp_proxy
    +export SOCKS_PROXY=$socks_proxy
    +export NO_PROXY=$no_proxy
    +
    +
    +
      +
    • User-specific, put them in $HOME/.bashrc.

    • +
    • For all users, put them in /etc/profile.d/proxy.conf.

    • +
    +
  2. +
  3. For the proxies to take effect, either source the file manually +or log out and log back in.

  4. +
+
+
+

Docker*

+

Please refer the official Docker links on how to configure proxies:

+ +
+
+

git over SSH

+

Add the following to your ~/.ssh/config file:

+
host github.com
+     port 22
+     user git
+     ProxyCommand connect-proxy -S <YOUR.SSH-PROXY.URL:PORT> %h %p
+
+
+
+

Note

+

Though netcat is included with Clear Linux OS, it is not the BSD version, +which is the one usually used to enable git over SSH.

+
+
+
+

autospec/mock

+

autospec uses mock to do builds. Configure mock’s proxy settings with +these steps:

+
    +
  1. Override the general mock configuration file with a custom one, otherwise +your settings will get overwritten each time autospec is updated.

    +
    sudo mkdir -p /etc/mock
    +sudo cp ~/clearlinux/projects/common/conf/clear.cfg /etc/mock/clear-custom.cfg
    +
    +
    +
  2. +
  3. sudoedit /etc/mock/clear-custom.cfg and add the highlighted +lines.

    +
    ...
    +config_opts['use_bootstrap_container'] = False
    +config_opts['http_proxy'] = '<YOUR.HTTP.PROXY.URL>:<PORT>'
    +config_opts['https_proxy'] = '<YOUR.HTTPS.PROXY.URL>:<PORT>'
    +config_opts['no_proxy'] = '<YOUR.DOMAIN>,192.168.0.0/16,localhost,127.0.0.0/8'
    +
    +
    +
  4. +
+
+
+

Kubernetes

+

See Setting proxy servers for Kubernetes.

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/network/time.html b/guides/network/time.html new file mode 100644 index 000000000..97211a58c --- /dev/null +++ b/guides/network/time.html @@ -0,0 +1,1262 @@ + + + + + + + + + + Set system time — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Set system time

+

This guide describes how to reset the time in your Clear Linux* OS system when +the default NTP servers cannot be reached.

+

Clear Linux OS uses the systemd-timesyncd.service daemon to synchronize time.

+
    +
  1. Install the sysadmin-basic bundle.

    +
    sudo swupd bundle-add sysadmin-basic
    +
    +
    +
  2. +
  3. Set your time zone. This example uses Los Angeles.

    +
    timedatectl set-timezone America/Los_Angeles
    +
    +
    +
    +

    Note

    +

    To see a list of time zones, use the command: +timedatectl list-timezones | grep <locale>

    +
    +
  4. +
  5. Create a /etc/systemd/ directory.

    +
    sudo mkdir -p /etc/systemd/
    +
    +
    +
  6. +
  7. Create a new file named /etc/systemd/timesyncd.conf and enter the +following text.

    +
    [Time]
    +NTP=<Preferred Server>
    +FallbackNTP=<backup server 1> <backup server 2>
    +
    +
    +
  8. +
  9. Enable the systemd-timesyncd service.

    +
    sudo timedatectl set-ntp true
    +
    +
    +
  10. +
+
+

Note

+

To check the service status, use the timedatectl status command.

+

To restart the timesyncd daemon, enter systemctl restart +systemd-timesyncd into your terminal emulator.

+
+

Congratulations! You successfully set up the time in your Clear Linux OS system.

+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/network/vnc.html b/guides/network/vnc.html new file mode 100644 index 000000000..5be00edc1 --- /dev/null +++ b/guides/network/vnc.html @@ -0,0 +1,1961 @@ + + + + + + + + + + Remote-desktop to a host using VNC — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Remote-desktop to a host using VNC

+

This guide describes how to use VNC to +connect to a remote Clear Linux* OS host.

+

VNC is a client-server GUI-based tool that allows you to connect via +remote-desktop to your Clear Linux OS host.

+ +
+

Install the VNC server and misc. components on your host

+

To configure VNC to work on your Clear Linux OS host, install these bundles:

+
    +
  • desktop-autostart: Installs GDM, sets +it to start automatically on boot, and installs TigerVNC Viewer.

  • +
  • vnc-server: Installs the TigerVNC server.

  • +
+

Follow these steps:

+
    +
  1. Open a terminal window.

  2. +
  3. Install the Clear Linux OS bundles.

    +
    sudo swupd bundle-add desktop-autostart vnc-server
    +
    +
    +
  4. +
  5. Reboot your Clear Linux OS host.

  6. +
+
+
+

Configure a VNC-server-start method on your host

+

There are three methods you can use to configure and start the VNC server on +your Clear Linux OS host:

+ + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1: VNC-server-start Configuration Methods

Attribute

Method 1: Manually start a VNC session

Method 2: Automatically start a VNC session via a systemd service script

Method 3: Create multi-user logins with authentication through GDM

Description

This is the traditional method where you SSH into the Clear Linux OS host, manually +start a VNC session to get a display ID, and connect to it by +supplying the display ID.

The system administrator sets up a systemd service script for you with +a pre-assigned display ID. You make a VNC connection and supply +your pre-assigned display ID.

The system administrator configures GDM to accept connection requests. +When you make a VNC connection to the Clear Linux OS host, you see +the GDM login screen and authenticate as if you are local.

Who configures VNC settings?

You

System administrator

System administrator

Who starts VNC session?

You

Set to start automatically on boot by system administrator

Set to start automatically on boot by system administrator

Who ends VNC session?

You

You

System administrator can disable VNC service altogether

Requires VNC password to authenticate?

Yes

Yes

No. Use Clear Linux OS account username and password through GDM

+

Although all three methods can coexist on the same Clear Linux OS host, we recommend +you pick a method that suits your needs.

+

For simplicity, the rest of this guide refers to these methods as +Method 1, Method 2, and Method 3.

+
+

Method 1: Manually start a VNC session

+

You (and each user) must perform these steps to initialize your VNC settings.

+
    +
  1. Log in.

  2. +
  3. Open a terminal window.

  4. +
  5. Start VNC with the vncserver command. Since this is your +first time starting VNC, it adds default configuration files and asks you +to set a VNC password.

    +
    vncserver
    +
    +
    +

    Example output:

    +
    You will require a password to access your desktops.
    +
    +Password:
    +Verify:
    +Would you like to enter a view-only password (y/n)? n
    +xauth:  file /home/vnc-user-a/.Xauthority does not exist
    +
    +New 'clr-linux:2 (vnc-user-a)' desktop is clr-linux:2
    +
    +Creating default startup script /home/vnc-user-a/.vnc/xstartup
    +Creating default config /home/vnc-user-a/.vnc/config
    +Starting applications specified in /home/vnc-user-a/.vnc/xstartup
    +Log file is /home/vnc-user-a/.vnc/clr-linux:2.log
    +
    +
    +

    Upon completion, you can find the default configuration files and the +password file hidden in the .vnc directory in your home directory.

    +

    A VNC session starts and shows a unique display ID, which is the +number following the hostname and the colon “:”. In the above example, the +display ID is 2. In a later step, you will supply the display ID to +your VNC viewer app for connection.

    +
  6. +
  7. Kill the active VNC session for the time being with the +vncserver -kill :[display ID] command. Substitute [display ID] +with your active VNC session display ID. For example:

    +
    vncserver -kill :2
    +
    +
    +
    +

    Note

    +

    If you do not recall the active session display ID, use the +vncserver -list command to find it.

    +
    +
  8. +
  9. Optional configurations:

    +
      +
    • To customize settings such as screen size, security type, etc., +modify the $HOME/.vnc/config file.

    • +
    • To customize the applications to run at startup, modify the +$HOME/.vnc/xstartup file.

    • +
    +
  10. +
+
+
+

Method 2: Automatically start a VNC session via a systemd service script

+

To configure VNC for this method, you must have root privileges. You will +set up a systemd service file for all intended VNC users with their own +preassigned unique display ID.

+
    +
  1. Log in.

  2. +
  3. Make sure the user accounts already exist. Use the following command to +list all users.

    +
    sudo cut -d: -f1 /etc/passwd
    +
    +
    +
  4. +
  5. Create the path /etc/systemd/system.

    +
    sudo mkdir -p /etc/systemd/system
    +
    +
    +
  6. +
  7. Create a systemd service script file vncserver@:[X].service, +where [X] is the display ID, for each user in /etc/systemd/system +Each user must be assigned a unique display ID. Be sure the correct +username is entered in the User field. The example below shows user +vnc-user-b who is assigned the display ID 5.

    +
    sudo tee -a /etc/systemd/system/vncserver@:5.service << EOF
    +
    +[Unit]
    +Description=VNC Remote Desktop Service for "vnc-user-b" with display ID "5"
    +After=syslog.target network.target
    +
    +[Service]
    +Type=simple
    +User=vnc-user-b
    +PAMName=login
    +PIDFile=/home/%u/.vnc/%H%i.pid
    +ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    +ExecStart=/usr/bin/vncserver %i -geometry 2000x1200 -alwaysshared -fg
    +ExecStop=/usr/bin/vncserver -kill %i
    +
    +[Install]
    +WantedBy=multi-user.target
    +
    +EOF
    +
    +
    +
  8. +
  9. Have each user log into their account and set a VNC password with +the vncpasswd command before proceeding to the next step.

  10. +
  11. Start the VNC service script and set it to start automatically on +boot for each user. Replace the [X] with the display ID.

    +
    sudo systemctl daemon-reload
    +sudo systemctl enable vncserver@:[X].service
    +sudo systemctl start vncserver@:[X].service
    +
    +
    +
  12. +
  13. After starting the services, verify they are running.

    +
    systemctl | grep vnc
    +
    +
    +

    The example below shows 2 VNC sessions that were successfully started for +users vnc-user-b with display ID 5 and vnc-user-c with display ID 6.

    +
    systemctl | grep vnc
    +
    +vncserver@:5.services   loaded active running  VNC Remote Desktop Service for "vnc-user-b" with display ID "5"
    +vncserver@:6.services   loaded active running  VNC Remote Desktop Service for "vnc-user-c" with display ID "6"
    +system-vncserver.slice  loaded active active system-vncserver.slice
    +
    +
    +
  14. +
+
+
+

Method 3: Multi-user logins with authentication through GDM

+

For this method, VNC is configured as a systemd service that listens on port +5900 and GDM is configured to accept access requests from VNC. When you +make a VNC connection to your Clear Linux OS host, you are presented with the GDM login +screen and you authenticate as if you are local. You must have root privileges +to perform this configuration.

+
    +
  1. Log in.

  2. +
  3. Create the path /etc/systemd/system.

    +
    sudo mkdir -p /etc/systemd/system
    +
    +
    +
  4. +
  5. Create a systemd socket file xvnc.socket with the following content:

    +
    sudo tee -a /etc/systemd/system/xvnc.socket << EOF
    +
    +[Unit]
    +Description=XVNC Server on port 5900
    +
    +[Socket]
    +ListenStream=5900
    +Accept=yes
    +
    +[Install]
    +WantedBy=sockets.target
    +
    +EOF
    +
    +
    +
  6. +
  7. Create a systemd service file xvnc@.service with the following content:

    +
    sudo tee -a  /etc/systemd/system/xvnc@.service << EOF
    +
    +[Unit]
    +Description=Daemon for each XVNC connection
    +
    +[Service]
    +ExecStart=-/usr/bin/Xvnc -inetd -query localhost -geometry 2000x1200 -once -SecurityTypes=None
    +User=nobody
    +StandardInput=socket
    +StandardError=syslog
    +
    +EOF
    +
    +
    +
  8. +
  9. Create the path /etc/gdm.

    +
    sudo mkdir -p /etc/gdm
    +
    +
    +
  10. +
  11. Create a GDM custom.conf file with the following content:

    +
    sudo tee -a /etc/gdm/custom.conf << EOF
    +
    +[xdmcp]
    +Enable=true
    +Port=177
    +
    +EOF
    +
    +
    +
  12. +
  13. Start the VNC socket script and set it to start automatically on boot.

    +
    sudo systemctl daemon-reload
    +sudo systemctl enable xvnc.socket
    +sudo systemctl start xvnc.socket
    +
    +
    +
  14. +
  15. After starting the socket, verify it is running.

    +
    systemctl | grep vnc
    +
    +
    +

    The example below shows the xvnc.socket is running.

    +
    systemctl | grep vnc
    +
    +xvnc.socket               loaded active listening XVNC Server on port 5900
    +system-xvnc.slice         loaded active active    system-xvnc.slice
    +
    +
    +
  16. +
+

See the vncserver Man page for additional information.

+
+
+
+

Install a VNC viewer app and an SSH client on your client system

+

You need a VNC viewer app on your client system to connect to your Clear Linux OS host. +An SSH client is only needed if you chose to use Method 1 or you plan to +encrypt your VNC traffic, which is discussed later in this guide.

+

Perform the steps below to add these apps to your client system.

+
+

Install a VNC viewer app

+

On Clear Linux OS:

+
sudo swupd bundle-add desktop-autostart
+
+
+

On Ubuntu*, Mint*:

+
sudo apt-get install xtightvncviewer
+
+
+

On Fedora*:

+
sudo dnf install tigervnc
+
+
+

On Windows*:

+ +

On macOS*:

+ +
+
+

Install an SSH client

+
    +
  • On most Linux distros (Clear Linux OS, Ubuntu, Mint, Fedora, etc.) and macOS, +SSH is built-in so you don’t need to install it.

  • +
  • On Windows, you can install Putty.

  • +
+
+
+
+

Establish a VNC connection to your host

+

Depending on the VNC-server-configuration method chosen, use the appropriate VNC +connection:

+
    +
  • If you chose Method 1, you must take a few extra steps by using SSH to connect +to your Clear Linux OS host and then manually launching VNC.

  • +
  • If you chose Method 2, get your preassigned VNC display ID from your system +administrator first and then proceed to the Connect to your VNC session +section below.

  • +
  • If you chose Method 3, proceed to the Connect to your VNC session below.

  • +
+
+

SSH into your host and launch VNC

+
    +
  1. SSH into your Clear Linux OS host

    +
      +
    1. On Linux distros and macOS:

      +
      ssh [username]@[clear-linux-host-ip-address]
      +
      +
      +
    2. +
    3. On Windows:

      +
        +
      1. Launch Putty.

      2. +
      3. Under the Category section, select Session. +See Figure 1.

      4. +
      5. Enter the IP address of your Clear Linux OS host in the +Host Name (or IP address) field.

      6. +
      7. Set the Connection type option to SSH.

      8. +
      9. Click the Open button.

        +
        +Putty - configure SSH session settings +
        +

        Figure 1: Putty - configure SSH session settings

        +
        +
        +
      10. +
      +
    4. +
    +
  2. +
  3. Log in with your Clear Linux OS username and password. Do not use your VNC password.

  4. +
  5. Start a VNC session.

    +
    vncserver
    +
    +
    +

    Example output:

    +
    New 'clr-linux:3 (vnc-user-c)' desktop is clr-linux:3
    +
    +Starting applications specified in /home/vnc-user-c/.vnc/xstartup
    +Log file is /home/vnc-user-c/.vnc/clr-linux:3.log
    +
    +
    +
  6. +
  7. Take note of the generated display ID because you will input it into +the VNC viewer app to establish the connection. The above example shows +the display ID is 3.

    +
    +

    Note

    +

    VNC automatically picks a unique display ID unless you specify one. +To specify a display ID, enter a unique number that is not already +in use after the colon. For example:

    +
    vncserver :8
    +
    +
    +
    +
  8. +
  9. You can now end the SSH connection by logging out. This does +not terminate your active VNC session.

  10. +
+
+
+

Connect to your VNC session

+

For Method 1 and Method 2, you must connect to a specific active session +or display ID using one of two options:

+
    +
  • Use a fully-qualified VNC port number, which consists of the default VNC +server port (5900) plus the display ID

  • +
  • Use the display ID

  • +
+

For example, if the display ID is 3, it can be specified as 5903 or just +as 3. For Method 3, VNC does not expect a display ID. Use 5900. For simplicity, +the instructions below use the fully-qualified VNC port number.

+

On Linux distros:

+
    +
  1. Open a terminal window and enter:

    +
    vncviewer [clear-linux-host-ip-address]:[fully-qualified VNC port  number]
    +
    +
    +
  2. +
  3. Enter your credentials.

    +
      +
    • For Method 1 and Method 2, enter your VNC password. No username is +required.

    • +
    • For Method 3, enter your Clear Linux OS account username and password through +GDM.

      +
      +

      Note

      +

      With Method 3, you cannot remotely log into your Clear Linux OS host through +VNC if you are logged in locally and vice versa.

      +
      +
    • +
    +
  4. +
+

On Windows and macOS using RealVNC app:

+
    +
  1. Start the RealVNC viewer app. See Figure 2.

  2. +
  3. Enter the IP address of the Clear Linux OS host and the fully-qualified +VNC port number.

    +

    The following screenshot shows connecting to Clear Linux OS host +192.168.25.54 with a fully-qualified VNC port number 5902.

    +
    +RealVNC Viewer +
    +

    Figure 2: RealVNC Viewer

    +
    +
    +
  4. +
  5. Press the Enter key.

  6. +
  7. Enter your credentials.

    +
      +
    • For Method 1 and Method 2, enter your VNC password. No username is +required.

    • +
    • For Method 3, enter your Clear Linux OS account username and password through +GDM.

      +
      +

      Note

      +

      With Method 3, you cannot remotely log into your Clear Linux OS host through +VNC if you are logged in locally and vice versa.

      +
      +
    • +
    +
  8. +
+
+

Optional: Configure RealVNC Image Quality

+

To increase the RealVNC viewer image quality, manually change the ColorLevel +value. Follow these steps:

+
    +
  1. Right-click a connection node and select Properties…. +See Figure 3.

    +
    +RealVNC Viewer - change connection node properties +
    +

    Figure 3: RealVNC Viewer - change connection node properties

    +
    +
    +
  2. +
  3. Select the Expert tab. See Figure 4.

  4. +
  5. Select the ColorLevel setting and change it to your +preferred setting.

    +
    +RealVNC Viewer - change ColorLevel +
    +

    Figure 4: RealVNC Viewer - change ColorLevel

    +
    +
    +
  6. +
+
+
+
+
+

Terminate a VNC connection to your host

+

For Method 1 and Method 2, once started, a VNC session remains active +on your Clear Linux OS host even if you close your VNC viewer app. If you want to +truly terminate an active VNC session, follow these steps:

+
    +
  1. SSH into your Clear Linux OS host.

  2. +
  3. Open a terminal window.

  4. +
  5. Find the active VNC session display ID with the command +vncserver -list.

    +
    vncserver -list
    +
    +
    +
  6. +
  7. Terminate it with the vncserver -kill command followed by a +colon and the display ID.

    +
    vncserver -kill :[display ID]
    +
    +
    +
  8. +
  9. For Method 3, only the system administrator can stop and disable the +VNC service by using these commands:

    +
    sudo systemctl stop xvnc.socket
    +sudo systemctl disable xnvc.socket
    +
    +
    +
  10. +
+
+
+

Encrypt VNC traffic through an SSH tunnel

+

By default, VNC traffic is not encrypted. Figure 5 shows an example warning +from RealVNC Viewer.

+
+RealVNC Viewer - Connection not encrypted warning +
+

Figure 5: RealVNC Viewer - Connection not encrypted warning

+
+
+

To add security, VNC traffic can be routed through an SSH tunnel. This is +accomplished by following these steps:

+
    +
  1. Configure the VNC server to only accept connection from localhost by +adding the -localhost option.

  2. +
  3. Set up an SSH tunnel between your client system and your Clear Linux OS host. +Your client system will forward traffic from the localhost (the client) +destined for a specified fully-qualified VNC port number (on the client) +to your Clear Linux OS host with the same port number.

  4. +
  5. The VNC viewer app on your client system will now connect to localhost, +instead of the IP address of your Clear Linux OS host.

  6. +
+
+

Configure VNC to only accept connection from localhost

+

For Method 1:

+
    +
  1. Edit the config file located in $HOME/.vnc and uncomment +the # localhost line. It should look like this:

    +
    ## Supported server options to pass to vncserver upon invocation can be listed
    +## in this file. See the following manpages for more: vncserver(1)
    +Xvnc(1).
    +## Several common ones are shown below. Uncomment and modify to your liking.
    +##
    +# securitytypes=vncauth,tlsvnc
    +# desktop=sandbox
    +# geometry=2000x1200
    +localhost
    +# alwaysshared
    +
    +
    +
  2. +
  3. If an active session exists, kill it, and then restart it.

  4. +
+

For Method 2:

+
    +
  1. Edit the systemd service script vncserver@:[X].service located in +/etc/systemd/system and add -localhost to the ExecStart +line. The example below uses vncserver@:5.service:

    +
    [Unit]
    +Description=VNC Remote Desktop Service for "vnc-user-b" with display ID "5"
    +After=syslog.target network.target
    +
    +[Service]
    +Type=simple
    +User=vnc-user-b
    +PAMName=login
    +PIDFile=/home/%u/.vnc/%H%i.pid
    +ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    +ExecStart=/usr/bin/vncserver %i -geometry 2000x1200 -localhost -alwaysshared -fg
    +ExecStop=/usr/bin/vncserver -kill %i
    +
    +[Install]
    +WantedBy=multi-user.target
    +
    +
    +
  2. +
  3. Restart the service script:

    +
    sudo systemctl daemon-reload
    +sudo systemctl restart vncserver@:5.service
    +
    +
    +
  4. +
+

For Method 3:

+
    +
  1. No change is needed to the xvnc@service script.

    +

    After you have restarted your VNC session, you can verify that it only +accepts connections from localhost by using the netstat +command like this:

    +
    netstat -plant
    +
    +
    +
    +

    Note

    +

    Add the Clear Linux OS network-basic bundle to get the netstat +command.

    +
    +
  2. +
+

Figure 6 shows two VNC sessions (5901 and 5905) accepting connections from +any host as specified by the 0.0.0.0’s. This is before the +-localhost option was used.

+
+VNC session accepting connection from any host +
+

Figure 6: VNC sessions (5901 and 5905) accepting connections from any host

+
+
+

Figure 7 shows two VNC sessions (5901 and 5905) only accepting connections from +localhost as specified by 127.0.0.1’s. This is after the +-localhost option was used.

+
+VNC session only accepting connection from localhost +
+

Figure 7: VNC sessions (5901 and 5905) only accepting connections from localhost

+
+
+
+
+

Set up an SSH tunnel from your client system to your Clear Linux OS host

+

On Linux distros and macOS:

+
    +
  1. Open terminal window and enter:

    +
    ssh -L [client port number]:localhost:[fully-qualified VNC port number] \
    +-N -f -l [username] [clear-linux-host-ip-address]
    +
    +
    +
  2. +
  3. Enter your Clear Linux OS account password (not your VNC password).

    +
    +

    Note

    +
      +
    • -L specifies that [client port number] on the localhost (on the +client side) is forwarded to [fully-qualified VNC port number] +(on the server side).

    • +
    • Replace [client port number] with an available client port number +(for example: 1234). For simplicity, you can make the +[client port number] the same as the [fully-qualified VNC port number].

    • +
    • Replace [fully-qualified VNC port number] with 5900 (default VNC +port) plus the display ID. For example, if the display ID is 2, +the fully-qualified VNC port number is is 5902.

    • +
    • -N tells SSH to only forward ports and not execute a remote +command.

    • +
    • -f tells SSH to go into the background before command execution.

    • +
    • -l specifies the username to log in as.

    • +
    +
    +
  4. +
+

On Windows:

+
    +
  1. Launch Putty.

  2. +
  3. Specify the Clear Linux OS VNC host to connect to.

    +
      +
    1. Under the Category section, select Session. +See Figure 1.

    2. +
    3. Enter the IP address of your Clear Linux OS host in the +Host Name (or IP address) field.

    4. +
    5. Set the Connection type option to SSH.

    6. +
    +
  4. +
  5. Configure the SSH tunnel. See Figure 8 for an example.

    +
      +
    1. Under the Category section, go to +Connection > SSH > Tunnels.

    2. +
    3. In the Source port field, enter an available client +port number (for example: 1234). For simplicity, you can make the +Source port the same as the fully-qualified VNC port number.

    4. +
    5. In the Destination field, enter +localhost: plus the fully-qualified VNC port number.

    6. +
    7. Click the Add button.

      +
      +Putty - configure SSH tunnel +
      +

      Figure 8: Putty - configure SSH tunnel

      +
      +
      +
    8. +
    +
  6. +
  7. Click the Open button.

  8. +
  9. Enter your Clear Linux OS account password (not your VNC password).

  10. +
+
+
+

Connect to a VNC session through an SSH tunnel

+

After you have set up an SSH tunnel, follow these instructions to connect to +your VNC session.

+

On Linux distros:

+
    +
  1. Open terminal window and enter:

    +
    vncviewer localhost:[client port number]
    +
    +
    +
  2. +
+

On Windows and macOS using `RealVNC`:

+
    +
  1. Start the RealVNC viewer app.

  2. +
  3. Enter localhost and the fully-qualified VNC port number. See Figure 9 +for an example.

    +
    +RealVNC viewer app connecting to localhost:1234 +
    +

    Figure 9: RealVNC viewer app connecting to localhost:1234

    +
    +
    +

    Note

    +

    RealVNC will still warn that the connection is not encrypted even +though its traffic is going through the SSH tunnel. You can ignore +this warning.

    +
    +
    +
    +
    +
  4. +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/guides/network/wifi.html b/guides/network/wifi.html new file mode 100644 index 000000000..62ccd56d3 --- /dev/null +++ b/guides/network/wifi.html @@ -0,0 +1,1491 @@ + + + + + + + + + + Configure Wi-Fi — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Configure Wi-Fi

+

We recommend using NetworkManager to +manage wireless network connections. If you choose to connect to Wi-Fi while +using the live installer image, your Wi-Fi +settings will be added to your system during the installation process.

+

NetworkManager provides three simple methods for configuring Wi-Fi: Desktop, +CLI, and TUI. NetworkManager uses wpa_supplicant, which can also be +used on its own for a more lightweight installation.

+ +
+

Using Network Manager

+
+

Desktop GUI (Graphical User Interface)

+
    +
  1. Click anywhere on the icons at the right side of the top of the screen to +bring up a menu and click on Wi-Fi Not Connected then choose +Select Network.

    +
    +../../_images/wifi-1.1.png +
    +
  2. +
  3. Scroll through the list and select the network you’d like to connect to and +click Connect.

    +
    +../../_images/wifi-2.png +
    +
  4. +
  5. Enter the password and click Connect.

    +
    +../../_images/wifi-3.png +
    +
  6. +
  7. The Wi-Fi icon should now show the signal strength of the connection.

    +
    +../../_images/wifi-4.png +
    +
  8. +
  9. If you are installing using the live image, resume the +installation process now. Your Wi-Fi +configuration will automatically be included in the install.

    +
    +../../_images/wifi-5.png +
    +
  10. +
+
+
+

CLI (Command Line Interface)

+
    +
  1. List the available Wi-Fi networks

    +
    nmcli device wifi list
    +
    +
    +
    IN-USE  SSID                           MODE   CHAN  RATE        SIGNAL  BARS  SECURITY
    +        1st Network                    Infra  1     54 Mbit/s   65      ▂▄▆_  --
    +        2nd Network                    Infra  1     130 Mbit/s  52      ▂▄__  --
    +        3rd Network                    Infra  10    195 Mbit/s  29      ▂___  WPA2
    +
    +
    +
  2. +
  3. Join the network.

    +
    nmcli device wifi connect $SSID password $password
    +
    +
    +
    Device 'wlp1s0' successfully activated with 'f2501e67-27a3-4cf2-a8d9-cce3d029b788'.
    +
    +
    +
  4. +
+
+

Note

+

To avoid having the Wi-Fi password stored in bash history, consider using the TUI.

+
+
+
+

TUI (Text-based User Interface)

+
    +
  1. Launch the NetworkManager Text User Interface

    +
    nmtui
    +
    +
    +
  2. +
  3. Select Activate a connection and hit return.

    +
    +../../_images/nmtui_1.png +
    +
  4. +
  5. Use the arrow keys to select your network and then select +Activate and hit return.

    +
    +../../_images/nmtui_2.png +
    +
  6. +
  7. Enter your password and hit return to select OK.

    +
    +../../_images/nmtui_3.png +
    +
  8. +
  9. Select Back and hit return.

    +
    +../../_images/nmtui_4.png +
    +
  10. +
  11. Select Quit and hit return to exit.

    +
    +../../_images/nmtui_5.png +
    +
  12. +
+
+
+
+

Using wpa_supplicant

+

wpa_suppliant can be used directly, without NetworkManager, to associate a +wireless adapter with an access point. After association is established, an IP +address needs to be assigned or obtained.

+
+

Associate with a wireless access point

+
    +
  1. Make sure NetworkManager is stopped and disabled by masking the service.

    +
    sudo systemctl stop NetworkManager.service
    +sudo systemctl mask NetworkManager.service
    +
    +
    +
  2. +
  3. Stop the wpa_supplicant.service, which may have been started by NetworkManager.

    +
    sudo systemctl stop wpa_supplicant.service
    +
    +
    +
  4. +
  5. Create a wpa_supplicant configuration directory.

    +
    sudo mkdir -p /etc/wpa_supplicant
    +
    +
    +
  6. +
  7. Determine your wireless interface name.

    +
    iw dev
    +
    +
    +

    Use the name following “Interface” on the first line (eg. wlp1s0)

    +
     Interface wlp1s0
    +    ifindex 3
    +    wdev 0x1
    +    addr 00:xx:xx:38:34:7a
    +    type managed
    +    txpower 0.00 dBm
    +
    +
    +

    Set the $INTERFACE_NAME environment variable to take advantage of copying +and pasting commands.

    +
    export INTERFACE_NAME=wlp1s0
    +
    +
    +
  8. +
  9. Create a minimal configuration file called +/etc/wpa_supplicant/wpa_supplicant-$INTERFACE_NAME.conf +and add the following:

    +
    sudo tee /etc/wpa_supplicant/wpa_supplicant-$INTERFACE_NAME.conf > /dev/null <<'EOF'
    +ctrl_interface_group=wheel
    +ctrl_interface=/run/wpa_supplicant
    +update_config=1
    +EOF
    +
    +
    +
  10. +
  11. Start the wpa_supplicant service to complete the configuration process.

    +
    sudo systemctl start wpa_supplicant@$INTERFACE_NAME.service
    +
    +
    +
  12. +
  13. Use wpa_cli (interactive mode) to scan for available networks. +In this example, our network is named Network1.

    +
    sudo wpa_cli
    +> scan
    +OK
    +<3>CTRL-EVENT-SCAN-STARTED
    +<3>CTRL-EVENT-SCAN-RESULTS
    +> scan_results
    +bssid / frequency / signal level / flags / ssid
    +00:xx:xx:73:7b:46 5180 -55 [WPA2-PSK-CCMP][ESS] Network1
    +00:xx:xx:83:fa:70 5240 -76 [WPA2-EAP-CCMP][ESS] Network2
    +00:xx:xx:4f:e9:2c 2412 -67 [WPA2-PSK-CCMP][ESS][P2P] Printer
    +00:xx:xx:af:fe:3e 5765 -79 [WPA2-PSK-CCMP][ESS] Network3
    +00:xx:xx:e9:eb:29 2412 -76 [WPA2-PSK-CCMP][ESS] Network4
    +00:xx:xx:26:4a:b9 2412 -79 [WPA2-PSK-CCMP][ESS][P2P] Printer2
    +00:xx:xx:b9:0d:d4 2462 -79 [WPA2-PSK-CCMP][ESS] Network5
    +
    +
    +
  14. +
  15. Set up your network connection replacing Network1 with your wireless +SSID name and Network1Password with the password for your network.

    +
    > add_network
    +0
    +> set_network 0 ssid "Network1"
    +OK
    +> set_network 0 psk "Network1Password"
    +OK
    +> enable_network 0
    +OK
    +<3>CTRL-EVENT-SCAN-STARTED
    +<3>CTRL-EVENT-SCAN-RESULTS
    +<3>SME: Trying to authenticate with 00:xx:xx:5d:d9:26 (SSID='Network1' freq=5180 MHz)
    +<3>Trying to associate with 00:xx:xx:5d:d9:26 (SSID='Network1' freq=5180 MHz)
    +<3>Associated with 00:xx:xx:5d:d9:26
    +<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
    +<3>WPA: Key negotiation completed with 00:xx:xx:5d:d9:26 [PTK=CCMP GTK=CCMP]
    +<3>CTRL-EVENT-CONNECTED - Connection to 00:xx:xx:5d:d9:26 completed [id=0 id_str=]
    +
    +
    +
  16. +
  17. Save the configuration and quit out of wpa_cli.

    +
    > save_config
    +OK
    +> quit
    +
    +
    +
  18. +
+
+

Note

+

The network password is saved as plaintext in +/etc/wpa_supplicant/wpa_supplicant-$INTERFACE_NAME.conf. Use +wpa_passphrase +for a more secure method.

+
+
+
+

Assign an IP address

+

After the wireless adapter has been associated with wireless access point, an +IP address needs to be assigned for access to the network.

+

The example below uses systemd-networkd to request an IP address from the +access point via DHCP. Another network manager can be used if preferred. If +there is a static IP address you’d like to assign, see the +Assign a static IP address documentation.

+
    +
  1. Create the /etc/systemd/network directory

    +
    sudo mkdir -p /etc/systemd/network
    +
    +
    +
  2. +
  3. Create a /etc/systemd/network/25-wireless-$INTERFACE_NAME.network file +with a Match and Network section.

    +
    printf "[Match]\nName=$INTERFACE_NAME\n\n[Network]\nDHCP=ipv4" | sudo tee /etc/systemd/network/25-wireless-$INTERFACE_NAME.network
    +
    +
    +
  4. +
  5. Restart the systemd-networkd.service.

    +
    sudo systemctl restart systemd-networkd.service
    +
    +
    +
  6. +
  7. Enable the systemd-networkd and wpa_supplicant services to start automatically +on future boots.

    +
    sudo systemctl enable --now systemd-networkd.service
    +sudo systemctl enable --now wpa_supplicant@$INTERFACE_NAME.service
    +
    +
    +
  8. +
+
+
+
+

Other resources

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..d1fde7213 --- /dev/null +++ b/index.html @@ -0,0 +1,1260 @@ + + + + + + + + + + Clear Linux* Project Documentation — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* Project Documentation

+
+
+

Highlights

+
+
autospec

autospec is a tool to assist in the automated creation and +maintenance of RPM packaging in Clear Linux OS.

+
+
Docker*

Clear Linux OS supports multiple containerization platforms, +including a Docker solution.

+
+
Developer Workstation

Developer Workstation helps you find the Bundles you need to start +your Clear Linux OS development project.

+
+
+
+
+

Quicklinks

+
+
Get started

Get up and running fast with Clear Linux* OS. Use these step-by-step +instructions to guide you through the installation of Clear Linux OS +from bare metal to live image.

+
+
Install Clear Linux* OS from the live desktop

These instructions guide you through the installation of Clear Linux +OS on bare metal using a bootable USB drive.

+
+
Architect the life-cycle of Clear Linux* OS

This guide provides DevOps with a model to architect the life-cycle +of a Clear Linux OS derivative that integrates custom software and +content using distinct workflows.

+
+
Available bundles

Useful bundle commands for working with bundles on the Clear Linux OS.

+
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 000000000..c4d58ba84 Binary files /dev/null and b/objects.inv differ diff --git a/reference/bundles/bundles.html b/reference/bundles/bundles.html new file mode 100644 index 000000000..497017404 --- /dev/null +++ b/reference/bundles/bundles.html @@ -0,0 +1,54703 @@ + + + + + + + + + + Available bundles — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Available bundles

+

This document provides a current list of available bundles. View the clr-bundles repo on GitHub*, or select the bundle +Name for more details.

+

To learn more about how Clear Linux* OS uses bundles for software deployment, visit +Bundles.

+
+

Bundle list

+ + + + + + + Bundles in Clear Linux* OS + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Updated: 08/16/24 20:57 UTC +
Name Description
accel-configConfigure accfg subsystem devices
+ +
Status: + + Active + +
+ + +
aclTools to manipulate filesystem access control list.
+ +
Status: + + Active + +
+ + +
acpica-unix2Intel Advanced Configuration and Power Interface (ACPI) utilities.
+ +
Status: + + Active + +
+ + +
akonadiAsynchronous API to access PIM data.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • kmime
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
alsa-toolsDevice-specific tools from the ALSA project
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
alsa-utilsUseful utilities for controlling a sound card.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • gmp-lib
  • + +
  • pulseaudio
  • + +
  • nettle-lib
  • + +
  • not-ffmpeg-lib
  • + +
  • lib-opengl
  • + +
  • dav1d-lib
  • + +
+
+ +
amateur-radioApplications to support ham or amateur radio operations.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libXpm-lib
  • + +
  • pypi-numpy
  • + +
  • pcre-lib
  • + +
  • libX11client
  • + +
  • pypi-six
  • + +
  • libevent-lib
  • + +
  • qt-basic
  • + +
  • desktop-gnomelibs
  • + +
  • python-graphics
  • + +
  • pypi-requests
  • + +
  • file
  • + +
  • libstdcpp
  • + +
+
+ +
analitzaA library to add mathematical features to your program
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • qt-core
  • + +
+
+ +
ansibleIT automation tool with software provisioning, configuration management, and application deployment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • ipmitool
  • + +
  • cloud-api
  • + +
  • PyYAML
  • + +
  • pypi-six
  • + +
  • openssh-client
  • + +
  • pypi-pynacl
  • + +
  • pypi-requests
  • + +
+
+ +
AOSP-devA set of tools and utilties to build the Android Open Source Project.
+ +
Status: + + Active + +
+ + +
application-serverRun an application server via HTTP.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • httpd
  • + +
  • nginx
  • + +
  • mod_wsgi
  • + +
  • c-basic
  • + +
  • uwsgi
  • + +
+
+ +
arandrAnother XRandR GUI
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
aria2High speed download utility library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libxml2
  • + +
  • gmp-lib
  • + +
  • nettle-lib
  • + +
  • libstdcpp
  • + +
+
+ +
arkGraphical file compression/decompression utility.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • libarchive
  • + +
+
+ +
aspellSpell checking utility
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
+
+ +
aspell-deGerman (modern) dictionary for aspell
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • aspell
  • + +
+
+ +
aspell-esEspanol dictionary for aspell
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • aspell
  • + +
+
+ +
aspell-frFrench dictionary for aspell
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • aspell
  • + +
+
+ +
asunderGraphical Audio CD ripper and encoder
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
audaciousMusic player for Gtk/GNOME
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • qt-core
  • + +
  • audio-pipewire
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
audio-pipewireMultimedia framework for capture and playback
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gnome-base-libs
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • pulseaudio
  • + +
  • libstdcpp
  • + +
+
+ +
auditSystem audit tools.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • curl
  • + +
  • openldap
  • + +
+
+ +
automotive-toolsVarious tools for automotive use cases
+ +
Status: + + Active + +
+ + +
avahi-daemonAvahi Multicast DNS Responder (GLib Support)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • qt-basic
  • + +
  • libevent-lib
  • + +
+
+ +
aws-greengrass-iotLibraries to support building IoT applications on AWS Greengrass.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • opencv-python
  • + +
  • python-extras
  • + +
  • cloud-api
  • + +
+
+ +
axelLight command line download accelerator.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
BabelInternationalization and localization utilities for Python, emphasizing web applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
baobabScan folders or volumes to provide graphical representation of the contents.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
  • curl
  • + +
+
+ +
bcBasic calculator, an arbitrary-precision calculator language.
+ +
Status: + + Active + +
+ + +
bcache-toolsbcache is a way to pair a fast SSD with a slow HDD to create a hybrid disk.
+ +
Status: + + Pending-Delete + +
+ + +
bccBPF Compiler Collection (BCC) for performance analysis, troubleshooting.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • bcc-lib
  • + +
  • llvm
  • + +
  • libstdcpp
  • + +
+
+ +
bcc-libBPF Compiler Collection (BCC) for performance analysis, troubleshooting.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • ncurses-lib
  • + +
  • libxml2
  • + +
  • sqlite
  • + +
  • bcc
  • + +
  • libstdcpp
  • + +
+
+ +
bemenuDynamic menu library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • libxml2
  • + +
  • harfbuzz-lib
  • + +
  • libstdcpp
  • + +
+
+ +
binutilsVarious development tools to manage binary executable code.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • desktop-gnomelibs
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
bisonGeneral-purpose parser generator that converts annotated context-free grammar into a deterministic LR.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
  • libstdcpp
  • + +
+
+ +
blenderA 3D Modelling And Rendering Package
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • opencv-python
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
blivet-guiA graphical tool for storage configuration using blivet library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • parted
  • + +
  • curl
  • + +
  • python3-basic
  • + +
  • libglib
  • + +
  • qt-core
  • + +
  • gmp-lib
  • + +
  • pypi-six
  • + +
  • gobject-introspection
  • + +
  • lib-openssl
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
bmap-toolsTools for creating block map (bmap) for a file and copying files; alternative to "dd" or "cp".
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • pypi-six
  • + +
+
+ +
boinc-clientVolunteer computing and grid computing for science projects.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • curl
  • + +
  • libX11client
  • + +
  • webkitgtk
  • + +
  • lib-openssl
  • + +
  • aspell
  • + +
  • libstdcpp
  • + +
+
+ +
boot-encryptedEnable booting with encrypted root, swap, or other partitions.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • gobject-introspection
  • + +
  • nettle-lib
  • + +
  • libxml2
  • + +
  • bootloader-extras
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
  • popt-lib
  • + +
+
+ +
bootloaderLoads kernel from disk and boots the system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • popt-lib
  • + +
  • syslinux
  • + +
  • libstdcpp
  • + +
+
+ +
bootloader-extrasExtra packages to decrypt root partition.
+ +
Status: + + Active + +
+ + +
borgbackupDeduplicating archiver with compression and authenticated encryption.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • lz4
  • + +
  • lib-openssl
  • + +
+
+ +
bpftraceHigh-level tracing language for Linux enhanced Berkeley Packet Filter (eBPF).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • ncurses-lib
  • + +
  • bcc-lib
  • + +
  • libxml2
  • + +
  • bcc
  • + +
  • libstdcpp
  • + +
+
+ +
bspwmA tiling window manager based on binary space partitioning.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
btopResource monitor for cpu, memory, disks, network, processes
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
btrfs-progslibbtrfsutil library
+ +
Status: + + Active + +
+ + +
buildreq-sparkRequired packages to build Apache Hadoop and Apache Spark
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • pandoc
  • + +
  • R-basic
  • + +
  • tcl-basic
  • + +
  • openblas
  • + +
  • java-basic
  • + +
  • openssl
  • + +
  • devpkg-openssl
  • + +
  • devpkg-cyrus-sasl
  • + +
+
+ +
byobuText based window manager and terminal multiplexer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • pcre-lib
  • + +
  • tmux
  • + +
  • perl-basic
  • + +
  • popt-lib
  • + +
+
+ +
c-basicBuild and run C/C++ language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • llvm
  • + +
  • libarchive
  • + +
  • libstdcpp
  • + +
  • gmp-lib
  • + +
  • lz4
  • + +
  • nasm
  • + +
  • make
  • + +
  • glibc-locale
  • + +
  • binutils
  • + +
  • perl-basic
  • + +
  • intltool
  • + +
  • bison
  • + +
  • flex
  • + +
+
+ +
c-basic-legacyBuild and run 32bit C/C++ language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • devpkg-zlib
  • + +
  • make
  • + +
  • glibc-locale
  • + +
  • binutils
  • + +
  • bison
  • + +
  • flex
  • + +
+
+ +
c-basic-mingwCross compile C/C++ language programs to Windows
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
  • libstdcpp
  • + +
+
+ +
c-basic-staticBuild and run C/C++ language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
  • lz4
  • + +
+
+ +
c-extras-gcc10Build and run C/C++ language programs using the GCC 10.x compiler
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
c-extras-gcc11Build and run C/C++ language programs using the GCC 11.x compiler
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
c-extras-gcc7Build and run C/C++ language programs using the GCC 7.x compiler
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
c-extras-gcc8Build and run C/C++ language programs using the GCC 8.x compiler
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
c-extras-gcc9Build and run C/C++ language programs using the GCC 9.x compiler
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
cabextractManipulate or unpack CAB archives.
+ +
Status: + + Active + +
+ + +
calcArbitrary precision console calculator.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
+
+ +
capstoneLightweight multi-platform, multi-architecture disassembly framework
+ +
Status: + + Active + +
+ + +
casyncContent Addressable Data Synchronizer to distribute frequently-updated file system images over the Internet.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • lib-openssl
  • + +
+
+ +
ccacheCache compilations to avoid repeating same computation and speed project build times.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
cheeseWebcam photo booth software for GNOME.
+ +
Status: + + Pending-Delete + +
+ + +
clamavClam AntiVirus is toolkit to detect malware and viruses, originally for Unix, with third-pary support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • ncurses-lib
  • + +
  • systemd
  • + +
  • libxml2
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
clocCount lines of code for many programming languages.
+ +
Status: + + Active + +
+ + +
cloud-apiAPI helpers for cloud access.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • openldap
  • + +
  • PyYAML
  • + +
  • pypi-six
  • + +
  • libevent-lib
  • + +
  • yaml
  • + +
  • libstdcpp
  • + +
+
+ +
cloud-controlRun a cloud orchestration server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • cloud-api
  • + +
  • xorriso
  • + +
  • gobject-introspection
  • + +
  • sudo
  • + +
  • btrfs-progs
  • + +
  • network-basic
  • + +
  • openssh-client
  • + +
  • git
  • + +
  • sqlite
  • + +
  • openssl
  • + +
  • kvm-host
  • + +
+
+ +
cloud-native-basicContains Clear Linux OS native software for cloud.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • socat
  • + +
  • ethtool
  • + +
  • iproute2
  • + +
  • perl-basic
  • + +
  • p11-kit
  • + +
  • libstdcpp
  • + +
+
+ +
clr-devopsRun all Clear Linux OS devops workloads.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • httpd
  • + +
  • rust-basic
  • + +
  • scm-server
  • + +
  • koji
  • + +
  • nginx
  • + +
  • os-installer
  • + +
  • os-core-update
  • + +
  • java-basic
  • + +
  • mixer
  • + +
+
+ +
clr-hardware-filesNo detailed summary available
+ +
Status: + + Active + +
+ + +
clr-installerImage creation and installation for Clear Linux OS.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • icu4c-lib
  • + +
  • linux-firmware-extras
  • + +
  • jq
  • + +
  • libssh-lib
  • + +
  • openssh-server
  • + +
  • wpa_supplicant
  • + +
  • linux-firmware-wifi
  • + +
  • storage-utils
  • + +
  • network-basic
  • + +
  • iproute2
  • + +
  • btrfs-progs
  • + +
  • kbd
  • + +
  • numactl
  • + +
  • libstdcpp
  • + +
+
+ +
clr-installer-devBundles necessary for Clear Linux OS Installer development.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-gtk3
  • + +
  • go-basic
  • + +
  • devpkg-cairo
  • + +
  • clr-installer-gui
  • + +
+
+ +
clr-installer-guiGraphical installation for Clear Linux OS.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • NetworkManager
  • + +
  • clr-installer
  • + +
  • gparted
  • + +
  • desktop-gnomelibs
  • + +
+
+ +
clr-installer-iso-initProvide the content for the clr-installer ISO image initrd.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • os-core-plus
  • + +
  • popt-lib
  • + +
+
+ +
clr-network-troubleshooterTool to test network availability and suggest actions to fix issues.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • curl
  • + +
  • python3-basic
  • + +
  • network-basic
  • + +
+
+ +
cluster-toolsUtilities to manage computer clusters
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • curl
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • openmpi
  • + +
  • perl-basic
  • + +
  • numactl
  • + +
+
+ +
cmusA small, fast, and powerful console music player.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • gmp-lib
  • + +
  • pulseaudio
  • + +
  • nettle-lib
  • + +
  • dav1d-lib
  • + +
  • not-ffmpeg-lib
  • + +
  • libstdcpp
  • + +
+
+ +
cockpitWeb-based administration for GNU/Linux servers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libstdcpp
  • + +
  • ncurses-lib
  • + +
  • openldap
  • + +
  • PyYAML
  • + +
  • pypi-six
  • + +
  • polkit
  • + +
  • libssh-lib
  • + +
  • libpcap-lib
  • + +
  • libunwind-lib
  • + +
  • libxml2
  • + +
  • lib-openssl
  • + +
  • perl-basic
  • + +
  • numactl
  • + +
  • libnl
  • + +
  • pypi-requests
  • + +
+
+ +
collectdDaemon which collects system performance statistics periodically
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • curl
  • + +
  • openldap
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • libpcap-lib
  • + +
  • python-basic
  • + +
  • lib-openssl
  • + +
  • perl-basic
  • + +
  • libnl
  • + +
+
+ +
columbiadA full screen app chooser for HTPCs
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
compat-commonCommon legacy compatibility libraries
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
+
+ +
computer-vision-modelsDeep learning models for computer vision.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
conkyA light-weight system monitor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
connectionsA remote desktop client for the GNOME desktop environment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • pulseaudio
  • + +
  • libstdcpp
  • + +
+
+ +
containers-basicRun container applications from Dockerhub.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • icu4c-lib
  • + +
  • gobject-introspection
  • + +
  • btrfs-progs
  • + +
  • iproute2
  • + +
  • git
  • + +
  • gnupg
  • + +
  • p11-kit
  • + +
  • libstdcpp
  • + +
+
+ +
containers-basic-devAll packages required to build the containers-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • nasm
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-libXv
  • + +
  • tzdata
  • + +
  • devpkg-gstreamer
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • devpkg-gpgme
  • + +
  • devpkg-libXft
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-libtheora
  • + +
  • llvm
  • + +
  • devpkg-pcre2
  • + +
  • pypi-cython
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-freetype
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-dbus-python
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-expat
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-userspace-rcu
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-pixman
  • + +
  • devpkg-libsodium
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-ncurses
  • + +
  • vte-lib
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-pycairo
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-flac
  • + +
  • devpkg-libusb
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-file
  • + +
  • devpkg-libavtp
  • + +
  • devpkg-libidn
  • + +
  • devpkg-vala
  • + +
  • os-core-dev
  • + +
  • devpkg-graphene
  • + +
  • devpkg-libpipeline
  • + +
  • libxslt
  • + +
  • devpkg-zstd
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-krb5
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-qtwayland
  • + +
  • devpkg-lzo
  • + +
  • devpkg-colord
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-libnice
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-poppler
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-graphite
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-readline
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-lua
  • + +
  • devpkg-tpm2-tss
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-pipewire
  • + +
  • clr-hardware-files
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-speex
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • devpkg-util-macros
  • + +
  • ghostscript
  • + +
  • devpkg-SDL2_image
  • + +
  • intltool
  • + +
  • guile
  • + +
  • devpkg-tcl
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-snappy
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-btrfs-progs
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • devpkg-gcr
  • + +
  • patch
  • + +
  • devpkg-check
  • + +
  • devpkg-gmp
  • + +
  • make
  • + +
  • devpkg-mesa
  • + +
  • devpkg-systemd
  • + +
  • glibc-locale
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-inih
  • + +
  • less
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • sassc
  • + +
  • yasm
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-gflags
  • + +
  • devpkg-kmod
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libdatrie
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-fftw
  • + +
  • devpkg-libva
  • + +
  • devpkg-orc
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-clutter
  • + +
  • devpkg-nss
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-lz4
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-fontconfig
  • + +
  • valgrind
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libexif
  • + +
  • devpkg-libogg
  • + +
  • patchelf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • rsync
  • + +
  • devpkg-glew
  • + +
  • devpkg-sbc
  • + +
  • qt6-basic
  • + +
  • devpkg-opus
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-librsvg
  • + +
  • p11-kit
  • + +
  • devpkg-glu
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-libksba
  • + +
  • devpkg-pcsc-lite
  • + +
  • devpkg-audit
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-gst-plugins-base
  • + +
  • devpkg-iptables
  • + +
  • devpkg-llvm
  • + +
  • devpkg-mtdev
  • + +
  • net-tools
  • + +
  • which
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-oneVPL
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • libX11client
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-libclc
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-libkcapi
  • + +
  • graphviz
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-wayland
  • + +
  • devpkg-cups
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-pango
  • + +
  • devpkg-acl
  • + +
  • devpkg-lmdb
  • + +
  • containers-basic
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-directx-headers
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-boost
  • + +
  • devpkg-xz
  • + +
  • gjs
  • + +
  • devpkg-nettle
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-duktape
  • + +
+
+ +
CopyQClipboard manager with searchable and editable history.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
coturnThe TURN Server is a VoIP media traffic NAT traversal server and gateway.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • libevent-lib
  • + +
  • lib-openssl
  • + +
+
+ +
cpioCopies files into or out of a cpio or tar archive.
+ +
Status: + + Active + +
+ + +
cronieRun specified programs at scheduled times.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
+
+ +
cryptographyEncrypt, decrypt, sign and verify objects.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • curl
  • + +
  • openssh-client
  • + +
  • gnupg
  • + +
  • lib-openssl
  • + +
  • openssl
  • + +
+
+ +
cryptoprocessor-managementManage the Trusted Platform Module (TPM).
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • curl
  • + +
  • lib-openssl
  • + +
+
+ +
cryptoprocessor-management-devAll packages required to build the cryptoprocessor-management bundle.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • llvm
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-expat
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-libgcrypt
  • + +
  • cryptoprocessor-management
  • + +
  • devpkg-libpwquality
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • dev-utils
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libidn
  • + +
  • os-core-dev
  • + +
  • libxslt
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-lzo
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-tpm2-tss
  • + +
  • procps-ng
  • + +
  • libpsl-lib
  • + +
  • intltool
  • + +
  • guile
  • + +
  • devpkg-c-ares
  • + +
  • git
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • file
  • + +
  • devpkg-efivar
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • make
  • + +
  • devpkg-gmp
  • + +
  • devpkg-systemd
  • + +
  • glibc-locale
  • + +
  • devpkg-brotli
  • + +
  • devpkg-tpm2-abrmd
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-kmod
  • + +
  • openssl
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libmicrohttpd
  • + +
  • valgrind
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • p11-kit
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • xz
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libbpf
  • + +
  • graphviz
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • devpkg-boost
  • + +
  • devpkg-libX11
  • + +
+
+ +
curlCommand line tool to transfer data to/from a URL.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • dbus-lib
  • + +
  • lib-openssl
  • + +
+
+ +
darktablePhotography workflow application with raw image development.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • libXpm-lib
  • + +
  • libX11client
  • + +
  • gphoto
  • + +
  • libpsl-lib
  • + +
  • lensfun
  • + +
  • libstdcpp
  • + +
+
+ +
dav1dNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • dav1d-lib
  • + +
+
+ +
dav1d-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
dbus-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
ddcutilControl display settings
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
dddGraphical debugger front-end; GDB, DBX, Ladebug, JDB, Perl, Python.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gdb
  • + +
  • libX11client
  • + +
  • libXpm-lib
  • + +
  • libstdcpp
  • + +
+
+ +
desktopRun the GNOME GUI desktop environment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • alsa-utils
  • + +
  • mpfr-lib
  • + +
  • polkit
  • + +
  • gphoto
  • + +
  • LibRaw-lib
  • + +
  • libglib
  • + +
  • tzdata
  • + +
  • which
  • + +
  • fontconfig
  • + +
  • fuse
  • + +
  • wayland-server
  • + +
  • libX11client
  • + +
  • desktop-apps
  • + +
  • gstreamer
  • + +
  • openssl
  • + +
  • NetworkManager-extras
  • + +
  • lib-imageformat
  • + +
  • poppler
  • + +
  • gegl
  • + +
  • linux-firmware-extras
  • + +
  • gjs
  • + +
  • pygobject
  • + +
  • desktop-locales
  • + +
  • gdk-pixbuf
  • + +
  • sysadmin-basic
  • + +
  • desktop-assets
  • + +
  • desktop-gnomelibs
  • + +
  • vte-lib
  • + +
+
+ +
desktop-appsApplications for the desktop.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • python-extras
  • + +
  • libXpm-lib
  • + +
  • seahorse
  • + +
  • pcre-lib
  • + +
  • libX11client
  • + +
  • file-roller
  • + +
  • graphviz
  • + +
  • qt-basic
  • + +
  • desktop-gnomelibs
  • + +
  • libnl
  • + +
  • libva-utils
  • + +
+
+ +
desktop-apps-extrasLarger set of applications for the desktop.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libssh-lib
  • + +
  • opencv-python
  • + +
  • qt-basic
  • + +
  • desktop-gnomelibs
  • + +
  • vte-lib
  • + +
  • openblas
  • + +
+
+ +
desktop-assetsImages and Icons for the desktop
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • desktop-gnomelibs
  • + +
  • fonts-basic
  • + +
+
+ +
desktop-autostartBundle to automatically launch the GUI upon boot.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • desktop
  • + +
+
+ +
desktop-devAll packages required to build the desktop bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-hunspell
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gpgme
  • + +
  • llvm
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-compat-cairomm-soname10
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-libgee
  • + +
  • devpkg-dbus-python
  • + +
  • devpkg-poppler-data-clr-rename
  • + +
  • devpkg-vte
  • + +
  • devpkg-jansson
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-uhttpmock
  • + +
  • devpkg-compat-pangomm-soname14
  • + +
  • devpkg-libstoragemgmt
  • + +
  • devpkg-libqrtr-glib
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-libmypaint
  • + +
  • devpkg-pixman
  • + +
  • devpkg-libsodium
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-gi-docgen
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-gtk4
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-libusb
  • + +
  • devpkg-LibRaw
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • devpkg-json-c
  • + +
  • devpkg-lensfun
  • + +
  • desktop
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-ModemManager
  • + +
  • devpkg-qatlib
  • + +
  • devpkg-libcroco
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-qtwayland
  • + +
  • python3-tcl
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-libxcvt
  • + +
  • devpkg-kyotocabinet
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-libhandy
  • + +
  • devpkg-libportal
  • + +
  • devpkg-geocode-glib
  • + +
  • devpkg-mozjs115
  • + +
  • devpkg-libsass
  • + +
  • devpkg-telepathy-glib
  • + +
  • devpkg-libass
  • + +
  • devpkg-libiscsi
  • + +
  • devpkg-xmlb
  • + +
  • devpkg-util-macros
  • + +
  • intltool
  • + +
  • devpkg-gegl
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-libwacom
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-shared-mime-info
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • libglib
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • devpkg-gcr
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • glibc-locale
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-libthai
  • + +
  • devpkg-libdazzle
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • less
  • + +
  • devpkg-babl
  • + +
  • devpkg-libadwaita
  • + +
  • devpkg-ostree
  • + +
  • sassc
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-compat-gcr-soname1
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-openblas
  • + +
  • nmap
  • + +
  • devpkg-libXfont2
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-xf86-input-wacom
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-lz4
  • + +
  • gpgme
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libexif
  • + +
  • devpkg-pciutils
  • + +
  • devpkg-metacity
  • + +
  • devpkg-opus
  • + +
  • devpkg-ell
  • + +
  • devpkg-glu
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-gst-plugins-base
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libssh
  • + +
  • devpkg-font-util
  • + +
  • devpkg-appstream
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • graphviz
  • + +
  • devpkg-libdmx
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-directx-headers
  • + +
  • fonttools
  • + +
  • devpkg-libqmi
  • + +
  • devpkg-libavif
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-qpdf
  • + +
  • devpkg-sane-backends
  • + +
  • devpkg-gnome-bluetooth
  • + +
  • nasm
  • + +
  • devpkg-qtsvg
  • + +
  • gnupg
  • + +
  • devpkg-libbytesize
  • + +
  • devpkg-libXv
  • + +
  • devpkg-cogl
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-onig
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-tevent
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libgdata
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • iptables
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-newt
  • + +
  • devpkg-appstream-glib
  • + +
  • devpkg-gexiv2
  • + +
  • devpkg-compat-glibmm-soname24
  • + +
  • devpkg-gsound
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-libndp
  • + +
  • devpkg-libmtp
  • + +
  • devpkg-qtserialport
  • + +
  • devpkg-gnome-video-effects
  • + +
  • devpkg-LuaJIT
  • + +
  • libxml2
  • + +
  • devpkg-adwaita-icon-theme
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-flac
  • + +
  • devpkg-NetworkManager
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • devpkg-gspell
  • + +
  • dev-utils
  • + +
  • devpkg-libical
  • + +
  • devpkg-cairomm
  • + +
  • devpkg-abseil-cpp
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-vala
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • devpkg-libgnomekbd
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-tdb
  • + +
  • devpkg-geoclue
  • + +
  • devpkg-lzo
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-nautilus
  • + +
  • devpkg-libcbor
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-libatasmart
  • + +
  • devpkg-bluez
  • + +
  • devpkg-libdaemon
  • + +
  • devpkg-tpm2-tss
  • + +
  • devpkg-speex
  • + +
  • devpkg-gutenprint
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-snappy
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-xwayland
  • + +
  • gdb
  • + +
  • devpkg-net-snmp
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-qtconnectivity
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-grilo
  • + +
  • devpkg-libnl
  • + +
  • devpkg-parted
  • + +
  • devpkg-gmp
  • + +
  • devpkg-qtsensors
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-mobile-broadband-provider-info
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • yasm
  • + +
  • devpkg-gflags
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-libnotify
  • + +
  • strace
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-libconfig
  • + +
  • devpkg-evolution-data-server
  • + +
  • devpkg-openconnect
  • + +
  • devpkg-fftw
  • + +
  • devpkg-orc
  • + +
  • devpkg-clutter
  • + +
  • devpkg-libskk
  • + +
  • devpkg-mutter
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libogg
  • + +
  • devpkg-glew
  • + +
  • qt6-basic
  • + +
  • devpkg-mm-common
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-libXfont
  • + +
  • devpkg-gnome-autoar
  • + +
  • devpkg-libXpresent
  • + +
  • devpkg-llvm
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-qtwebsockets
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-dconf
  • + +
  • devpkg-libpinyin
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • parallel
  • + +
  • gjs
  • + +
  • devpkg-libxklavier
  • + +
  • devpkg-colord-gtk
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libspiro
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libpsl
  • + +
  • bison
  • + +
  • devpkg-libXft
  • + +
  • devpkg-libgsystem
  • + +
  • devpkg-rtmpdump
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-expat
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-libcloudproviders
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-libyami
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libdrm
  • + +
  • unzip
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-gtkmm3
  • + +
  • devpkg-libnma
  • + +
  • devpkg-intel-media-driver
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-file
  • + +
  • devpkg-libidn
  • + +
  • devpkg-gnome-menus
  • + +
  • devpkg-krb5
  • + +
  • devpkg-colord
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-graphite
  • + +
  • devpkg-libgphoto2
  • + +
  • devpkg-accountsservice
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-exiv2
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • devpkg-samba
  • + +
  • devpkg-source-highlight
  • + +
  • ghostscript
  • + +
  • guile
  • + +
  • devpkg-hwloc
  • + +
  • devpkg-igt-gpu-tools
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • devpkg-ldb
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-btrfs-progs
  • + +
  • devpkg-ledmon
  • + +
  • sysadmin-basic-dev
  • + +
  • devpkg-openjpeg
  • + +
  • devpkg-rdma-core
  • + +
  • poppler
  • + +
  • PyYAML
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-qtxmlpatterns
  • + +
  • devpkg-gnome-settings-daemon
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libwnck3
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-nspr
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-iptables
  • + +
  • devpkg-mtdev
  • + +
  • devpkg-ipp-crypto
  • + +
  • devpkg-oneVPL
  • + +
  • devpkg-cmrt
  • + +
  • devpkg-dav1d
  • + +
  • libX11client
  • + +
  • devpkg-libclc
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-gnome-control-center
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-cups
  • + +
  • devpkg-pango
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-nettle
  • + +
  • devpkg-leptonica
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • openblas
  • + +
  • devpkg-libunibreak
  • + +
  • devpkg-glib
  • + +
  • devpkg-udisks2
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-gnome-desktop
  • + +
  • devpkg-cJSON
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-popt
  • + +
  • zenity
  • + +
  • flex
  • + +
  • devpkg-libgd
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libgtop
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-ibus-table
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-libffi
  • + +
  • devpkg-liboauth
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-utf8proc
  • + +
  • devpkg-pycairo
  • + +
  • devpkg-qtmultimedia
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-not-ffmpeg
  • + +
  • devpkg-libavtp
  • + +
  • libxslt
  • + +
  • devpkg-flatpak
  • + +
  • devpkg-graphene
  • + +
  • devpkg-qtcharts
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmbim
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libnice
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-poppler
  • + +
  • devpkg-woff2
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-yelp-xsl
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-gimp
  • + +
  • devpkg-avahi
  • + +
  • devpkg-lua
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-icon-naming-utils
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gnome-panel
  • + +
  • devpkg-gtksourceview
  • + +
  • devpkg-libdisplay-info
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-pygobject
  • + +
  • devpkg-compat-atkmm-soname16
  • + +
  • devpkg-ntfs-3g
  • + +
  • devpkg-tcl
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-rest
  • + +
  • devpkg-webkitgtk
  • + +
  • devpkg-efivar
  • + +
  • devpkg-libgweather
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-check
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • devpkg-mesa
  • + +
  • devpkg-stoken
  • + +
  • devpkg-slang
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-gdm
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-gnome-online-accounts
  • + +
  • devpkg-kmod
  • + +
  • devpkg-yajl
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-dpdk
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libblockdev
  • + +
  • devpkg-glibmm
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-libva
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-gjs
  • + +
  • devpkg-nss
  • + +
  • valgrind
  • + +
  • rsync
  • + +
  • patchelf
  • + +
  • devpkg-sbc
  • + +
  • p11-kit
  • + +
  • net-tools
  • + +
  • which
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • binutils
  • + +
  • devpkg-eigen
  • + +
  • devpkg-upower
  • + +
  • aspell
  • + +
  • devpkg-gnome-software
  • + +
  • devpkg-cups-filters
  • + +
  • devpkg-jack2
  • + +
  • devpkg-wayland
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-boost
  • + +
  • fontforge
  • + +
  • devpkg-assimp
  • + +
  • devpkg-duktape
  • + +
+
+ +
desktop-gnomelibsHelper bundle with common libraries and desktop utilities.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • gnome-base-libs
  • + +
  • audio-pipewire
  • + +
  • libX11client
  • + +
  • gobject-introspection
  • + +
  • libevent-lib
  • + +
  • webkitgtk
  • + +
  • lib-openssl
  • + +
  • lib-samba
  • + +
  • perl-basic
  • + +
  • not-ffmpeg-lib
  • + +
  • lib-opengl
  • + +
  • aspell
  • + +
  • dav1d-lib
  • + +
+
+ +
desktop-kdeApplications for the desktop from the KDE ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • alsa-utils
  • + +
  • gpgme
  • + +
  • mpfr-lib
  • + +
  • polkit
  • + +
  • pypi-six
  • + +
  • libssh-lib
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • lib-samba
  • + +
  • libxslt
  • + +
  • hardware-bluetooth
  • + +
  • tzdata
  • + +
  • x11-tools
  • + +
  • desktop-kde-libs
  • + +
  • pulseaudio
  • + +
  • fontconfig
  • + +
  • Remmina
  • + +
  • fuse
  • + +
  • wayland-server
  • + +
  • gimp
  • + +
  • NetworkManager-extras
  • + +
  • vlc
  • + +
  • poppler
  • + +
  • kde-frameworks5
  • + +
  • gdk-pixbuf
  • + +
  • vte-lib
  • + +
  • xdg-desktop-portal
  • + +
+
+ +
desktop-kde-appsApplications for the desktop from the KDE ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • desktop-kde-libs
  • + +
  • libssh-lib
  • + +
  • kde-frameworks5
  • + +
  • kmime
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • LibRaw-lib
  • + +
  • perl-basic
  • + +
+
+ +
desktop-kde-gamesGames for the desktop from the KDE ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • desktop-kde-libs
  • + +
  • kgeography
  • + +
  • kde-frameworks5
  • + +
  • kmime
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • perl-basic
  • + +
  • protobuf-lib
  • + +
+
+ +
desktop-kde-libsHelper libraries from the KDE ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • qt6-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
desktop-localesTranslations and documentation for desktop components.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • glibc-locale
  • + +
  • libstdcpp
  • + +
+
+ +
dev-utilsAssist application development.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • cloc
  • + +
  • valgrind
  • + +
  • linux-tools
  • + +
  • icdiff
  • + +
  • cpio
  • + +
  • bc
  • + +
  • rsync
  • + +
  • gdb
  • + +
  • git
  • + +
  • llvm
  • + +
  • curl
  • + +
  • libXpm-lib
  • + +
  • patch
  • + +
  • devpkg-llvm
  • + +
  • python3-basic
  • + +
  • docutils
  • + +
  • git-lfs
  • + +
  • diffutils
  • + +
  • stress-ng
  • + +
  • perl-basic
  • + +
  • openssl
  • + +
  • man-pages
  • + +
  • inotify-tools
  • + +
  • strace
  • + +
+
+ +
dev-utils-devAll packages required to build the dev-utils bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • devpkg-gtk-doc
  • + +
  • llvm
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-dbus-python
  • + +
  • perl-basic-dev
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-pixman
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-ncurses
  • + +
  • vte-lib
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-libusb
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-qatlib
  • + +
  • devpkg-libcroco
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-gc
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-util-macros
  • + +
  • intltool
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-gdal
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • glibc-locale
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • less
  • + +
  • sassc
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-lz4
  • + +
  • devpkg-Judy
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libexif
  • + +
  • devpkg-opus
  • + +
  • devpkg-glu
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-gst-plugins-base
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libssh
  • + +
  • lynx
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • graphviz
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-directx-headers
  • + +
  • devpkg-opencl-headers
  • + +
  • devpkg-libavif
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • nasm
  • + +
  • bc
  • + +
  • devpkg-libtraceevent
  • + +
  • gnupg
  • + +
  • devpkg-libXv
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-onig
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-flac
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-vala
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-lzo
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-tpm2-tss
  • + +
  • clr-hardware-files
  • + +
  • devpkg-speex
  • + +
  • devpkg-subunit
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-snappy
  • + +
  • devpkg-c-ares
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-compat-babeltrace-one
  • + +
  • devpkg-libnl
  • + +
  • devpkg-gmp
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-xcb-proto
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • yasm
  • + +
  • devpkg-gflags
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-cppunit
  • + +
  • strace
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-fftw
  • + +
  • devpkg-orc
  • + +
  • devpkg-clutter
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libogg
  • + +
  • devpkg-glew
  • + +
  • qt6-basic
  • + +
  • devpkg-metrics-discovery
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-llvm
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • devpkg-mpg123
  • + +
  • subversion
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-dbus
  • + +
  • bison
  • + +
  • devpkg-libXft
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libtracefs
  • + +
  • devpkg-expat
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libdrm
  • + +
  • unzip
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-file
  • + +
  • devpkg-libidn
  • + +
  • devpkg-scdoc
  • + +
  • devpkg-krb5
  • + +
  • devpkg-colord
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-graphite
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • devpkg-babeltrace
  • + +
  • devpkg-source-highlight
  • + +
  • ghostscript
  • + +
  • guile
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-btrfs-progs
  • + +
  • texlive
  • + +
  • devpkg-jsoncpp
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-guile
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-iptables
  • + +
  • devpkg-mtdev
  • + +
  • devpkg-ipp-crypto
  • + +
  • devpkg-oneVPL
  • + +
  • devpkg-dav1d
  • + +
  • libX11client
  • + +
  • devpkg-libclc
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-cups
  • + +
  • devpkg-pango
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-nettle
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • openblas
  • + +
  • devpkg-glib
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-popt
  • + +
  • flex
  • + +
  • devpkg-libgd
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • wget
  • + +
  • devpkg-libavtp
  • + +
  • libxslt
  • + +
  • devpkg-graphene
  • + +
  • devpkg-zlib
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libnice
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-poppler
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-lua
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-tcl
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-check
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • devpkg-mesa
  • + +
  • devpkg-slang
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-kmod
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-fuse
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-libva
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-nss
  • + +
  • valgrind
  • + +
  • rsync
  • + +
  • patchelf
  • + +
  • devpkg-sbc
  • + +
  • p11-kit
  • + +
  • net-tools
  • + +
  • which
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • binutils
  • + +
  • devpkg-eigen
  • + +
  • devpkg-wayland
  • + +
  • pypi-numpy
  • + +
  • devpkg-boost
  • + +
  • devpkg-duktape
  • + +
+
+ +
dev-utils-guiAssist application development (gui components).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • tcl-basic
  • + +
  • gobject-introspection
  • + +
  • dev-utils
  • + +
  • qt-basic
  • + +
  • ddd
  • + +
  • aspell
  • + +
+
+ +
developer-gpuTools and libraries for GPU application development.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • devpkg-waffle
  • + +
  • devpkg-mesa
  • + +
  • devpkg-SPIRV-Cross
  • + +
  • devpkg-llvm
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • qt-basic
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • hardware-gpu
  • + +
+
+ +
devhelpAPI documentation browser for GNOME
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • webkitgtk
  • + +
  • libX11client
  • + +
+
+ +
devpkg-abseil-cppAll content for pkgconfig file abseil-cpp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-accountsserviceAll content for pkgconfig file accountsservice.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-aclAll content for pkgconfig file acl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • acl
  • + +
+
+ +
devpkg-adwaita-icon-themeAll content for pkgconfig file adwaita-icon-theme.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-alsa-libAll content for pkgconfig file alsa-lib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-appstreamAll content for pkgconfig file appstream.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-appstream-glibAll content for pkgconfig file appstream-glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • libglib
  • + +
+
+ +
devpkg-aprAll content for pkgconfig file apr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-apr-utilAll content for pkgconfig file apr-util.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-argon2All content for pkgconfig file argon2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-assimpAll content for pkgconfig file assimp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-at-spi2-coreAll content for pkgconfig file at-spi2-core.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-atticaAll content for pkgconfig file attica.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • devpkg-qtbase
  • + +
  • qt-core
  • + +
+
+ +
devpkg-attrAll content for pkgconfig file attr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-auditAll content for pkgconfig file audit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • audit
  • + +
+
+ +
devpkg-avahiAll content for pkgconfig file avahi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-babeltraceAll content for pkgconfig file babeltrace.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-bablAll content for pkgconfig file babl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-balooAll content for pkgconfig file baloo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-qtbase
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-baseBasic pkgconfig infrastructure.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
devpkg-bash-completionAll content for pkgconfig file bash-completion.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-bccAll content for pkgconfig file bcc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • xz
  • + +
  • bcc
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-bluezAll content for pkgconfig file bluez.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
+
+ +
devpkg-boostAll content for boost.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
+
+ +
devpkg-BotanAll content for pkgconfig file Botan.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-brotliAll content for pkgconfig file brotli.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-bsdiffAll content for pkgconfig file bsdiff.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • xz
  • + +
+
+ +
devpkg-btrfs-progsAll content for pkgconfig file btrfs-progs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • btrfs-progs
  • + +
+
+ +
devpkg-bzip2All content for pkgconfig file bzip2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-c-aresAll content for pkgconfig file c-ares.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-cairoAll content for pkgconfig file cairo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-base
  • + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-zlib
  • + +
  • devpkg-freetype
  • + +
  • devpkg-pixman
  • + +
  • libX11client
  • + +
  • devpkg-libX11
  • + +
+
+ +
devpkg-cairommAll content for pkgconfig file cairomm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-cairo
  • + +
  • devpkg-libsigcplusplus
  • + +
+
+ +
devpkg-capnprotoAll content for pkgconfig file capnproto.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-capstoneAll content for pkgconfig file capstone.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-cfitsioAll content for pkgconfig file cfitsio.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • curl
  • + +
+
+ +
devpkg-checkAll content for pkgconfig file check.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-cheeseAll content for pkgconfig file cheese.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • cheese
  • + +
+
+ +
devpkg-cJSONAll content for pkgconfig file cJSON.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-clutterAll content for pkgconfig file clutter.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-clutter-gstAll content for pkgconfig file clutter-gst.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
+
+ +
devpkg-clutter-gtkAll content for pkgconfig file clutter-gtk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-base
  • + +
  • libglib
  • + +
  • libX11client
  • + +
  • devpkg-clutter
  • + +
+
+ +
devpkg-cmockaAll content for pkgconfig file cmocka.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-cmrtAll content for pkgconfig file cmrt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-coglAll content for pkgconfig file cogl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-colordAll content for pkgconfig file colord.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-colord-gtkAll content for pkgconfig file colord-gtk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-compat-atkmm-soname16All content for pkgconfig file compat-atkmm-soname16.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-compat-glibmm-soname24
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-compat-babeltrace-oneAll content for pkgconfig file compat-babeltrace-one.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-compat-cairomm-soname10All content for pkgconfig file compat-cairomm-soname10.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • devpkg-cairo
  • + +
  • devpkg-compat-libsigcplusplus-soname20
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-compat-enchant-soname1All content for pkgconfig file compat-enchant-soname1.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • aspell
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-compat-fuse-soname2All content for pkgconfig file compat-fuse-soname2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-compat-gcr-soname1All content for pkgconfig file compat-gcr-soname1.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-compat-glibmm-soname24All content for pkgconfig file compat-glibmm-soname24.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-compat-gnome-bluetooth-soname-13All content for pkgconfig file compat-gnome-bluetooth-soname-13.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
devpkg-compat-gtksourceview-soname3All content for pkgconfig file compat-gtksourceview-soname3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-compat-libsigcplusplus-soname20All content for pkgconfig file compat-libsigcplusplus-soname20.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-compat-libsoup-soname-24All content for pkgconfig file compat-libsoup-soname-24.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-compat-pangomm-soname14All content for pkgconfig file compat-pangomm-soname14.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • devpkg-compat-cairomm-soname10
  • + +
  • devpkg-compat-glibmm-soname24
  • + +
  • devpkg-pango
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-confuseAll content for pkgconfig file confuse.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-corosyncAll content for pkgconfig file corosync.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libnl
  • + +
  • lz4
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-cppunitAll content for pkgconfig file cppunit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-cryptsetupAll content for pkgconfig file cryptsetup.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
  • popt-lib
  • + +
+
+ +
devpkg-CUnitAll content for pkgconfig file CUnit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-cupsAll content for pkgconfig file cups.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • harfbuzz-lib
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-cups-filtersAll content for pkgconfig file cups-filters.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • lib-opengl
  • + +
+
+ +
devpkg-curlAll content for pkgconfig file curl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • curl
  • + +
+
+ +
devpkg-cyrus-saslAll content for pkgconfig file cyrus-sasl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • openldap
  • + +
+
+ +
devpkg-dav1dAll content for pkgconfig file dav1d.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • dav1d
  • + +
+
+ +
devpkg-dbusAll content for pkgconfig file dbus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-dbus-glibAll content for pkgconfig file dbus-glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-dbus-pythonAll content for pkgconfig file dbus-python.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-dconfAll content for pkgconfig file dconf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-ding-libsAll content for pkgconfig file ding-libs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-directx-headersAll content for pkgconfig file directx-headers.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-dpcpp-compilerAll content for pkgconfig file dpcpp-compiler.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-dpdkAll content for pkgconfig file dpdk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • dpdk
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-dtcAll content for dtc-dev.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-duktapeAll content for pkgconfig file duktape.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-e2fsprogsAll content for pkgconfig file e2fsprogs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-efivarAll content for pkgconfig file efivar.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-eigenAll content for pkgconfig file eigen.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-elfutilsAll content for pkgconfig file elfutils.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-ellAll content for pkgconfig file ell.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-enchantAll content for pkgconfig file enchant.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • aspell
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-evolutionAll content for pkgconfig file evolution.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • evolution
  • + +
  • libX11client
  • + +
  • webkitgtk
  • + +
+
+ +
devpkg-evolution-data-serverAll content for pkgconfig file evolution-data-server.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • webkitgtk
  • + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-exiv2All content for pkgconfig file exiv2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-exoAll content for pkgconfig file exo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-expatAll content for pkgconfig file expat.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-fannAll content for pkgconfig file fann.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-fftwAll content for pkgconfig file fftw.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-fileAll content for pkgconfig file file.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • file
  • + +
  • xz
  • + +
+
+ +
devpkg-flacAll content for pkgconfig file flac.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • flac
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-flatpakAll content for pkgconfig file flatpak.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • libX11client
  • + +
  • flatpak
  • + +
+
+ +
devpkg-fmtAll content for pkgconfig file fmt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-font-utilAll content for pkgconfig file font-util.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-fontconfigAll content for pkgconfig file fontconfig.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-freetype
  • + +
  • devpkg-expat
  • + +
  • fontconfig
  • + +
+
+ +
devpkg-freeglutAll content for pkgconfig file freeglut.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-FreeRDPAll content for pkgconfig file FreeRDP.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • FreeRDP
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-freetypeAll content for pkgconfig file freetype.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • devpkg-zlib
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-brotli
  • + +
+
+ +
devpkg-fribidiAll content for pkgconfig file fribidi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-fuseAll content for pkgconfig file fuse.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • fuse
  • + +
+
+ +
devpkg-fwupdAll content for pkgconfig file fwupd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • pypi-six
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-garconAll content for pkgconfig file garcon.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gcAll content for pkgconfig file gc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gcabAll content for pkgconfig file gcab.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-GConfAll content for pkgconfig file GConf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gcrAll content for pkgconfig file gcr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
+
+ +
devpkg-gdalAll content for pkgconfig file gdal.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • gdal
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gdk-pixbufAll content for pkgconfig file gdk-pixbuf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • gdk-pixbuf
  • + +
+
+ +
devpkg-gdk-pixbuf-xlibAll content for pkgconfig file gdk-pixbuf-xlib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gdmAll content for pkgconfig file gdm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
devpkg-geanyAll content for pkgconfig file geany.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • geany
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-geglAll content for pkgconfig file gegl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • gegl
  • + +
  • libX11client
  • + +
  • dav1d-lib
  • + +
  • not-ffmpeg-lib
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-geoclueAll content for pkgconfig file geoclue.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • gdk-pixbuf
  • + +
  • libpsl-lib
  • + +
+
+ +
devpkg-geocode-glibAll content for pkgconfig file geocode-glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-base
  • + +
  • libglib
  • + +
  • icu4c-lib
  • + +
  • libpsl-lib
  • + +
+
+ +
devpkg-geosAll content for pkgconfig file geos.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gexiv2All content for pkgconfig file gexiv2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gflagsAll content for pkgconfig file gflags.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gi-docgenAll content for pkgconfig file gi-docgen.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • python3-basic
  • + +
  • lib-imageformat
  • + +
  • openldap
  • + +
  • libXpm-lib
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • gdk-pixbuf
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
+
+ +
devpkg-gimpAll content for pkgconfig file gimp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • gimp
  • + +
+
+ +
devpkg-gjsAll content for pkgconfig file gjs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • gjs
  • + +
  • desktop-gnomelibs
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-glewAll content for pkgconfig file glew.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-opengl
  • + +
+
+ +
devpkg-glfwAll content for pkgconfig file glfw.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-glfw3All content for pkgconfig file glfw3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-glibAll content for pkgconfig file glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-glibmmAll content for pkgconfig file glibmm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-base
  • + +
  • libglib
  • + +
  • devpkg-libsigcplusplus
  • + +
+
+ +
devpkg-glmAll content for pkgconfig file glm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-glogAll content for pkgconfig file glog.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gluAll content for pkgconfig file glu.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-glusterfsAll content for pkgconfig file glusterfs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • curl
  • + +
  • python3-basic
  • + +
  • libnl
  • + +
+
+ +
devpkg-gmimeAll content for pkgconfig file gmime.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
+
+ +
devpkg-gmpAll content for pkgconfig file gmp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnome-autoarAll content for pkgconfig file gnome-autoar.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gnome-bluetoothAll content for pkgconfig file gnome-bluetooth.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-base
  • + +
  • libglib
  • + +
  • devpkg-gtk3
  • + +
  • gnome-base-libs
  • + +
  • pulseaudio
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gnome-control-centerAll content for pkgconfig file gnome-control-center.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gnome-desktopAll content for pkgconfig file gnome-desktop.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gnome-icon-themeAll content for pkgconfig file gnome-icon-theme.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnome-menusAll content for pkgconfig file gnome-menus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnome-online-accountsAll content for pkgconfig file gnome-online-accounts.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
+
+ +
devpkg-gnome-panelAll content for pkgconfig file gnome-panel.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • webkitgtk
  • + +
  • libpsl-lib
  • + +
+
+ +
devpkg-gnome-settings-daemonAll content for pkgconfig file gnome-settings-daemon.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gnome-softwareAll content for pkgconfig file gnome-software.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
+
+ +
devpkg-gnome-video-effectsAll content for pkgconfig file gnome-video-effects.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnu-efiAll content for pkgconfig file gnu-efi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnutlsAll content for pkgconfig file gnutls.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gobject-introspectionAll content for pkgconfig file gobject-introspection.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gobject-introspection
  • + +
+
+ +
devpkg-googletestAll content for pkgconfig file googletest.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gperftoolsAll content for pkgconfig file gperftools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libunwind-lib
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gpgmeAll content for pkgconfig file gpgme.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • gpgme
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-grapheneAll content for pkgconfig file graphene.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-base
  • + +
  • libglib
  • + +
+
+ +
devpkg-graphiteAll content for pkgconfig file graphite.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-graphvizAll content for pkgconfig file graphviz.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • graphviz
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-griloAll content for pkgconfig file grilo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • libpsl-lib
  • + +
+
+ +
devpkg-grilo-pluginsAll content for pkgconfig file grilo-plugins.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • libevent-lib
  • + +
  • gstreamer
  • + +
  • webkitgtk
  • + +
  • libpsl-lib
  • + +
+
+ +
devpkg-grpcAll content for pkgconfig file grpc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • protobuf-lib
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gsettings-desktop-schemasAll content for pkgconfig file gsettings-desktop-schemas.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gslAll content for pkgconfig file gsl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gsoundAll content for pkgconfig file gsound.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
+
+ +
devpkg-gspellAll content for pkgconfig file gspell.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gst-plugins-badAll content for pkgconfig file gst-plugins-bad.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gst-plugins-baseAll content for pkgconfig file gst-plugins-base.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
+
+ +
devpkg-gstreamerAll content for pkgconfig file gstreamer.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gstreamer
  • + +
+
+ +
devpkg-gtk-docAll content for pkgconfig file gtk-doc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • pypi-six
  • + +
  • python3-basic
  • + +
+
+ +
devpkg-gtk3All content for pkgconfig file gtk3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gtk4All content for pkgconfig file gtk4.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
+
+ +
devpkg-gtkmm3All content for pkgconfig file gtkmm3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-gtkplusAll content for pkgconfig file gtkplus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gtksourceviewAll content for pkgconfig file gtksourceview.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gtkspell3All content for pkgconfig file gtkspell3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-guileAll content for pkgconfig file guile.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gc
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gutenprintAll content for pkgconfig file gutenprint.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gegl
  • + +
  • libX11client
  • + +
  • not-ffmpeg-lib
  • + +
  • dav1d-lib
  • + +
+
+ +
devpkg-harfbuzzAll content for pkgconfig file harfbuzz.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-hunspellAll content for pkgconfig file hunspell.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-hwlocAll content for pkgconfig file hwloc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • hwloc
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-ibus-tableAll content for pkgconfig file ibus-table.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-icon-naming-utilsAll content for pkgconfig file icon-naming-utils.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • perl-basic
  • + +
+
+ +
devpkg-icu4cAll content for pkgconfig file icu4c.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-igt-gpu-toolsAll content for pkgconfig file igt-gpu-tools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • igt-gpu-tools
  • + +
  • perl-basic
  • + +
+
+ +
devpkg-ImageMagickAll content for pkgconfig file ImageMagick.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-ImathAll content for pkgconfig file Imath.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-inihAll content for pkgconfig file inih.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-intel-gmmlibAll content for pkgconfig file intel-gmmlib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-intel-media-driverAll content for pkgconfig file intel-media-driver.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-ipmctlAll content for pkgconfig file ipmctl.pc.
+ +
Status: + + Pending-Delete + +
+ + +
devpkg-ipp-cryptoAll content for pkgconfig file ipp-crypto.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-ipsetAll content for pkgconfig file ipset.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-iptablesAll content for pkgconfig file iptables.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • iptables
  • + +
+
+ +
devpkg-isa-lAll content for pkgconfig file isa-l.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-iso-codesAll content for pkgconfig file iso-codes.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-jack2All content for pkgconfig file jack2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • jack2
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-JAGSAll content for pkgconfig file JAGS.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • openblas
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-janssonAll content for pkgconfig file jansson.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-jemallocAll content for pkgconfig file jemalloc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-json-cAll content for pkgconfig file json-c.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-json-glibAll content for pkgconfig file json-glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-base
  • + +
  • libglib
  • + +
+
+ +
devpkg-jsoncppAll content for pkgconfig file jsoncpp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-JudyAll content for Judy-dev
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-kdiagramAll development content for kdiagram package.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
+
+ +
devpkg-keyutilsAll content for pkgconfig file keyutils.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-kmodAll content for pkgconfig file kmod.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-krb5All content for pkgconfig file krb5.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-kronosnetAll content for pkgconfig file kronosnet.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libnl
  • + +
  • lz4
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-kwaylandAll content for pkgconfig file kwayland.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • devpkg-qtbase
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-kyotocabinetAll content for pkgconfig file kyotocabinet.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-lcms2All content for pkgconfig file lcms2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-ldbAll content for pkgconfig file ldb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • popt-lib
  • + +
+
+ +
devpkg-ledmonAll content for pkgconfig file ledmon.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-lensfunAll content for pkgconfig file lensfun.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • lensfun
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-leptonicaAll content for pkgconfig file leptonica.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libabigailAll content for pkgconfig file libabigail.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-libadwaitaAll content for pkgconfig file libadwaita.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
+
+ +
devpkg-libarchiveAll content for pkgconfig file libarchive.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • xz
  • + +
  • libarchive
  • + +
+
+ +
devpkg-libassAll content for pkgconfig file libass.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libassuanAll content for pkgconfig file libassuan.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libatasmartAll content for pkgconfig file libatasmart.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libatomic_opsAll content for pkgconfig file libatomic_ops.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libavifAll content for pkgconfig file libavif.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libavtpAll content for pkgconfig file libavtp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libblockdevAll content for pkgconfig file libblockdev.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-libbpfAll content for pkgconfig file libbpf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libbsdAll content for pkgconfig file libbsd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libburnAll content for pkgconfig file libburn.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libbytesizeAll content for pkgconfig file libbytesize.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • pypi-six
  • + +
  • python3-basic
  • + +
+
+ +
devpkg-libcacardAll content for pkgconfig file libcacard.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-libcanberraAll content for pkgconfig file libcanberra.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-libcapAll content for pkgconfig file libcap.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libcap-ngAll content for pkgconfig file libcap-ng.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libcborAll content for pkgconfig file libcbor.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libcdioAll content for pkgconfig file libcdio.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-libcgroupAll content for pkgconfig file libcgroup.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libclcAll content for pkgconfig file libclc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libcloudprovidersAll content for pkgconfig file libcloudproviders.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libconfigAll content for pkgconfig file libconfig.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-libcrocoAll content for pkgconfig file libcroco.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libcxxDevelopment against LLVM's libc++ Stadnard C++ Library implementation.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libdaemonAll content for pkgconfig file libdaemon.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libdatrieAll content for pkgconfig file libdatrie.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libdazzleAll content for pkgconfig file libdazzle.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libdbusmenu-qtAll content for pkgconfig file libdbusmenu-qt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-libdisplay-infoAll content for pkgconfig file libdisplay-info.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libdmxAll content for pkgconfig file libdmx.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libdrmAll content for pkgconfig file libdrm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libeconfAll content for pkgconfig file libeconf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libeditAll content for pkgconfig file libedit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libepoxyAll content for pkgconfig file libepoxy.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libevdevAll content for pkgconfig file libevdev.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libeventAll content for pkgconfig file libevent.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libevent-lib
  • + +
+
+ +
devpkg-libexifAll content for pkgconfig file libexif.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libffiAll content for pkgconfig file libffi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libfido2All content for pkgconfig file libfido2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libfontencAll content for pkgconfig file libfontenc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgcryptAll content for pkgconfig file libgcrypt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgdAll content for pkgconfig file libgd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • perl-basic
  • + +
+
+ +
devpkg-libgdataAll content for pkgconfig file libgdata.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgeeAll content for pkgconfig file libgee.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgit2All content for pkgconfig file libgit2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libglvndAll content for pkgconfig file libglvnd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libgnomekbdAll content for pkgconfig file libgnomekbd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libgpg-errorAll content for pkgconfig file libgpg-error.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgphoto2All content for pkgconfig file libgphoto2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • libXpm-lib
  • + +
  • gphoto
  • + +
+
+ +
devpkg-libgsystemAll content for pkgconfig file libgsystem.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgtopAll content for pkgconfig file libgtop.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libgudevAll content for pkgconfig file libgudev.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgusbAll content for pkgconfig file libgusb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgweatherAll content for pkgconfig file libgweather.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libhandyAll content for pkgconfig file libhandy.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libicalAll content for pkgconfig file libical.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-libidnAll content for pkgconfig file libidn.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libidn2All content for pkgconfig file libidn2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libinputAll content for pkgconfig file libinput.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libiscsiAll content for pkgconfig file libiscsi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libisofsAll content for pkgconfig file libisofs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libjcatAll content for pkgconfig file libjcat.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
+
+ +
devpkg-libjpeg-turboAll content for pkgconfig file libjpeg-turbo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libkcapiAll content for pkgconfig file libkcapi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libksbaAll content for pkgconfig file libksba.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libliftoffAll content for pkgconfig file libliftoff.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-libdrm
  • + +
+
+ +
devpkg-libmaxminddbAll content for pkgconfig file libmaxminddb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmbimAll content for pkgconfig file libmbim.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmediaartAll content for pkgconfig file libmediaart.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmicrohttpdAll content for pkgconfig file libmicrohttpd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmnlAll content for pkgconfig file libmnl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmspackAll content for pkgconfig file libmspack.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmtpAll content for pkgconfig file libmtp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmypaintAll content for pkgconfig file libmypaint.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libndpAll content for pkgconfig file libndp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnetfilter_conntrackAll content for pkgconfig file libnetfilter_conntrack.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnetfilter_cthelperAll content for pkgconfig file libnetfilter_cthelper.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnetfilter_cttimeoutAll content for pkgconfig file libnetfilter_cttimeout.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnetfilter_queueAll content for pkgconfig file libnetfilter_queue.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnfnetlinkAll content for pkgconfig file libnfnetlink.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnftnlAll content for pkgconfig file libnftnl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libniceAll content for pkgconfig file libnice.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gstreamer
  • + +
+
+ +
devpkg-libnlAll content for pkgconfig file libnl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libnl
  • + +
+
+ +
devpkg-libnmaAll content for pkgconfig file libnma.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-libnotifyAll content for pkgconfig file libnotify.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnslAll content for pkgconfig file libnsl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-liboauthAll content for pkgconfig file liboauth.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • curl
  • + +
+
+ +
devpkg-liboggAll content for pkgconfig file libogg.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libosinfoAll content for pkgconfig file libosinfo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • clr-hardware-files
  • + +
  • icu4c-lib
  • + +
  • libpsl-lib
  • + +
+
+ +
devpkg-libpcapAll content for pkgconfig file libpcap.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libpcap-lib
  • + +
+
+ +
devpkg-libpciaccessAll content for pkgconfig file libpciaccess.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpeasAll content for pkgconfig file libpeas.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libpinyinAll content for pkgconfig file libpinyin.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-libpipelineAll content for pkgconfig file libpipeline.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpngAll content for pkgconfig file libpng.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libportalAll content for pkgconfig file libportal.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
devpkg-libproxyAll content for pkgconfig file libproxy.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
+
+ +
devpkg-libpslAll content for pkgconfig file libpsl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libpsl-lib
  • + +
  • icu4c-lib
  • + +
+
+ +
devpkg-libpthread-stubsAll content for pkgconfig file libpthread-stubs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpwqualityAll content for pkgconfig file libpwquality.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libqbAll content for pkgconfig file libqb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libqmiAll content for pkgconfig file libqmi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libqrtr-glibAll content for pkgconfig file libqrtr-glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libratbagAll content for pkgconfig file libratbag.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libratbag
  • + +
+
+ +
devpkg-LibRawAll content for pkgconfig file LibRaw.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-librepoAll content for pkgconfig file librepo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
+
+ +
devpkg-librsvgAll content for pkgconfig file librsvg.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-librttopoAll content for pkgconfig file librttopo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsamplerateAll content for pkgconfig file libsamplerate.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsassAll content for pkgconfig file libsass.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-libsctpAll content for pkgconfig file libsctp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libseccompAll content for pkgconfig file libseccomp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsecretAll content for pkgconfig file libsecret.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsigcplusplusAll content for pkgconfig file libsigcplusplus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libskkAll content for pkgconfig file libskk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libslirpAll content for pkgconfig file libslirp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsmbiosAll content for pkgconfig file libsmbios.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • python3-basic
  • + +
+
+ +
devpkg-libsndfileAll content for pkgconfig file libsndfile.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsodiumAll content for pkgconfig file libsodium.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsolvAll content for pkgconfig file libsolv.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • popt-lib
  • + +
+
+ +
devpkg-libsoupAll content for pkgconfig file libsoup.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libspatialiteAll content for pkgconfig file libspatialite.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • lz4
  • + +
+
+ +
devpkg-libspectreAll content for pkgconfig file libspectre.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • harfbuzz-lib
  • + +
+
+ +
devpkg-libspiroAll content for pkgconfig file libspiro.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsrtpAll content for pkgconfig file libsrtp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-libpcap
  • + +
+
+ +
devpkg-libsshAll content for pkgconfig file libssh.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libssh-lib
  • + +
  • devpkg-base
  • + +
  • openldap
  • + +
+
+ +
devpkg-libssh2All content for pkgconfig file libssh2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libstatgrabAll content for pkgconfig file libstatgrab.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • perl-basic
  • + +
+
+ +
devpkg-libstoragemgmtAll content for pkgconfig file libstoragemgmt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • pypi-six
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-libtasn1All content for pkgconfig file libtasn1.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libthaiAll content for pkgconfig file libthai.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libtheoraAll content for pkgconfig file libtheora.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libtirpcAll content for pkgconfig file libtirpc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libtraceeventAll content for pkgconfig file libtraceevent.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libtracefsAll content for pkgconfig file libtracefs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libunibreakAll content for pkgconfig file libunibreak.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libunwindAll content for pkgconfig file libunwind.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libunwind-lib
  • + +
+
+ +
devpkg-liburingAll content for pkgconfig file liburing.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libusbAll content for pkgconfig file libusb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libusb-compatAll content for pkgconfig file libusb-compat.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libuserAll content for pkgconfig file libuser.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • popt-lib
  • + +
+
+ +
devpkg-libuvAll content for pkgconfig file libuv.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libvaAll content for pkgconfig file libva.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • lib-opengl
  • + +
+
+ +
devpkg-libvdpauAll content for pkgconfig file libvdpau.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libvirtAll content for pkgconfig file libvirt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • openldap
  • + +
  • libssh-lib
  • + +
  • libpcap-lib
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
devpkg-libvorbisAll content for pkgconfig file libvorbis.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libvpxAll content for pkgconfig file libvpx.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-libwacomAll content for pkgconfig file libwacom.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libwebpAll content for pkgconfig file libwebp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libwnck3All content for pkgconfig file libwnck3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libX11All content for pkgconfig file libX11.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libXauAll content for pkgconfig file libXau.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
  • devpkg-xorgproto
  • + +
+
+ +
devpkg-libXawAll content for pkgconfig file libXaw.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libxcbAll content for pkgconfig file libxcb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-libXau
  • + +
  • devpkg-libXdmcp
  • + +
  • devpkg-libpthread-stubs
  • + +
+
+ +
devpkg-libXcompositeAll content for pkgconfig file libXcomposite.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-libXfixes
  • + +
+
+ +
devpkg-libXcursorAll content for pkgconfig file libXcursor.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libxcvtAll content for pkgconfig file libxcvt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXdamageAll content for pkgconfig file libXdamage.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-libXfixes
  • + +
+
+ +
devpkg-libXdmcpAll content for pkgconfig file libXdmcp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
  • devpkg-xorgproto
  • + +
+
+ +
devpkg-libXextAll content for pkgconfig file libXext.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
  • devpkg-xorgproto
  • + +
+
+ +
devpkg-libxfce4uiAll content for pkgconfig file libxfce4ui.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libxfce4utilAll content for pkgconfig file libxfce4util.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-base
  • + +
  • libglib
  • + +
+
+ +
devpkg-libXfixesAll content for pkgconfig file libXfixes.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
  • devpkg-xorgproto
  • + +
+
+ +
devpkg-libXfontAll content for pkgconfig file libXfont.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXfont2All content for pkgconfig file libXfont2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXftAll content for pkgconfig file libXft.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libXiAll content for pkgconfig file libXi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-libXfixes
  • + +
  • devpkg-libX11
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-libXext
  • + +
+
+ +
devpkg-libXineramaAll content for pkgconfig file libXinerama.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-libXext
  • + +
+
+ +
devpkg-libxkbcommonAll content for pkgconfig file libxkbcommon.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libxkbfileAll content for pkgconfig file libxkbfile.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libxklavierAll content for pkgconfig file libxklavier.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libxml2All content for pkgconfig file libxml2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libxml2
  • + +
+
+ +
devpkg-libXmuAll content for pkgconfig file libXmu.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libXpmAll content for pkgconfig file libXpm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • libXpm-lib
  • + +
+
+ +
devpkg-libXpresentAll content for pkgconfig file libXpresent.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libXrandrAll content for pkgconfig file libXrandr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-libXrender
  • + +
  • devpkg-libX11
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-libXext
  • + +
+
+ +
devpkg-libXrenderAll content for pkgconfig file libXrender.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
  • devpkg-xorgproto
  • + +
+
+ +
devpkg-libXresAll content for pkgconfig file libXres.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libXScrnSaverAll content for pkgconfig file libXScrnSaver.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libxsltAll content for pkgconfig file libxslt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libxslt
  • + +
+
+ +
devpkg-libXtAll content for pkgconfig file libXt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libXtstAll content for pkgconfig file libXtst.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libXvAll content for pkgconfig file libXv.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libXvMCAll content for pkgconfig file libXvMC.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libXxf86dgaAll content for pkgconfig file libXxf86dga.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libXxf86vmAll content for pkgconfig file libXxf86vm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-libXext
  • + +
+
+ +
devpkg-libyamiAll content for pkgconfig file libyami.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-libzipAll content for pkgconfig file libzip.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libzmqAll content for pkgconfig file libzmq.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libzmq
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-Linux-PAMAll content for Linux-PAM
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-lksctp-toolsAll content for pkgconfig file lksctp-tools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-llvmAll content for pkgconfig file llvm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • llvm
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-lmdbAll content for pkgconfig file lmdb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-lttng-ustAll content for pkgconfig file lttng-ust.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • numactl
  • + +
+
+ +
devpkg-luaAll content for pkgconfig file lua.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-LuaJITAll content for pkgconfig file LuaJIT.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-LVM2All content for pkgconfig file LVM2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • gobject-introspection
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
+
+ +
devpkg-lz4All content for pkgconfig file lz4.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lz4
  • + +
+
+ +
devpkg-lzoAll content for pkgconfig file lzo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mariadbAll content for pkgconfig file mariadb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • curl
  • + +
  • libstdcpp
  • + +
  • perl-basic
  • + +
  • mariadb
  • + +
+
+ +
devpkg-mbedtlsAll content for pkgconfig file mbedtls.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-md4cAll content for pkgconfig file md4c.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mediasdkAll content for pkgconfig file mediasdk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-mesaAll content for pkgconfig file mesa.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-metacityAll content for pkgconfig file metacity.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
devpkg-metrics-discoveryAll content for pkgconfig file metrics-discovery.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-mm-commonAll content for pkgconfig file mm-common.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mobile-broadband-provider-infoAll content for pkgconfig file mobile-broadband-provider-info.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-ModemManagerAll content for pkgconfig file ModemManager.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-mozjs102All content for pkgconfig file mozjs102.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-mozjs115All content for pkgconfig file mozjs115.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-mozjs91All content for pkgconfig file mozjs91.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-mpfrAll content for pkgconfig file mpfr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mpg123All content for pkgconfig file mpg123.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • mpg123
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-mtdevAll content for pkgconfig file mtdev.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-multipath-toolsAll content for pkgconfig file multipath-tools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mutterAll content for pkgconfig file mutter.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-base
  • + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • devpkg-pango
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-libglvnd
  • + +
  • libX11client
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-cairo
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-libX11
  • + +
  • devpkg-wayland
  • + +
  • lib-opengl
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-graphene
  • + +
+
+ +
devpkg-nautilusAll content for pkgconfig file nautilus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • nautilus
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
+
+ +
devpkg-ncursesAll content for pkgconfig file ncurses.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • ncurses-lib
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-ndctlAll content for pkgconfig file ndctl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-net-snmpAll content for pkgconfig file net-snmp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • pcre-lib
  • + +
  • libpcap-lib
  • + +
  • perl-basic
  • + +
  • libnl
  • + +
+
+ +
devpkg-netcdfAll content for pkgconfig file netcdf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • curl
  • + +
  • libevent-lib
  • + +
+
+ +
devpkg-nettleAll content for pkgconfig file nettle.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-NetworkManagerAll content for pkgconfig file NetworkManager.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • NetworkManager
  • + +
+
+ +
devpkg-newtAll content for pkgconfig file newt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • popt-lib
  • + +
+
+ +
devpkg-nfs-utilsAll content for pkgconfig file nfs-utils.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • nfs-utils
  • + +
  • devpkg-base
  • + +
  • python3-basic
  • + +
+
+ +
devpkg-nftablesAll content for pkgconfig file nftables.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-nghttp2All content for pkgconfig file nghttp2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-nloptAll content for pkgconfig file nlopt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • libnl
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-not-ffmpegAll content for pkgconfig file not-ffmpeg.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • dav1d-lib
  • + +
  • harfbuzz-lib
  • + +
  • not-ffmpeg-lib
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-notmuchContains the notmuch header file.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
+
+ +
devpkg-nsprAll content for pkgconfig file nspr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-nssAll content for pkgconfig file nss.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-ntfs-3gAll content for pkgconfig file ntfs-3g.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-numactlAll content for pkgconfig file numactl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • numactl
  • + +
+
+ +
devpkg-oath-toolkitAll content for pkgconfig file oath-toolkit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-ocl-icdAll content for pkgconfig file ocl-icd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-oiioAll content for pkgconfig file oiio.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • opencv-python
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-oneVPLAll content for pkgconfig file oneVPL.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-onigAll content for pkgconfig file onig.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-open-iscsiAll content for pkgconfig file open-iscsi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-open-isnsAll content for pkgconfig file open-isns.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-openal-softAll content for pkgconfig file openal-soft.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-openblasAll content for pkgconfig file openblas.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • openblas
  • + +
+
+ +
devpkg-opencl-headersAll content for pkgconfig file opencl-headers.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-openconnectAll content for pkgconfig file openconnect.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-opencvAll content for pkgconfig file opencv.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • pypi-numpy
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • opencv-python
  • + +
  • openblas
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-openexrAll content for pkgconfig file openexr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-openjpegAll content for pkgconfig file openjpeg.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-openmpiAll content for pkgconfig file openmpi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • openmpi
  • + +
+
+ +
devpkg-opensslAll content for pkgconfig file openssl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openssl
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-openvswitchAll content for pkgconfig file openvswitch.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • openvswitch
  • + +
  • python3-basic
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-opusAll content for pkgconfig file opus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-opusfileAll content for pkgconfig file opusfile.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-orcAll content for pkgconfig file orc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-ostreeAll content for pkgconfig file ostree.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • xz
  • + +
+
+ +
devpkg-otpAll content for otp-dev.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-p11-kitAll content for pkgconfig file p11-kit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • p11-kit
  • + +
+
+ +
devpkg-paho-mqtt-cAll content for paho.mqtt.c-dev
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-paho-mqtt-cppAll content for paho.mqtt.cpp-dev
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pangoAll content for pkgconfig file pango.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-pangommAll content for pkgconfig file pangomm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-glibmm
  • + +
  • devpkg-cairomm
  • + +
  • devpkg-pango
  • + +
+
+ +
devpkg-partedAll content for pkgconfig file parted.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • parted
  • + +
+
+ +
devpkg-pciutilsAll content for pkgconfig file pciutils.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pcreAll content for pkgconfig file pcre.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pcre-lib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-pcre2All content for pkgconfig file pcre2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pcsc-liteAll content for pkgconfig file pcsc-lite.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-phononAll content for pkgconfig file phonon.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-pipewireAll content for pkgconfig file pipewire.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-pixmanAll content for pkgconfig file pixman.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pixman-staticStatic development files for pixman
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-pixman
  • + +
+
+ +
devpkg-pkcs11-helperAll content for pkgconfig file pkcs11-helper.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-pkg-configAll content for pkgconfig file pkg-config.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pmdkAll content for pkgconfig file pmdk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • pmdk
  • + +
+
+ +
devpkg-polkitAll content for pkgconfig file polkit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • polkit
  • + +
+
+ +
devpkg-polkit-qtAll content for pkgconfig file polkit-qt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-popplerAll content for pkgconfig file poppler.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • lib-imageformat
  • + +
  • poppler
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-poppler-data-clr-renameAll content for pkgconfig file poppler-data-clr-rename.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-poppler-extrasAll content for pkgconfig file poppler-extras.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
+
+ +
devpkg-poptAll content for pkgconfig file popt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • popt-lib
  • + +
+
+ +
devpkg-postgresqlAll content for pkgconfig file postgresql.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • postgresql
  • + +
+
+ +
devpkg-procps-ngAll content for pkgconfig file procps-ng.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • procps-ng
  • + +
+
+ +
devpkg-projAll content for pkgconfig file proj.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • lz4
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-protobufAll content for pkgconfig file protobuf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • protobuf
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-protobuf-cAll content for pkgconfig file protobuf-c.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • protobuf-lib
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-pugixmlAll content for pkgconfig file pugixml.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-pulseaudioAll content for pkgconfig file pulseaudio.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • pulseaudio
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-pycairoAll content for pkgconfig file pycairo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pygobjectAll content for pkgconfig file pygobject.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • pygobject
  • + +
+
+ +
devpkg-qatlibAll content for pkgconfig file qatlib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-qpdfAll content for pkgconfig file qpdf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • lz4
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-qrencodeAll content for pkgconfig file qrencode.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-qt3dAll content for pkgconfig file qt3d.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qt6baseAll content for pkgconfig file qt6base.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-qt6svgAll content for pkgconfig file qt6svg.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • qt6-basic
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-qt6toolsAll content for pkgconfig file qt6tools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-qtbaseAll content for pkgconfig file qtbase.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-qtchartsAll content for pkgconfig file qtcharts.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtconnectivityAll content for pkgconfig file qtconnectivity.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtdatavis3dAll content for pkgconfig file qtdatavis3d.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtdeclarativeAll content for pkgconfig file qtdeclarative.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-qtgamepadAll content for pkgconfig file qtgamepad.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtlocationAll content for pkgconfig file qtlocation.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtmultimediaAll content for pkgconfig file qtmultimedia.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • qt-core
  • + +
  • gstreamer
  • + +
  • qt-basic
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-qtnetworkauthAll content for pkgconfig file qtnetworkauth.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtquickcontrols2All content for pkgconfig file qtquickcontrols2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtremoteobjectsAll content for pkgconfig file qtremoteobjects.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtscriptAll content for pkgconfig file qtscript.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtscxmlAll content for pkgconfig file qtscxml.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtsensorsAll content for pkgconfig file qtsensors.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtserialbusAll content for pkgconfig file qtserialbus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtserialportAll content for pkgconfig file qtserialport.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtspeechAll content for pkgconfig file qtspeech.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtsvgAll content for pkgconfig file qtsvg.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qttoolsAll content for pkgconfig file qttools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtvirtualkeyboardAll content for pkgconfig file qtvirtualkeyboard.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-qtwaylandAll content for pkgconfig file qtwayland.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-qtwebchannelAll content for pkgconfig file qtwebchannel.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtwebsocketsAll content for pkgconfig file qtwebsockets.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtx11extrasAll content for pkgconfig file qtx11extras.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
devpkg-qtxmlpatternsAll content for pkgconfig file qtxmlpatterns.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
devpkg-RAll content for pkgconfig file R.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • curl
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • xz
  • + +
  • openblas
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-rabbitmq-cAll content for pkgconfig file rabbitmq-c.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • popt-lib
  • + +
+
+ +
devpkg-rdma-coreAll content for pkgconfig file rdma-core.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • perl-basic
  • + +
+
+ +
devpkg-re2All content for pkgconfig file re2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-readlineAll content for pkgconfig file readline.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • ncurses-lib
  • + +
+
+ +
devpkg-restAll content for pkgconfig file rest.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
+
+ +
devpkg-rrdtoolAll content for pkgconfig file rrdtool.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • rrdtool
  • + +
  • libX11client
  • + +
+
+ +
devpkg-rtmpdumpAll content for pkgconfig file rtmpdump.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-sambaAll content for pkgconfig file samba.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • python3-basic
  • + +
  • samba
  • + +
+
+ +
devpkg-sane-backendsAll content for pkgconfig file sane-backends.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • pcre-lib
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-sbcAll content for pkgconfig file sbc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-scdocAll content for pkgconfig file scdoc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDLAll content for pkgconfig file SDL.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2All content for pkgconfig file SDL2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2_gfxAll content for pkgconfig file SDL2_gfx.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2_imageAll content for pkgconfig file SDL2_image.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2_mixerAll content for pkgconfig file SDL2_mixer.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2_netAll content for pkgconfig file SDL2_net.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2_ttfAll content for pkgconfig file SDL2_ttf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL_gfxAll content for pkgconfig file SDL_gfx.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL_imageAll content for pkgconfig file SDL_image.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL_mixerAll content for pkgconfig file SDL_mixer.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL_netAll content for pkgconfig file SDL_net.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL_ttfAll content for pkgconfig file SDL_ttf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • harfbuzz-lib
  • + +
+
+ +
devpkg-seatdAll content for pkgconfig file seatd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-serfAll content for pkgconfig file serf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-shapelibAll content for pkgconfig file shapelib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-shared-mime-infoAll content for pkgconfig file shared-mime-info.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-slangAll content for pkgconfig file slang.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • pcre-lib
  • + +
+
+ +
devpkg-snappyAll content for pkgconfig file snappy.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-source-highlightAll content for pkgconfig file source-highlight.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-spdlogAll content for pkgconfig file spdlog.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-speexAll content for pkgconfig file speex.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-speexdspAll content for pkgconfig file speexdsp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-spiceAll content for pkgconfig file spice.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • lz4
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-spice-protocolAll content for pkgconfig file spice-protocol.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SPIRV-CrossAll content for pkgconfig file SPIRV-Cross.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-SPIRV-HeadersAll content for pkgconfig file SPIRV-Headers.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SPIRV-ToolsAll content for pkgconfig file SPIRV-Tools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-sqlite-autoconfAll content for pkgconfig file sqlite-autoconf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-startup-notificationAll content for pkgconfig file startup-notification.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-stokenAll content for pkgconfig file stoken.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-subunitAll content for pkgconfig file subunit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-SVT-AV1All content for pkgconfig file SVT-AV1.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • SVT-AV1
  • + +
+
+ +
devpkg-SVT-HEVCAll content for pkgconfig file SVT-HEVC.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • SVT-HEVC
  • + +
+
+ +
devpkg-systemdAll content for pkgconfig file systemd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-taglibAll content for pkgconfig file taglib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-tallocAll content for pkgconfig file talloc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-tbbAll content for pkgconfig file tbb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-tclAll content for pkgconfig file tcl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-tdbAll content for pkgconfig file tdb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-telemetrics-clientAll content for pkgconfig file telemetrics-client.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • curl
  • + +
+
+ +
devpkg-telepathy-glibAll content for pkgconfig file telepathy-glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-tesseractAll content for pkgconfig file tesseract.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • curl
  • + +
  • tesseract
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-teventAll content for pkgconfig file tevent.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-texliveAll content for pkgconfig file texlive.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • texlive
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-thriftAll content for pkgconfig file thrift.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • pypi-six
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-ThunarAll content for pkgconfig file Thunar.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • gnome-base-libs
  • + +
  • libXpm-lib
  • + +
  • libX11client
  • + +
  • webkitgtk
  • + +
  • gphoto
  • + +
  • lib-openssl
  • + +
  • libpsl-lib
  • + +
  • popt-lib
  • + +
+
+ +
devpkg-tiffAll content for pkgconfig file tiff.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • lz4
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-tkAll content for pkgconfig file tk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • harfbuzz-lib
  • + +
+
+ +
devpkg-tokyocabinetAll content for pkgconfig file tokyocabinet.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-tpm2-abrmdAll content for pkgconfig file tpm2-abrmd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-tpm2-tssAll content for pkgconfig file tpm2-tss.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • curl
  • + +
+
+ +
devpkg-udisks2All content for pkgconfig file udisks2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • pypi-six
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-uhttpmockAll content for pkgconfig file uhttpmock.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-upowerAll content for pkgconfig file upower.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • python3-basic
  • + +
+
+ +
devpkg-usbredirAll content for pkgconfig file usbredir.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-userspace-rcuAll content for pkgconfig file userspace-rcu.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-utf8procAll content for pkgconfig file utf8proc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-util-linuxAll content for pkgconfig file util-linux.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-util-macrosAll content for pkgconfig file util-macros.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-v4l-utilsAll content for pkgconfig file v4l-utils.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • v4l-utils
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-valaAll content for pkgconfig file vala.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • gdk-pixbuf
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • harfbuzz-lib
  • + +
+
+ +
devpkg-valgrindAll content for pkgconfig file valgrind.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • perl-basic
  • + +
  • valgrind
  • + +
+
+ +
devpkg-virglrendererAll content for pkgconfig file virglrenderer.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-vteAll content for pkgconfig file vte.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • vte-lib
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-Vulkan-HeadersAll content for pkgconfig file Vulkan-Loader.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-Vulkan-Loader
  • + +
+
+ +
devpkg-Vulkan-LoaderAll content for pkgconfig file Vulkan-Loader.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-waffleAll content for pkgconfig file waffle.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-wavpackAll content for pkgconfig file wavpack.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-waylandAll content for pkgconfig file wayland.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-wayland-protocolsAll content for pkgconfig file wayland-protocols.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-webkitgtkAll content for pkgconfig file webkitgtk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-base
  • + +
  • libglib
  • + +
  • devpkg-gtk3
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • webkitgtk
  • + +
  • devpkg-libsoup
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-westonAll content for pkgconfig file weston.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
+
+ +
devpkg-wlrootsAll content for pkgconfig file wlroots.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-woff2All content for pkgconfig file woff2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-wxWidgetsAll content for pkgconfig file wxWidgets
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-imageformat
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • gdk-pixbuf
  • + +
  • webkitgtk
  • + +
  • libpsl-lib
  • + +
  • lib-opengl
  • + +
  • aspell
  • + +
+
+ +
devpkg-xapian-coreAll content for pkgconfig file xapian-core.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
devpkg-xcb-protoAll content for pkgconfig file xcb-proto.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xcb-util-cursorAll content for pkgconfig file xcb-util-cursor.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-xdg-desktop-portalAll content for pkgconfig file xdg-desktop-portal.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • xdg-desktop-portal
  • + +
+
+ +
devpkg-xf86-input-evdevAll content for pkgconfig file xf86-input-evdev.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xf86-input-synapticsAll content for pkgconfig file xf86-input-synaptics.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-xf86-input-wacomAll content for pkgconfig file xf86-input-wacom.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-xfconfAll content for pkgconfig file xfconf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-xkbcompAll content for pkgconfig file xkbcomp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
+
+ +
devpkg-xkeyboard-configAll content for pkgconfig file xkeyboard-config.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xmlbAll content for pkgconfig file xmlb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-xmlsec1All content for pkgconfig file xmlsec1.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • lib-openssl
  • + +
+
+ +
devpkg-xorg-serverAll content for pkgconfig file xorg-server.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • lib-opengl
  • + +
+
+ +
devpkg-xorgprotoAll content for pkgconfig file xorgproto.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xrdpAll content for pkgconfig file xrdp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • xrdp
  • + +
+
+ +
devpkg-xtransAll content for pkgconfig file xtrans.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xwaylandAll content for pkgconfig file xwayland.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libX11client
  • + +
  • lib-opengl
  • + +
+
+ +
devpkg-xzAll content for pkgconfig file xz.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • xz
  • + +
+
+ +
devpkg-xz-staticAll content for static building using liblzma.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xz
  • + +
+
+ +
devpkg-yajlAll content for pkgconfig file yajl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-yelp-xslAll content for pkgconfig file yelp-xsl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-zlibAll content for pkgconfig file zlib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-zstdAll content for pkgconfig file zstd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • zstd
  • + +
+
+ +
devpkg-zxingAll content for pkgconfig file zxing.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • libstdcpp
  • + +
+
+ +
dfu-utilDevice firmware upgrade utilities.
+ +
Status: + + Active + +
+ + +
dhcp-serverRun a dhcp server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • dbus-lib
  • + +
  • nettle-lib
  • + +
  • systemd
  • + +
  • gmp-lib
  • + +
+
+ +
diffoscopeTool for in-depth comparison of files, archives, and directories.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
diffutilsTools for file comparisons and differences, creating patch files.
+ +
Status: + + Active + +
+ + +
digikamAn advanced digital photo management application.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libXpm-lib
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • desktop-kde-libs
  • + +
  • perl-basic
  • + +
  • kde-frameworks5
  • + +
  • opencv-python
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • gphoto
  • + +
  • openblas
  • + +
  • protobuf-lib
  • + +
  • lensfun
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
dinoModern XMPP ("Jabber") Chat Client using GTK+/Vala
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • libpsl-lib
  • + +
+
+ +
djangoPython model-view-template web framework.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • Sphinx
  • + +
+
+ +
dkmsNo detailed summary available
+ +
Status: + + Active + +
+ + +
dnfThe dnf tool for use with mixer on Clear Linux OS.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • gpgme
  • + +
  • curl
  • + +
  • pypi-six
  • + +
  • libxml2
  • + +
  • file
  • + +
  • perl-basic
  • + +
  • popt-lib
  • + +
  • libarchive
  • + +
+
+ +
docbook-utilsShell scripts to manage DocBook documents.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
docker-composeTool for defining and running multi-container Docker applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pypi-cython
  • + +
  • containers-basic
  • + +
  • pypi-requests
  • + +
+
+ +
docutilsTools for converting plaintext into other formats (e.g. HTML, XML, LaTeX).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
dolphinFile manager focusing on usability.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
  • desktop-kde-libs
  • + +
  • qt-core
  • + +
+
+ +
domoticaHome Automation software collection.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • pypi-cython
  • + +
  • cloud-api
  • + +
  • qt-basic
  • + +
  • pypi-requests
  • + +
+
+ +
dosfstoolsDOS filesystem, or (V)FAT, tools.
+ +
Status: + + Active + +
+ + +
dovecotSecurity-focused IMAP and POP3 email server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lz4
  • + +
  • sqlite
  • + +
  • openldap
  • + +
  • lib-openssl
  • + +
+
+ +
doxygenDocumentation system for C++, Java, IDL, Python, and PHP.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
dpdkData Plane Development Kit core.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libstdcpp
  • + +
  • libpcap-lib
  • + +
  • lib-openssl
  • + +
  • numactl
  • + +
  • libnl
  • + +
  • libarchive
  • + +
+
+ +
dragonA multimedia player where the focus is on simplicity, instead of features
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
dropwatchKernel dropped packet monitor
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • binutils
  • + +
  • ncurses-lib
  • + +
  • libpcap-lib
  • + +
  • libnl
  • + +
+
+ +
dtcDevice Tree Compiler used to describe non-discoverable hardware.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • yaml
  • + +
+
+ +
duperemoveTool for finding duplicated extents and submitting them for deduplication.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • sqlite
  • + +
+
+ +
earlyoomUtility for pre-oomkiller process control
+ +
Status: + + Active + +
+ + +
editorsRun popular terminal text editors.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • yaml
  • + +
  • libxml2
  • + +
+
+ +
editors-devAll packages required to build the editors bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • llvm
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-util-linux
  • + +
  • plzip
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-jansson
  • + +
  • devpkg-expat
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-tk
  • + +
  • devpkg-libpwquality
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • dev-utils
  • + +
  • devpkg-file
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • libxslt
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-tpm2-tss
  • + +
  • procps-ng
  • + +
  • libpsl-lib
  • + +
  • intltool
  • + +
  • guile
  • + +
  • devpkg-tcl
  • + +
  • git
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • file
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • make
  • + +
  • devpkg-gmp
  • + +
  • devpkg-systemd
  • + +
  • glibc-locale
  • + +
  • devpkg-slang
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-kmod
  • + +
  • openssl
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-lz4
  • + +
  • valgrind
  • + +
  • devpkg-libbsd
  • + +
  • patchelf
  • + +
  • p11-kit
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • xz
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libbpf
  • + +
  • graphviz
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • devpkg-boost
  • + +
  • devpkg-libX11
  • + +
  • devpkg-icu4c
  • + +
  • editors
  • + +
+
+ +
educationEducational applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • education-preschool
  • + +
  • libX11client
  • + +
  • desktop-kde-libs
  • + +
  • education-tertiary
  • + +
  • gimp
  • + +
  • qt-basic
  • + +
  • desktop-gnomelibs
  • + +
  • education-primary
  • + +
  • education-secondary
  • + +
+
+ +
education-preschoolEducational applications for the preschool level.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • desktop-kde-libs
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • desktop-gnomelibs
  • + +
  • qt6-basic
  • + +
+
+ +
education-primaryEducational applications for the primary school level.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • desktop-kde-libs
  • + +
  • kgeography
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • desktop-gnomelibs
  • + +
  • LibRaw-lib
  • + +
  • protobuf-lib
  • + +
  • kmplot
  • + +
+
+ +
education-secondaryEducational applications for the secondary school level.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • desktop-kde-libs
  • + +
  • kgeography
  • + +
  • kde-frameworks5
  • + +
  • kalgebra
  • + +
  • qt-basic
  • + +
  • desktop-gnomelibs
  • + +
  • LibRaw-lib
  • + +
  • protobuf-lib
  • + +
  • kmplot
  • + +
+
+ +
education-tertiaryEducational applications for the tertiary school/university level.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • R-basic
  • + +
  • libX11client
  • + +
  • desktop-kde-libs
  • + +
  • kde-frameworks5
  • + +
  • kalgebra
  • + +
  • qt-basic
  • + +
  • desktop-gnomelibs
  • + +
  • protobuf-lib
  • + +
  • kmplot
  • + +
+
+ +
eid-mwThe middleware, viewer and Firefox extension for the Belgian electronic identity card (Belgian eID)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • curl
  • + +
  • libX11client
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
emacsExtensible, customizable terminal text editor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • ncurses-lib
  • + +
  • gmp-lib
  • + +
  • dbus-lib
  • + +
  • libxml2
  • + +
  • nettle-lib
  • + +
  • yaml
  • + +
+
+ +
emacs-x11Highly customizable text editor, gui build.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • mpfr-lib
  • + +
  • curl
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • LibRaw-lib
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
+
+ +
EndeavourNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
+
+ +
enterprise-loginEnable enterprise login systems like Active Directory.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • openldap
  • + +
  • pypi-six
  • + +
  • samba
  • + +
  • pypi-requests
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
eogEye of GNOME for image viewing and cataloging.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
+
+ +
ethtoolUtility for displaying and modifying some parameters of network interface controller.
+ +
Status: + + Active + +
+ + +
eventviewsLibrary for creating events
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • kmime
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • libstdcpp
  • + +
+
+ +
evinceGNOME document viewer for multiple formats (PDF, Postscript, djvu, tiff, dvi, XPS, etc).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • lib-poppler
  • + +
  • libarchive
  • + +
+
+ +
evolutionApplication for integrated email, calendar, and address book functionality.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • openldap
  • + +
  • systemd
  • + +
  • libX11client
  • + +
  • webkitgtk
  • + +
  • libarchive
  • + +
+
+ +
extremetuxracerDownhill penguin racing game featuring Tux.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
faas-cliCLI for use with OpenFaaS - a serverless functions framework for Docker & Kubernetes.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
fastfetchNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ddcutil
  • + +
+
+ +
fdfind alternative
+ +
Status: + + Active + +
+ + +
fdupesA program for identifying or deleting duplicate files residing within specified directories.
+ +
Status: + + Active + +
+ + +
fehFast X11 image viewer, managed via command-line.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
fileFile type identification utility.
+ +
Status: + + Active + +
+ + +
file-rollerGNOME archive manager utility.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • libarchive
  • + +
+
+ +
filelightView disk usage information
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
findutilsGNU utilities to locate files (e.g., find, xargs, and locate).
+ +
Status: + + Active + +
+ + +
fioFlexible I/O tester, often used for load simulation.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • numactl
  • + +
+
+ +
firefoxWeb browser with support for modern web applications from mozilla.org.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • gdk-pixbuf
  • + +
  • desktop-gnomelibs
  • + +
+
+ +
firewalldA firewall daemon with D-Bus interface providing a dynamic firewall
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • gmp-lib
  • + +
  • pypi-six
  • + +
  • pygobject
  • + +
+
+ +
firmware-updateUpdate the system's firmware.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • python3-basic
  • + +
  • cryptography
  • + +
  • libX11client
  • + +
  • polkit
  • + +
  • pypi-six
  • + +
  • libpsl-lib
  • + +
  • libarchive
  • + +
+
+ +
flacFree Lossless Audio Codec (FLAC) audio format tools.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
flareSingle-player 2D isometric action role-playing game (RPG).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
flatpakRun sandboxed desktop application bundles, or build flatpak packages.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • audio-pipewire
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • git
  • + +
  • gnupg
  • + +
  • libpsl-lib
  • + +
  • libarchive
  • + +
+
+ +
flexTool for generating programs that recognize lexical patterns in text.
+ +
Status: + + Active + +
+ + +
fluidsynthA real-time software synthesizer based on the SoundFont 2 specifications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • ncurses-lib
  • + +
  • libX11client
  • + +
  • pulseaudio
  • + +
  • libstdcpp
  • + +
+
+ +
fontconfigFont configuration and customization library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • systemd
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • harfbuzz-lib
  • + +
+
+ +
fontforgeOutline and bitmap font editor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
fonts-basicFonts and fonts tooling.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • fontconfig
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
fonttoolsTools to manipulate system and user fonts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • pypi-cython
  • + +
  • pypi-numpy
  • + +
  • pypi-six
  • + +
  • libX11client
  • + +
  • openblas
  • + +
  • libstdcpp
  • + +
+
+ +
forkstatmonitor process fork, exec, exit calls
+ +
Status: + + Active + +
+ + +
fortune-modfortune is a program that displays a pseudo random message.
+ +
Status: + + Active + +
+ + +
fossilA simple, high-reliability, distributed software configuration management system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • sqlite
  • + +
  • lib-openssl
  • + +
+
+ +
fprintdNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • sqlite
  • + +
  • lib-openssl
  • + +
+
+ +
FreeRDPFree implementation of the Remote Desktop Protocol (RDP)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • numactl
  • + +
  • libX11client
  • + +
  • libssh-lib
  • + +
  • pulseaudio
  • + +
  • dav1d-lib
  • + +
  • not-ffmpeg-lib
  • + +
  • libstdcpp
  • + +
+
+ +
fsearchA gtk3 based file search tool.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • pcre-lib
  • + +
  • libX11client
  • + +
  • icu4c-lib
  • + +
+
+ +
fuseFilesystem in Userspace (FUSE) to export a virtual filesystem to Linux kernel, or mount filesystem implementation for non-privileged users.
+ +
Status: + + Active + +
+ + +
gamesPlay games in Clear Linux OS.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • diffutils
  • + +
  • libXpm-lib
  • + +
  • os-core-legacy
  • + +
  • libX11client
  • + +
  • perl-basic
  • + +
  • libratbag
  • + +
  • NetworkManager-extras
  • + +
  • zenity
  • + +
  • lib-opengl
  • + +
  • p11-kit
  • + +
+
+ +
games-devAll packages required to build the games bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-hunspell
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gpgme
  • + +
  • llvm
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-dbus-python
  • + +
  • perl-basic-dev
  • + +
  • devpkg-jansson
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-libqrtr-glib
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-pixman
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-gi-docgen
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-gtk4
  • + +
  • vte-lib
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-libusb
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-ModemManager
  • + +
  • devpkg-libcroco
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-qtwayland
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-mozjs115
  • + +
  • devpkg-telepathy-glib
  • + +
  • devpkg-libsass
  • + +
  • devpkg-libass
  • + +
  • devpkg-xmlb
  • + +
  • devpkg-util-macros
  • + +
  • intltool
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-libwacom
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-SDL_net
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • devpkg-gcr
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • glibc-locale
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-libadwaita
  • + +
  • sassc
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-compat-gcr-soname1
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-lz4
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libexif
  • + +
  • devpkg-opus
  • + +
  • devpkg-ell
  • + +
  • devpkg-glu
  • + +
  • devpkg-jemalloc
  • + +
  • games
  • + +
  • devpkg-gst-plugins-base
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libssh
  • + +
  • devpkg-font-util
  • + +
  • devpkg-appstream
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • graphviz
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-directx-headers
  • + +
  • fonttools
  • + +
  • devpkg-libqmi
  • + +
  • devpkg-libavif
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-gnome-bluetooth
  • + +
  • nasm
  • + +
  • devpkg-qtsvg
  • + +
  • devpkg-SDL2_gfx
  • + +
  • gnupg
  • + +
  • devpkg-libXv
  • + +
  • devpkg-cogl
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-tevent
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libgdata
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • iptables
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-newt
  • + +
  • devpkg-gsound
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-libndp
  • + +
  • devpkg-qtserialport
  • + +
  • libxml2
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-flac
  • + +
  • devpkg-NetworkManager
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-libical
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-vala
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • devpkg-tdb
  • + +
  • devpkg-lzo
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-libdaemon
  • + +
  • devpkg-tpm2-tss
  • + +
  • clr-hardware-files
  • + +
  • devpkg-speex
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-snappy
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-xwayland
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-qtconnectivity
  • + +
  • devpkg-libnl
  • + +
  • devpkg-gmp
  • + +
  • devpkg-qtsensors
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-mobile-broadband-provider-info
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • yasm
  • + +
  • devpkg-gflags
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-libnotify
  • + +
  • strace
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-openconnect
  • + +
  • devpkg-evolution-data-server
  • + +
  • devpkg-fftw
  • + +
  • devpkg-orc
  • + +
  • devpkg-clutter
  • + +
  • devpkg-mutter
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libogg
  • + +
  • devpkg-glew
  • + +
  • qt6-basic
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-gnome-autoar
  • + +
  • devpkg-llvm
  • + +
  • devpkg-SDL_gfx
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-qtwebsockets
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-dconf
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • gjs
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-libXxf86dga
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libpsl
  • + +
  • bison
  • + +
  • devpkg-libXft
  • + +
  • devpkg-rtmpdump
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-expat
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libdrm
  • + +
  • unzip
  • + +
  • devpkg-SDL_image
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-libnma
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-file
  • + +
  • devpkg-libidn
  • + +
  • devpkg-krb5
  • + +
  • devpkg-colord
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-graphite
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • ghostscript
  • + +
  • guile
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • devpkg-ldb
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-SDL2_ttf
  • + +
  • devpkg-openjpeg
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-qtxmlpatterns
  • + +
  • devpkg-gnome-settings-daemon
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-nspr
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-iptables
  • + +
  • devpkg-mtdev
  • + +
  • devpkg-oneVPL
  • + +
  • devpkg-dav1d
  • + +
  • libX11client
  • + +
  • devpkg-libclc
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-gnome-control-center
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-cups
  • + +
  • devpkg-pango
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-nettle
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • devpkg-libunibreak
  • + +
  • devpkg-glib
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-gnome-desktop
  • + +
  • devpkg-cJSON
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-popt
  • + +
  • zenity
  • + +
  • flex
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-libffi
  • + +
  • devpkg-liboauth
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-qtmultimedia
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-not-ffmpeg
  • + +
  • devpkg-SDL_ttf
  • + +
  • devpkg-libavtp
  • + +
  • libxslt
  • + +
  • devpkg-graphene
  • + +
  • devpkg-qtcharts
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmbim
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libnice
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-poppler
  • + +
  • devpkg-woff2
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-avahi
  • + +
  • devpkg-lua
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gtksourceview
  • + +
  • devpkg-libdisplay-info
  • + +
  • devpkg-pygobject
  • + +
  • devpkg-GConf
  • + +
  • devpkg-tcl
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-rest
  • + +
  • devpkg-webkitgtk
  • + +
  • devpkg-libgweather
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-check
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • devpkg-mesa
  • + +
  • devpkg-stoken
  • + +
  • devpkg-libXaw
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-kmod
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-libva
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-gjs
  • + +
  • devpkg-nss
  • + +
  • valgrind
  • + +
  • rsync
  • + +
  • patchelf
  • + +
  • devpkg-sbc
  • + +
  • p11-kit
  • + +
  • devpkg-SDL2_net
  • + +
  • net-tools
  • + +
  • which
  • + +
  • binutils
  • + +
  • devpkg-eigen
  • + +
  • devpkg-upower
  • + +
  • aspell
  • + +
  • devpkg-jack2
  • + +
  • devpkg-wayland
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-boost
  • + +
  • fontforge
  • + +
  • devpkg-assimp
  • + +
  • devpkg-duktape
  • + +
+
+ +
gdalGeospatial Data Abstraction Library.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
  • postgresql
  • + +
  • lib-poppler
  • + +
  • lib-openssl
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
gdbGNU debugger with support for Ada, Assembly, C, C++, D, Fortran, Go, and more.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • python3-basic
  • + +
  • curl
  • + +
  • libglib
  • + +
  • icu4c-lib
  • + +
  • gmp-lib
  • + +
  • popt-lib
  • + +
  • libstdcpp
  • + +
+
+ +
gdk-pixbufNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • libxml2
  • + +
  • harfbuzz-lib
  • + +
+
+ +
geanyA fast and lightweight IDE using GTK+.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • vte-lib
  • + +
  • libpsl-lib
  • + +
  • aspell
  • + +
  • libstdcpp
  • + +
+
+ +
gearyA library full of GTK+ widgets for mobile phones
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • libunwind-lib
  • + +
  • webkitgtk
  • + +
  • perl-basic
  • + +
+
+ +
geditGNOME text editor with full support for UTF-8 and syntax highlighting.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • gobject-introspection
  • + +
  • gnome-text-editor
  • + +
+
+ +
geeqieA GTK based image viewer and browser
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libarchive
  • + +
  • curl
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • lib-poppler
  • + +
  • LibRaw-lib
  • + +
  • libpsl-lib
  • + +
  • aspell
  • + +
  • libstdcpp
  • + +
+
+ +
geglNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • LibRaw-lib
  • + +
  • lib-openssl
  • + +
  • libglib
  • + +
  • curl
  • + +
  • sqlite
  • + +
  • dav1d-lib
  • + +
  • icu4c-lib
  • + +
  • gmp-lib
  • + +
  • libX11client
  • + +
  • lib-imageformat
  • + +
  • dbus-lib
  • + +
  • libxml2
  • + +
  • nettle-lib
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
  • not-ffmpeg-lib
  • + +
  • libstdcpp
  • + +
+
+ +
ghGithub's command line tool
+ +
Status: + + Active + +
+ + +
ghostscriptLoads and saves PNG files
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gimpGNU Image Manipulation Program.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • libXpm-lib
  • + +
  • gegl
  • + +
  • libX11client
  • + +
  • libunwind-lib
  • + +
  • lib-poppler
  • + +
  • LibRaw-lib
  • + +
  • not-ffmpeg-lib
  • + +
  • dav1d-lib
  • + +
+
+ +
gitDistributed version-control system for tracking changes.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • libstdcpp
  • + +
  • systemd
  • + +
  • git-lfs
  • + +
  • lib-openssl
  • + +
  • p11-kit
  • + +
  • less
  • + +
+
+ +
git-lfsPackages for git-lfs for Enterprise Linux repository configuration
+ +
Status: + + Active + +
+ + +
gjsJavaScript bindings for GObjects, GNOME.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • desktop-gnomelibs
  • + +
  • libstdcpp
  • + +
+
+ +
glibc-localeGNU/Linux locale files to support cultural conventions of a language and region.
+ +
Status: + + Active + +
+ + +
glmark2OpenGL 2.0 and ES 2.0 benchmark.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
globalGNU GLOBAL source code tagging system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • ncurses-lib
  • + +
  • libstdcpp
  • + +
+
+ +
gmp-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
gmshA three-dimensional finite element mesh generator.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
  • openmpi
  • + +
  • openblas
  • + +
  • libstdcpp
  • + +
+
+ +
gnome-base-libsCommon libraries used by GNOME and related applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • desktop-gnomelibs
  • + +
+
+ +
gnome-boxesLibrary for reading and writing virtual machine images in the Open Virtualization Format.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • clr-hardware-files
  • + +
  • libX11client
  • + +
  • webkitgtk
  • + +
  • desktop-gnomelibs
  • + +
  • kvm-host
  • + +
  • libarchive
  • + +
+
+ +
gnome-calculatorSoftware calculator integrated with the GNOME desktop environment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • mpfr-lib
  • + +
  • gnome-base-libs
  • + +
+
+ +
gnome-charactersUtility application to find and insert unusual characters.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gjs
  • + +
  • desktop-gnomelibs
  • + +
+
+ +
gnome-chessPlay the classic two-player boardgame of chess
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
  • lib-imageformat
  • + +
+
+ +
gnome-clocksClocks applications for GNOME
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
+
+ +
gnome-color-managerFramework for GNOME to manage, install, and generate color profiles.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
gnome-contactsContacts Manager for GNOME
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
gnome-desktop-testingTest runner for GNOME-style installed tests
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
+
+ +
gnome-disk-utilityApplications for managing and configuring disk drives and media.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • mpfr-lib
  • + +
  • libX11client
  • + +
  • desktop-gnomelibs
  • + +
+
+ +
gnome-font-viewerFont viewer utility for GNOME.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
gnome-logsLog viewer for the systemd journal.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
gnome-mahjonggSingle player version of the classic Eastern tile game Mahjongg
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
gnome-musicGNOME music player application with management features.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
gnome-photosApplication for browsing, editing, and organizing photos.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • gegl
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • LibRaw-lib
  • + +
  • NetworkManager-extras
  • + +
+
+ +
gnome-remote-desktopNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • xdg-desktop-portal-gnome
  • + +
  • libX11client
  • + +
  • audio-pipewire
  • + +
+
+ +
gnome-screenshotTake screenshots of the desktop or a window and save it to a file.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
gnome-system-monitorProcess viewer and system resource monitor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
gnome-text-editorGNOME text editor (gedit replacement).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
gnome-todoMinimalist personal task manager.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • gnome-base-libs
  • + +
  • gjs
  • + +
  • gstreamer
  • + +
  • desktop-gnomelibs
  • + +
  • Endeavour
  • + +
+
+ +
gnome-weatherView current weather conditions and forecasts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
  • libstdcpp
  • + +
+
+ +
gnupgThe GNU Privacy Guard suite of programs
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • icu4c-lib
  • + +
  • gmp-lib
  • + +
  • libX11client
  • + +
  • libxml2
  • + +
  • nettle-lib
  • + +
  • gdk-pixbuf
  • + +
  • sqlite
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
gnuplotGraphing utility that outputs to X11, PostScript, PNG, GIF, and others.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libXpm-lib
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • libstdcpp
  • + +
+
+ +
go-basicBuild and run Go language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • git
  • + +
  • c-basic-static
  • + +
  • p11-kit
  • + +
+
+ +
go-basic-devAll packages required to build the go-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-libXv
  • + +
  • openblas
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • devpkg-libXft
  • + +
  • llvm
  • + +
  • devpkg-pcre2
  • + +
  • pypi-cython
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-freetype
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-expat
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-libpng
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-tk
  • + +
  • devpkg-libpwquality
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • devpkg-json-c
  • + +
  • wget
  • + +
  • dev-utils
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libidn
  • + +
  • os-core-dev
  • + +
  • libxslt
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-lzo
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-gc
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-lua
  • + +
  • devpkg-tpm2-tss
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-subunit
  • + +
  • libpsl-lib
  • + +
  • intltool
  • + +
  • guile
  • + +
  • devpkg-tcl
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-gdal
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • file
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • devpkg-check
  • + +
  • devpkg-gmp
  • + +
  • make
  • + +
  • devpkg-mesa
  • + +
  • devpkg-systemd
  • + +
  • glibc-locale
  • + +
  • texlive
  • + +
  • devpkg-brotli
  • + +
  • less
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-jsoncpp
  • + +
  • devpkg-kmod
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-cppunit
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-lz4
  • + +
  • devpkg-fontconfig
  • + +
  • valgrind
  • + +
  • devpkg-libinput
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libXcursor
  • + +
  • patchelf
  • + +
  • rsync
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-glew
  • + +
  • devpkg-guile
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • p11-kit
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • go-basic
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-iptables
  • + +
  • devpkg-llvm
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • net-tools
  • + +
  • which
  • + +
  • xz
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libssh
  • + +
  • subversion
  • + +
  • devpkg-libbpf
  • + +
  • graphviz
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-cups
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • devpkg-boost
  • + +
  • devpkg-opencl-headers
  • + +
  • devpkg-nettle
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-icu4c
  • + +
+
+ +
goaccessReal-time web log analyzer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
gobject-introspectionNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
gpartedA Partition Magic clone, frontend to GNU Parted.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
gpasteClipboard management system
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
gpgmeGPG encryption tools.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • curl
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • dbus-lib
  • + +
  • libstdcpp
  • + +
+
+ +
gphotoCommand line interface to libgphoto2.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • libXpm-lib
  • + +
  • icu4c-lib
  • + +
  • dbus-lib
  • + +
  • libX11client
  • + +
  • libxml2
  • + +
  • harfbuzz-lib
  • + +
  • libstdcpp
  • + +
+
+ +
gphoto2Command line interface to libgphoto2.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • gphoto
  • + +
  • libXpm-lib
  • + +
+
+ +
gpsdService daemon for mediating access to a GPS
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • openldap
  • + +
  • ncurses-lib
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • libstdcpp
  • + +
+
+ +
GradioA GTK3 app for finding and listening to internet radio stations.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libpsl-lib
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
+
+ +
grampsGramps is a genealogy program for Windows, Linux, Apple MacOS and other UNIX-like systems. It helps you track your family tree by allowing you to store, edit, and research genealogical data.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • libpsl-lib
  • + +
  • lib-opengl
  • + +
+
+ +
graphvizLibrary for parsing graphs in xdot format.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • tcl-basic
  • + +
  • lib-poppler
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
grisbiPersonal finance manager
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • lib-openssl
  • + +
+
+ +
growpartExtends a partition to fill available space
+ +
Status: + + Active + +
+ + +
gsequencerAdvanced Gtk+ Sequencer audio processing engine.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • libpsl-lib
  • + +
  • libstdcpp
  • + +
+
+ +
gst-pythonPython binding overrides for GStreamer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • gstreamer
  • + +
+
+ +
gstreamerStreaming media framework with graph-based structure.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • openldap
  • + +
  • gmp-lib
  • + +
  • libX11client
  • + +
  • pulseaudio
  • + +
  • nettle-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
gtk-vncA GTK2 widget for VNC clients.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • pulseaudio
  • + +
  • libstdcpp
  • + +
+
+ +
gtkwaveA wave viewer which reads LXT, LXT2, VZT, GHW and VCD/EVCD files.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
guileGNU's Ubiquitous Intelligent Language for Extension (uninstalled)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • ncurses-lib
  • + +
  • gmp-lib
  • + +
+
+ +
gvimA highly configurable version of the vi text editor with advanced features, such as a GUI.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • vim
  • + +
  • libX11client
  • + +
  • perl-basic
  • + +
+
+ +
gzipA GNU lossless data compression/decompression utility.
+ +
Status: + + Active + +
+ + +
haproxyThe Reliable, High Performance TCP/HTTP Load Balancer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pcre-lib
  • + +
  • systemd
  • + +
  • lib-openssl
  • + +
+
+ +
hardinfoSystem Profiler and Benchmark
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
hardware-bluetoothSoftware to enable use of Bluetooth hardware.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libxml2
  • + +
  • icu4c-lib
  • + +
  • libstdcpp
  • + +
+
+ +
hardware-gpuFirmware and tools for GPU support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • linux-firmware-extras
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
hardware-printingFirmware and tools for printer support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • icu4c-lib
  • + +
  • poppler
  • + +
  • pcre-lib
  • + +
  • libX11client
  • + +
  • gegl
  • + +
  • libevent-lib
  • + +
  • dav1d-lib
  • + +
  • LibRaw-lib
  • + +
  • perl-basic
  • + +
  • not-ffmpeg-lib
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
hardware-uefiProvides bootloader tools for booting on a UEFI based system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • os-core
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
hardware-wifiFirmware and tools for basic WiFi support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • wpa_supplicant
  • + +
  • linux-firmware-wifi
  • + +
  • NetworkManager-extras
  • + +
  • libstdcpp
  • + +
+
+ +
harfbuzz-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
havegedDaemon for feeding entropy into the random pool
+ +
Status: + + Active + +
+ + +
hexchatA graphical IRC chat client; header and path for HexChat plugins.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • os-core-webproxy
  • + +
  • lib-openssl
  • + +
+
+ +
howdyWindows Hello™ style authentication for Linux
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
  • sqlite
  • + +
  • libstdcpp
  • + +
+
+ +
hpc-utilsProvide userspace management programs for various HPC-related programs.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libxml2
  • + +
  • perl-basic
  • + +
  • numactl
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
htopInteractive text-mode process viewer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libnl
  • + +
+
+ +
httpdApache HyperText Transfer Protocol (HTTP) Server daemon.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pcre-lib
  • + +
  • sqlite
  • + +
  • lib-openssl
  • + +
+
+ +
hugoStatic Web site generator written in Go.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
hwlocHardware locality provides a portable abstraction of the topology of modern architectures.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • openmpi
  • + +
+
+ +
icdiffHiglights with color, beyond diff, to show changes between similar files.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
icecreamDistributed network compilation and stream download utility.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libarchive
  • + +
  • libstdcpp
  • + +
+
+ +
icu4c-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
iftopDisplay bandwidth usage on an interface.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
  • libpcap-lib
  • + +
  • libnl
  • + +
+
+ +
igt-gpu-toolsIntel graphics performance diagnostics.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • libunwind-lib
  • + +
  • lib-openssl
  • + +
  • perl-basic
  • + +
+
+ +
iio-sensor-proxyIIO sensors to D-Bus proxy
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
ImageMagickCreate, edit, or compose bitmap images.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • libX11client
  • + +
  • lib-poppler
  • + +
  • LibRaw-lib
  • + +
+
+ +
init-rdaheadNo detailed summary available
+ +
Status: + + Active + +
+ + +
inkscapeProfessional vector graphics editor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • perl-basic
  • + +
  • lib-poppler
  • + +
  • libpsl-lib
  • + +
  • aspell
  • + +
  • libstdcpp
  • + +
+
+ +
inotify-toolsCommand line programs, with interface to inotify, to monitor filesystem events.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
input-leapNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libX11client
  • + +
  • libevent-lib
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
input-remapperNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • gobject-introspection
  • + +
  • nettle-lib
  • + +
  • libxml2
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
+
+ +
intel-one-monoAn expressive monospaced font family
+ +
Status: + + Active + +
+ + +
intltoolUtility scripts for internationalizing XML.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
iotopPer process I/O bandwidth monitor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
ipeA drawing editor for creating figures in PDF format.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
iperfInternet protocol tool for measuring network performance.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
ipmitoolCommand-line interface to manage IPMI-enabled devices.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
  • lib-openssl
  • + +
+
+ +
iproute2Utilities for controlling TCP/IP networking and traffic control.
+ +
Status: + + Active + +
+ + +
iptablesShared Xtables code for extensions and iproute2.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
+
+ +
ipvsadmIP virtual server tool to implement transport-layer load balancing inside Linux kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • popt-lib
  • + +
  • libnl
  • + +
+
+ +
irssiInternet Relay Chat (IRC) text-mode client program.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • perl-basic
  • + +
  • ncurses-lib
  • + +
  • lib-openssl
  • + +
+
+ +
isyncUtility to synchronize IMAP mailboxes with local maildir folders
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
  • lib-openssl
  • + +
+
+ +
iwdWireless daemon for Linux
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • ncurses-lib
  • + +
+
+ +
jack2JACK low-latency audio server for multi-processor machines (daemon activation).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
java-basicBuild and run Java language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libX11client
  • + +
  • which
  • + +
  • perl-basic
  • + +
  • p11-kit
  • + +
+
+ +
java-runtimeRuntime environment for Java language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • harfbuzz-lib
  • + +
  • libstdcpp
  • + +
+
+ +
joeGNU terminal-based text editor.
+ +
Status: + + Active + +
+ + +
jqLightweight and flexible command-line JSON processor.
+ +
Status: + + Active + +
+ + +
k8s-migrationMigration path from kubernetes 1.17 to 1.19
+ +
Status: + + Active + +
+ + +
kalgebraNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • libstdcpp
  • + +
+
+ +
kameraAccess and manipulate pictures on a digital camera.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libXpm-lib
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
  • gphoto
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
kapidoxFrameworks API Documentation Tools
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • PyYAML
  • + +
  • python3-basic
  • + +
  • yaml
  • + +
  • pypi-requests
  • + +
+
+ +
kateText editor that can open multiple files simultaneously.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
  • desktop-kde-libs
  • + +
  • qt-core
  • + +
+
+ +
kbackupA program that lets you back up any directories or files
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • libarchive
  • + +
+
+ +
kbdLibrary to manage the Linux keymaps.
+ +
Status: + + Active + +
+ + +
kcachegrindFrontend visualization tool for Valgrind's cachegrind & callggrind.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
+
+ +
kcalcScientific calculator.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
kcharselectCharacter Selector
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
kcolorchooserColor Chooser
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • desktop-kde-libs
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
kcronConfigure and schedule tasks
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gnome-base-libs
  • + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
kde-frameworks5Common KDE Frameworks 5 libraries.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • pcre-lib
  • + +
  • desktop-kde-libs
  • + +
  • lib-poppler
  • + +
  • qt-basic
  • + +
+
+ +
kde-frameworks5-devAll packages required to build the kde-frameworks5 bundle.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-hunspell
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gpgme
  • + +
  • llvm
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-dbus-python
  • + +
  • devpkg-jansson
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-libqrtr-glib
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-pixman
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-gi-docgen
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-gtk4
  • + +
  • devpkg-Botan
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-libusb
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-ModemManager
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-qtwayland
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-mozjs115
  • + +
  • devpkg-telepathy-glib
  • + +
  • devpkg-libsass
  • + +
  • devpkg-libass
  • + +
  • devpkg-xmlb
  • + +
  • devpkg-util-macros
  • + +
  • intltool
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-libwacom
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • libglib
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • devpkg-gcr
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • glibc-locale
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-libadwaita
  • + +
  • sassc
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-compat-gcr-soname1
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-lz4
  • + +
  • gpgme
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libexif
  • + +
  • devpkg-opus
  • + +
  • devpkg-ell
  • + +
  • devpkg-glu
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-gst-plugins-base
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libssh
  • + +
  • devpkg-font-util
  • + +
  • devpkg-appstream
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • graphviz
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-directx-headers
  • + +
  • fonttools
  • + +
  • devpkg-libqmi
  • + +
  • devpkg-libavif
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-gnome-bluetooth
  • + +
  • nasm
  • + +
  • devpkg-qtsvg
  • + +
  • gnupg
  • + +
  • devpkg-libXv
  • + +
  • devpkg-cogl
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-tevent
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libgdata
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • iptables
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-newt
  • + +
  • devpkg-gsound
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-libndp
  • + +
  • devpkg-qtserialport
  • + +
  • libxml2
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-flac
  • + +
  • devpkg-NetworkManager
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-libical
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-vala
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • devpkg-tdb
  • + +
  • devpkg-lzo
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-libdaemon
  • + +
  • devpkg-tpm2-tss
  • + +
  • devpkg-speex
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-snappy
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-xwayland
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-qtconnectivity
  • + +
  • devpkg-libnl
  • + +
  • devpkg-gmp
  • + +
  • devpkg-qtsensors
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-mobile-broadband-provider-info
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • yasm
  • + +
  • devpkg-gflags
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-libnotify
  • + +
  • strace
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-evolution-data-server
  • + +
  • devpkg-fftw
  • + +
  • devpkg-orc
  • + +
  • devpkg-clutter
  • + +
  • devpkg-mutter
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libogg
  • + +
  • devpkg-glew
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-gnome-autoar
  • + +
  • devpkg-llvm
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • pypi-requests
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-qtwebsockets
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-dconf
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • gjs
  • + +
  • devpkg-icu4c
  • + +
  • qt-basic-dev
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libpsl
  • + +
  • bison
  • + +
  • devpkg-libXft
  • + +
  • devpkg-rtmpdump
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libdbusmenu-qt
  • + +
  • devpkg-expat
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libdrm
  • + +
  • unzip
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-file
  • + +
  • devpkg-libidn
  • + +
  • devpkg-krb5
  • + +
  • devpkg-colord
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-graphite
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-exiv2
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • ghostscript
  • + +
  • guile
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • devpkg-ldb
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-compat-enchant-soname1
  • + +
  • devpkg-openjpeg
  • + +
  • kde-frameworks5
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-phonon
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-qtxmlpatterns
  • + +
  • devpkg-gnome-settings-daemon
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-nspr
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-iptables
  • + +
  • devpkg-mtdev
  • + +
  • devpkg-oneVPL
  • + +
  • devpkg-dav1d
  • + +
  • devpkg-libclc
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-gnome-control-center
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-cups
  • + +
  • devpkg-pango
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-nettle
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • devpkg-libunibreak
  • + +
  • devpkg-glib
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-gnome-desktop
  • + +
  • devpkg-cJSON
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-popt
  • + +
  • zenity
  • + +
  • flex
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-libffi
  • + +
  • devpkg-liboauth
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-qtmultimedia
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-not-ffmpeg
  • + +
  • devpkg-libavtp
  • + +
  • libxslt
  • + +
  • devpkg-graphene
  • + +
  • devpkg-qtcharts
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmbim
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libnice
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-poppler
  • + +
  • devpkg-woff2
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-avahi
  • + +
  • devpkg-lua
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gtksourceview
  • + +
  • devpkg-libdisplay-info
  • + +
  • devpkg-pygobject
  • + +
  • devpkg-tcl
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-rest
  • + +
  • devpkg-webkitgtk
  • + +
  • devpkg-libgweather
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-check
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • devpkg-mesa
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-kmod
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-libva
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-gjs
  • + +
  • devpkg-nss
  • + +
  • valgrind
  • + +
  • rsync
  • + +
  • patchelf
  • + +
  • devpkg-sbc
  • + +
  • p11-kit
  • + +
  • net-tools
  • + +
  • which
  • + +
  • binutils
  • + +
  • devpkg-eigen
  • + +
  • devpkg-upower
  • + +
  • aspell
  • + +
  • devpkg-jack2
  • + +
  • devpkg-wayland
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-boost
  • + +
  • fontforge
  • + +
  • devpkg-assimp
  • + +
  • devpkg-duktape
  • + +
+
+ +
kdebugsettingsAn application to enable/disable qCDebug
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
kdeconnect-kdeA multi-platform application that enables communication between computer and smartphone.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libX11client
  • + +
  • desktop-kde-libs
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
kdenliveA non-linear video editor for Linux using the MLT video framework.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • libstdcpp
  • + +
+
+ +
kdfView Disk Usage
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
kdiagramPowerful libraries for creating business diagrams.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • qt-core
  • + +
+
+ +
keditbookmarksBookmark Organizer and Editor
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
keepalivedFailover and monitoring daemon for Linux Virtual Server (LVS) clusters.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libnl
  • + +
  • lib-openssl
  • + +
+
+ +
keepassxcCross-platform port of KeePass password manager with industry-standard AES.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
kernel-awsRun the Amazon Web Services (AWS) specific kernel.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • init-rdahead
  • + +
  • bootloader
  • + +
  • systemd
  • + +
+
+ +
kernel-aws-dkmsSupport module for building/loading via Dynamic Kernel Module System (DKMS) in AWS kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
  • kernel-aws
  • + +
  • python3-basic
  • + +
  • dkms
  • + +
+
+ +
kernel-gceRun the Google Compute Engine (GCE) specific kernel.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • bootloader
  • + +
  • kernel-native
  • + +
+
+ +
kernel-hypervRun the Microsoft Hyper-V specific kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • init-rdahead
  • + +
  • bootloader
  • + +
  • kernel-native
  • + +
+
+ +
kernel-hyperv-ltsRun the Microsoft Hyper-V specific LTS kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • init-rdahead
  • + +
  • bootloader
  • + +
  • systemd
  • + +
+
+ +
kernel-installInstalls kernel, initrd, kernel config, system map, and creates a bootloader entry for the new kernel.
+ +
Status: + + Active + +
+ + +
kernel-kvmRun the Kernel-based Virtual Machine (KVM) specific kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • bootloader
  • + +
  • qemu-guest-additions
  • + +
  • kernel-native
  • + +
+
+ +
kernel-ltsRun the latest long-term support native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • kernel-ltscurrent
  • + +
+
+ +
kernel-lts-dkmsSupport module for building/loading via Dynamic Kernel Module System (DKMS) in LTS kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • kernel-ltscurrent-dkms
  • + +
+
+ +
kernel-lts2017Run the long-term support 4.14 native kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • kernel-ltsprev
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
kernel-lts2018Run the long-term support 4.19 native kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • kernel-ltsprev
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
kernel-lts2018-dkmsSupport for module building/loading via Dynamic Kernel Module System (DKMS) in LTS2018 kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • kernel-ltsprev-dkms
  • + +
+
+ +
kernel-lts2019Run the long-term support 5.4 native kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • kernel-ltsprev
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
kernel-lts2019-dkmsSupport for module building/loading via Dynamic Kernel Module System (DKMS) in LTS2019 kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • kernel-ltsprev-dkms
  • + +
+
+ +
kernel-lts2020Run the long-term support 5.10 native kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • kernel-ltsprev
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
kernel-lts2020-dkmsSupport for module building/loading via Dynamic Kernel Module System (DKMS) in LTS2020 kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • kernel-ltsprev-dkms
  • + +
+
+ +
kernel-lts2021Run the long-term support 5.15 native kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • kernel-ltsprev
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
kernel-lts2021-dkmsSupport for module building/loading via Dynamic Kernel Module System (DKMS) in LTS2021 kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • kernel-ltsprev-dkms
  • + +
+
+ +
kernel-ltscurrentRun current the long-term support native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
kernel-ltscurrent-dkmsSupport for module building/loading via Dynamic Kernel Module System (DKMS) in the current LTS kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
  • linux-ltscurrent-dev
  • + +
  • dkms
  • + +
+
+ +
kernel-ltsprevRun the previous long-term support native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
kernel-ltsprev-dkmsSupport for module building/loading via Dynamic Kernel Module System (DKMS) in the previous LTS kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
  • linux-ltsprev-dev
  • + +
  • dkms
  • + +
+
+ +
kernel-nativeRun the native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • hardware-uefi
  • + +
  • linux-firmware
  • + +
  • bootloader
  • + +
+
+ +
kernel-native-currentRun the mainline current native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • hardware-uefi
  • + +
  • qemu-guest-additions
  • + +
+
+ +
kernel-native-dkmsSupport module for building/loading via Dynamic Kernel Module System (DKMS) in native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
  • dkms
  • + +
  • linux-dev
  • + +
+
+ +
kernel-preempt-rtRun a kernel with PREEMPT_RT support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
kernel-rtRun the native kernel with preempt_rt patchset.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • bootloader
  • + +
  • systemd
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
keychainManage SSH and GPG keys; allows one long-running ssh-agent process per system.
+ +
Status: + + Active + +
+ + +
kfindFind Files/Folders
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
kgeographyGeography Trainer
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
kicadKiCad EDA - Schematics capture and PCB design tools
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • webkitgtk
  • + +
  • libglib
  • + +
  • curl
  • + +
  • sqlite
  • + +
  • aspell
  • + +
  • python3-basic
  • + +
  • icu4c-lib
  • + +
  • gmp-lib
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • lib-opengl
  • + +
  • lib-imageformat
  • + +
  • dbus-lib
  • + +
  • libxml2
  • + +
  • nettle-lib
  • + +
  • gdk-pixbuf
  • + +
  • libpsl-lib
  • + +
  • harfbuzz-lib
  • + +
  • libstdcpp
  • + +
+
+ +
kicad-packages3D3D parts model collection for KiCad
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • kicad
  • + +
+
+ +
kitineraryData model and extraction system for travel reservation information
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • kmime
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
kleopatraCertificate Manager and Unified Crypto GUI.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • kmime
  • + +
  • qt-basic
  • + +
  • gnupg
  • + +
  • libstdcpp
  • + +
+
+ +
kmediaplayerPlugin interface for media player features
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • qt-basic
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
kmimeNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • ncurses-lib
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • gmp-lib
  • + +
  • dbus-lib
  • + +
  • libX11client
  • + +
  • libxml2
  • + +
  • nettle-lib
  • + +
  • sqlite
  • + +
  • qt-basic
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
kmousetoolClicks the mouse for you, reducing the effects of RSI
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libX11client
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
kmplotMathematical Function Plotter
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • libstdcpp
  • + +
+
+ +
knotesPopup notes
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • kde-frameworks5
  • + +
  • kmime
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
kojiSet up a koji build service based on NFS mounts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gpgme
  • + +
  • httpd
  • + +
  • nfs-utils
  • + +
  • pypi-six
  • + +
  • mod_wsgi
  • + +
  • sudo
  • + +
  • dnf
  • + +
  • postgresql
  • + +
  • openssh-client
  • + +
  • git
  • + +
  • package-utils
  • + +
  • pypi-requests
  • + +
+
+ +
kolourpaintPaint Program
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • perl-basic
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
kompareNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • gnome-base-libs
  • + +
  • icu4c-lib
  • + +
  • dbus-lib
  • + +
  • libX11client
  • + +
  • libxml2
  • + +
  • nettle-lib
  • + +
  • gdk-pixbuf
  • + +
  • sqlite
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
  • aspell
  • + +
  • libstdcpp
  • + +
+
+ +
konquerorKDE file manager and Web browser.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
konsoleTerminal emulator for KDE.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
kontactKDE Personal Information Manager
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • kmime
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
konversationInternet Relay Chat (IRC) client built on KDE platform.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
+
+ +
kshksh shell
+ +
Status: + + Active + +
+ + +
ksystemlogSystem log viewer tool
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • qt-core
  • + +
+
+ +
kvm-hostRun Kernel-based Virtual Machines (KVM).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • gnome-base-libs
  • + +
  • icu4c-lib
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • polkit
  • + +
  • libssh-lib
  • + +
  • pulseaudio
  • + +
  • libpcap-lib
  • + +
  • lib-openssl
  • + +
  • vte-lib
  • + +
  • iptables
  • + +
  • perl-basic
  • + +
  • numactl
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
kvm-host-devAll packages required to build the kvm-host bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-hunspell
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gpgme
  • + +
  • llvm
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-dbus-python
  • + +
  • dosfstools
  • + +
  • devpkg-vte
  • + +
  • perl-basic-dev
  • + +
  • devpkg-jansson
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-libqrtr-glib
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-pixman
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-gi-docgen
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-gtk4
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-libusb
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-ModemManager
  • + +
  • devpkg-libcroco
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-qtwayland
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-mozjs115
  • + +
  • devpkg-telepathy-glib
  • + +
  • devpkg-libsass
  • + +
  • devpkg-libass
  • + +
  • devpkg-libiscsi
  • + +
  • devpkg-xmlb
  • + +
  • devpkg-util-macros
  • + +
  • intltool
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-libwacom
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • libglib
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • devpkg-gcr
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • glibc-locale
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-libadwaita
  • + +
  • sassc
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-compat-gcr-soname1
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-lz4
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libexif
  • + +
  • devpkg-opus
  • + +
  • devpkg-ell
  • + +
  • devpkg-glu
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-gst-plugins-base
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libssh
  • + +
  • devpkg-font-util
  • + +
  • devpkg-appstream
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • graphviz
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-directx-headers
  • + +
  • fonttools
  • + +
  • devpkg-libqmi
  • + +
  • devpkg-libavif
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-gnome-bluetooth
  • + +
  • nasm
  • + +
  • devpkg-qtsvg
  • + +
  • bc
  • + +
  • gnupg
  • + +
  • devpkg-libXv
  • + +
  • devpkg-cogl
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-nftables
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-tevent
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libgdata
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • iptables
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-newt
  • + +
  • devpkg-gsound
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-spice
  • + +
  • devpkg-libndp
  • + +
  • devpkg-qtserialport
  • + +
  • libxml2
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-flac
  • + +
  • devpkg-NetworkManager
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-libical
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-vala
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • devpkg-tdb
  • + +
  • devpkg-lzo
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-libdaemon
  • + +
  • devpkg-tpm2-tss
  • + +
  • clr-hardware-files
  • + +
  • devpkg-speex
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-snappy
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-xwayland
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-qtconnectivity
  • + +
  • openvswitch
  • + +
  • devpkg-libnl
  • + +
  • devpkg-parted
  • + +
  • devpkg-gmp
  • + +
  • devpkg-qtsensors
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-mobile-broadband-provider-info
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • yasm
  • + +
  • devpkg-gflags
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-libnotify
  • + +
  • strace
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-evolution-data-server
  • + +
  • devpkg-fftw
  • + +
  • devpkg-orc
  • + +
  • devpkg-pkcs11-helper
  • + +
  • devpkg-clutter
  • + +
  • devpkg-mutter
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libogg
  • + +
  • devpkg-glew
  • + +
  • qt6-basic
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-gnome-autoar
  • + +
  • devpkg-llvm
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • pypi-requests
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-qtwebsockets
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-dconf
  • + +
  • iproute2
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • gjs
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libpsl
  • + +
  • bison
  • + +
  • devpkg-libXft
  • + +
  • devpkg-rtmpdump
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-pmdk
  • + +
  • devpkg-expat
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-userspace-rcu
  • + +
  • devpkg-glusterfs
  • + +
  • devpkg-dtc
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libdrm
  • + +
  • unzip
  • + +
  • pypi-pynacl
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-file
  • + +
  • devpkg-libidn
  • + +
  • devpkg-krb5
  • + +
  • devpkg-colord
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-graphite
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-libvpx
  • + +
  • nfs-utils
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • ghostscript
  • + +
  • guile
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • devpkg-ldb
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-spice-protocol
  • + +
  • devpkg-openjpeg
  • + +
  • devpkg-rdma-core
  • + +
  • PyYAML
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-qtxmlpatterns
  • + +
  • devpkg-gnome-settings-daemon
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-nspr
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-iptables
  • + +
  • devpkg-mtdev
  • + +
  • devpkg-oneVPL
  • + +
  • devpkg-dav1d
  • + +
  • libX11client
  • + +
  • devpkg-libclc
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-gnome-control-center
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-cups
  • + +
  • devpkg-pango
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-nettle
  • + +
  • devpkg-libslirp
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • devpkg-libunibreak
  • + +
  • devpkg-glib
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-capstone
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-gnome-desktop
  • + +
  • devpkg-cJSON
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-popt
  • + +
  • zenity
  • + +
  • flex
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-libffi
  • + +
  • devpkg-liboauth
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-nfs-utils
  • + +
  • devpkg-qtmultimedia
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-not-ffmpeg
  • + +
  • devpkg-libavtp
  • + +
  • libxslt
  • + +
  • devpkg-graphene
  • + +
  • devpkg-qtcharts
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmbim
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libnice
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-virglrenderer
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-poppler
  • + +
  • devpkg-libcacard
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-woff2
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-avahi
  • + +
  • devpkg-lua
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gtksourceview
  • + +
  • devpkg-libdisplay-info
  • + +
  • devpkg-libvirt
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-pygobject
  • + +
  • devpkg-usbredir
  • + +
  • devpkg-tcl
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-rest
  • + +
  • devpkg-webkitgtk
  • + +
  • devpkg-libgweather
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-check
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • devpkg-mesa
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-kmod
  • + +
  • devpkg-yajl
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • numactl
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libXmu
  • + +
  • acpica-unix2
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-libva
  • + +
  • kvm-host
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-gjs
  • + +
  • devpkg-nss
  • + +
  • valgrind
  • + +
  • rsync
  • + +
  • patchelf
  • + +
  • devpkg-sbc
  • + +
  • p11-kit
  • + +
  • devpkg-pcsc-lite
  • + +
  • net-tools
  • + +
  • which
  • + +
  • binutils
  • + +
  • devpkg-eigen
  • + +
  • devpkg-upower
  • + +
  • aspell
  • + +
  • devpkg-jack2
  • + +
  • devpkg-wayland
  • + +
  • devpkg-qtdeclarative
  • + +
  • pypi-numpy
  • + +
  • devpkg-boost
  • + +
  • fontforge
  • + +
  • devpkg-assimp
  • + +
  • devpkg-duktape
  • + +
+
+ +
kvm-host-extrasRun virtual machines as deployed infrastructure.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • kvm-host
  • + +
  • python3-basic
  • + +
+
+ +
latte-dockA dock based on Plasma Frameworks.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libX11client
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
lensfundatabase of photographic lenses and their characteristics
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
+
+ +
lessTerminal-based file-pager for viewing text files.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
+
+ +
letsencrypt-clientObtain and renew valid SSL certificates through Let's Encrypt's ACME service.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • cloud-api
  • + +
  • pypi-requests
  • + +
+
+ +
lftpFile transfer client for http, ftp, sftp and more.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
  • ncurses-lib
  • + +
  • lib-openssl
  • + +
+
+ +
lib-imageformatHelpers for reading images.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gdk-pixbuf
  • + +
  • lib-poppler
  • + +
  • LibRaw-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
lib-openglHelpers for 3D graphics.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • ncurses-lib
  • + +
  • gmp-lib
  • + +
  • libX11client
  • + +
  • nettle-lib
  • + +
  • libxml2
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
  • libstdcpp
  • + +
+
+ +
lib-opensslToolkit for Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • p11-kit
  • + +
+
+ +
lib-popplerPDF rendering library based on xpdf-3.0 code base (libraries)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • openldap
  • + +
  • gmp-lib
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • nettle-lib
  • + +
  • gdk-pixbuf
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
lib-sambaHelper libraries for accessing samba shares.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • curl
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • dbus-lib
  • + +
  • lib-openssl
  • + +
  • perl-basic
  • + +
  • popt-lib
  • + +
  • libstdcpp
  • + +
+
+ +
libarchiveMulti-format archive and compression library.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
libdepsFind out why a binary pulls in libraries
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
libevent-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
libglibCommon C routines used by Gtk+ and other libs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • dbus-lib
  • + +
  • yaml
  • + +
  • systemd
  • + +
  • libstdcpp
  • + +
+
+ +
libgsfGNOME Structured File library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gdk-pixbuf
  • + +
+
+ +
libnlLibrary for applications that deal with netlink sockets.
+ +
Status: + + Active + +
+ + +
libpcap-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • dbus-lib
  • + +
  • libnl
  • + +
+
+ +
libpsl-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • icu4c-lib
  • + +
  • libstdcpp
  • + +
+
+ +
libratbagNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
LibRaw-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
+
+ +
LibreCAD2D CAD program that can read DXF and DWG files and can write DXF, PDF and SVG files.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
libreofficeFree office productivity suite.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • mpfr-lib
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • pcre-lib
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • postgresql
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
libreoffice-extras-lang-arArabic language support for LibreOffice.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libreoffice
  • + +
+
+ +
libreoffice-extras-lang-deGerman language support for LibreOffice.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libreoffice
  • + +
+
+ +
libreoffice-extras-lang-esSpanish language support for LibreOffice.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libreoffice
  • + +
+
+ +
libreoffice-extras-lang-frFrench language support for LibreOffice.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libreoffice
  • + +
+
+ +
libreoffice-extras-lang-hiHindi language support for LibreOffice.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libreoffice
  • + +
+
+ +
libreoffice-extras-lang-trTurkish language support for LibreOffice.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libreoffice
  • + +
+
+ +
libreoffice-extras-lang-zhChinese language support for LibreOffice.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libreoffice
  • + +
+
+ +
libssh-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
+
+ +
libssh2-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
libstdcppC++ runtime support.
+ +
Status: + + Active + +
+ + +
libunwind-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
libva-utilsCollection of utilities and examples to exercise VA-API (Video Acceleration API)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
libX11clientGrouping only bundle for use in X using bundles.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • openldap
  • + +
  • gstreamer
  • + +
  • gdk-pixbuf
  • + +
  • lib-openssl
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
libxml2XML parsing library, version 2.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
libXpm-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
libxsltXML stylesheet transformation library for converting XML into HTML.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libxml2
  • + +
+
+ +
libzmqZMQ tools and libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libunwind-lib
  • + +
  • libstdcpp
  • + +
+
+ +
lightdmLightDM login manager with GTK greeter.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • fonts-basic
  • + +
  • wayland-server
  • + +
  • libX11client
  • + +
  • polkit
  • + +
  • gdk-pixbuf
  • + +
+
+ +
linux-devFiles for building modules against the native kernel.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • systemd
  • + +
+
+ +
linux-firmwareFirmware for kernel drivers.
+ +
Status: + + WIP + +
+ + +
linux-firmware-extrasExtra firmware for the kernel.
+ +
Status: + + WIP + +
+ + +
linux-firmware-qatFirmware for Intel QuickAssist
+ +
Status: + + WIP + +
+ + +
linux-firmware-wifiWifi adapter firmware.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • linux-firmware
  • + +
+
+ +
linux-lts-devFiles for building modules against LTS kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-ltscurrent-dev
  • + +
+
+ +
linux-lts2017-devFiles for building modules against LTS2017 kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • linux-ltsprev-dev
  • + +
  • systemd
  • + +
+
+ +
linux-lts2018-devFiles for building modules against LTS2018 kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • systemd
  • + +
  • linux-ltsprev-dev
  • + +
  • python3-basic
  • + +
+
+ +
linux-lts2019-devFiles for building modules against LTS2019 kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • systemd
  • + +
  • linux-ltsprev-dev
  • + +
  • python3-basic
  • + +
+
+ +
linux-lts2020-devFiles for building modules against LTS2020 kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • linux-ltsprev-dev
  • + +
  • systemd
  • + +
+
+ +
linux-lts2021-devFiles for building modules against LTS2021 kernel.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • linux-ltsprev-dev
  • + +
  • systemd
  • + +
+
+ +
linux-ltscurrent-devFiles for building modules against LTScurrent kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • systemd
  • + +
+
+ +
linux-ltsprev-devFiles for building modules against LTSprev kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • systemd
  • + +
+
+ +
linux-toolsTools for use in Linux.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • pcre-lib
  • + +
  • libunwind-lib
  • + +
  • binutils
  • + +
  • perl-basic
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
lldbLLVM's software debugger
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • llvm
  • + +
  • libstdcpp
  • + +
+
+ +
lldpdimplementation of IEEE 802.1ab (LLDP)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • libxml2
  • + +
+
+ +
llvmLLVM/Clang modular and reusable compiler toolchain.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libxml2
  • + +
  • python3-basic
  • + +
  • libglib
  • + +
  • libstdcpp
  • + +
+
+ +
lm-sensorsHardware health monitoring with access to temperature, voltage, and fan speed sensors, and their setup.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • perl-basic
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
logrotateAutomatic rotation compression and removal and mailing of log files.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • popt-lib
  • + +
+
+ +
lsofA utility which lists open files on a Linux/UNIX system
+ +
Status: + + Active + +
+ + +
ltpLinux Test Project.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • numactl
  • + +
  • lib-openssl
  • + +
+
+ +
lttngThe LTTng control and utility library is a library used to control the tracing sessions of a LTTng-session daemon
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libxml2
  • + +
  • popt-lib
  • + +
  • numactl
  • + +
+
+ +
lua-basicProgramming language designed for extending applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
+
+ +
lutrisInstall and play any video game easily
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • openldap
  • + +
  • PyYAML
  • + +
  • libX11client
  • + +
  • gobject-introspection
  • + +
  • gstreamer
  • + +
  • gdk-pixbuf
  • + +
  • xz-lzma-i-accept-the-risks
  • + +
  • lib-opengl
  • + +
  • pypi-requests
  • + +
+
+ +
lynxA text-based Web browser
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gzip
  • + +
  • lib-openssl
  • + +
+
+ +
LyXDocument processor and WYSIWYM LaTeX editor.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • qt-basic
  • + +
  • texlive
  • + +
  • aspell
  • + +
+
+ +
lz4Fast compression algorithm to compress and decompress lz4 files.
+ +
Status: + + Active + +
+ + +
machine-learning-basicBuild machine learning applications with a full suite of libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-snappy
  • + +
  • pcre-lib
  • + +
  • Sphinx
  • + +
  • devpkg-fann
  • + +
  • openmpi
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • python-data-science
  • + +
  • openblas
  • + +
  • python-extras
  • + +
  • cloud-api
  • + +
  • machine-learning-mycroft
  • + +
  • devpkg-opencv
  • + +
  • c-basic
  • + +
  • devpkg-eigen
  • + +
  • devpkg-ocl-icd
  • + +
  • devpkg-gflags
  • + +
  • graphviz
  • + +
  • devpkg-tbb
  • + +
  • devpkg-googletest
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-protobuf-c
  • + +
  • devpkg-boost
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-glog
  • + +
+
+ +
machine-learning-mycroftBuild machine learning applications with Mycroft, an open-source voice assistant, and more.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python-data-science
  • + +
+
+ +
machine-learning-pytorchBuild machine learning applications with PyTorch, an optimized tensor library for deep learning.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pytorch
  • + +
+
+ +
mail-utilsProcess, read, and send email.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • notmuch
  • + +
  • mutt
  • + +
+
+ +
mail-utils-devAll packages required to build the mail-utils bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • bison
  • + +
  • mail-utils
  • + +
  • devpkg-glib
  • + +
  • devpkg-gpgme
  • + +
  • llvm
  • + +
  • devpkg-pcre2
  • + +
  • pypi-cython
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-expat
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-tk
  • + +
  • devpkg-libpwquality
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • dev-utils
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-file
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libidn
  • + +
  • os-core-dev
  • + +
  • libxslt
  • + +
  • devpkg-xapian-core
  • + +
  • devpkg-zlib
  • + +
  • devpkg-krb5
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-lzo
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-gmime
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-lua
  • + +
  • devpkg-tpm2-tss
  • + +
  • procps-ng
  • + +
  • intltool
  • + +
  • guile
  • + +
  • devpkg-tcl
  • + +
  • devpkg-c-ares
  • + +
  • git
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • file
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • make
  • + +
  • devpkg-gmp
  • + +
  • devpkg-systemd
  • + +
  • glibc-locale
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • yasm
  • + +
  • devpkg-kmod
  • + +
  • openssl
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-fuse
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-lz4
  • + +
  • gpgme
  • + +
  • gnome-base-libs
  • + +
  • valgrind
  • + +
  • devpkg-libbsd
  • + +
  • patchelf
  • + +
  • qt6-basic
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • p11-kit
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-iptables
  • + +
  • net-tools
  • + +
  • which
  • + +
  • xz
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • aspell
  • + +
  • pypi-requests
  • + +
  • lynx
  • + +
  • devpkg-libbpf
  • + +
  • libpcap-lib
  • + +
  • graphviz
  • + +
  • devpkg-tokyocabinet
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-xz
  • + +
  • devpkg-boost
  • + +
  • devpkg-nettle
  • + +
  • devpkg-libX11
  • + +
+
+ +
makeBuild automation tool that controls generation of executables and other target files.
+ +
Status: + + Active + +
+ + +
maker-3dprinting3D printing tools for makers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • maker-basic
  • + +
  • qt-basic
  • + +
  • Sphinx
  • + +
+
+ +
maker-basicBasic tools for makers and experimenters.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • inkscape
  • + +
  • python-extras
  • + +
  • minicom
  • + +
+
+ +
maker-cncCNC carving tools for makers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • maker-basic
  • + +
  • pygobject
  • + +
  • inkscape
  • + +
  • python-extras
  • + +
+
+ +
maker-electronicsElectronics design and programming tools for makers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • maker-basic
  • + +
  • python3-basic
  • + +
  • libXpm-lib
  • + +
  • Sphinx
  • + +
  • kicad
  • + +
  • qt-basic
  • + +
+
+ +
maker-gisGIS/Mapping tools for makers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • maker-basic
  • + +
  • devpkg-gdal
  • + +
  • devpkg-geos
  • + +
  • devpkg-proj
  • + +
  • desktop-kde-libs
  • + +
  • qmapshack
  • + +
  • c-basic
  • + +
  • Babel
  • + +
  • gdal
  • + +
+
+ +
man-pagesLinux man-pages to document kernel and C library interfaces for user-space programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
+
+ +
mariadbMariaDB Connector/C dynamic library/Database daemon.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • systemd
  • + +
  • ncurses-lib
  • + +
  • lz4
  • + +
  • libxml2
  • + +
  • lib-openssl
  • + +
  • perl-basic
  • + +
  • numactl
  • + +
  • libstdcpp
  • + +
+
+ +
mariadb-clientlibsMariaDB Connector/C dynamic library/Database client libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
meldvisual file difference and merging tool, targeted at developers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • desktop-gnomelibs
  • + +
+
+ +
memcachedhigh performance multithreaded event-based key/value cache store.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • libevent-lib
  • + +
+
+ +
mercurialA scalable distributed software configuration management (SCM) tool.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • pypi-six
  • + +
  • openldap
  • + +
+
+ +
minetestA Voxel multi-player game inspired by minecraft.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • minetestserver
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
minetestserverA headless game server for minetest.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • curl
  • + +
  • gmp-lib
  • + +
  • postgresql
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
minicomA text-based serial port communications program.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
+
+ +
mixerTool to create custom Clear Linux OS releases.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gzip
  • + +
  • dnf
  • + +
  • cpio
  • + +
  • git
  • + +
  • zstd
  • + +
  • openssl
  • + +
  • clr-installer
  • + +
+
+ +
mkosiGenerate disk images.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
mod_wsgiPython WSGI adapter module for Apache
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
modulesProvides dynamic modification of a user's environment
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • tcl-basic
  • + +
+
+ +
moldmold: A Modern Linker
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
monoOpen source implementation of .NET platform, including runtime and compiler.
+ +
Status: + + Active + +
+ + +
moreutilsCollection of tools that adhere to the Unix philosophy.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
mosquittomosquitto MQTT library (C bindings)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • lib-openssl
  • + +
+
+ +
mpfr-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gmp-lib
  • + +
+
+ +
mpg123MPEG layer 1/2/3 audio player and decoder. MPEG 1.0 layer 3 known as MP3.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • pulseaudio
  • + +
  • libstdcpp
  • + +
+
+ +
mpvMultimedia player and streamer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gnome-base-libs
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
  • libunwind-lib
  • + +
  • pulseaudio
  • + +
  • dav1d-lib
  • + +
  • not-ffmpeg-lib
  • + +
  • libarchive
  • + +
+
+ +
mtd-utilsMemory technology device utilities (usually flash) exposing interface between hardware drivers and upper system layers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
mtrNetwork diagnostic tool for analyzing latency, combining the functionality of the 'traceroute' and 'ping' programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
mumbleA voice server/client for game chatting.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libX11client
  • + +
  • libevent-lib
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • protobuf-lib
  • + +
  • libstdcpp
  • + +
+
+ +
mumble-serverMumble daemon (mumble-server)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libevent-lib
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • protobuf-lib
  • + +
  • libstdcpp
  • + +
+
+ +
MuseScoreFree music composition and notation software
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
muslC standard library compiler toolchain.
+ +
Status: + + Active + +
+ + +
muttSmall but powerful mail client.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • openldap
  • + +
  • lib-openssl
  • + +
+
+ +
nasmGeneral purpose x86 assembler.
+ +
Status: + + Active + +
+ + +
nautilusDefault file manager for GNOME.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • libarchive
  • + +
+
+ +
ncatUtility for reading and writing data across networks.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libpcap-lib
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
ncduDisk usage analyzer with ncurses interface.
+ +
Status: + + Active + +
+ + +
ncurses-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
neomuttMutt mail client fork with additional features.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gpgme
  • + +
  • openldap
  • + +
  • notmuch
  • + +
  • perl-basic
  • + +
+
+ +
neovimFork of Vim aiming to improve user experience, plugins, and GUIs
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • + +
  • python3-basic
  • + +
  • ncurses-lib
  • + +
  • vte-lib
  • + +
+
+ +
net-toolsBasic Networking Tools
+ +
Status: + + Active + +
+ + +
netcdf-fortranNetCDF Client Library for Fortran
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • dbus-lib
  • + +
  • libevent-lib
  • + +
  • libxml2
  • + +
  • libstdcpp
  • + +
+
+ +
netdataReal-time performance monitoring, in the greatest possible detail, over the web.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • openldap
  • + +
  • gmp-lib
  • + +
  • dbus-lib
  • + +
  • lz4
  • + +
  • protobuf-lib
  • + +
  • nettle-lib
  • + +
  • lib-openssl
  • + +
  • yaml
  • + +
  • libstdcpp
  • + +
+
+ +
nethogsSmall net top tool for grouping bandwidth use per process.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
  • libpcap-lib
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
netplanNetwork configuration tool using YAML
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • PyYAML
  • + +
+
+ +
nettle-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gmp-lib
  • + +
+
+ +
network-basicRun network utilities and modify network settings.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • openldap
  • + +
  • ncurses-lib
  • + +
  • lz4
  • + +
  • libpcap-lib
  • + +
  • libevent-lib
  • + +
  • os-core-webproxy
  • + +
  • libxml2
  • + +
  • perl-basic
  • + +
  • libnl
  • + +
+
+ +
network-basic-devAll packages required to build the network-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-nftables
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • llvm
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-libnetfilter_cttimeout
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • perl-basic-dev
  • + +
  • devpkg-jansson
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-libpng
  • + +
  • devpkg-confuse
  • + +
  • devpkg-ipset
  • + +
  • devpkg-userspace-rcu
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-protobuf-c
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-tk
  • + +
  • devpkg-libpwquality
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • dev-utils
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libuv
  • + +
  • devpkg-file
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libidn
  • + +
  • os-core-dev
  • + +
  • libxslt
  • + +
  • devpkg-zlib
  • + +
  • devpkg-krb5
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-lzo
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-tpm2-tss
  • + +
  • procps-ng
  • + +
  • libpsl-lib
  • + +
  • intltool
  • + +
  • guile
  • + +
  • devpkg-tcl
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • gdb
  • + +
  • git
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • file
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-libnl
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • devpkg-check
  • + +
  • devpkg-gmp
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • glibc-locale
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-stoken
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • yasm
  • + +
  • devpkg-kmod
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-rdma-core
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-dpdk
  • + +
  • devpkg-fuse
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-duktape
  • + +
  • strace
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • network-basic
  • + +
  • devpkg-openconnect
  • + +
  • devpkg-pkcs11-helper
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-nss
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-lz4
  • + +
  • devpkg-fontconfig
  • + +
  • valgrind
  • + +
  • devpkg-libbsd
  • + +
  • patchelf
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-librsvg
  • + +
  • p11-kit
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-iptables
  • + +
  • net-tools
  • + +
  • which
  • + +
  • xz
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libnetfilter_cthelper
  • + +
  • pypi-requests
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libmaxminddb
  • + +
  • graphviz
  • + +
  • devpkg-libnetfilter_queue
  • + +
  • iproute2
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-xz
  • + +
  • devpkg-boost
  • + +
  • devpkg-nettle
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-icu4c
  • + +
+
+ +
network-monitor-nodeRun network security monitoring node.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pypi-six
  • + +
  • suricata
  • + +
  • openldap
  • + +
+
+ +
network-security-monitoringVarious tools to test and improve network security.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • nmap
  • + +
  • wireshark
  • + +
  • libX11client
  • + +
  • network-monitor-node
  • + +
  • network-basic
  • + +
  • qt-basic
  • + +
+
+ +
network-time-sensitiveVarious tools and plugins to set up TSN/TCC.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • alsa-utils
  • + +
  • network-basic
  • + +
+
+ +
NetworkManagerConfigure network interfaces and maintain active network connection.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • curl
  • + +
  • icu4c-lib
  • + +
  • libpcap-lib
  • + +
  • libxml2
  • + +
  • wpa_supplicant
  • + +
  • lib-openssl
  • + +
  • libpsl-lib
  • + +
+
+ +
NetworkManager-extrasNetworkManager plugins and desktop integration
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • openldap
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • tcl-basic
  • + +
  • libevent-lib
  • + +
  • wpa_supplicant
  • + +
  • NetworkManager
  • + +
  • webkitgtk
  • + +
+
+ +
NetworkManager-tuiConfigure network interfaces and maintain active network connection (TUI tools)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • pcre-lib
  • + +
  • wpa_supplicant
  • + +
  • NetworkManager
  • + +
+
+ +
nfs-utilsServer and client tooling for network file systems (NFS).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libstdcpp
  • + +
  • openldap
  • + +
  • libevent-lib
  • + +
+
+ +
nginxHTTP server, reverse proxy, IMAP/POP3 proxy server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pcre-lib
  • + +
  • systemd
  • + +
  • lib-openssl
  • + +
+
+ +
nginx-mainlineLightweight HTTP server and IMAP/POP3 proxy server, mainline release.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pcre-lib
  • + +
  • lib-openssl
  • + +
+
+ +
nginx-mainline-extrasDynamic modules for nginx-mainline
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • nginx-mainline
  • + +
  • curl
  • + +
  • libstdcpp
  • + +
  • lib-openssl
  • + +
+
+ +
nginx-unitA dynamic application server, capable of running beside NGINX
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • php-basic
  • + +
  • python3-basic
  • + +
  • libstdcpp
  • + +
  • lib-openssl
  • + +
+
+ +
nimImperative, multi-paradigm, compiled programming language
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
nloadMonitor network traffic and bandwidth usage.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
  • libstdcpp
  • + +
+
+ +
nmapUtility for network device discovery and security auditing.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • icu4c-lib
  • + +
  • pcre-lib
  • + +
  • libX11client
  • + +
  • gobject-introspection
  • + +
  • libpcap-lib
  • + +
  • libxml2
  • + +
  • nettle-lib
  • + +
  • gdk-pixbuf
  • + +
  • sqlite
  • + +
  • harfbuzz-lib
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
nodejs-basicRun JavaScript server side for fast, scalable network applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • lib-openssl
  • + +
  • icu4c-lib
  • + +
  • libstdcpp
  • + +
+
+ +
not-ffmpeg-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • icu4c-lib
  • + +
  • gmp-lib
  • + +
  • libX11client
  • + +
  • libssh-lib
  • + +
  • nettle-lib
  • + +
  • harfbuzz-lib
  • + +
  • numactl
  • + +
  • dav1d-lib
  • + +
+
+ +
notmuchSystem for indexing, searching, reading, and tagging large collections of email messages in maildir or mh format.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • curl
  • + +
  • icu4c-lib
  • + +
  • sqlite
  • + +
  • libstdcpp
  • + +
+
+ +
npbNAS Parallel Benchmarks
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • openmpi
  • + +
  • libstdcpp
  • + +
+
+ +
ntopngNetwork traffic probe that shows the network usage.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • curl
  • + +
  • lib-opengl
  • + +
  • libpcap-lib
  • + +
  • libunwind-lib
  • + +
  • lib-openssl
  • + +
  • perl-basic
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
numactllibnuma libraries
+ +
Status: + + Active + +
+ + +
nutPower devices discovery with Network UPS Tools
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • curl
  • + +
  • systemd
  • + +
  • gmp-lib
  • + +
  • pcre-lib
  • + +
  • dbus-lib
  • + +
  • perl-basic
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
nut-cgiCGI resources for Network UPS Tools
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • nut
  • + +
  • libXpm-lib
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • harfbuzz-lib
  • + +
+
+ +
obs-studioOBS Studio Library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • gnome-base-libs
  • + +
  • numactl
  • + +
  • libX11client
  • + +
  • libssh-lib
  • + +
  • dav1d-lib
  • + +
  • qt6-basic
  • + +
  • not-ffmpeg-lib
  • + +
  • libstdcpp
  • + +
+
+ +
ocaml-basicBuild and run ocaml language programs.
+ +
Status: + + Active + +
+ + +
octaveHigh-level programming language, primarily intended for numerical computations.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • curl
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • qt-basic
  • + +
  • openblas
  • + +
  • libstdcpp
  • + +
+
+ +
okularUniversal document viewer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • qt-core
  • + +
  • desktop-kde-libs
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • qt6-basic
  • + +
  • libstdcpp
  • + +
+
+ +
oneapi-devDevelopment tools for oneAPI.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • llvm
  • + +
  • devpkg-tbb
  • + +
+
+ +
openblasOptimized BLAS (linear algebra) library based on GotoBLAS2 1.13 BSD version.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
opencv-pythonOpenCV packages for Python.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • lib-imageformat
  • + +
  • openldap
  • + +
  • pypi-numpy
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • gdk-pixbuf
  • + +
  • openblas
  • + +
  • lib-opengl
  • + +
+
+ +
openldapLightweight Directory Access Protocol (LDAP) client and server tools.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • lib-openssl
  • + +
+
+ +
openmpiHPC tools for running on jobs on clusters.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libxml2
  • + +
  • perl-basic
  • + +
  • libevent-lib
  • + +
  • libstdcpp
  • + +
+
+ +
openssh-clientConnect to SSH servers
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • lib-openssl
  • + +
+
+ +
openssh-serverRun a secure shell (SSH) server for access from remote machines.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pcre-lib
  • + +
  • openssh-client
  • + +
  • iptables
  • + +
  • lib-openssl
  • + +
+
+ +
opensslToolkit for Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
openvinoOpenVINO runtime libraries and plugins
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • pypi-numpy
  • + +
  • libstdcpp
  • + +
+
+ +
openvswitchA production quality, multilayer virtual switch--open vswitch kernel modules.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
os-cloudguestRun any initialization processes required of a generic cloud guest virtual machine (VM).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • sudo
  • + +
  • openssh-server
  • + +
  • python-basic
  • + +
  • ethtool
  • + +
+
+ +
os-cloudguest-aliyunRun any initialization processes required of an Aliyun cloud guest virtual machine (VM).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • sudo
  • + +
+
+ +
os-cloudguest-awsRun any initialization processes required of an AWS cloud guest virtual machine (VM).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • sudo
  • + +
+
+ +
os-cloudguest-azureRun any initialization process requried of an Azure cloud guest virtual machine (VM).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • parted
  • + +
  • sudo
  • + +
  • openssh-server
  • + +
  • net-tools
  • + +
  • ethtool
  • + +
  • openssl
  • + +
+
+ +
os-cloudguest-equinixRun any initialization processes required of an Equinix server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • sudo
  • + +
+
+ +
os-cloudguest-gceRun any initialization processes required of an Google Compute Engine (GCE) cloud guest virtual machine (VM).
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • which
  • + +
  • sudo
  • + +
  • lib-openssl
  • + +
+
+ +
os-cloudguest-kvmRun any initialization processes required for qemu-kvm.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qemu-guest-additions
  • + +
+
+ +
os-cloudguest-oracleRun any initialization processes required of an Oracle Cloud guest.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • sudo
  • + +
  • openssh-server
  • + +
+
+ +
os-cloudguest-vmwareRun any initialization processes required for VMWare virtual machines (VM).
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
os-cloudguest-vmware-guiRun any initialization processes required for VMWare VMs.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • os-cloudguest-vmware
  • + +
  • libstdcpp
  • + +
+
+ +
os-clr-on-clrRun any process required for Clear Linux OS development.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-libzip
  • + +
  • mkosi
  • + +
  • koji
  • + +
  • dev-utils
  • + +
  • network-basic-dev
  • + +
  • mixer
  • + +
  • devpkg-fribidi
  • + +
  • os-core-update-dev
  • + +
  • scons
  • + +
  • os-core-dev
  • + +
  • mail-utils
  • + +
  • package-builder
  • + +
  • devpkg-libXdamage
  • + +
  • go-basic
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-mesa
  • + +
  • c-basic
  • + +
  • sysadmin-basic-dev
  • + +
  • unbundle
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-xcb-proto
  • + +
  • pypi-requests
  • + +
  • global
  • + +
  • python3-basic
  • + +
  • devpkg-libXxf86vm
  • + +
  • os-core
  • + +
  • devpkg-pmdk
  • + +
  • mail-utils-dev
  • + +
  • devpkg-telemetrics-client
  • + +
  • devpkg-libXfixes
  • + +
  • perl-basic
  • + +
  • devpkg-libXvMC
  • + +
  • libdeps
  • + +
  • devpkg-libxcb
  • + +
  • storage-utils-dev
  • + +
  • dev-utils-dev
  • + +
  • nodejs-basic
  • + +
  • xorriso
  • + +
  • network-basic
  • + +
  • storage-utils
  • + +
  • sysadmin-basic
  • + +
  • cabextract
  • + +
  • devpkg-libva
  • + +
  • devpkg-libdrm
  • + +
  • kvm-host
  • + +
  • editors
  • + +
+
+ +
os-clr-on-clr-devAll packages required to build the os-clr-on-clr bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • editors-dev
  • + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-hunspell
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gpgme
  • + +
  • llvm
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-dbus-python
  • + +
  • dosfstools
  • + +
  • devpkg-vte
  • + +
  • perl-basic-dev
  • + +
  • devpkg-graphviz
  • + +
  • devpkg-jansson
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-libqrtr-glib
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-pixman
  • + +
  • devpkg-libsodium
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-gi-docgen
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-gtk4
  • + +
  • devpkg-Botan
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-libusb
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libuv
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-apr-util
  • + +
  • devpkg-ModemManager
  • + +
  • devpkg-qatlib
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-qt6svg
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-qtwayland
  • + +
  • devpkg-gmime
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-gc
  • + +
  • devpkg-libxcvt
  • + +
  • devpkg-kyotocabinet
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-re2
  • + +
  • devpkg-mozjs115
  • + +
  • devpkg-open-isns
  • + +
  • devpkg-telepathy-glib
  • + +
  • devpkg-libsass
  • + +
  • devpkg-libass
  • + +
  • devpkg-libiscsi
  • + +
  • devpkg-xmlb
  • + +
  • devpkg-util-macros
  • + +
  • intltool
  • + +
  • zip
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-libwacom
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-gdal
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • libglib
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • devpkg-gcr
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • glibc-locale
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-ding-libs
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • less
  • + +
  • devpkg-libadwaita
  • + +
  • sassc
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-compat-gcr-soname1
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-openblas
  • + +
  • devpkg-libXfont2
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-lz4
  • + +
  • gpgme
  • + +
  • devpkg-baloo
  • + +
  • devpkg-Judy
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libexif
  • + +
  • devpkg-pciutils
  • + +
  • devpkg-opus
  • + +
  • devpkg-ell
  • + +
  • devpkg-glu
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-gst-plugins-base
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libssh
  • + +
  • devpkg-font-util
  • + +
  • devpkg-appstream
  • + +
  • lynx
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • graphviz
  • + +
  • devpkg-libdmx
  • + +
  • devpkg-mediasdk
  • + +
  • dev-utils-dev
  • + +
  • devpkg-directx-headers
  • + +
  • fonttools
  • + +
  • devpkg-libqmi
  • + +
  • devpkg-libavif
  • + +
  • devpkg-opencl-headers
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-gnome-bluetooth
  • + +
  • nasm
  • + +
  • devpkg-qtsvg
  • + +
  • bc
  • + +
  • devpkg-libtraceevent
  • + +
  • gnupg
  • + +
  • devpkg-libXv
  • + +
  • devpkg-cogl
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-nftables
  • + +
  • devpkg-onig
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-tevent
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libgdata
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • iptables
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-libnetfilter_cttimeout
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-newt
  • + +
  • mail-utils-dev
  • + +
  • devpkg-gsound
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-confuse
  • + +
  • devpkg-spice
  • + +
  • devpkg-libndp
  • + +
  • devpkg-qtserialport
  • + +
  • devpkg-LuaJIT
  • + +
  • libxml2
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-flac
  • + +
  • devpkg-NetworkManager
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-libical
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-abseil-cpp
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-vala
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • devpkg-libpipeline
  • + +
  • curl
  • + +
  • devpkg-tdb
  • + +
  • devpkg-lzo
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-libcbor
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-libdaemon
  • + +
  • devpkg-tpm2-tss
  • + +
  • devpkg-speex
  • + +
  • devpkg-subunit
  • + +
  • devpkg-serf
  • + +
  • devpkg-texlive
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-snappy
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-xwayland
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-qtconnectivity
  • + +
  • openvswitch
  • + +
  • devpkg-compat-babeltrace-one
  • + +
  • devpkg-libnl
  • + +
  • devpkg-parted
  • + +
  • devpkg-gmp
  • + +
  • dnf
  • + +
  • devpkg-qtsensors
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-qtquickcontrols2
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-mobile-broadband-provider-info
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • yasm
  • + +
  • devpkg-gflags
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-cppunit
  • + +
  • devpkg-libnotify
  • + +
  • strace
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-evolution-data-server
  • + +
  • devpkg-fftw
  • + +
  • devpkg-orc
  • + +
  • devpkg-pkcs11-helper
  • + +
  • devpkg-clutter
  • + +
  • devpkg-mutter
  • + +
  • devpkg-rrdtool
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libogg
  • + +
  • devpkg-glew
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-libXfont
  • + +
  • devpkg-gnome-autoar
  • + +
  • devpkg-llvm
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • devpkg-libnetfilter_cthelper
  • + +
  • pypi-requests
  • + +
  • devpkg-mpg123
  • + +
  • subversion
  • + +
  • devpkg-qtwebsockets
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-libkcapi
  • + +
  • devpkg-dconf
  • + +
  • iproute2
  • + +
  • devpkg-libpinyin
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-libspatialite
  • + +
  • devpkg-xz
  • + +
  • gjs
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-argon2
  • + +
  • devpkg-geos
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libpsl
  • + +
  • os-clr-on-clr
  • + +
  • bison
  • + +
  • devpkg-libXft
  • + +
  • devpkg-rtmpdump
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libtracefs
  • + +
  • devpkg-libdbusmenu-qt
  • + +
  • devpkg-pmdk
  • + +
  • devpkg-expat
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-userspace-rcu
  • + +
  • devpkg-glusterfs
  • + +
  • devpkg-dtc
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libdrm
  • + +
  • unzip
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • network-basic-dev
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-file
  • + +
  • devpkg-libidn
  • + +
  • devpkg-krb5
  • + +
  • devpkg-colord
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-graphite
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-exiv2
  • + +
  • devpkg-libvpx
  • + +
  • nfs-utils
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • devpkg-babeltrace
  • + +
  • devpkg-samba
  • + +
  • devpkg-source-highlight
  • + +
  • ghostscript
  • + +
  • guile
  • + +
  • devpkg-hwloc
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • devpkg-ldb
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-btrfs-progs
  • + +
  • devpkg-compat-enchant-soname1
  • + +
  • texlive
  • + +
  • sysadmin-basic-dev
  • + +
  • devpkg-spice-protocol
  • + +
  • devpkg-jsoncpp
  • + +
  • devpkg-openjpeg
  • + +
  • devpkg-rdma-core
  • + +
  • devpkg-shapelib
  • + +
  • poppler
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-phonon
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-qtxmlpatterns
  • + +
  • devpkg-gnome-settings-daemon
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-guile
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-nspr
  • + +
  • devpkg-librepo
  • + +
  • devpkg-apr
  • + +
  • devpkg-libksba
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-iptables
  • + +
  • devpkg-mtdev
  • + +
  • devpkg-ipp-crypto
  • + +
  • devpkg-oneVPL
  • + +
  • devpkg-dav1d
  • + +
  • devpkg-libclc
  • + +
  • devpkg-tokyocabinet
  • + +
  • devpkg-libnetfilter_queue
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-gnome-control-center
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-cups
  • + +
  • devpkg-pango
  • + +
  • devpkg-libsolv
  • + +
  • devpkg-lmdb
  • + +
  • modules
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-nettle
  • + +
  • devpkg-leptonica
  • + +
  • kvm-host-dev
  • + +
  • devpkg-libslirp
  • + +
  • devpkg-librttopo
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • openblas
  • + +
  • devpkg-libunibreak
  • + +
  • devpkg-kwayland
  • + +
  • devpkg-glib
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • plzip
  • + +
  • devpkg-capstone
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-gnome-desktop
  • + +
  • devpkg-cJSON
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-popt
  • + +
  • zenity
  • + +
  • flex
  • + +
  • devpkg-libgd
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-libabigail
  • + +
  • storage-utils-dev
  • + +
  • devpkg-libffi
  • + +
  • devpkg-protobuf-c
  • + +
  • devpkg-liboauth
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-spdlog
  • + +
  • devpkg-nfs-utils
  • + +
  • devpkg-utf8proc
  • + +
  • devpkg-pycairo
  • + +
  • devpkg-qtmultimedia
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-not-ffmpeg
  • + +
  • devpkg-libzip
  • + +
  • devpkg-bsdiff
  • + +
  • wget
  • + +
  • devpkg-libavtp
  • + +
  • libxslt
  • + +
  • devpkg-graphene
  • + +
  • devpkg-xapian-core
  • + +
  • devpkg-qtcharts
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmbim
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libnice
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-virglrenderer
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-poppler
  • + +
  • devpkg-libcacard
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-woff2
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-avahi
  • + +
  • devpkg-enchant
  • + +
  • devpkg-lua
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gtksourceview
  • + +
  • devpkg-libdisplay-info
  • + +
  • devpkg-libvirt
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-GConf
  • + +
  • devpkg-pygobject
  • + +
  • devpkg-usbredir
  • + +
  • devpkg-tcl
  • + +
  • devpkg-zxing
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-libnsl
  • + +
  • devpkg-rest
  • + +
  • devpkg-webkitgtk
  • + +
  • devpkg-efivar
  • + +
  • devpkg-libgweather
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-check
  • + +
  • go-basic-dev
  • + +
  • make
  • + +
  • devpkg-mesa
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libgit2
  • + +
  • devpkg-slang
  • + +
  • devpkg-stoken
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-gdm
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-libmspack
  • + +
  • devpkg-kmod
  • + +
  • devpkg-yajl
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-dpdk
  • + +
  • devpkg-fuse
  • + +
  • numactl
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-libXmu
  • + +
  • acpica-unix2
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-libva
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-gjs
  • + +
  • devpkg-nss
  • + +
  • valgrind
  • + +
  • devpkg-proj
  • + +
  • rsync
  • + +
  • patchelf
  • + +
  • devpkg-sbc
  • + +
  • p11-kit
  • + +
  • devpkg-pcsc-lite
  • + +
  • devpkg-opencv
  • + +
  • net-tools
  • + +
  • which
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • binutils
  • + +
  • devpkg-eigen
  • + +
  • devpkg-upower
  • + +
  • aspell
  • + +
  • devpkg-libmaxminddb
  • + +
  • devpkg-jack2
  • + +
  • devpkg-wayland
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-isa-l
  • + +
  • devpkg-boost
  • + +
  • fontforge
  • + +
  • devpkg-assimp
  • + +
  • devpkg-duktape
  • + +
+
+ +
os-coreRun a minimal Linux userspace.
+ +
Status: + + Active + +
+ + +
os-core-devAll packages required to build the os-core bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • llvm
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-libpwquality
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • dev-utils
  • + +
  • devpkg-file
  • + +
  • devpkg-zstd
  • + +
  • libxslt
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-tpm2-tss
  • + +
  • procps-ng
  • + +
  • intltool
  • + +
  • guile
  • + +
  • gdb
  • + +
  • git
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • file
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • make
  • + +
  • devpkg-gmp
  • + +
  • devpkg-systemd
  • + +
  • glibc-locale
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-kmod
  • + +
  • openssl
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-fuse
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libmicrohttpd
  • + +
  • valgrind
  • + +
  • devpkg-libbsd
  • + +
  • p11-kit
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • xz
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libbpf
  • + +
  • graphviz
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
+
+ +
os-core-legacyProvides basic 32 bit libs
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • os-core
  • + +
  • libglib
  • + +
  • libstdcpp
  • + +
+
+ +
os-core-plusRun a more full featured but still small Linux userspace.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • dbus-lib
  • + +
  • systemd
  • + +
  • kbd
  • + +
  • ncurses-lib
  • + +
+
+ +
os-core-searchProvides swupd search capability.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • os-core
  • + +
  • python3-basic
  • + +
+
+ +
os-core-updateProvides basic suite for running Clear Linux OS for IA Updater.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • clr-hardware-files
  • + +
  • curl
  • + +
  • os-core
  • + +
  • os-core-plus
  • + +
  • btrfs-progs
  • + +
  • os-core-webproxy
  • + +
  • popt-lib
  • + +
  • libarchive
  • + +
+
+ +
os-core-update-devAll packages required to build the os-core-update bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • llvm
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-expat
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-libsodium
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-bsdiff
  • + +
  • devpkg-libpwquality
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • dev-utils
  • + +
  • devpkg-file
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libidn
  • + +
  • os-core-dev
  • + +
  • libxslt
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-lzo
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-tpm2-tss
  • + +
  • procps-ng
  • + +
  • libpsl-lib
  • + +
  • intltool
  • + +
  • guile
  • + +
  • devpkg-c-ares
  • + +
  • gdb
  • + +
  • git
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • file
  • + +
  • devpkg-efivar
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • devpkg-check
  • + +
  • devpkg-gmp
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • glibc-locale
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-slang
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • less
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-kmod
  • + +
  • openssl
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-fuse
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-lz4
  • + +
  • valgrind
  • + +
  • devpkg-libbsd
  • + +
  • patchelf
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • p11-kit
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • xz
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libkcapi
  • + +
  • graphviz
  • + +
  • os-core-update
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • devpkg-boost
  • + +
  • devpkg-libX11
  • + +
+
+ +
os-core-webproxyProvides basic suite for using http proxies.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • os-core
  • + +
  • libglib
  • + +
  • curl
  • + +
  • p11-kit
  • + +
+
+ +
os-installerVanity name for the clr-installer to maintain old bundle
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • clr-installer
  • + +
+
+ +
os-testsuiteProvides minimal functionality for core testing functions.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • diffutils
  • + +
  • clamav
  • + +
  • parallel
  • + +
  • sudo
  • + +
  • openssh-server
  • + +
  • git
  • + +
  • binutils
  • + +
  • file
  • + +
+
+ +
os-testsuite-0dayHelpers for the 0day kernel testing framework.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-hwloc
  • + +
  • python3-basic
  • + +
  • llvm
  • + +
  • pandoc
  • + +
  • memcached
  • + +
  • acpica-unix2
  • + +
  • sg3_utils
  • + +
  • moreutils
  • + +
  • btrfs-progs
  • + +
  • c-basic
  • + +
  • dev-utils
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-libXaw
  • + +
  • perl-basic
  • + +
  • intltool
  • + +
+
+ +
os-testsuite-automotiveProvides minimal functionality for automotive testing functions.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • os-testsuite-graphics
  • + +
  • net-tools
  • + +
  • libnl
  • + +
  • os-testsuite
  • + +
+
+ +
os-testsuite-graphicsProvides minimal functionality for graphics testing functions.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • glmark2
  • + +
  • x11-server
  • + +
  • audio-pipewire
  • + +
  • gdk-pixbuf
  • + +
  • lib-openssl
  • + +
  • libpsl-lib
  • + +
+
+ +
os-testsuite-phoronixRun the Phoronix test suite.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • os-testsuite-phoronix-desktop
  • + +
  • devpkg-snappy
  • + +
  • c-basic-static
  • + +
  • devpkg-libvorbis
  • + +
  • gnupg
  • + +
  • devpkg-libevent
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-libksba
  • + +
  • devpkg-gmp
  • + +
  • libevent-lib
  • + +
  • devpkg-pkg-config
  • + +
  • os-testsuite-phoronix-server
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-numactl
  • + +
  • devpkg-ocl-icd
  • + +
  • numactl
  • + +
  • devpkg-bzip2
  • + +
  • phoronix-test-suite
  • + +
  • devpkg-cfitsio
  • + +
+
+ +
os-testsuite-phoronix-desktopRun the Phoronix test suite (desktop version).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-snappy
  • + +
  • devpkg-libvorbis
  • + +
  • gnupg
  • + +
  • openblas
  • + +
  • devpkg-libevent
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-libksba
  • + +
  • devpkg-gmp
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-numactl
  • + +
  • devpkg-ocl-icd
  • + +
  • perl-basic
  • + +
  • numactl
  • + +
  • lib-opengl
  • + +
  • pypi-numpy
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-opencl-headers
  • + +
  • phoronix-test-suite
  • + +
+
+ +
os-testsuite-phoronix-serverRun the Phoronix test suite (server version).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-mpfr
  • + +
  • devpkg-snappy
  • + +
  • devpkg-numactl
  • + +
  • pypi-numpy
  • + +
  • devpkg-ocl-icd
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-libksba
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-gmp
  • + +
  • devpkg-opencl-headers
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-libevent
  • + +
  • gnupg
  • + +
  • openblas
  • + +
  • numactl
  • + +
  • phoronix-test-suite
  • + +
+
+ +
os-utils-guiProvides a graphical desktop environment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • alsa-utils
  • + +
  • gnome-base-libs
  • + +
  • fonts-basic
  • + +
  • lz4
  • + +
  • pulseaudio
  • + +
  • fontconfig
  • + +
  • python3-basic
  • + +
  • FreeRDP
  • + +
  • graphviz
  • + +
  • wpa_supplicant
  • + +
  • perl-basic
  • + +
  • openssl
  • + +
  • lib-imageformat
  • + +
  • vim
  • + +
  • cryptography
  • + +
  • x11-server
  • + +
  • xfce4-desktop
  • + +
  • linux-firmware-extras
  • + +
  • gdk-pixbuf
  • + +
  • linux-firmware-wifi
  • + +
+
+ +
os-utils-gui-devAll packages required to build the os-utils-gui bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-hunspell
  • + +
  • devpkg-libisofs
  • + +
  • devpkg-curl
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gpgme
  • + +
  • llvm
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-compat-cairomm-soname10
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-dbus-python
  • + +
  • devpkg-vte
  • + +
  • perl-basic-dev
  • + +
  • devpkg-jansson
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-uhttpmock
  • + +
  • devpkg-compat-pangomm-soname14
  • + +
  • devpkg-libstoragemgmt
  • + +
  • devpkg-libqrtr-glib
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-pixman
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-gi-docgen
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-gtk4
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-libusb
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-ModemManager
  • + +
  • devpkg-qatlib
  • + +
  • devpkg-libcroco
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-qtwayland
  • + +
  • devpkg-libxcvt
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-mozjs115
  • + +
  • devpkg-telepathy-glib
  • + +
  • devpkg-libsass
  • + +
  • devpkg-libass
  • + +
  • devpkg-libiscsi
  • + +
  • devpkg-xmlb
  • + +
  • devpkg-util-macros
  • + +
  • intltool
  • + +
  • devpkg-xfconf
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-libwacom
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-shared-mime-info
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • devpkg-exo
  • + +
  • libglib
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • devpkg-gcr
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • glibc-locale
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-libadwaita
  • + +
  • devpkg-libcdio
  • + +
  • sassc
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-compat-gcr-soname1
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXfont2
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-lz4
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libexif
  • + +
  • devpkg-pciutils
  • + +
  • devpkg-Thunar
  • + +
  • devpkg-opus
  • + +
  • devpkg-ell
  • + +
  • devpkg-glu
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-gst-plugins-base
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libssh
  • + +
  • devpkg-font-util
  • + +
  • devpkg-appstream
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • graphviz
  • + +
  • devpkg-libdmx
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-directx-headers
  • + +
  • fonttools
  • + +
  • devpkg-libqmi
  • + +
  • devpkg-libavif
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-gnome-bluetooth
  • + +
  • nasm
  • + +
  • devpkg-qtsvg
  • + +
  • gnupg
  • + +
  • devpkg-libbytesize
  • + +
  • devpkg-libXv
  • + +
  • devpkg-cogl
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-tevent
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libgdata
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • iptables
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-newt
  • + +
  • devpkg-compat-glibmm-soname24
  • + +
  • devpkg-gsound
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-spice
  • + +
  • devpkg-geany
  • + +
  • devpkg-libndp
  • + +
  • devpkg-libmtp
  • + +
  • devpkg-qtserialport
  • + +
  • libxml2
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-flac
  • + +
  • devpkg-NetworkManager
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-libical
  • + +
  • devpkg-cairomm
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-vala
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • devpkg-tdb
  • + +
  • devpkg-lzo
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-libcbor
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-libatasmart
  • + +
  • devpkg-bluez
  • + +
  • devpkg-libdaemon
  • + +
  • devpkg-tpm2-tss
  • + +
  • clr-hardware-files
  • + +
  • devpkg-speex
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-snappy
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-xwayland
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-qtconnectivity
  • + +
  • devpkg-libnl
  • + +
  • devpkg-parted
  • + +
  • devpkg-gmp
  • + +
  • devpkg-qtsensors
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-mobile-broadband-provider-info
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • yasm
  • + +
  • devpkg-gflags
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-libnotify
  • + +
  • strace
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-libconfig
  • + +
  • devpkg-evolution-data-server
  • + +
  • devpkg-garcon
  • + +
  • devpkg-openconnect
  • + +
  • devpkg-fftw
  • + +
  • devpkg-orc
  • + +
  • devpkg-clutter
  • + +
  • devpkg-mutter
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libogg
  • + +
  • devpkg-glew
  • + +
  • qt6-basic
  • + +
  • devpkg-mm-common
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-gnome-icon-theme
  • + +
  • devpkg-libXfont
  • + +
  • devpkg-gnome-autoar
  • + +
  • devpkg-libXpresent
  • + +
  • devpkg-llvm
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-qtwebsockets
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-dconf
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • gjs
  • + +
  • devpkg-libxklavier
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libpsl
  • + +
  • bison
  • + +
  • devpkg-libXft
  • + +
  • devpkg-rtmpdump
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-expat
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libdrm
  • + +
  • unzip
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-gtkmm3
  • + +
  • devpkg-intel-media-driver
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-file
  • + +
  • devpkg-libidn
  • + +
  • devpkg-krb5
  • + +
  • devpkg-colord
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-graphite
  • + +
  • os-utils-gui
  • + +
  • devpkg-libgphoto2
  • + +
  • devpkg-accountsservice
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-exiv2
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • devpkg-samba
  • + +
  • ghostscript
  • + +
  • guile
  • + +
  • devpkg-igt-gpu-tools
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • devpkg-ldb
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-libxfce4util
  • + +
  • devpkg-FreeRDP
  • + +
  • devpkg-ledmon
  • + +
  • devpkg-compat-enchant-soname1
  • + +
  • devpkg-spice-protocol
  • + +
  • devpkg-SDL2_ttf
  • + +
  • devpkg-opusfile
  • + +
  • devpkg-openjpeg
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-qtxmlpatterns
  • + +
  • devpkg-gnome-settings-daemon
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libwnck3
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-nspr
  • + +
  • devpkg-libksba
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-iptables
  • + +
  • devpkg-mtdev
  • + +
  • devpkg-ipp-crypto
  • + +
  • devpkg-oneVPL
  • + +
  • devpkg-cmrt
  • + +
  • devpkg-dav1d
  • + +
  • libX11client
  • + +
  • devpkg-libclc
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-gnome-control-center
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-cups
  • + +
  • devpkg-pango
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-nettle
  • + +
  • devpkg-gtkspell3
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • devpkg-libunibreak
  • + +
  • devpkg-glib
  • + +
  • devpkg-udisks2
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-gnome-desktop
  • + +
  • devpkg-cJSON
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-popt
  • + +
  • zenity
  • + +
  • flex
  • + +
  • devpkg-libgd
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-libffi
  • + +
  • devpkg-liboauth
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-qtmultimedia
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-not-ffmpeg
  • + +
  • devpkg-libavtp
  • + +
  • libxslt
  • + +
  • devpkg-graphene
  • + +
  • devpkg-qtcharts
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmbim
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libnice
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-poppler
  • + +
  • devpkg-woff2
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-avahi
  • + +
  • devpkg-enchant
  • + +
  • devpkg-lua
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-icon-naming-utils
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gtksourceview
  • + +
  • devpkg-libdisplay-info
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-pygobject
  • + +
  • devpkg-compat-atkmm-soname16
  • + +
  • devpkg-tcl
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-rest
  • + +
  • devpkg-webkitgtk
  • + +
  • devpkg-libgweather
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-check
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • devpkg-mesa
  • + +
  • devpkg-libgit2
  • + +
  • devpkg-stoken
  • + +
  • devpkg-libburn
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-gnome-online-accounts
  • + +
  • devpkg-libxfce4ui
  • + +
  • devpkg-kmod
  • + +
  • devpkg-yajl
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libblockdev
  • + +
  • devpkg-glibmm
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-libva
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-gjs
  • + +
  • devpkg-nss
  • + +
  • valgrind
  • + +
  • rsync
  • + +
  • patchelf
  • + +
  • devpkg-sbc
  • + +
  • p11-kit
  • + +
  • devpkg-pcsc-lite
  • + +
  • devpkg-xf86-input-evdev
  • + +
  • net-tools
  • + +
  • which
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • binutils
  • + +
  • devpkg-eigen
  • + +
  • devpkg-upower
  • + +
  • aspell
  • + +
  • devpkg-jack2
  • + +
  • devpkg-wayland
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-boost
  • + +
  • fontforge
  • + +
  • devpkg-assimp
  • + +
  • devpkg-xf86-input-synaptics
  • + +
  • devpkg-duktape
  • + +
+
+ +
p11-kitLoad and enumerate PKCS#11 modules.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • findutils
  • + +
+
+ +
package-builderMinimal bundle for building packages via Clear Linux OS common tooling.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gpgme
  • + +
  • curl
  • + +
  • openldap
  • + +
  • diffutils
  • + +
  • plzip
  • + +
  • pypi-six
  • + +
  • Sphinx
  • + +
  • make
  • + +
  • sudo
  • + +
  • dnf
  • + +
  • cpio
  • + +
  • git
  • + +
  • zstd
  • + +
  • gnupg
  • + +
  • binutils
  • + +
  • package-utils
  • + +
  • pypi-requests
  • + +
+
+ +
package-utilsUtilities for creating, building, and managing packages.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • curl
  • + +
  • libxml2
  • + +
  • pypi-requests
  • + +
  • perl-basic
  • + +
  • popt-lib
  • + +
  • libarchive
  • + +
+
+ +
paho-mqtt-c-libpaho MQTT library (C bindings)
+ +
Status: + + Active + +
+ + +
paho-mqtt-cpp-libpaho MQTT library (C++ bindings)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
pandasNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • pypi-six
  • + +
  • pypi-numpy
  • + +
+
+ +
pandocThe universal markup converter
+ +
Status: + + Active + +
+ + +
parallelShell tool for executing jobs in parallel using one or more computers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
partedThe GNU disk partition manipulation program.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
+
+ +
passStore, retrieve, generate, and synchronize passwords securely.
+ +
Status: + + Active + +
+ + +
patchUpdates text files according to instructions contained in a separate file.
+ +
Status: + + Active + +
+ + +
patchelfNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
pcmanfma file manager replacement for Nautilus, Konqueror and Thunar
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
pcre-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
pcre2-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
pdnsPowerDNS authoritative name server (DNSSEC enabled).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • curl
  • + +
  • systemd
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
pdns-recursorPowerDNS recursive caching name server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • systemd
  • + +
  • icu4c-lib
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
performance-toolsRun performance and power measurements.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • bpftrace
  • + +
  • iotop
  • + +
  • linux-tools
  • + +
  • htop
  • + +
  • pypi-six
  • + +
  • strace
  • + +
  • libpcap-lib
  • + +
  • powertop
  • + +
  • sysstat
  • + +
  • net-tools
  • + +
  • ethtool
  • + +
  • iproute2
  • + +
  • procps-ng
  • + +
  • bcc
  • + +
  • perl-basic
  • + +
+
+ +
perl-basicRun Perl language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • gmp-lib
  • + +
  • nettle-lib
  • + +
  • lib-openssl
  • + +
+
+ +
perl-basic-devAll packages required to build the perl-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • llvm
  • + +
  • pypi-cython
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-expat
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-libpwquality
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • dev-utils
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libidn
  • + +
  • os-core-dev
  • + +
  • libxslt
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-tpm2-tss
  • + +
  • procps-ng
  • + +
  • intltool
  • + +
  • guile
  • + +
  • git
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • file
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • make
  • + +
  • devpkg-gmp
  • + +
  • devpkg-systemd
  • + +
  • glibc-locale
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-kmod
  • + +
  • openssl
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libmicrohttpd
  • + +
  • valgrind
  • + +
  • devpkg-libbsd
  • + +
  • p11-kit
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-iptables
  • + +
  • net-tools
  • + +
  • which
  • + +
  • xz
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libbpf
  • + +
  • graphviz
  • + +
  • perl-basic
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • devpkg-nettle
  • + +
+
+ +
perl-extrasImprove user experience with a common set of prebuilt Perl libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libXpm-lib
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • libevent-lib
  • + +
  • postgresql
  • + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
+
+ +
perl-graphicsPerl graphics libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • wayland-server
  • + +
  • libX11client
  • + +
  • x11-tools
  • + +
  • gobject-introspection
  • + +
  • webkitgtk
  • + +
  • perl-basic
  • + +
+
+ +
phoronix-test-suiteRun only the phoronix-test-suite
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • qt-core
  • + +
  • php-basic
  • + +
  • tcl-basic
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • LibRaw-lib
  • + +
  • unzip
  • + +
  • lib-opengl
  • + +
+
+ +
php-basicRun PHP language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • curl
  • + +
  • lib-imageformat
  • + +
  • ncurses-lib
  • + +
  • libXpm-lib
  • + +
  • icu4c-lib
  • + +
  • gmp-lib
  • + +
  • nettle-lib
  • + +
  • lib-openssl
  • + +
  • postgresql-lib
  • + +
  • harfbuzz-lib
  • + +
  • libstdcpp
  • + +
+
+ +
php-basic-devAll packages required to build the php-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-argon2
  • + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • nasm
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-libXv
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-onig
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • devpkg-libXft
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-libpciaccess
  • + +
  • llvm
  • + +
  • devpkg-pcre2
  • + +
  • pypi-cython
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-freetype
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-libgd
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-dbus-python
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-expat
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-libvdpau
  • + +
  • libxml2
  • + +
  • devpkg-libsodium
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-pixman
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-ncurses
  • + +
  • vte-lib
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-libzip
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-flac
  • + +
  • devpkg-libusb
  • + +
  • php-basic
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-tk
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-file
  • + +
  • devpkg-libavtp
  • + +
  • devpkg-libidn
  • + +
  • devpkg-vala
  • + +
  • os-core-dev
  • + +
  • devpkg-graphene
  • + +
  • libxslt
  • + +
  • devpkg-zstd
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-krb5
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-lzo
  • + +
  • devpkg-colord
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-libnice
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-poppler
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-graphite
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-readline
  • + +
  • devpkg-enchant
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-lua
  • + +
  • devpkg-tpm2-tss
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-pipewire
  • + +
  • clr-hardware-files
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-speex
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • devpkg-util-macros
  • + +
  • ghostscript
  • + +
  • devpkg-SDL2_image
  • + +
  • intltool
  • + +
  • guile
  • + +
  • devpkg-tcl
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-snappy
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • devpkg-check
  • + +
  • devpkg-gmp
  • + +
  • make
  • + +
  • devpkg-mesa
  • + +
  • devpkg-systemd
  • + +
  • glibc-locale
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • sassc
  • + +
  • yasm
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-gflags
  • + +
  • devpkg-kmod
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libdatrie
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-fftw
  • + +
  • devpkg-libva
  • + +
  • devpkg-orc
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-clutter
  • + +
  • devpkg-nss
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-lz4
  • + +
  • devpkg-qtbase
  • + +
  • gnome-base-libs
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-fontconfig
  • + +
  • valgrind
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libexif
  • + +
  • devpkg-libogg
  • + +
  • patchelf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • rsync
  • + +
  • devpkg-glew
  • + +
  • devpkg-sbc
  • + +
  • qt6-basic
  • + +
  • devpkg-opus
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-librsvg
  • + +
  • p11-kit
  • + +
  • devpkg-glu
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-audit
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-gst-plugins-base
  • + +
  • devpkg-iptables
  • + +
  • devpkg-llvm
  • + +
  • devpkg-mtdev
  • + +
  • net-tools
  • + +
  • which
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-oneVPL
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-dav1d
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-libclc
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • libpcap-lib
  • + +
  • graphviz
  • + +
  • libX11client
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-wayland
  • + +
  • devpkg-cups
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-pango
  • + +
  • devpkg-acl
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-directx-headers
  • + +
  • devpkg-xz
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-boost
  • + +
  • pypi-numpy
  • + +
  • devpkg-libavif
  • + +
  • devpkg-nettle
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-duktape
  • + +
+
+ +
php-extrasVarious nonstandard PHP extensions
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
  • php-basic
  • + +
  • lz4
  • + +
  • libunwind-lib
  • + +
  • lib-opengl
  • + +
+
+ +
pidginMulti-protocol instant messagging (IM) client.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • FreeRDP
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • Remmina
  • + +
+
+ +
plzipParallel losless data compressor based on the LZMA algorithm.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
pmdkPersistent Memory Development Kit tools and libraries for working with non-volatile memory.
+ +
Status: + + Active + +
+ + +
po4aPO for anything: Maintain the translations of your documentation
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
podmanBuilds Dockerfile using the Docker client
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • curl
  • + +
  • systemd
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • sqlite
  • + +
  • libstdcpp
  • + +
+
+ +
polkitApplication development toolkit for controlling system-wide privileges.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gmp-lib
  • + +
  • curl
  • + +
  • nettle-lib
  • + +
+
+ +
popplerPDF rendering library based on xpdf-3.0 code base.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • lib-poppler
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
popt-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
postfixMail transfer agent (MTA) that routes and delivers electronic mail. SMTP server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
  • systemd
  • + +
  • lib-openssl
  • + +
+
+ +
postgresqlObject-relational SQL database.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • systemd
  • + +
  • lz4
  • + +
  • lib-openssl
  • + +
  • postgresql-lib
  • + +
+
+ +
postgresql-libObject-relational SQL database -- client libraries
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
powertopDiagnose issues with power consumption and power management.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
procps-ngLibrary to control and query process state
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
+
+ +
productivityA set of console utilities for task management and communication.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • pypi-six
  • + +
  • perl-basic
  • + +
  • harfbuzz-lib
  • + +
  • mail-utils
  • + +
+
+ +
protobufProtocol Buffers - Google's data interchange format
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • protobuf-lib
  • + +
  • libstdcpp
  • + +
+
+ +
protobuf-libProtocol Buffers - Google's data interchange format
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
psensorA graphical hardware temperature monitor for Linux
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • mpfr-lib
  • + +
  • curl
  • + +
  • libX11client
  • + +
  • lib-openssl
  • + +
+
+ +
psppa program for statistical analysis of sampled data
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
pulseaudioPulseAudio Simplified Synchronous Client Interface.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
  • lib-openssl
  • + +
+
+ +
pwgenPassword generator creating easily memorable passwords, while being as secure as possible.
+ +
Status: + + Active + +
+ + +
pxe-serverRun a PXE server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • gmp-lib
  • + +
  • dbus-lib
  • + +
  • nginx
  • + +
  • nettle-lib
  • + +
  • iptables
  • + +
+
+ +
pygobjectCommon development files in the pygobject ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • gobject-introspection
  • + +
  • nettle-lib
  • + +
  • libxml2
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
+
+ +
pypi-b4A tool to work with public-inbox and patch archives
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • pypi-pynacl
  • + +
  • pypi-requests
  • + +
+
+ +
pypi-cythonThe Cython compiler for writing C extensions for the Python language.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
pypi-numpyPython Numerics
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • openblas
  • + +
+
+ +
pypi-onnxOpen Neural Network Exchange
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • protobuf-lib
  • + +
  • python-extras
  • + +
  • libstdcpp
  • + +
+
+ +
pypi-pygamePython Game Development
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
+
+ +
pypi-pynaclPython binding to the Networking and Cryptography (NaCl) library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
pypi-requestsPython URL mangling
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • openblas
  • + +
+
+ +
pypi-sixPython Numerics
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
PyQt6Python bindings for the Qt cross platform application toolkit
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • icu4c-lib
  • + +
  • dbus-lib
  • + +
  • libX11client
  • + +
  • libxml2
  • + +
  • nettle-lib
  • + +
  • libevent-lib
  • + +
  • gdk-pixbuf
  • + +
  • qt6-basic
  • + +
  • lib-openssl
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
python-basicRun Python language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • p11-kit
  • + +
+
+ +
python-data-scienceThe Python data-science stack; the best of http://pydata.org.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
  • python-extras
  • + +
  • cloud-api
  • + +
+
+ +
python-extrasImprove user experience with a common set of prebuilt Python libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • pypi-cython
  • + +
  • cloud-api
  • + +
  • pypi-numpy
  • + +
  • Sphinx
  • + +
  • graphviz
  • + +
  • pandas
  • + +
  • openblas
  • + +
  • python3-tcl
  • + +
  • pypi-requests
  • + +
+
+ +
python-graphicsPython libraries to support graphical applications
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pypi-six
  • + +
  • webkitgtk
  • + +
  • libglib
  • + +
  • curl
  • + +
  • aspell
  • + +
  • python3-basic
  • + +
  • icu4c-lib
  • + +
  • gmp-lib
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • lib-opengl
  • + +
  • lib-imageformat
  • + +
  • pypi-numpy
  • + +
  • dbus-lib
  • + +
  • nettle-lib
  • + +
  • libxml2
  • + +
  • gdk-pixbuf
  • + +
  • libpsl-lib
  • + +
  • harfbuzz-lib
  • + +
  • libstdcpp
  • + +
+
+ +
python-qtRun python programs that use the Qt runtime.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pypi-cython
  • + +
  • pypi-numpy
  • + +
  • pypi-six
  • + +
  • pandas
  • + +
  • qt-basic
  • + +
  • openblas
  • + +
  • pypi-requests
  • + +
+
+ +
python-testingImprove user experience with a common set of prebuilt Python libraries for testing.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • Sphinx
  • + +
  • cloud-api
  • + +
+
+ +
python3-basicRun Python 3 language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • sqlite
  • + +
  • harfbuzz-lib
  • + +
  • p11-kit
  • + +
  • libstdcpp
  • + +
+
+ +
python3-basic-staticProvides static libraries for the Python ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
python3-tclPython 3 TCL/TK support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • tcl-basic
  • + +
+
+ +
pytorchOpen source machine learning framework
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • numactl
  • + +
  • python-data-science
  • + +
  • openblas
  • + +
  • pypi-pynacl
  • + +
  • pypi-onnx
  • + +
  • libstdcpp
  • + +
+
+ +
PyYAMLNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • sqlite
  • + +
  • python3-basic
  • + +
  • yaml
  • + +
+
+ +
qalculate-gtkMulti-purpose cross-platform desktop calculator.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • mpfr-lib
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • libstdcpp
  • + +
+
+ +
qbittorrentA BitTorrent client in Qt
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
qemu-guest-additionsA lightweight multi-platform, multi-architecture disassembly framework.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • numactl
  • + +
+
+ +
qmapshackNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
qt-basicRun programs that use the Qt runtime.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • fonts-basic
  • + +
  • libX11client
  • + +
  • pulseaudio
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
qt-basic-devAll packages required to build the qt-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • devpkg-gtk-doc
  • + +
  • llvm
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-dbus-python
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-qtscript
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-pixman
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-ncurses
  • + +
  • vte-lib
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-libusb
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-libcroco
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-qtwayland
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-util-macros
  • + +
  • intltool
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • devpkg-qtspeech
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • glibc-locale
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • sassc
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-lz4
  • + +
  • devpkg-qtgamepad
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libexif
  • + +
  • devpkg-opus
  • + +
  • devpkg-ell
  • + +
  • devpkg-glu
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-gst-plugins-base
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-font-util
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • graphviz
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-directx-headers
  • + +
  • fonttools
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • nasm
  • + +
  • devpkg-qtsvg
  • + +
  • gnupg
  • + +
  • devpkg-libXv
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-qtserialport
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-flac
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-libical
  • + +
  • devpkg-gnutls
  • + +
  • qt-basic
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-vala
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • devpkg-lzo
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-tpm2-tss
  • + +
  • clr-hardware-files
  • + +
  • devpkg-speex
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-snappy
  • + +
  • devpkg-c-ares
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-qtconnectivity
  • + +
  • devpkg-qtlocation
  • + +
  • devpkg-gmp
  • + +
  • devpkg-qtsensors
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-qtquickcontrols2
  • + +
  • devpkg-xcb-proto
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • yasm
  • + +
  • devpkg-gflags
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • strace
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-evolution-data-server
  • + +
  • devpkg-fftw
  • + +
  • devpkg-orc
  • + +
  • devpkg-clutter
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libogg
  • + +
  • devpkg-glew
  • + +
  • qt6-basic
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-llvm
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-qt3d
  • + +
  • devpkg-taglib
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-qtwebsockets
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-qtwebchannel
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-qtx11extras
  • + +
  • devpkg-dbus
  • + +
  • bison
  • + +
  • devpkg-libXft
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-expat
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libdrm
  • + +
  • unzip
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-file
  • + +
  • devpkg-libidn
  • + +
  • devpkg-krb5
  • + +
  • devpkg-colord
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-graphite
  • + +
  • devpkg-qtscxml
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • ghostscript
  • + +
  • guile
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-qtxmlpatterns
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-iptables
  • + +
  • devpkg-mtdev
  • + +
  • devpkg-oneVPL
  • + +
  • libX11client
  • + +
  • devpkg-libclc
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-cups
  • + +
  • devpkg-pango
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-nettle
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • devpkg-glib
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-popt
  • + +
  • flex
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-qtmultimedia
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-libavtp
  • + +
  • libxslt
  • + +
  • devpkg-graphene
  • + +
  • devpkg-qtcharts
  • + +
  • devpkg-zlib
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libnice
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-poppler
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-lua
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-tcl
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-check
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • devpkg-mesa
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-kmod
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-qtvirtualkeyboard
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-qtnetworkauth
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-qtserialbus
  • + +
  • devpkg-libva
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-nss
  • + +
  • valgrind
  • + +
  • devpkg-qtdatavis3d
  • + +
  • rsync
  • + +
  • patchelf
  • + +
  • devpkg-sbc
  • + +
  • p11-kit
  • + +
  • net-tools
  • + +
  • which
  • + +
  • binutils
  • + +
  • devpkg-wayland
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-boost
  • + +
  • fontforge
  • + +
  • devpkg-assimp
  • + +
  • devpkg-duktape
  • + +
+
+ +
qt-coreRun programs that use the core Qt runtime components only.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • curl
  • + +
  • openldap
  • + +
  • icu4c-lib
  • + +
  • libxml2
  • + +
  • libstdcpp
  • + +
+
+ +
qt5-devDevelopment files for Qt 5
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-qtdatavis3d
  • + +
  • devpkg-qtsvg
  • + +
  • qt-basic
  • + +
  • devpkg-qtconnectivity
  • + +
  • devpkg-qtcharts
  • + +
  • devpkg-qtspeech
  • + +
  • devpkg-qtlocation
  • + +
  • devpkg-mesa
  • + +
  • devpkg-qtsensors
  • + +
  • devpkg-qtquickcontrols2
  • + +
  • devpkg-qt3d
  • + +
  • devpkg-qtwebsockets
  • + +
  • devpkg-qtscxml
  • + +
  • devpkg-qtwebchannel
  • + +
  • devpkg-qtvirtualkeyboard
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-qtserialport
  • + +
  • devpkg-qtscript
  • + +
  • devpkg-qtnetworkauth
  • + +
  • devpkg-qtxmlpatterns
  • + +
  • devpkg-qtserialbus
  • + +
  • devpkg-qtremoteobjects
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-qtmultimedia
  • + +
  • devpkg-qtgamepad
  • + +
+
+ +
qt5ctQt 5 configuration tool independent of desktops
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
qt6-basicRun programs that use the Qt runtime.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • fonts-basic
  • + +
  • libX11client
  • + +
  • qt6-core
  • + +
  • protobuf-lib
  • + +
  • lib-opengl
  • + +
+
+ +
qt6-coreRun programs that use the core Qt runtime components only.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • openldap
  • + +
  • ncurses-lib
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • gmp-lib
  • + +
  • libX11client
  • + +
  • libxml2
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
quaggaBGP/OSPF/ISIS/RIP/RIPNG routing daemon suite.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
+
+ +
quasselNext-generation distributed IRC client.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libevent-lib
  • + +
  • dav1d-lib
  • + +
  • qt-basic
  • + +
  • aspell
  • + +
  • libstdcpp
  • + +
+
+ +
quasselcoreQuassel IRC server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • libevent-lib
  • + +
  • qt-basic
  • + +
  • aspell
  • + +
  • dav1d-lib
  • + +
+
+ +
R-basicRun R language programs for statistical computing and data analysis.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • devpkg-R
  • + +
  • tcl-basic
  • + +
  • less
  • + +
+
+ +
R-datasetsLarge datasets for R programming.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • R-basic
  • + +
+
+ +
R-extrasImprove the user experience with a common set of prebuilt R libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • pandoc
  • + +
  • lib-imageformat
  • + +
  • R-basic
  • + +
  • lz4
  • + +
  • libunwind-lib
  • + +
  • c-basic
  • + +
  • lib-poppler
  • + +
  • R-stan
  • + +
  • openmpi
  • + +
  • LibRaw-lib
  • + +
  • R-datasets
  • + +
  • protobuf-lib
  • + +
+
+ +
R-extras-devAll packages required to build the R-extras bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gpgme
  • + +
  • llvm
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-dbus-python
  • + +
  • devpkg-graphviz
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-pixman
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-ncurses
  • + +
  • vte-lib
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-JAGS
  • + +
  • devpkg-libusb
  • + +
  • devpkg-LibRaw
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-libcroco
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-gc
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-util-macros
  • + +
  • intltool
  • + +
  • zip
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-gdal
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • glibc-locale
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • less
  • + +
  • sassc
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-openblas
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-lz4
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libexif
  • + +
  • devpkg-pciutils
  • + +
  • devpkg-opus
  • + +
  • devpkg-glu
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-gst-plugins-base
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libssh
  • + +
  • devpkg-font-util
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • graphviz
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-directx-headers
  • + +
  • devpkg-opencl-headers
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • nasm
  • + +
  • gnupg
  • + +
  • devpkg-libXv
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-onig
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-flac
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-abseil-cpp
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-vala
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • devpkg-lzo
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-tpm2-tss
  • + +
  • clr-hardware-files
  • + +
  • devpkg-speex
  • + +
  • devpkg-subunit
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-snappy
  • + +
  • devpkg-c-ares
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-gmp
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-xcb-proto
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • yasm
  • + +
  • devpkg-gflags
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-cppunit
  • + +
  • strace
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-fftw
  • + +
  • devpkg-orc
  • + +
  • devpkg-clutter
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libogg
  • + +
  • devpkg-glew
  • + +
  • qt6-basic
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-llvm
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • devpkg-mpg123
  • + +
  • subversion
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-libspatialite
  • + +
  • devpkg-xz
  • + +
  • devpkg-xmlsec1
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-geos
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-dbus
  • + +
  • bison
  • + +
  • devpkg-libXft
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-expat
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libdrm
  • + +
  • unzip
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-file
  • + +
  • devpkg-libidn
  • + +
  • devpkg-ImageMagick
  • + +
  • devpkg-krb5
  • + +
  • devpkg-colord
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-graphite
  • + +
  • devpkg-tbb
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • ghostscript
  • + +
  • guile
  • + +
  • devpkg-hwloc
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • texlive
  • + +
  • devpkg-jsoncpp
  • + +
  • devpkg-shapelib
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-nlopt
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-guile
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-nspr
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • R-extras
  • + +
  • devpkg-iptables
  • + +
  • devpkg-mtdev
  • + +
  • devpkg-oneVPL
  • + +
  • libX11client
  • + +
  • devpkg-libclc
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-cups
  • + +
  • devpkg-pango
  • + +
  • modules
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-netcdf
  • + +
  • devpkg-nettle
  • + +
  • devpkg-librttopo
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • openblas
  • + +
  • devpkg-glib
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-popt
  • + +
  • flex
  • + +
  • devpkg-libgd
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-libzip
  • + +
  • wget
  • + +
  • devpkg-libavtp
  • + +
  • libxslt
  • + +
  • devpkg-graphene
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libzmq
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libnice
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-poppler
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-lua
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-tcl
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-check
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • devpkg-mesa
  • + +
  • devpkg-libgit2
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-kmod
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-fuse
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-libva
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-nss
  • + +
  • valgrind
  • + +
  • devpkg-proj
  • + +
  • rsync
  • + +
  • patchelf
  • + +
  • devpkg-sbc
  • + +
  • openmpi
  • + +
  • p11-kit
  • + +
  • net-tools
  • + +
  • which
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • binutils
  • + +
  • devpkg-eigen
  • + +
  • devpkg-wayland
  • + +
  • pypi-numpy
  • + +
  • devpkg-boost
  • + +
  • devpkg-duktape
  • + +
+
+ +
R-stanImprove the user experience with a common set of prebuilt R libraries (stan components).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • R-datasets
  • + +
  • python3-basic
  • + +
  • libnl
  • + +
  • R-basic
  • + +
+
+ +
rabbitmq-serverAn message-broker software
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • systemd
  • + +
  • ncurses-lib
  • + +
+
+ +
RawTherapeeA powerful cross-platform raw photo processing program.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • lensfun
  • + +
  • libstdcpp
  • + +
+
+ +
rcloneCommand-line program to synchronize files and directories to and from various network and cloud providers.
+ +
Status: + + Active + +
+ + +
rebootmgrPerforms scheduled or immediate system reboots after the kernel or critical OS components change.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
redis-nativeAdvanced key-value database.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • valkey
  • + +
+
+ +
RemminaRemote desktop that supports VNC, NX, XDMCP, SPICE, and SSH protocols.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • libssh-lib
  • + +
  • webkitgtk
  • + +
  • vte-lib
  • + +
  • lib-openssl
  • + +
+
+ +
resticBackup program that supports multiple cloud storage providers.
+ +
Status: + + Active + +
+ + +
rhythmboxMusic playback and management application.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
  • gobject-introspection
  • + +
  • gstreamer
  • + +
  • libpsl-lib
  • + +
  • libarchive
  • + +
+
+ +
ripgrepNo detailed summary available
+ +
Status: + + Active + +
+ + +
rlwrapAnother readline wrapper
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
+
+ +
rrLightweight tool for recording and replaying execution of applications (trees of processes and threads)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
rrdtoolRound Robin Database and graphing tool for time-series data.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • lib-imageformat
  • + +
  • findutils
  • + +
  • libX11client
  • + +
  • perl-basic
  • + +
+
+ +
rsyncA fast, versatile, remote (and local) file-copying tool
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • popt-lib
  • + +
  • lib-openssl
  • + +
+
+ +
rsyslogReliable system and kernel logging daemon.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gmp-lib
  • + +
  • curl
  • + +
  • lib-openssl
  • + +
  • nettle-lib
  • + +
+
+ +
ruby-basicRun Ruby language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • ncurses-lib
  • + +
  • gmp-lib
  • + +
  • devpkg-gmp
  • + +
  • p11-kit
  • + +
  • libstdcpp
  • + +
+
+ +
runtime-libs-boostBasic C++ / Boost runtime libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
rust-basicBuild and run Rust language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
  • git
  • + +
  • binutils
  • + +
  • p11-kit
  • + +
  • libstdcpp
  • + +
+
+ +
rxvt-unicodeA customizable terminal emulator forked from rxvt.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
s3fs-fuseMount Amazon S3 buckets using FUSE.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libxml2
  • + +
  • curl
  • + +
  • libstdcpp
  • + +
  • lib-openssl
  • + +
+
+ +
saltPortable, distributed, remote execution and configuration management system
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • PyYAML
  • + +
  • libunwind-lib
  • + +
  • yaml
  • + +
  • pypi-requests
  • + +
+
+ +
sambaSMB Fileserver and Active Directory (AD) Domain server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libstdcpp
  • + +
  • ncurses-lib
  • + +
  • openldap
  • + +
  • lib-samba
  • + +
  • libarchive
  • + +
+
+ +
samtoolsC library for high-throughput sequencing data formats
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
+
+ +
sasscWrapper tool for libsass.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
scm-serverRun a source code management server.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • nginx
  • + +
  • openssh-server
  • + +
  • git
  • + +
  • perl-basic
  • + +
+
+ +
sconsPython build system and replacement for make.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
scummvmAllows you to run certain classic graphical point-and-click adventure games.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • libstdcpp
  • + +
+
+ +
sddmSDDM display manager
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • polkit
  • + +
  • qt-basic
  • + +
  • fonts-basic
  • + +
+
+ +
seahorseGraphical interface for managing and using encryption keys.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • openldap
  • + +
+
+ +
seerNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
sg3_utilsUtilities for devices that use SCSI command sets
+ +
Status: + + Active + +
+ + +
shellsRun various shells.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • zsh
  • + +
  • ncurses-lib
  • + +
  • pcre-lib
  • + +
  • devpkg-bash-completion
  • + +
  • libstdcpp
  • + +
+
+ +
simplescreenrecorderA feature-rich screen recorder that supports X11 and OpenGL.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libX11client
  • + +
  • dav1d-lib
  • + +
  • qt-basic
  • + +
  • not-ffmpeg-lib
  • + +
  • libstdcpp
  • + +
+
+ +
smartcardTools and libraries to support use of SmartCards/PCSC
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • perl-basic
  • + +
  • gnupg
  • + +
  • lib-openssl
  • + +
+
+ +
smartmontoolsHard disk diagnostic utilities, containing smarctl and smartd, for monitoring storage.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • libstdcpp
  • + +
+
+ +
smemstatmemory usage monitoring tool taking into account shared memory
+ +
Status: + + Active + +
+ + +
snapshotGnome camera app
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • gstreamer
  • + +
+
+ +
socatMultipurpose relay
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
softflowdNetwork traffic analyser capable of Cisco NetFlow data export
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libpcap-lib
  • + +
  • libnl
  • + +
+
+ +
software-testingSoftware to run or create test suites.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • python-testing
  • + +
  • ncurses-lib
  • + +
  • Sphinx
  • + +
  • perl-basic
  • + +
  • devpkg-cmocka
  • + +
+
+ +
SolaarDevice manager for Logitech's Unifying Receiver peripherals
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • icu4c-lib
  • + +
  • dbus-lib
  • + +
  • PyYAML
  • + +
  • libX11client
  • + +
  • pypi-six
  • + +
  • gobject-introspection
  • + +
  • nettle-lib
  • + +
  • libxml2
  • + +
  • gdk-pixbuf
  • + +
  • yaml
  • + +
  • harfbuzz-lib
  • + +
+
+ +
Solaar-guiGUI for Device manager for Logitech's Unifying Receiver peripherals
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • Solaar
  • + +
+
+ +
soxAudio file format and effects library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • pulseaudio
  • + +
  • libstdcpp
  • + +
+
+ +
spectacleKDE screenshot capture utility.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libX11client
  • + +
  • desktop-kde-libs
  • + +
  • opencv-python
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
SphinxPython-based documentation tool supporting multiple outputs and programming languages.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • Babel
  • + +
  • pypi-requests
  • + +
+
+ +
spice-gtkSPICE Client GLib 2.0 library.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • clr-hardware-files
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • lib-openssl
  • + +
+
+ +
spice-vdagentNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
spyder-ideIntegrated development environment for scientific programming
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
sqliteSQL database engine with file format that is stable, cross-platform, and backwards compatible.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
  • libstdcpp
  • + +
+
+ +
squidFull-featured Web proxy cache server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • openldap
  • + +
  • libxml2
  • + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
+
+ +
sshuttleFull-featured" VPN over an SSH tunnel
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • pypi-requests
  • + +
+
+ +
ssocrOptical character recognition (OCR) for 7-segment displays.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
stacerUbuntu System Optimizer
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
stellariumReal-time photo-realistic sky generator.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • libevent-lib
  • + +
  • qt-basic
  • + +
  • dav1d-lib
  • + +
+
+ +
storage-clusterRun a storage server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • parted
  • + +
  • curl
  • + +
  • systemd
  • + +
  • xfsprogs
  • + +
  • nfs-utils
  • + +
  • dbus-lib
  • + +
  • libxml2
  • + +
  • libnl
  • + +
+
+ +
storage-utilsRun disk and filesystem management functions.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • parted
  • + +
  • lib-imageformat
  • + +
  • xfsprogs
  • + +
  • nfs-utils
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • dosfstools
  • + +
  • gobject-introspection
  • + +
  • samba
  • + +
  • btrfs-progs
  • + +
  • smartmontools
  • + +
  • libxml2
  • + +
  • gdk-pixbuf
  • + +
  • pmdk
  • + +
  • harfbuzz-lib
  • + +
  • libnl
  • + +
+
+ +
storage-utils-devAll packages required to build the storage-utils bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • nasm
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-libXv
  • + +
  • devpkg-gstreamer
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • devpkg-gpgme
  • + +
  • devpkg-libXft
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-libtheora
  • + +
  • llvm
  • + +
  • devpkg-pcre2
  • + +
  • pypi-cython
  • + +
  • devpkg-tevent
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-freetype
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-cJSON
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-dbus-python
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-jansson
  • + +
  • devpkg-expat
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-userspace-rcu
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-libvdpau
  • + +
  • libxml2
  • + +
  • devpkg-libsodium
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-pixman
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-pycairo
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-flac
  • + +
  • devpkg-libusb
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-file
  • + +
  • devpkg-libavtp
  • + +
  • devpkg-libidn
  • + +
  • devpkg-vala
  • + +
  • os-core-dev
  • + +
  • devpkg-graphene
  • + +
  • libxslt
  • + +
  • devpkg-zstd
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-krb5
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-tdb
  • + +
  • devpkg-lzo
  • + +
  • devpkg-colord
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-libnice
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-poppler
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-graphite
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-readline
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-lua
  • + +
  • devpkg-tpm2-tss
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-speex
  • + +
  • devpkg-open-isns
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • devpkg-samba
  • + +
  • devpkg-ntfs-3g
  • + +
  • devpkg-util-macros
  • + +
  • ghostscript
  • + +
  • devpkg-SDL2_image
  • + +
  • intltool
  • + +
  • guile
  • + +
  • devpkg-tcl
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-snappy
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-ldb
  • + +
  • doxygen
  • + +
  • devpkg-openexr
  • + +
  • devpkg-fribidi
  • + +
  • devpkg-polkit
  • + +
  • devpkg-libnsl
  • + +
  • file
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-libnl
  • + +
  • devpkg-liburing
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • devpkg-check
  • + +
  • devpkg-gmp
  • + +
  • make
  • + +
  • devpkg-mesa
  • + +
  • devpkg-multipath-tools
  • + +
  • glibc-locale
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • sassc
  • + +
  • yasm
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-gflags
  • + +
  • devpkg-open-iscsi
  • + +
  • devpkg-kmod
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-md4c
  • + +
  • devpkg-rdma-core
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libdatrie
  • + +
  • gdk-pixbuf
  • + +
  • storage-utils
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-fftw
  • + +
  • devpkg-libva
  • + +
  • devpkg-orc
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-clutter
  • + +
  • devpkg-nss
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-lz4
  • + +
  • devpkg-qtbase
  • + +
  • gnome-base-libs
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-fontconfig
  • + +
  • valgrind
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libexif
  • + +
  • devpkg-libogg
  • + +
  • patchelf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • rsync
  • + +
  • devpkg-glew
  • + +
  • devpkg-sbc
  • + +
  • devpkg-valgrind
  • + +
  • devpkg-opus
  • + +
  • qt6-basic
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-librsvg
  • + +
  • p11-kit
  • + +
  • devpkg-glu
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-audit
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-gst-plugins-base
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-iptables
  • + +
  • devpkg-llvm
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • devpkg-mtdev
  • + +
  • net-tools
  • + +
  • which
  • + +
  • devpkg-SVT-AV1
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-oneVPL
  • + +
  • xz
  • + +
  • pypi-requests
  • + +
  • devpkg-mpg123
  • + +
  • aspell
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • libX11client
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-libclc
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-libkcapi
  • + +
  • graphviz
  • + +
  • libpcap-lib
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-wayland
  • + +
  • devpkg-cups
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-pango
  • + +
  • devpkg-acl
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-directx-headers
  • + +
  • devpkg-xz
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-boost
  • + +
  • devpkg-nettle
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-duktape
  • + +
+
+ +
straceSystem call diagnostic, instructional, and debugging tool.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libunwind-lib
  • + +
+
+ +
stream-serverRun an audio or visual streaming server.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • gstreamer
  • + +
  • libstdcpp
  • + +
+
+ +
stress-ngstress-ng will stress test a computer system in various selectable ways
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
su-execSimply execute a program with different privileges.
+ +
Status: + + Active + +
+ + +
subversionVersion Control System.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • openldap
  • + +
  • lz4
  • + +
  • sqlite
  • + +
  • perl-basic
  • + +
+
+ +
sudoProvide limited super user privileges to specific users.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
supertuxkartKart racing game featuring Tux and his friends.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • libstdcpp
  • + +
  • lib-openssl
  • + +
+
+ +
suricataNetwork threat detection engine.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • pcre-lib
  • + +
  • lz4
  • + +
  • Sphinx
  • + +
  • libpcap-lib
  • + +
  • yaml
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
SVT-AV1AV1-compliant encoder library core.
+ +
Status: + + Active + +
+ + +
SVT-HEVCSVT (Scalable Video Technology) for HEVC encoder library
+ +
Status: + + Active + +
+ + +
swayi3-compatible Wayland compositor
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • wayland-server
  • + +
  • libX11client
  • + +
  • xdg-desktop-portal
  • + +
+
+ +
sxivMinimal image viewer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
syncthingNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
+
+ +
syndicationRSS/Atom parser library.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • nettle-lib
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
synergyKeyboard and mouse sharing across networks.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libX11client
  • + +
  • postgresql
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
sysadmin-basicRun common utilities, useful for managing a system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
  • pcre-lib
  • + +
  • gzip
  • + +
  • minicom
  • + +
  • zstd
  • + +
  • protobuf-lib
  • + +
  • file
  • + +
  • p11-kit
  • + +
  • libglib
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • powertop
  • + +
  • glibc-locale
  • + +
  • which
  • + +
  • tmux
  • + +
  • kbd
  • + +
  • popt-lib
  • + +
  • less
  • + +
  • socat
  • + +
  • diffutils
  • + +
  • icu4c-lib
  • + +
  • libpcap-lib
  • + +
  • sudo
  • + +
  • iproute2
  • + +
  • tree
  • + +
  • htop
  • + +
  • iperf
  • + +
  • procps-ng
  • + +
  • man-pages
  • + +
  • numactl
  • + +
  • lsof
  • + +
  • clr-hardware-files
  • + +
  • lib-imageformat
  • + +
  • accel-config
  • + +
  • acpica-unix2
  • + +
  • findutils
  • + +
  • parallel
  • + +
  • strace
  • + +
  • kernel-install
  • + +
  • unzip
  • + +
+
+ +
sysadmin-basic-devAll packages required to build the sysadmin-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-curl
  • + +
  • gnupg
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-onig
  • + +
  • bison
  • + +
  • devpkg-glib
  • + +
  • llvm
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-popt
  • + +
  • devpkg-openssl
  • + +
  • flex
  • + +
  • devpkg-mpfr
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-expat
  • + +
  • devpkg-libpng
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libffi
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-utf8proc
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-ncurses
  • + +
  • vte-lib
  • + +
  • devpkg-libcgroup
  • + +
  • unzip
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-libusb
  • + +
  • devpkg-libpwquality
  • + +
  • gzip
  • + +
  • devpkg-json-c
  • + +
  • dev-utils
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-abseil-cpp
  • + +
  • devpkg-file
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libidn
  • + +
  • os-core-dev
  • + +
  • libxslt
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-zlib
  • + +
  • devpkg-krb5
  • + +
  • desktop-kde-libs
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-lzo
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-libcbor
  • + +
  • devpkg-tpm2-tss
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • intltool
  • + +
  • guile
  • + +
  • devpkg-hwloc
  • + +
  • gdb
  • + +
  • git
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • file
  • + +
  • devpkg-efivar
  • + +
  • devpkg-btrfs-progs
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-ledmon
  • + +
  • devpkg-libnl
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • devpkg-check
  • + +
  • devpkg-gmp
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • devpkg-valgrind
  • + +
  • glibc-locale
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-slang
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libpcap
  • + +
  • less
  • + +
  • devpkg-libtirpc
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • yasm
  • + +
  • devpkg-kmod
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-rdma-core
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-dpdk
  • + +
  • devpkg-fuse
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • strace
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-lz4
  • + +
  • gnome-base-libs
  • + +
  • valgrind
  • + +
  • devpkg-libbsd
  • + +
  • patchelf
  • + +
  • devpkg-pciutils
  • + +
  • devpkg-libevent
  • + +
  • p11-kit
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-iptables
  • + +
  • net-tools
  • + +
  • which
  • + +
  • xz
  • + +
  • binutils
  • + +
  • devpkg-libtasn1
  • + +
  • aspell
  • + +
  • devpkg-libbpf
  • + +
  • libX11client
  • + +
  • graphviz
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-xz
  • + +
  • pypi-numpy
  • + +
  • devpkg-boost
  • + +
  • devpkg-nettle
  • + +
  • sysadmin-basic
  • + +
  • devpkg-libX11
  • + +
  • devpkg-icu4c
  • + +
+
+ +
sysadmin-hostmgmtUtilities and Services for managing large-scale clusters of networked hosts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • ipmitool
  • + +
  • openssh-client
  • + +
  • ansible
  • + +
  • git
  • + +
  • pxe-server
  • + +
+
+ +
sysadmin-remoteEnable the host to be managed remotely by configuration management tools.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • python3-basic
  • + +
  • icu4c-lib
  • + +
  • qt-core
  • + +
  • sudo
  • + +
  • openssh-server
  • + +
  • libxml2
  • + +
  • cockpit
  • + +
  • lib-openssl
  • + +
  • pypi-pynacl
  • + +
  • pypi-requests
  • + +
+
+ +
syslinuxKernel loader which uses a FAT, ext2/3 or iso9660 filesystem or a PXE network
+ +
Status: + + Active + +
+ + +
sysprofKernel based performance profiler
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • libunwind-lib
  • + +
  • libstdcpp
  • + +
+
+ +
sysstatUtilities for monitoring system performance and usage activity.
+ +
Status: + + Active + +
+ + +
systemdBasic systemd bundle
+ +
Status: + + Active + +
+ + +
systemd-networkd-autostartEnables systemd-networkd as the default network manager
+ +
Status: + + Active + +
+ + +
tcl-basicRun Tk/Tcl language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
telemetricsclient and server solution used to collect data from running Clear Linux OS systems.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • findutils
  • + +
  • curl
  • + +
  • lib-openssl
  • + +
+
+ +
tesseractAn OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libarchive
  • + +
  • curl
  • + +
  • libstdcpp
  • + +
+
+ +
testdiskRecover various partition failures and deleted files
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
texinfoUnix-style documentation system for on-line information and printed output.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • systemd
  • + +
  • ncurses-lib
  • + +
+
+ +
texliveMajor TeX-related typesetting programs, macro packages, and fonts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • libXpm-lib
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
+
+ +
texmakerCross-platfrom LaTeX editor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
tgtThe SCSI target daemon and utility programs
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
the_silver_searcherA code-searching tool similar to ack, but faster.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pcre-lib
  • + +
+
+ +
thermal_daemonThermal management.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libxml2
  • + +
  • libstdcpp
  • + +
+
+ +
thunderbirdEmail and news client with RSS, chat, and integrated SPM filter support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • zstd
  • + +
+
+ +
tigervncA TigerVNC remote display system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • numactl
  • + +
  • libX11client
  • + +
  • libssh-lib
  • + +
  • libunwind-lib
  • + +
  • dav1d-lib
  • + +
  • perl-basic
  • + +
  • not-ffmpeg-lib
  • + +
  • libstdcpp
  • + +
+
+ +
time-server-basicRun an network time protocol (NTP) server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
+
+ +
TLPAdvanced Power Management for Linux
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
tmuxTerminal multiplexer (similar to screen).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • ncurses-lib
  • + +
  • libevent-lib
  • + +
+
+ +
totemMovie player for the GNOME desktop based on GStreamer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • libarchive
  • + +
+
+ +
tracker-minersCollection of data extractors for Tracker/Nepomuk
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • icu4c-lib
  • + +
  • libevent-lib
  • + +
  • gstreamer
  • + +
  • libpsl-lib
  • + +
+
+ +
transcoding-supportA set of utilities and libraries supporting transcoding
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • v4l-utils
  • + +
  • pulseaudio
  • + +
  • libunwind-lib
  • + +
  • qt-basic
  • + +
  • libpsl-lib
  • + +
  • openblas
  • + +
+
+ +
treeNo detailed summary available
+ +
Status: + + Active + +
+ + +
trurlNo detailed summary available
+ +
Status: + + Active + +
+ + +
tzdataTimezone database.
+ +
Status: + + Active + +
+ + +
ugetGTK+ download manager featuring download classification and HTML import.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • curl
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • lib-openssl
  • + +
+
+ +
unbundleRecursively resolves a package list from a bundle definition.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
unisonBi-directional file synchronization tool.
+ +
Status: + + Active + +
+ + +
unzipList, test, or extract files from a ZIP archive.
+ +
Status: + + Active + +
+ + +
user-basicMeta bundle capturing most console user work flows.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • shells
  • + +
  • editors
  • + +
  • openssh-server
  • + +
  • dev-utils
  • + +
  • network-basic
  • + +
  • os-core-update
  • + +
  • storage-utils
  • + +
  • sysadmin-basic
  • + +
  • kvm-host
  • + +
  • mail-utils
  • + +
+
+ +
user-basic-devAll packages required to build the user-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • editors-dev
  • + +
  • devpkg-qttools
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-hunspell
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-curl
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gpgme
  • + +
  • llvm
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-intel-gmmlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-dbus-python
  • + +
  • dosfstools
  • + +
  • devpkg-vte
  • + +
  • devpkg-jansson
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-libqrtr-glib
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-bash-completion
  • + +
  • devpkg-pixman
  • + +
  • devpkg-libsodium
  • + +
  • devpkg-protobuf
  • + +
  • devpkg-gi-docgen
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-gtk4
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-libusb
  • + +
  • devpkg-libpwquality
  • + +
  • gobject-introspection
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libuv
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-ModemManager
  • + +
  • devpkg-qatlib
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-pkg-config
  • + +
  • devpkg-Vulkan-Loader
  • + +
  • devpkg-qtwayland
  • + +
  • devpkg-gmime
  • + +
  • devpkg-libXt
  • + +
  • devpkg-attr
  • + +
  • docbook-utils
  • + +
  • devpkg-gc
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-mozjs115
  • + +
  • devpkg-open-isns
  • + +
  • devpkg-telepathy-glib
  • + +
  • devpkg-libsass
  • + +
  • devpkg-libass
  • + +
  • devpkg-libiscsi
  • + +
  • devpkg-xmlb
  • + +
  • devpkg-util-macros
  • + +
  • intltool
  • + +
  • devpkg-libatomic_ops
  • + +
  • devpkg-libwacom
  • + +
  • devpkg-qt6tools
  • + +
  • devpkg-gdal
  • + +
  • devpkg-fribidi
  • + +
  • file
  • + +
  • devpkg-liburing
  • + +
  • devpkg-valgrind
  • + +
  • devpkg-gcr
  • + +
  • patch
  • + +
  • tzdata
  • + +
  • glibc-locale
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpcap
  • + +
  • less
  • + +
  • devpkg-libadwaita
  • + +
  • sassc
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-compat-gcr-soname1
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-lz4
  • + +
  • gpgme
  • + +
  • devpkg-Judy
  • + +
  • devpkg-qrencode
  • + +
  • devpkg-libinput
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-gsl
  • + +
  • Sphinx
  • + +
  • devpkg-libbsd
  • + +
  • devpkg-libexif
  • + +
  • devpkg-pciutils
  • + +
  • devpkg-opus
  • + +
  • devpkg-ell
  • + +
  • devpkg-glu
  • + +
  • devpkg-jemalloc
  • + +
  • devpkg-gst-plugins-base
  • + +
  • xz
  • + +
  • devpkg-SVT-AV1
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libssh
  • + +
  • devpkg-font-util
  • + +
  • devpkg-appstream
  • + +
  • lynx
  • + +
  • devpkg-libbpf
  • + +
  • devpkg-libglvnd
  • + +
  • graphviz
  • + +
  • devpkg-mediasdk
  • + +
  • dev-utils-dev
  • + +
  • devpkg-directx-headers
  • + +
  • fonttools
  • + +
  • devpkg-libqmi
  • + +
  • devpkg-libavif
  • + +
  • devpkg-opencl-headers
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-gnome-bluetooth
  • + +
  • nasm
  • + +
  • devpkg-qtsvg
  • + +
  • bc
  • + +
  • devpkg-libtraceevent
  • + +
  • gnupg
  • + +
  • devpkg-libXv
  • + +
  • devpkg-cogl
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-nftables
  • + +
  • devpkg-onig
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-tevent
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libgdata
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-alsa-lib
  • + +
  • iptables
  • + +
  • devpkg-libspectre
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-libnetfilter_cttimeout
  • + +
  • devpkg-mpfr
  • + +
  • devpkg-newt
  • + +
  • mail-utils-dev
  • + +
  • devpkg-gsound
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-confuse
  • + +
  • devpkg-spice
  • + +
  • devpkg-libndp
  • + +
  • devpkg-qtserialport
  • + +
  • libxml2
  • + +
  • user-basic
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-flac
  • + +
  • devpkg-NetworkManager
  • + +
  • gzip
  • + +
  • devpkg-libedit
  • + +
  • dev-utils
  • + +
  • devpkg-libical
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-abseil-cpp
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-vala
  • + +
  • devpkg-zstd
  • + +
  • os-core-dev
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-tdb
  • + +
  • devpkg-lzo
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-libcbor
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-bluez
  • + +
  • devpkg-libdaemon
  • + +
  • devpkg-tpm2-tss
  • + +
  • devpkg-speex
  • + +
  • devpkg-subunit
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-snappy
  • + +
  • devpkg-c-ares
  • + +
  • devpkg-xwayland
  • + +
  • gdb
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-Vulkan-Headers
  • + +
  • git
  • + +
  • devpkg-qtconnectivity
  • + +
  • openvswitch
  • + +
  • devpkg-compat-babeltrace-one
  • + +
  • devpkg-libnl
  • + +
  • devpkg-parted
  • + +
  • devpkg-gmp
  • + +
  • devpkg-qtsensors
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-mobile-broadband-provider-info
  • + +
  • pandoc
  • + +
  • diffutils
  • + +
  • devpkg-fmt
  • + +
  • yasm
  • + +
  • devpkg-gflags
  • + +
  • devpkg-md4c
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-cppunit
  • + +
  • devpkg-libnotify
  • + +
  • strace
  • + +
  • gdk-pixbuf
  • + +
  • devpkg-evolution-data-server
  • + +
  • devpkg-fftw
  • + +
  • devpkg-orc
  • + +
  • devpkg-pkcs11-helper
  • + +
  • devpkg-clutter
  • + +
  • devpkg-mutter
  • + +
  • devpkg-libXcursor
  • + +
  • devpkg-libogg
  • + +
  • devpkg-glew
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-libevent
  • + +
  • devpkg-Linux-PAM
  • + +
  • devpkg-audit
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-gnome-autoar
  • + +
  • devpkg-llvm
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-taglib
  • + +
  • devpkg-libnetfilter_cthelper
  • + +
  • devpkg-mpg123
  • + +
  • subversion
  • + +
  • devpkg-qtwebsockets
  • + +
  • devpkg-compat-libsoup-soname-24
  • + +
  • devpkg-libkcapi
  • + +
  • devpkg-dconf
  • + +
  • iproute2
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-acl
  • + +
  • devpkg-xz
  • + +
  • gjs
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libpsl
  • + +
  • bison
  • + +
  • devpkg-libXft
  • + +
  • devpkg-rtmpdump
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libtracefs
  • + +
  • devpkg-pmdk
  • + +
  • devpkg-expat
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-userspace-rcu
  • + +
  • devpkg-glusterfs
  • + +
  • devpkg-dtc
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libdrm
  • + +
  • unzip
  • + +
  • devpkg-tk
  • + +
  • devpkg-qt6base
  • + +
  • network-basic-dev
  • + +
  • devpkg-SPIRV-Tools
  • + +
  • devpkg-file
  • + +
  • os-core-update-dev
  • + +
  • devpkg-libidn
  • + +
  • devpkg-krb5
  • + +
  • devpkg-colord
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-graphite
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-libvpx
  • + +
  • nfs-utils
  • + +
  • devpkg-pulseaudio
  • + +
  • pygobject
  • + +
  • devpkg-babeltrace
  • + +
  • devpkg-source-highlight
  • + +
  • ghostscript
  • + +
  • guile
  • + +
  • devpkg-hwloc
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-cairo
  • + +
  • devpkg-ldb
  • + +
  • devpkg-openexr
  • + +
  • doxygen
  • + +
  • devpkg-polkit
  • + +
  • devpkg-btrfs-progs
  • + +
  • texlive
  • + +
  • sysadmin-basic-dev
  • + +
  • devpkg-spice-protocol
  • + +
  • devpkg-jsoncpp
  • + +
  • devpkg-openjpeg
  • + +
  • devpkg-rdma-core
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-qtxmlpatterns
  • + +
  • devpkg-gnome-settings-daemon
  • + +
  • devpkg-libfido2
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-guile
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-nspr
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-SDL
  • + +
  • devpkg-libXres
  • + +
  • devpkg-iptables
  • + +
  • devpkg-mtdev
  • + +
  • devpkg-ipp-crypto
  • + +
  • devpkg-oneVPL
  • + +
  • devpkg-dav1d
  • + +
  • devpkg-libclc
  • + +
  • devpkg-tokyocabinet
  • + +
  • devpkg-libnetfilter_queue
  • + +
  • devpkg-openal-soft
  • + +
  • devpkg-gnome-control-center
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-cups
  • + +
  • devpkg-pango
  • + +
  • devpkg-lmdb
  • + +
  • devpkg-wavpack
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-nettle
  • + +
  • kvm-host-dev
  • + +
  • devpkg-libslirp
  • + +
  • devpkg-SPIRV-Headers
  • + +
  • openblas
  • + +
  • devpkg-libunibreak
  • + +
  • devpkg-glib
  • + +
  • pypi-cython
  • + +
  • devpkg-pcre2
  • + +
  • plzip
  • + +
  • devpkg-capstone
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-CUnit
  • + +
  • devpkg-Imath
  • + +
  • devpkg-gnome-desktop
  • + +
  • devpkg-cJSON
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-popt
  • + +
  • zenity
  • + +
  • flex
  • + +
  • devpkg-libgd
  • + +
  • texinfo
  • + +
  • devpkg-libcap
  • + +
  • devpkg-numactl
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-libpng
  • + +
  • devpkg-mariadb
  • + +
  • storage-utils-dev
  • + +
  • devpkg-libffi
  • + +
  • devpkg-protobuf-c
  • + +
  • devpkg-liboauth
  • + +
  • devpkg-libvdpau
  • + +
  • devpkg-utf8proc
  • + +
  • devpkg-nfs-utils
  • + +
  • devpkg-pycairo
  • + +
  • devpkg-qtmultimedia
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-not-ffmpeg
  • + +
  • devpkg-bsdiff
  • + +
  • wget
  • + +
  • devpkg-libavtp
  • + +
  • libxslt
  • + +
  • devpkg-graphene
  • + +
  • devpkg-xapian-core
  • + +
  • devpkg-qtcharts
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmbim
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-keyutils
  • + +
  • devpkg-libnice
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-lksctp-tools
  • + +
  • devpkg-virglrenderer
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-cmocka
  • + +
  • devpkg-poppler
  • + +
  • devpkg-libcacard
  • + +
  • devpkg-libproxy
  • + +
  • devpkg-woff2
  • + +
  • devpkg-libeconf
  • + +
  • devpkg-readline
  • + +
  • devpkg-avahi
  • + +
  • devpkg-lua
  • + +
  • devpkg-googletest
  • + +
  • procps-ng
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gtksourceview
  • + +
  • devpkg-libdisplay-info
  • + +
  • devpkg-libvirt
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-pygobject
  • + +
  • devpkg-usbredir
  • + +
  • devpkg-tcl
  • + +
  • devpkg-speexdsp
  • + +
  • devpkg-libnsl
  • + +
  • devpkg-rest
  • + +
  • devpkg-webkitgtk
  • + +
  • devpkg-efivar
  • + +
  • devpkg-libgweather
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libsndfile
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-check
  • + +
  • make
  • + +
  • devpkg-systemd
  • + +
  • devpkg-mesa
  • + +
  • devpkg-stoken
  • + +
  • devpkg-slang
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-inih
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-kmod
  • + +
  • devpkg-yajl
  • + +
  • devpkg-pcre
  • + +
  • openssl
  • + +
  • devpkg-dpdk
  • + +
  • devpkg-fuse
  • + +
  • numactl
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-libXmu
  • + +
  • acpica-unix2
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-libva
  • + +
  • devpkg-SVT-HEVC
  • + +
  • devpkg-gjs
  • + +
  • devpkg-nss
  • + +
  • valgrind
  • + +
  • rsync
  • + +
  • patchelf
  • + +
  • devpkg-sbc
  • + +
  • p11-kit
  • + +
  • devpkg-pcsc-lite
  • + +
  • net-tools
  • + +
  • which
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • binutils
  • + +
  • devpkg-eigen
  • + +
  • devpkg-upower
  • + +
  • aspell
  • + +
  • devpkg-libmaxminddb
  • + +
  • devpkg-jack2
  • + +
  • devpkg-wayland
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-boost
  • + +
  • fontforge
  • + +
  • devpkg-assimp
  • + +
  • devpkg-duktape
  • + +
+
+ +
uwsgiThe uWSGI server
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • systemd
  • + +
+
+ +
UxPlayAirPlay-Mirror and AirPlay-Audio server
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • libevent-lib
  • + +
  • gstreamer
  • + +
  • libstdcpp
  • + +
+
+ +
v4l-utilsUserspace tools and conversion library for Video 4 Linux.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
+
+ +
valgrindSuite of tools for debugging and finding memory-management problems in programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
+
+ +
valkeyMinimalistic C client library for Redis.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • systemd
  • + +
+
+ +
vifmA filemanager for the console with VIM like keybindings and control.
+ +
Status: + + Active + +
+ + +
vimVi Improved, a configurable, improved version of the vi text editor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • ncurses-lib
  • + +
  • libxml2
  • + +
  • perl-basic
  • + +
  • yaml
  • + +
+
+ +
vim-minimalA completely bare version of Vim.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ncurses-lib
  • + +
+
+ +
vinagreA VNC client for GNOME desktop.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • icu4c-lib
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • vte-lib
  • + +
  • lib-openssl
  • + +
+
+ +
virt-managerVirtualization Management tool (CLI Only)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • clr-hardware-files
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
  • desktop-gnomelibs
  • + +
  • pypi-requests
  • + +
  • kvm-host
  • + +
  • libarchive
  • + +
+
+ +
virt-manager-guiEnable controlling virt-manager through a GUI.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gtk-vnc
  • + +
  • virt-manager
  • + +
  • libX11client
  • + +
  • virt-viewer
  • + +
  • spice-gtk
  • + +
+
+ +
virt-viewerVirtual Machine Viewer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • icu4c-lib
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • libssh-lib
  • + +
  • libpcap-lib
  • + +
  • gstreamer
  • + +
  • vte-lib
  • + +
  • lib-openssl
  • + +
  • numactl
  • + +
  • libnl
  • + +
+
+ +
vlcMultimedia player and streamer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • libarchive
  • + +
  • libXpm-lib
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • dav1d-lib
  • + +
  • qt-basic
  • + +
  • lib-samba
  • + +
  • protobuf-lib
  • + +
  • not-ffmpeg-lib
  • + +
  • libstdcpp
  • + +
+
+ +
vnc-serverEnable the host to be a VNC desktop server.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • desktop
  • + +
  • tigervnc
  • + +
  • openssh-server
  • + +
+
+ +
vte-libNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • openldap
  • + +
  • ncurses-lib
  • + +
  • icu4c-lib
  • + +
  • gmp-lib
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • nettle-lib
  • + +
  • libxml2
  • + +
  • gstreamer
  • + +
  • gdk-pixbuf
  • + +
  • harfbuzz-lib
  • + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
+
+ +
wayland-serverProvide a functional graphical server based on Wayland
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
waypipeNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • icu4c-lib
  • + +
  • gmp-lib
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • nettle-lib
  • + +
  • libxml2
  • + +
  • harfbuzz-lib
  • + +
  • not-ffmpeg-lib
  • + +
  • dav1d-lib
  • + +
+
+ +
webkitgtkLegacy Web content engine for GTK+ 3.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • icu4c-lib
  • + +
  • libX11client
  • + +
  • gstreamer
  • + +
  • libpsl-lib
  • + +
  • libstdcpp
  • + +
+
+ +
weechatInternet Relay Chat (IRC) client, extensible with plugins and scripts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • curl
  • + +
  • gmp-lib
  • + +
  • lib-openssl
  • + +
  • aspell
  • + +
  • libstdcpp
  • + +
+
+ +
weston-extrasHeader files for Weston plugin development.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
wgetNetwork utility to retrieve content from web servers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • icu4c-lib
  • + +
  • findutils
  • + +
  • lib-openssl
  • + +
  • openssl
  • + +
  • libpsl-lib
  • + +
  • libstdcpp
  • + +
+
+ +
whichUtility to show full path of commands and locate executables.
+ +
Status: + + Active + +
+ + +
wineRun PE32 executables with Linux.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • openldap
  • + +
  • libXpm-lib
  • + +
  • os-core-legacy
  • + +
  • pcre-lib
  • + +
  • lib-opengl
  • + +
  • libX11client
  • + +
  • libunwind-lib
  • + +
  • pulseaudio
  • + +
  • gphoto
  • + +
  • lib-samba
  • + +
  • perl-basic
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
wine-devRun PE32 executables with Linux.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • openldap
  • + +
  • libXpm-lib
  • + +
  • os-core-legacy
  • + +
  • pcre-lib
  • + +
  • lib-opengl
  • + +
  • libX11client
  • + +
  • wine
  • + +
  • libunwind-lib
  • + +
  • pulseaudio
  • + +
  • gphoto
  • + +
  • lib-samba
  • + +
  • perl-basic
  • + +
  • libnl
  • + +
  • libstdcpp
  • + +
+
+ +
wiresharkNetwork packet capture and traffic analysis tool.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • lz4
  • + +
  • libssh-lib
  • + +
  • libpcap-lib
  • + +
  • qt-basic
  • + +
  • postgresql-lib
  • + +
  • libnl
  • + +
+
+ +
wpa_supplicantUtility providing key negotiation for WPA wireless networks.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • dbus-lib
  • + +
  • linux-firmware-wifi
  • + +
  • libnl
  • + +
  • lib-openssl
  • + +
+
+ +
wsluA collection of utilities for the Linux Subsystem for Windows
+ +
Status: + + Active + +
+ + +
x11-serverProvide a functional X11 Server (Xorg or wayland-based).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • wayland-server
  • + +
+
+ +
x11-toolsTools useful when running under X11.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • libX11client
  • + +
  • xterm
  • + +
+
+ +
x11vncA virtual network computing (VNC) server for real X displays.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • lib-openssl
  • + +
+
+ +
x86-simd-sortNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
xdg-desktop-portalDesktop integration portal
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gdk-pixbuf
  • + +
  • lib-opengl
  • + +
  • audio-pipewire
  • + +
+
+ +
xdg-desktop-portal-gnomeNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • gnome-base-libs
  • + +
+
+ +
xfce4-desktopRun the Xfce GUI desktop environment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mpfr-lib
  • + +
  • libarchive
  • + +
  • gnome-base-libs
  • + +
  • libXpm-lib
  • + +
  • fonts-basic
  • + +
  • libX11client
  • + +
  • pulseaudio
  • + +
  • gdk-pixbuf
  • + +
  • which
  • + +
  • webkitgtk
  • + +
  • gphoto
  • + +
  • vte-lib
  • + +
  • lib-openssl
  • + +
  • lib-samba
  • + +
  • libstdcpp
  • + +
+
+ +
xfsprogsUtilities to manage the XFS filesystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • icu4c-lib
  • + +
  • libstdcpp
  • + +
+
+ +
xorrisoTools for copying data to and from Rock Ridge ISO 9660 filesystems.
+ +
Status: + + Active + +
+ + +
xpraruns X clients, typically on a remote host, and directs their display to the local machine without losing any state.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • lz4
  • + +
  • libX11client
  • + +
  • not-ffmpeg-lib
  • + +
  • dav1d-lib
  • + +
+
+ +
xrdpAn open source Remote Desktop Protocol (RDP) server
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • xfce4-desktop
  • + +
+
+ +
xscreensaverA minimal installation of xscreensaver.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • perl-basic
  • + +
+
+ +
xscreensaver-extrasAll the xscreensaver extras.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
  • xscreensaver
  • + +
+
+ +
xss-lockSession locker triggered by systemd events or DPMS
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
xtermThe basic X.Org terminal program desktop launcher.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • libXpm-lib
  • + +
+
+ +
xzCommand-line tools for XZ and LZMA compressed files.
+ +
Status: + + Active + +
+ + +
xz-lzma-i-accept-the-risksliblzma support for temporary use
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
yakuakeQuake-style terminal emulator based on KDE Konsole technology.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • libX11client
  • + +
  • kde-frameworks5
  • + +
  • qt-basic
  • + +
  • libstdcpp
  • + +
+
+ +
yamlLibrary to parse and emit YAML
+ +
Status: + + Active + +
+ + +
yasmModular assembler with multiple syntaxes support.
+ +
Status: + + Active + +
+ + +
yqCommand-line YAML/XML processor - jq wrapper for YAML/XML documents
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • PyYAML
  • + +
  • python3-basic
  • + +
  • yaml
  • + +
+
+ +
zabbixNetwork and application monitoring tool.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libxml2
  • + +
  • perl-basic
  • + +
  • sysadmin-basic
  • + +
  • lib-openssl
  • + +
+
+ +
zabbix-agentNetwork and application monitoring tool - agent only.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pcre-lib
  • + +
+
+ +
zathuraMinimalistic document viewer
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
  • lib-poppler
  • + +
+
+ +
zenityDisplay graphical dialog boxes from shell scripts
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
  • webkitgtk
  • + +
  • perl-basic
  • + +
+
+ +
zipCompressor/archiver for .zip files.
+ +
Status: + + Active + +
+ + +
zncAdvanced, modular IRC network bouncer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • icu4c-lib
  • + +
  • lib-openssl
  • + +
+
+ +
zshZ Shell, an interactive shell and powerful shell script command processor.
+ +
Status: + + Active + +
+ + +
zstdRealtime losless data compression/decompression tool.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lz4
  • + +
+
+ +
+
+ + + +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/compatible-hardware.html b/reference/compatible-hardware.html new file mode 100644 index 000000000..072fd8814 --- /dev/null +++ b/reference/compatible-hardware.html @@ -0,0 +1,1332 @@ + + + + + + + + + + Compatible Hardware — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Compatible Hardware

+

This document describes hardware that has been tested and confirmed as +compatible with Clear Linux* OS. This list is not comprehensive and will continue to +grow.

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1. Compatible Hardware

Processor

Platform

Intel® Core™ i5-6260U processor

Intel® Core™ i5-6560U processor

Dell XPS* 13 9350

Intel® Celeron® J3455 processor

NUC6CAYS

Intel® Core™ i5-4250U processor

Intel® Core™ i7-5557U processor

Intel® Core™ i9-7900X X-series processor

Gigabyte* X299

Intel® Core™ i3-4130 processor

Lenovo Thinkserver* TS140

Intel® Core™ i7-7567U processor

NUC7i7BNH

Intel® Core™ i7-8809G processor

NUC8i7HVK

Intel® Core™ i5-7260U processor

NUC7i5BNH

Intel® Core™ i7-8650U processor

NUC7i7DNKE

Intel® Core™ i5-7300U processor

NUC7i5DNHE

Intel® Xeon® Gold 6138 processor

Intel® Xeon® E5-2699A v4 processor

Dell PowerEdge* R630

Intel® Xeon® E5-2620 v3 processor

Intel® Core™ i5-6600 processor

Gigabyte* Z170X-UD5

Intel® Core™ i5-4250U processor

D54250WYK

Intel® Xeon® E5-2699 v3 processor

S2600WT2

Intel Atom™ J3455 processor

NUC6CAYB

Intel® Xeon® Bronze 3104 processor

0W23H8

Intel Atom™ C2750 processor

SuperMicro* A1SAi

Intel Atom™ E3825 processor

CircuitCo MinnowBoard MAX*

Intel® Core™ i7-8700 processor

Gigabyte* H370 WIFI

Intel® Core™ i7-3667U processor

Lenovo ThinkPad* X1 Carbon laptop

Intel® Core™ i5-4210U processor

Dell XPS* 13 laptop

Intel® Celeron® J3455 processor

NUC6CAYB

Intel® Core™ i7-4790 processor

Gigabyte* desktop

Intel® Core™ i5-6260U processor

NUC6I6SYH

Intel® Core™ i7-5557U processor

NUC5I7RYH

Intel® Core™ i7-4700MQ processor

Lenovo ThinkPad* T540p

Intel® Core™ i7-5557U processor

NUC5I7RYB

Intel® Core™ i5-6260U processor

NUC6I5SYH

+

Intel, Celeron, Xeon, Intel Atom, and Intel Core are trademarks of Intel +Corporation or its subsidiaries.

+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/image-types.html b/reference/image-types.html new file mode 100644 index 000000000..e86adf538 --- /dev/null +++ b/reference/image-types.html @@ -0,0 +1,1294 @@ + + + + + + + + + + Clear Linux* OS image types — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Clear Linux* OS image types

+

Clear Linux* OS offers many types of images for different platforms and environments.

+

The naming convention of a Clear Linux OS image filename is:

+
clear-[version number]-[image type].[compression type]
+
+
+
    +
  • The [version number] field specifies the version number.

  • +
  • The [image type] field specifies the type of image and its corresponding +file format.

  • +
  • The [compression type] field specifies the compression type. Two types of +compression methods are used: GNU* zip (.gz) and XZ (.xz).

  • +
+

Table 1 lists the currently available images that are platform independent. +Table 2 lists the currently available images that are platform specific.

+ + ++++ + + + + + + + + + + + + + +
Table 1: Types of platform-independent Clear Linux OS images

Image Type

Description

live-desktop.img or live-desktop.iso

Image for booting to GNOME* desktop to preview or install the OS.

live-server.img or live-server.iso

Image for booting to server command prompt to preview or install the OS.

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2: Types of platform-specific Clear Linux OS images

Image Type

Description

aws.img

Image suitable for use with Amazon* AWS*.

cloudguest.img

Image with generic cloud guest virtual machine (VM) requirements +installed.

gce.tar

Image with the Google Compute Engine (GCE) specific kernel.

azure-hyperv.vhd

Image for Microsoft* Azure and Hyper-V generation 1 VMs. Includes +optimized kernel for Hyper-V.

kvm.img

Image for booting in a simple VM with start_qemu.sh. Includes +optimized kernel for KVM.

kvm-legacy.img

Image for booting in a simple VM using legacy BIOS, if using +start_qemu.sh make sure to remove -bios parameter.

pxe.tar

Image suitable for use with PXE server.

vmware.vmdk

Virtual Machine Disk for VMware* platforms including Player, +Workstation, and ESXi.

+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/index.html b/reference/index.html new file mode 100644 index 000000000..37ee150fc --- /dev/null +++ b/reference/index.html @@ -0,0 +1,1228 @@ + + + + + + + + + + Reference — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Reference

+

This section provides additional information on the Clear Linux OS project and +features.

+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/man-pages.html b/reference/man-pages.html new file mode 100644 index 000000000..8c17ffd15 --- /dev/null +++ b/reference/man-pages.html @@ -0,0 +1,1305 @@ + + + + + + + + + + Man pages — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+ +
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/cloud-config.5.html b/reference/manpages/cloud-config.5.html new file mode 100644 index 000000000..96d7b46bf --- /dev/null +++ b/reference/manpages/cloud-config.5.html @@ -0,0 +1,1462 @@ + + + + + + + + + + cloud-config — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

cloud-config

+

cloud-config(5) – User data format used by ucd(1)

+
+

SYNOPSIS

+

user-data

+

#cloud-config

+

cloud-config data is provided by the cloud infrastructure to a cloud +instance. This data is parsed by cloud-init(1) which then configures +the cloud instance based on the information in the cloud-config.

+
+
+

DESCRIPTION

+

The user-data as provided can be of several formats. cloud-init(1) +supports the cloud-config format, but also supports generic shell +scripts. If the user-data starts with #!, it is assumed that the +user-data is a generic shell script, and cloud-init will attempt to +execute the data as a script. If the user-data starts with the +#cloud-config stanza, it is assumed the user-data is in the +cloud-config format, described below.

+

The cloud-config format is used to structure configuration data +provided to the cloud instance. This data is structured in the YAML +format (http://yaml.org). Note that cloud-init(1) uses the +libyaml library, which supports YAML version 1.1.

+

In the YAML content, the root node (the document) contains a sequence of +directives. These directives inform cloud-init that the content of the +directive are processed by a directive-specific handler, or “module”.

+

cloud-init includes many modules, each expecting a specifically +constructed content. This document lists the correct format and +organization of each data section for the supported modules, describes +their effect, and states various parameters for each option.

+

Table of implemented directives. Column 3 (“Ref”) and column 4 +(“CoreOS”) list whether the reference specification or the CoreOS +implementation support these directives. Note that implementation +details may differ, due to the underlying differences in Operating +Systems.

+
Directive           |Description                          |Ref. |CoreOS.
+--------------------|-------------------------------------|-----|-------
+groups              |Configure user account groups        |yes  |no
+package_upgrade     |Perform a software update            |yes  |no
+packages            |Install additional software          |yes  |no
+runcmd              |Execute system commands              |yes  |no
+service             |Perform system service configuration |no   |no
+ssh_authorized_keys |Provision SSH public keys            |yes  |yes
+users               |Configure user accounts              |yes  |yes
+write_files         |Write content to arbitrary files     |yes  |yes
+hostname            |Define the system's hostname         |yes  |yes
+envar               |Set environment variables            |no   |no
+bootcmd             |Execute system commands on first boot|no   |no
+wait_for_network    |Halt execution until network is up   |no   |no
+
+
+
+
+

OPTIONS

+

For each of the directives listed in the table above, zero or more +options may be provided. The list below documents the implemented +options per directive. The “Type” field values are:

+
+

TYPES

+
Type       |Description
+-----------|-------------------------------------------------------------------
+boolean    |Either true, false, yes, no, 0 or 1 (upper case and initial capitol
+           |letter versions treated identical)
+string     |A generic string encoded value. Can be multiline or YAML encoded
+           |content
+integer    |A string encoded decimal integer value
+octal      |A string encoded octal integer value
+hex        |A string encoded hexadecimal integer value
+[]         |if a type is listed with [] appended, it means there may be zero or
+           |more values, lists of values or any arbitrary depth of these nested
+*          |Indicates this value isn't a separate key, but directly the
+           |associated value of the root node. This is applicable for directives
+           |that only have a single configuration parameter,
+           |e.g. "package_upgrade"
+
+
+
+
+

groups

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+name      |string[] |no          |Create a new user account group and
+          |         |            |place listed user account names in
+          |         |            |that group
+
+
+
+
+

package_upgrade

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+*         |boolean  |yes         |Enables or disables whether software
+          |         |            |update is performed
+
+
+

This option implies the wait_for_network option.

+
+
+

packages

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+name      |string[] |no          |Enables installation of software bundles
+
+
+

This option implies the wait_for_network option.

+
+
+

runcmd

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+*         |string[] |no          |Executes a command, if the item is a list,
+          |         |            |the list will be converted to a string
+          |         |            |and executed as a command line.
+
+
+
+
+

hostname

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+*         |string   |yes         |Defines the system's hostname
+
+
+
+
+

service

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+start     |string[] |no          |Start units
+stop      |string[] |no          |Stop units
+restart   |string[] |no          |Restart units
+enable    |string[] |no          |Enable units to start automatically
+disable   |string[] |no          |Disable units from starting automatically
+reload    |string[] |no          |Reload service units
+isolate   |string[] |no          |Change target to a new unit
+mask      |string[] |no          |Prevent units from starting
+unmask    |string[] |no          |Remove unit start prevention mask
+
+
+
+
+

ssh_authorized_keys

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+*         |string[] |no          |Specifies an SSH public key value, as
+          |         |            |string. This will be added to the default
+          |         |            |user account's SSH configuration
+
+
+
+
+

users

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+*         |[]       |no          |This directive expects a list of user
+          |         |            |definitions. Each definition can
+          |         |            |additionally specify the following
+          |         |            |sub-options:
+name      |string   |yes         |A user account name to be created
+gecos     |string   |no          |A real user name, can be left empty
+homedir   |string   |no          |A home directory path. Default under "/home"
+primary-group|string|no          |A group name.
+groups    |string   |no          |Comma-separated list of group names or
+          |         |            |single group name. Specifies additional
+          |         |            |groups to put this user account into
+lock-passwd|boolean |no          |Lock the user account
+inactive  |boolean  |no          |Mark the user account as inactive
+passwd    |string   |no          |Password hash for the user account
+no-create-home|boolean|no        |Omits creating a home directory
+no-user-group|boolean|no         |Omits group creating for the account
+no-log-init|boolean |no          |Omits this account from lastlog/faillog
+expiredate|string   |no          |A date at which to expire the password
+ssh-authorized-keys|string[]|no  |Add SSH public keys to ssh configuration
+sudo      |string[] |no          |Add sudoers lines for this account, the account
+          |         |            |name is automatically prepended
+system    |boolean  |no          |Make the account a system account
+
+
+
+
+

write_files

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+*         |[]       |no          |This directive expects a list of write_files
+          |         |            |definitions. Each definition itself contains the
+          |         |            |following options:
+content   |string   |yes         |The content to write to a file
+path      |string   |yes         |The full path and filename of the file to
+          |         |            |be written out
+owner     |string   |no          |Username and optionally group name, separated
+          |         |            |by ":" or ".". Defaults to "root.root"
+permissions|octal   |no          |Octal value describing the file permissions
+          |         |            |default value is influenced according to
+          |         |            |`umask`
+
+
+
+
+

envar

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+*         |string   |yes         |Add environment variables to /etc/profile.d/cloud-init.sh
+          |         |            |and to current cloud-init process
+
+
+
+
+

bootcmd

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+*         |string[] |no          |Similar to runcmd but bootcmd will run only on first boot
+
+
+
+
+

wait_for_network

+
Option    |Type     |Required    |Function
+----------|---------|------------|-----------------------------------
+*         |boolean  |no          |Enable to force waiting for a functional network.
+
+
+

This option makes the program wait until an active network is detected. +To prevent waiting, ensure that this option is disabled explicitly +disabled, before other options are used. This may be needed when using +the packages or package_upgrade options, which imply that this +option is used.

+
+
+ +
+

SEE ALSO

+

cloud-init(1)

+
+
+

NOTES

+

Creative Commons Attribution-ShareAlike 3.0 Unported

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/clr-power-tweaks.conf.5.html b/reference/manpages/clr-power-tweaks.conf.5.html new file mode 100644 index 000000000..0d1d412d8 --- /dev/null +++ b/reference/manpages/clr-power-tweaks.conf.5.html @@ -0,0 +1,1297 @@ + + + + + + + + + + clr-power-tweaks.conf — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

clr-power-tweaks.conf

+
+
Manual section:
+

5

+
+
+
+

SYNOPSIS

+

clr-power-tweaks.conf is an optional configuration file for the +clr_power(1) utility.

+

/etc/clr-power-tweaks.conf

+
+
+

DESCRIPTION

+

clr-power-tweaks.conf is an optional configuration file for the +clr_power(1) utility. The configuration file contains kernel and device +parameter values used by the clr_power(1) utility.

+

Configuration parameter values placed in clr-power-tweaks.conf will +supersede the built-in defaults configured by clr_power(1). New +parameters can be added to the configuration to supplement the built-in +values. Built-in parameters can be changed by defining them in +clr-power-tweaks.conf with a different value. Parameters can be +excluded from being modified by clr_power(1) by adding them in +clr-power-tweaks.conf without a value.

+
+
+

FILE FORMAT

+

clr-power-tweaks.conf uses a key-value pairs to define parameter +values.

+

Each line contains one parameter-value pair, delimited by a space +character.

+

Parameters are paths from the proc(5) filesystem. Parameters paths can +include glob(n) wildcards to match multiple paths.

+

Acceptable values are determined by the parameter being set. Any +parameter listed in the configuration file without a value will be +excluded by clr_power(1) and the parameter will inherit the kernel’s +built-in default parameter value.

+
+
+

EXAMPLES

+
    +
  1. clr-power-tweaks.conf entry to override the default value in +clr_power(1) for CPU governor with powersave. All other values +built-in to clr_power(1) would still get applied.

    +

    Note the globbing used with * to target all CPU cores.

    +
    /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor powersave
    +
    +
    +
  2. +
  3. clr-power-tweaks.conf entry to exclude a parameter causing it to +use the kernel’s built-in default value (60). All other values +built-in to clr_power(1) would still get applied.

    +

    Note the omission of a value.

    +
    /proc/sys/vm/swappiness
    +
    +
    +
  4. +
  5. clr-power-tweaks.conf entry to add two new parameters to increase +UDP buffers All other values built-in to clr_power(1) would still get +applied.

    +
    /proc/sys/net/ipv4/udp_rmem_min 8192
    +/proc/sys/net/ipv4/udp_wmem_min 8192
    +
    +
    +
  6. +
+
+
+

BUGS

+

The default clr-power-tweaks.conf(5) aims to have reasonable defaults +for achieving power and performance efficiency. Default values may not +be optimal for all systems and environments.

+

See GitHub Issues: https://github.com/clearlinux/clr-power-tweaks/issues

+
+
+

SEE ALSO

+

clr_power.conf(5), proc(5), sysctl(2)

+

For parameters understood by the kernel, please see +https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/clr_power.1.html b/reference/manpages/clr_power.1.html new file mode 100644 index 000000000..16cd386de --- /dev/null +++ b/reference/manpages/clr_power.1.html @@ -0,0 +1,1279 @@ + + + + + + + + + + clr_power — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

clr_power

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

clr_power is a utility to adjust power and performance settings in +the operating system. It is configurable and can enforce power and +performance policies.

+

clr_power [-d|–debug]

+
+
+

DESCRIPTION

+

clr_power adjusts power and performance in the operating system by +setting runtime kernel and device parameters in the proc(5) filesystem. +clr_power operates with built-in default values. Values can be added +or changed in user-defined clr-power-tweaks.conf(5) file.

+

clr_power applies settings and immediately exits after it is +started. It can act as a daemon that enforces settings with the included +systemd files.

+

The program handles server and desktop-like systems differently and will +set values based on whether a system is a server platform or a desktop +platform. Most systems will be assumed a server, and if it can’t be +determined what type of platform the system is, treated as a server +platform. By default, systems with CPU’s that identify as Core(TM), +Celeron and Pentium are treated as desktop systems, and systems +with CPU’s that identify as Xeon are treated as server systems.

+

Tunings applied will vary per system. To see what tunings are applied, +run the program with the --debug option.

+
+
+

OPTIONS

+

-d, --debug Display debug/verbose output including built-in +values.

+

-S, --server Treat the system as a server, and apply server +specific tunings.

+

-D, --desktop Treat the system as a desktop, and apply desktop +specific tunings

+
+
+

FILES

+
    +
  • clr-power.service systemd service unit that executes clr_power.

  • +
  • clr-power.timer systemd timer that periodically executes the +clr-power.service to enforce settings.

  • +
  • clr-power-rfkill.service systemd service that stops bluetooth +devices at boot to prevent power drain.

  • +
  • /etc/clr-power-tweaks.conf Optional user-defined configuration file +to override or att values. See clr-power-tweaks.conf(5) for more +information.

  • +
+
+
+

BUGS

+

See GitHub Issues: https://github.com/clearlinux/clr-power-tweaks/issues

+
+
+

SEE ALSO

+

clr-power-tweaks.conf(5), proc(5)

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/clrtrust.1.html b/reference/manpages/clrtrust.1.html new file mode 100644 index 000000000..9e14da846 --- /dev/null +++ b/reference/manpages/clrtrust.1.html @@ -0,0 +1,1369 @@ + + + + + + + + + + clrtrust — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

clrtrust

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

clrtrust is a tool for generating and managing a centralized trusted +certificate store.

+

clrtrust [-v|--verbose] [-h|--help] [-c|--internal-rehash] <command> [options]

+
+
+

DESCRIPTION

+

A trust store contains a set of X.509 certificates which the operating +system and applications should consider trustworthy.

+

The clrtrust tool provides a frontend for centralized trust store +management. It allows for adding (trusting) and removing (distrusting) +certificate authorities (CAs). It also provides maintenance commands for +viewing and re-generating the trust store.

+

Certificates can be provided by the operating system for out-of-box +functionality. Certificates can also be provided and modified by +privileged users.

+

It is up to each application to make use of the trust store generated by +clrtrust.

+
+
+

OPTIONS

+
Usage: clrtrust [-v|--verbose] [-h|--help] [-c|--internal-rehash] <command> [options]
+
+    -v | --verbose          Shows more details about execution
+    -c | --internal-rehash  Forces use of internal implementation of c_rehash
+    -h | --help             Prints this message
+
+    Commands
+        generate    generates the trust store
+        list        list CAs
+        add         add trust to a CA
+        remove      remove trust to a CA
+        restore     restore trust to previously removed CA
+        check       sanity/consistency check of the trust store
+
+clrtrust <command> --help to get help on specific command.
+
+
+

Commands that modify the trust store require root privileges.

+
    +
  • clrtrust generate [-f|--force]

    +

    The generate command has no arguments and generates a unified +trust store composed of system-provided and user-provided +certificates, if any. The optional --force parameter will +forcibly generate the trust store, even if it results in an empty +store. See the FILES section for paths used for trust store +generation.

    +
  • +
  • clrtrust list

    +

    The list command has no arguments and outputs a list of trusted +certificates with the following fields:

    +

    id uniquely identifies the certificate. It can be used as input +to other clrtrust commands such as remove or restore.

    +

    File contains the file path of the certificate in the trust +store.

    +

    Authority shows the name of the organization that issued the +certificate. This field is extracted from the certificate file.

    +

    Expires shows the expiration date of the certificate. This field +is extracted from the certificate file.

    +
  • +
  • clrtust add [<certificateFile> ...] [-f|--force]

    +

    The add command takes one or more certificates as required +argument(s). The certificate is identified by a file path. The +certificate file(s) must be PEM-encoded with only one certificate per +file. The optional --force parameter will forcibly add the +certificate to the trust store, even if it is not a root CA.

    +

    Adding a root CA to the trust store allows applications using the +trust store to trust the root CA certificate, trust certificate +chains issued by the authority, verify the authenticity of peer’s +certificate, and establish a connection.

    +
  • +
  • clrtrust remove [<certificateFile|id> ...]

    +

    The remove command takes one or more certificates as required +argument(s). The certificate is identified by a file path or id. +The argument can be an id of the certificate (see the list +command) or the file path of the certificate.

    +

    Removing a root CA from the trust store distrusts the certificate for +applications using the trust store. Certificate chains issued by the +authority will no longer be trusted, authenticity of the peer’s +certificate will no longer be verified, and a connection will not be +established.

    +
  • +
  • clrtrust check

    +

    The check command has no arguments and validate the consistency +of a previously generated unified trust store.

    +
  • +
+
+
+

EXAMPLES

+
+

View the list of trusted CAs

+

clrtrust list

+

The command above outputs a list of trusted certificates in the format +below:

+
id: FA:B7:EE:36:97:26:62:FB:2D:B0:2A:F6:BF:03:FD:E8:7C:4B:2F:9B
+File: /var/cache/ca-certs/anchors/certSIGN_ROOT_CA.crt
+Authority: /C=RO/O=certSIGN/OU=certSIGN ROOT CA
+Expires: Jul  4 17:20:04 2031 GMT
+
+
+

The certificate can be further inspected using the openssl x509 +command. For example:

+
openssl x509 -in /var/cache/ca-certs/anchors/certSIGN_ROOT_CA.crt -noout -text
+
+
+
+
+

Add (trust) a root CA

+

clrtrust add ~/PrivateCA.pem

+

The command above will add a root CA certificate located in the +~/PrivateCA.pem file. If the certificate file is not in the PEM +format, use openssl x509 command to convert to PEM first. For +example:

+
openssl x509 -in PrivateCA.cer -inform der -out PrivateCA.pem -outform pem
+
+
+
+
+

Remove (distrust) a root CA

+

clrtrust remove ~/PrivateCA.pem

+

The command above will remove a root CA certificate located in the +~/PrivateCA.pem file from the trust store and distrust it.

+
+
+
+

FILES

+

/var/cache/ca-certs

+

Generated directory of certificates and verification keys. Do not modify +contents outside of clrtrust.

+

/usr/share/ca-certs/

+

Operating-system provided certificates and keys. Do not modify contents +outside of clrtrust.

+

/etc/ca-certs/

+

Generated directory of user-supplied certificates and verification keys. +Do not modify contents outside of clrtrust.

+
+
+

BUGS

+

See GitHub Issues: https://github.com/clearlinux/clrtrust/issues

+
+
+

SEE ALSO

+

openssl(1)

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/mixer.1.html b/reference/manpages/mixer.1.html new file mode 100644 index 000000000..1e9d710da --- /dev/null +++ b/reference/manpages/mixer.1.html @@ -0,0 +1,1354 @@ + + + + + + + + + + mixer — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

mixer

+
+

OS software update mixer

+
+
Copyright:
+

(C) 2018 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

mixer [subcommand] <flags>

+
+
+

DESCRIPTION

+

mixer(1) is a software update generator that uses input RPMs and bundle +definition files to create update metadata consumable by swupd(1).

+

mixer operates in a mix workspace using configuration files existing in the +workspace. The tool allows users to use RPMs from an upstream URL (default +download.clearlinux.org), provide their own RPMs, and use RPMs from other remote +repositories to build updates. Users can also define their own local bundle +definitions as well as use the default bundle definitions from the upstream URL.

+

mixer provides commands to manage local RPMs and bundle definitions and +configure remote RPM repositories.

+

The output of mixer is a set of manifests readable by swupd as well as +all the OS content swupd needs to perform its update operations. The OS +content includes all the files in an update as well as zero- and delta-packs for +improved update performance. The content that mixer produces is tied to a +specific format so that swupd is guaranteed to understand it if the client +is using the right version of swupd. See swupd(1) and os-format(7) +for more details.

+
+
+

OPTIONS

+

The following options are applicable to most subcommands, and can be +used to modify the core behavior and resources that mixer uses.

+
    +
  • -h, --help

    +

    Display general help information. If put after a subcommand, it will +display help specific to that subcommand.

    +
  • +
  • --check

    +

    Check all external dependencies needed by mixer.

    +
  • +
  • -v, --version

    +

    Displays the version information of the mixer program and exit.

    +
  • +
  • --offline

    +

    Skip caching upstream bundles and work entirely with local bundles. +Do not reach out over network to perform operations.

    +
  • +
+
+
+

SUBCOMMANDS

+

add-rpms

+
+

Add RPMs from the configured LOCAL_RPM_DIR to the local dnf repository. +See mixer.add-rpms(1) for more details.

+
+

build

+
+

Build various pieces of OS content, including all metadata needed by +swupd to perform updates. mixer build is a complicated tool in +itself. See mixer.build(1) for more details.

+
+

bundle

+
+

Perform various configuration actions on local and upstream bundles. The +user can add or remove bundles from their mix, create new bundle definitions, +or validate local bundle definition files. See mixer.bundle(1) for more details.

+
+

config

+
+

Perform configuration related actions, including configuration file +validation and conversion from deprecated formats. See mixer.config(1) +for more details.

+
+

help

+
+

Print help text for any mixer subcommand.

+
+

init

+
+

Initialize mixer configuration and workspace. See mixer.init(1) for +more details.

+
+

repo

+
+

Add, list, remove, or edit RPM repositories to be used by mixer. This +subcommand allows users to configure which remote or local repositories +mixer should use to look for RPMs. See mixer.repo(1) for more +information.

+
+

versions

+
+

Manage mix and upstream versions. By itself the command will print the +current version of mix and upstream, and also report the latest version of +upstream available. Also allows the user to update mix and upstream +versions. See mixer.versions(1) for more details.

+
+
+
+

FILES

+

<mixer/workspace>/builder.conf

+
+

The mixer configuration file.

+
+

<mixer/workspace>/.yum-mix.conf

+
+

The default location for the DNF configuration file.

+
+
+
+

EXIT STATUS

+

On success, 0 is returned. A non-zero return code indicates a failure.

+
+

SEE ALSO

+ +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/mixer.add-rpms.1.html b/reference/manpages/mixer.add-rpms.1.html new file mode 100644 index 000000000..df5c616ec --- /dev/null +++ b/reference/manpages/mixer.add-rpms.1.html @@ -0,0 +1,1262 @@ + + + + + + + + + + mixer.add-rpms — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

mixer.add-rpms

+
+

Add local RPMs to mix

+
+
Copyright:
+

(C) 2018 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

mixer add-rpms [flags]

+
+
+

DESCRIPTION

+

Adds RPMs from the LOCAL_RPM_DIR (configured in the builder.conf) to the +local RPM repository to be used in creating a mix.

+
+
+

OPTIONS

+

In addition to the globally recognized mixer flags (see mixer(1) for +more details), the following options are recognized.

+
    +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses the +default builder.conf in the mixer workspace if this option is not provided.

    +
  • +
  • -h, --help

    +

    Display add-rpm help information and exit.

    +
  • +
+
+
+

EXIT STATUS

+

On success, 0 is returned. A non-zero return code indicates a failure.

+
+

SEE ALSO

+ +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/mixer.build.1.html b/reference/manpages/mixer.build.1.html new file mode 100644 index 000000000..990e73991 --- /dev/null +++ b/reference/manpages/mixer.build.1.html @@ -0,0 +1,1495 @@ + + + + + + + + + + mixer.build — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

mixer.build

+
+

Build varioius pieces of OS content

+
+
Copyright:
+

(C) 2018 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

mixer build [command] [flags]

+
+
+

DESCRIPTION

+

Builds various pieces of OS content and output update metadata to +<mixer/workspace>/update/www/<version>/. This metadata can be published +directly to a web-server and consumed by client update systems via the +swupd(1) update tool. All steps can be run at once using build all or +the steps can be run individually using the subcommands.

+
+
+

OPTIONS

+

In addition to the globally recognized mixer flags (see mixer(1) for +more details), the following options are recognized across all build +subcommands.

+
    +
  • --bundle-workers

    +

    Number of parallel workers when building bundles, passing 0 or omitting this +flag defaults the number of workers to the number of CPUs on the system.

    +
  • +
  • --delta-workers

    +

    Number of parallel workers when creating deltas, passing 0 or omitting this +flag defaults the number of workers to the number of CPUs on the system.

    +
  • +
  • --fullfile-workers

    +

    Number of parallel workers when creating fullfiles, passing 0 or omitting this +flag defaults the number of workers to the number of CPUs on the system.

    +
  • +
  • --skip-format-check

    +

    Skip check for compatible upstream format when building on top of a new +upstream.

    +
  • +
  • -h, --help

    +

    Display build help information and exit.

    +
  • +
+
+
+

SUBCOMMANDS

+

all

+
+
+

Build all content for the mix. Implicitly runs build bundles followed by +build update. In addition to the global options mixer build all +takes the following options.

+
    +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses +the default builder.conf in the mixer workspace if this option is not +provided.

    +
  • +
  • --format {number}

    +

    Supply the format number to use for the build.

    +
  • +
  • -h, --help

    +

    Display build all help information and exit.

    +
  • +
  • --increment

    +

    Automatically increment the mix version post build.

    +
  • +
  • --min-version {version}

    +

    Supply minimum version for mixer to use old content from. This option +tells mixer to regenerate all mix content starting from a certain +version. mixer will not use any OS content from a version older than +the min-version passed here.

    +
  • +
+
+
    +
  • --no-signing

    +

    Do not generate a certificate and do not sign the Manifest.MoM

    +
  • +
  • --prefix {path}

    +

    Supply the path to the file system where the swupd binaries live.

    +
  • +
+
+

bundles

+
+
+

Build the bundles for your mix. This is done by extracting dependency +information and file lists for each package in each bundle definition for the +mix. In addition to the global options mixer build bundles takes the +following options.

+
    +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses +the default builder.conf in the mixer workspace if this option is not +provided.

    +
  • +
  • -h, --help

    +

    Display build bundles help information and exit.

    +
  • +
+
+
    +
  • --no-signing

    +

    Do not generate a certificate and do not sign the Manifest.MoM

    +
  • +
+
+

delta-packs

+
+

Build packs to optimize swupd updates between versions. When a +swupd client updates a bundle it looks for a pack file from its current +version to the new version. If available swupd will download and apply +the pack content to the file system. Delta packs contain binary diff files +that describe changes between updates whenever possible and full files only +when necessary. Because of this delta packs are a significant performance +optimization for client updates. Because the client can fall back to full +files if a pack is not available, delta packs are not necessary for a +functional update. In addition to the global options mixer build +delta-packs takes the following options.

+
    +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses +the default builder.conf in the mixer workspace if this option is not +provided.

    +
  • +
  • --from {version}

    +

    Generate packs from the specified version.

    +
  • +
  • -h, --help

    +

    Display build delta-packs help information and exit.

    +
  • +
  • --previous-versions {number}

    +

    Generate packs for number of previous versions.

    +
  • +
  • --report

    +

    Report reason each file in the to manifest was packed in the delta pack +or not.

    +
  • +
  • --to {version}

    +

    Generate packs targeting a specific to version.

    +
  • +
+
+

delta-manifests

+
+

Build manifest deltas to optimize swupd updates between versions. When a +swupd client update runs, it will first try to get a delta manifest file +if it exists and apply that on the bundle manifest file for the version +installed on their system (if it exists). This can save a large amount of +content being downloaded in the case of few files changing in a manifest. +Because the client can fall back to the full manifest file if a delta is not +available, delta manifests are not necessary for a functional update. In +addition to the global options mixer build delta-manifests takes the +following options.

+
    +
  • --from {version}

    +

    Generate packs from the specified version.

    +
  • +
  • -h, --help

    +

    Display build delta-manifests help information and exit.

    +
  • +
  • --previous-versions {number}

    +

    Generate packs for number of previous versions.

    +
  • +
  • --to {version}

    +

    Generate packs targeting a specific to version.

    +
  • +
+
+

image

+
+

Build an image from the mix content. In addition to the global options +mixer build image takes the following options.

+
    +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses +the default builder.conf in the mixer workspace if this option is not +provided.

    +
  • +
  • --format {number}

    +

    Supply the format number used for the mix.

    +
  • +
  • -h, --help

    +

    Display build image help information and exit.

    +
  • +
  • --template {path}

    +

    Provide the path to the image template file to use.

    +
  • +
+
+

update

+
+
+

Build the update content for the mix. This command builds the actual update +metadata (manifests) and content (full files and zero packs) necessary for +swupd to perform updates on client systems. update relies on the +output of build bundles as the input for this step and expects the +output of build bundles to exist in the +<mixer/workspace>/update/image/<version> directory. In addition to the +global options mixer build update takes the following options.

+
    +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses +the default builder.conf in the mixer workspace if this option is not +provided.

    +
  • +
  • --format {number}

    +

    Supply the format number used for the mix.

    +
  • +
  • -h, --help

    +

    Display build update help information and exit.

    +
  • +
  • --increment

    +

    Automatically increment the mix version post build.

    +
  • +
  • --min-version {version}

    +

    Supply minimum version for mixer to use old content from. This option +tells mixer to regenerate all mix content starting from a certain +version. mixer will not use any OS content from a version older than +the min-version passed here.

    +
  • +
+
+
    +
  • --no-signing

    +

    Do not generate a certificate and do not sign the Manifest.MoM

    +
  • +
  • --prefix {path}

    +

    Supply the path to the file system where the swupd binaries live.

    +
  • +
+
+

validate

+
+

Compare two versions to validate that manifest file changes align with corresponding +package changes. Inconsistencies between manifest entries and package contents are +reported as errors. When no errors occur, package update statistics are displayed.

+
    +
  • --from {version}

    +

    Compare manifests from a specific version

    +
  • +
  • --to {version}

    +

    Compare manifests to a specific version

    +
  • +
  • --from-repo-url {repo}={URL}

    +

    Overrides the baseurl value for the provided repo in the DNF config file for the from version

    +
  • +
  • --to-repo-url {repo}={URL}

    +

    Overrides the baseurl value for the provided repo in the DNF config file for the to version

    +
  • +
  • --table-width {width}

    +

    Max width of package statistics table, defaults to terminal width and disabled by negative numbers

    +
  • +
  • -h, --help

    +

    Display build validate help information and exit.

    +
  • +
+
+
+
+

EXIT STATUS

+

On success, 0 is returned. A non-zero return code indicates a failure.

+
+

SEE ALSO

+ +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/mixer.bundle.1.html b/reference/manpages/mixer.bundle.1.html new file mode 100644 index 000000000..41e2d2025 --- /dev/null +++ b/reference/manpages/mixer.bundle.1.html @@ -0,0 +1,1401 @@ + + + + + + + + + + mixer.bundle — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

mixer.bundle

+
+

Perform various configuration actions on bundles

+
+
Copyright:
+

(C) 2018 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

mixer bundle [command] [flags]

+
+
+

DESCRIPTION

+

Performs various configuration actions on upstream and local bundle definition +files. List and validate mix bundles. Validate local bundle definition files.

+
+
+

SUBCOMMANDS

+

add {bundle} [{bundle}...] [flags]

+
+

Add local or upstream bundles to your mix by modifying the mix bundles list +at <mixer/workspace>/mixbundles. In addition to the global options mixer +bundle add takes the following options.

+
    +
  • --all-local

    +

    Add all local bundles defined in <mixer/workspace>/local-bundles to the +mix. This command takes precedence over bundle list.

    +
  • +
  • --all-upstream

    +

    Add all upstream bundles (cached in <mixer/workspace>/upstream-bundles +to the mix. This command takes precedence over bundle list.

    +
  • +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses +the default builder.conf in the mixer workspace if this option is not +provided.

    +
  • +
  • --git

    +

    Automatically apply a new git commit after modifying the mix bundles list +or bundle definitions. This is useful if your local bundles are kept under +version control.

    +
  • +
  • -h, --help

    +

    Display bundle add help information and exit.

    +
  • +
+
+

create

+
+

Create new bundles or copy existing bundles. +This command will locate the bundle by first looking in local-bundles, +and then in upstream-bundles. If the bundle is only found upstream, +the bundle file will be copied to your local-bundles directory. If the bundle is +not found anywhere, a blank template will be created with the correct name.

+

Passing ‘–add’ will also add the bundle(s) to your mix. Please note that +bundles are added after all bundles are created, and thus will not be added +if any errors are encountered earlier on.

+

In addition to the global options mixer bundle create takes the following +options.

+
    +
  • --add

    +

    Add the bundle(s) to your mix after editing.

    +
  • +
  • --local

    +

    Skip upstream check and create empty local bundle(s).

    +
  • +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses +the default builder.conf in the mixer workspace if this option is not +provided.

    +
  • +
  • --git

    +

    Automatically apply a new git commit after modifying the mix bundles list +or bundle definitions. This is useful if your local bundles are kept under +version control.

    +
  • +
  • -h, --help

    +

    Display bundle create help information and exit.

    +
  • +
+
+

list [mix|local|upstream] [flags]

+
+

List the bundles in the mix, the available local bundles, or the available +upstream bundles. In addition to the global options mixer bundle list +takes the following options.

+
    +
  • mix

    +

    List the bundles in the mix.

    +
  • +
  • local

    +

    List available locally-defined bundles.

    +
  • +
  • upstream

    +

    List available upstream bundles.

    +
  • +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses +the default builder.conf in the mixer workspace if this option is not +provided.

    +
  • +
  • -h, --help

    +

    Display bundle list help information and exit.

    +
  • +
  • --tree

    +

    Pretty-print the bundle list as a tree showing include information.

    +
  • +
+
+

remove

+
+

Removes bundles from your mix by modifying the mix bundle list (stored in +the <mixer/workspace>/mixbundles file). The mix bundle list is parsed, the +bundles are removed, and the resultant list is written back out in sorted +order. If bundles do not exist in the mix, they are skipped. In addition to +the global options mixer bundle remove takes the following options.

+
    +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses +the default builder.conf in the mixer workspace if this option is not +provided.

    +
  • +
  • --git

    +

    Automatically apply a new git commit after modifying the mix bundles list +or bundle definitions. This is useful if your local bundles are kept under +version control.

    +
  • +
  • -h, --help

    +

    Display bundle remove help information and exit.

    +
  • +
  • --local

    +

    Also remove the bundle file from local-bundles. This action is +irrevocable.

    +
  • +
  • --mix={bool}

    +

    Remove bundle from the mix bundle list. This defaults to true.

    +
  • +
+
+

validate

+
+

Checks bundle definition files for validity. Only local bundle files are +checked; upstream bundles are trusted as valid. Valid bundles yield no +output. Any invalid bundles will yield a non-zero return code.

+

Basic validation includes checking syntax and structure, and that the bundle +has a valid name. Commands like mixer bundle add run basic validation +automatically.

+

In addition to the global options mixer bundle remove takes the +following options.

+
    +
  • --all-local

    +

    Run validation against all local bundles.

    +
  • +
  • -c, --config {path}

    +

    Optionally tell mixer to use the configuration file at path. Uses +the default builder.conf in the mixer workspace if this option is not +provided.

    +
  • +
  • -h, --help

    +

    Display bundle validate help information and exit.

    +
  • +
  • --strict

    +

    Perform strict validation to additionally check that the bundle header +fields are parse-able and non-empty, and that the header ‘Title’ is itself +valid and matches the bundle filename.

    +
  • +
+
+
+
+

EXIT STATUS

+

On success, 0 is returned. A non-zero return code indicates a failure.

+
+

SEE ALSO

+ +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/mixer.config.1.html b/reference/manpages/mixer.config.1.html new file mode 100644 index 000000000..87fdb3b82 --- /dev/null +++ b/reference/manpages/mixer.config.1.html @@ -0,0 +1,1291 @@ + + + + + + + + + + mixer.config — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

mixer.config

+
+

Perform configuration manipulation actions

+
+
Copyright:
+

(C) 2018 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

mixer config [command]

+
+
+

DESCRIPTION

+

Perform various configuration manipulation actions on the mixer configuration +files.

+
+
+

OPTIONS

+

In addition to the globally recognized mixer flags (see mixer(1) for +more details), the following options are recognized.

+
    +
  • -h, --help

    +

    Display config help information and exit.

    +
  • +
+
+
+

SUBCOMMANDS

+

convert

+
+

Convert an old config file to the new TOML format. The command will generate +a backup file of the old config and will replace it with the converted one. +Environment variables will not be expanded and the values will not be +validated. In addition to the global options mixer config convert takes +the following options.

+
    +
  • -c, --config {path}

    +

    The path to the configuration file to convert.

    +
  • +
  • -h, --help

    +

    Display config convert help and exit.

    +
  • +
+
+

validate

+
+

Parse a builder config file and display its properties. Properties +containing environment variables will be expanded. In addition to the +global options mixer config validate takes the following options.

+
    +
  • -c, --config {path}

    +

    The path to the configuration file to validate.

    +
  • +
  • -h, --help

    +

    Display config validate help and exit.

    +
  • +
+
+
+
+

EXIT STATUS

+

On success, 0 is returned. A non-zero return code indicates a failure.

+
+

SEE ALSO

+ +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/mixer.init.1.html b/reference/manpages/mixer.init.1.html new file mode 100644 index 000000000..f0b3999e3 --- /dev/null +++ b/reference/manpages/mixer.init.1.html @@ -0,0 +1,1292 @@ + + + + + + + + + + mixer.init — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

mixer.init

+
+

Initialize mixer and workspace

+
+
Copyright:
+

(C) 2018 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

mixer init [flags]

+
+
+

DESCRIPTION

+

Initialize the mixer configuration and mixer workspace by writing default +configuration files if necessary and building the proper directory structure.

+
+
+

OPTIONS

+

In addition to the globally recognized mixer flags (see mixer(1) for +more details), the following options are recognized.

+
    +
  • --all-local

    +

    Initialize mix with all local bundles automatically included.

    +
  • +
  • --all-upstream

    +

    Initialize the mix with all upstream bundles automatically included.

    +
  • +
  • --clear-version {version}

    +

    Upstream version used to compose the mix. It must be either an integer or ‘latest’ (default “latest”)

    +
  • +
  • --config {path}

    +

    Supply a specific configuration file at path to use for mixing.

    +
  • +
  • --format {format}

    +

    Supply the format version for the mix.

    +
  • +
  • --git

    +

    Track mixer’s internal work directory with git.

    +
  • +
  • -h, --help

    +

    Display init help information and exit.

    +
  • +
  • --local-rpms

    +

    Create and configure local RPM directories.

    +
  • +
  • --mix-version {version}

    +

    Supply the mix version to build (default is 10)

    +
  • +
  • --no-default-bundles

    +

    Skip adding default bundles to the mix

    +
  • +
  • --upstream-url {url}

    +

    Supply an upstream URL to use for mixing (default is +“https://download.clearlinux.org”)

    +
  • +
  • --upstream-version {version}

    +

    Alias to –clear-version (default is “latest”)

    +
  • +
+
+
+

EXIT STATUS

+

On success, 0 is returned. A non-zero return code indicates a failure.

+
+

SEE ALSO

+ +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/mixer.repo.1.html b/reference/manpages/mixer.repo.1.html new file mode 100644 index 000000000..2a41ab900 --- /dev/null +++ b/reference/manpages/mixer.repo.1.html @@ -0,0 +1,1297 @@ + + + + + + + + + + mixer.repo — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

mixer.repo

+
+

Perform various configuration actions on mixer RPM repositories

+
+
Copyright:
+

(C) 2018 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

mixer repo [command]

+
+
+

DESCRIPTION

+

Perform various configuration actions on mixer RPM repositories. These RPM +repositories are used as content sources for mixer to build updates from.

+
+
+

OPTIONS

+

In addition to the globally recognized mixer flags (see mixer(1) for +more details), the following options are recognized.

+
    +
  • -c, --config {path}

    +

    The path to the configuration file to use.

    +
  • +
  • -h, --help

    +

    Display subcommand help information and exit.

    +
  • +
+
+
+

SUBCOMMANDS

+

add {name} {url}

+
+

Add the repo named name at the url url. In addition to the global +options mixer repo add takes the following options.

+
    +
  • --priority

    +

    Repo priority between 1 and 99, where 1 is highest. This flag defaults to 1.

    +
  • +
+
+

init

+
+

Initialize the DNF configuration file with the default Clear repository +enabled.

+
+

list

+
+

List all RPM repositories configured in the DNF configuration file used by +mixer.

+
+

remove {name}

+
+

Remove the repo name from the DNF configuration file used by mixer.

+
+

set-priority {name} {priority}

+
+

Sets the priority for repo name to the provided priority.

+
+

set-url {name} {url}

+
+

Sets the URL for repo name to the provided url. If name does not exist +the repo will be added to the configuration.

+
+
+
+

EXIT STATUS

+

On success, 0 is returned. A non-zero return code indicates a failure.

+
+

SEE ALSO

+ +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/mixer.versions.1.html b/reference/manpages/mixer.versions.1.html new file mode 100644 index 000000000..4a6630329 --- /dev/null +++ b/reference/manpages/mixer.versions.1.html @@ -0,0 +1,1297 @@ + + + + + + + + + + mixer.versions — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

mixer.versions

+
+

Manage mix and upstream versions

+
+
Copyright:
+

(C) 2018 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

mixer versions

+

mixer versions [command]

+
+
+

DESCRIPTION

+

Manage mix and upstream versions. By itself the command will print the current +version of mix and upstream, and also report on the latest version of upstream +available. This command also allows the user to increment the mix version and +optionally the upstream version.

+
+
+

OPTIONS

+

In addition to the globally recognized mixer flags (see mixer(1) for +more details), the following options are recognized.

+
    +
  • -h, --help

    +

    Display subcommand help information and exit.

    +
  • +
+
+
+

SUBCOMMANDS

+

update

+
+

Increment the mix version to generate a new release. By default the mix +version is incremented by 10, following Clear Linux conventions to leave +room for intermediate versions if necessary. The increment can be configured +with the –increment flag. The update command also allows the user to +update the upstream version.

+

In addition to the global options mixer versions update takes the +following options.

+
    +
  • --clear-version {version}

    +

    Alias to –upstream-version

    +
  • +
  • -c, --config {path}

    +

    Supply the path to the configuration file to use.

    +
  • +
  • --increment {number}

    +

    Amount to increment the current mix version (default is 10).

    +
  • +
  • --mix-version {version}

    +

    Set a specific mix version.

    +
  • +
  • --upstream-version {version}

    +

    Set a specific next upstream version (either version number or the default +“latest” string).

    +
  • +
  • --skip-format-check

    +

    Skip check for compatible upstream format when changing upstream version.

    +

    This command will not update to an upstream version of a different format +(“format bumps”). At the moment this needs to be handled manually.

    +
  • +
+
+
+
+

EXIT STATUS

+

On success, 0 is returned. A non-zero return code indicates a failure.

+
+

SEE ALSO

+ +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/os-core.7.html b/reference/manpages/os-core.7.html new file mode 100644 index 000000000..7bd761c0b --- /dev/null +++ b/reference/manpages/os-core.7.html @@ -0,0 +1,1251 @@ + + + + + + + + + + os-core — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

os-core

+
+

Base files for Clear Linux OS for Intel Architecture

+
+
Copyright:
+

(C) 2017 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

7

+
+
+
+

SYNOPSIS

+
    +
  • init

  • +
  • root filesystem

  • +
  • shell

  • +
+
+
+

DESCRIPTION

+

os-core provides a minimal base for the Clear Linux OS for Intel +Architecture. It contains required utilities for running the init +program systemd, letting users log in and run bash shell commands. The +core also contains pieces of packages that are required to run any +other package in the distribution.

+

This is the only required bundle for Clear Linux OS and can not be +removed as all other bundles depend upon it.

+
+
+

SEE ALSO

+

https://clearlinux.org/documentation/

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/os-format.7.html b/reference/manpages/os-format.7.html new file mode 100644 index 000000000..d43d2bd45 --- /dev/null +++ b/reference/manpages/os-format.7.html @@ -0,0 +1,1268 @@ + + + + + + + + + + OS Format — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

OS Format

+
+

A summary of OS formats in Clear Linux

+
+
Copyright:
+

(C) 2018 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

7

+
+
+
+

SYNOPSIS

+

/usr/share/defaults/swupd/format

+
+
+

DESCRIPTION

+

A format defines a range of OS versions that have compatible update metadata and +content. An update client can update a system from the oldest version in the +format to the latest version in the format without worrying about compatibility +issues in the update content for the version it is updating to.

+

A format bump occurs when the update metadata or content is changed in such a +way that will cause client updates to break. In this case the format number must +be incremented so clients will not attempt to update to the new versions in the +new format without crossing the format boundary. Update clients update only to +the latest build in their format. Once that update is complete the update client +may then update forward again because the last version in the current format has +identical content to the first version in the new format, including the new +update client needed to understand the new format.

+

Because the update system in Clear Linux (swupd) has auto-update turned on +by default most users will never be aware of their system changing to a new +format. Those users who have disabled auto-update may occasionally see swupd +perform two updates in a row when they only invoked swupd update once. This +is because swupd detects when it crossed a format boundary and immediately +re-executes an update to carry it to the latest version in the new format. This +re-execution will actually invoke the new version of swupd that was +delivered in the first update.

+

Format bumps are simply a way for Clear Linux to introduce breaking changes to +the OS without breaking user’s update stream or workflow.

+
+
+

SEE ALSO

+ +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/stateless.7.html b/reference/manpages/stateless.7.html new file mode 100644 index 000000000..1d513ebfb --- /dev/null +++ b/reference/manpages/stateless.7.html @@ -0,0 +1,1491 @@ + + + + + + + + + + stateless — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

stateless

+
+

A guide to stateless configuration in Clear Linux OS for Intel Architecture

+
+
Copyright:
+

(C) 2017 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

7

+
+
+
+

SYNOPSIS

+

/etc/

+

/usr/share/defaults/

+

/usr/share/defaults/etc/

+

/var/

+

/var/cache/

+

/usr/local/

+

/usr/src/

+

/usr/lib/kernel/

+

/usr/lib/modules/

+
+
+

DESCRIPTION

+

The Clear Linux OS for Intel Architecture has a unique way of +providing customization and configuration to system administrators and +users. This man page aims to provide both an explanation of what this +method is and how users of Clear Linux can use it and benefit from it.

+

The goal of “stateless” is to provide a system OS that functions +without user configuration. A system should not require editing of +configuration files by the end user before it is functional, nor should +it place lengthy and confusing configuration files automatically in +user-maintained file system areas (/etc/) by default. And +additionally, any configuration placed in user-maintained configuration +should be removable without breaking functionality.

+

This is achieved by several methods, each of which implements a part +of the stateless goal.

+
    +
  • Removal of configuration files

  • +
+

The first step taken to achieve stateless configuration is to embed +proper default configuration values in the software. Any missing +critical configuration value should have a built-in default value.

+
    +
  • Providing of default configuration files outside of /etc/

  • +
+

Software is adjusted to use a distribution provided default +configuration file in /usr/share/defaults. If no configuration +file exists in /etc/ for the software, the software must use the +distribution default configuration file.

+
    +
  • Allowing the end user to provide configuration in /etc/

  • +
+

If the user provides a properly formatted configuration file in +the /etc/ filesystem area (or, wherever it is relevant for the +software), the software is instructed to use this configuration +file instead of any other.

+
+

Consequences for the system administrator (user)

+

The user should create configuration files as needed and avoid +modifying distribution provided defaults. The filesystem folders and +all content under /etc/ and /var/ may be modified as needed, but +the content under /usr/, /lib/, /lib64/, /bin/, /sbin/ should +never be modified, and will be overwritten by swupd(1) as needed.

+

Some default configuration structure and data is automatically created +under /etc/ and /var/. The user may remove these file system +structures entirely - a reboot of the OS should properly restore the +system to its factory default. This may also provide the user with +a way to repair a defective system configuration.

+

The user should, if user configuration of a service is needed, +attempt to place the configuration file in the /etc/ structure as +the service requests. Often, template files for the configuration +format can be found under the /usr/share/defaults/ file structure, +and these files can be copied to the /etc/ file structure.

+

To modify system service configuration (systemd(1) service units), +the user should not touch or modify unit files under the /usr/ +file structure directly, as changes in those files will be lost after +a system software update with swupd(1).

+

A list of package specific hints and best practices is listed below. In +many cases, the man pages for the respective packages also provides +detailed information as to how to configure the software. Please +consult the relevant manual pages for the software to find information +on the specific syntax and options for each software.

+
+
+

Where can I install system-wide files then?

+

swupd(1) has a list of exempted locations where the system +administrator can place files that will not get overwritten or removed +at all. The default whitelisted directories are:

+
+

/usr/lib/modules +/usr/lib/kernel +/usr/local +/usr/src

+
+

Using these locations for your own software is highly recommended. Not +only do these locations provide a standard FHS compliant way of adding +local software, they are sufficiently separated from OS software that +maintaining them will be much more simple.

+
+
+

ldconfig

+
+

ldconfig(8)

+
+

The default paths that the linker searches includes only /usr/lib64 +and paths below that. This explicitly omits /usr/local/. If you +compile libraries manually and install them in other paths, you may +need to configure the ld.so(8) linker to find these before you run +ldconfig. For example:

+
+

echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf

+

sudo ldconfig

+
+
+
+

systemd

+
+

systemd(1)

+
+

Unit files can be created under /etc/systemd/system as needed and +function normally. To override unit file options, the simplest method +is to have systemctl(1) copy it for you by invoking it as:

+
+

systemctl edit --full foo.service

+
+

This creates an exact copy of the default unit file and invokes the +editor for the user, allowing the user to override any part of the unit.

+

Unit files can be started as normal with systemctl start <unit>.

+

To enable services to start at boot time, use systemctl enable <unit>.

+
+
+

sshd

+
+

sshd(8) +sshd_config(5)

+
+

The SSH daemon has all of its configuration built in and no template +configuration file is present on the file system. The man page for +sshd_config(5) explains the format, and it suffices to put only a +single option in the file

+
+

/etc/ssh/sshd_config

+
+

For example, to enable X11 forwarding through sshd all one has to do is +add one line containing X11Forwarding yes. Other often used options +include PermitRootLogin yes to allow root ssh login access, and the +following 3 lines to disable password authentication entirely:

+
+

ChallengeResponseAuthentication no

+

PasswordAuthentication no

+

UsePAM no

+
+

To modify the listening port of sshd, one needs to determine whether +sshd.socket or sshd.service is enabled first, since the methods +for changing the port number depend on whether sshd(8) is controlling +the port number, or whether systemd(1) is:

+
+

systemctl is-enabled sshd.socket

+
+

If enabled, the sshd.socket unit should be edited to modify the port:

+
+

systemctl edit --full sshd.socket

+
+

And, the user should modify the port number at ListenStream= to the +desired new port number.

+

If sshd.service is enabled, the user should create, and edit a new +/etc/ssh/sshd_config file:

+
+

mkdir -p /etc/ssh/ +vi /etc/ssh/sshd_config

+
+

And add a line in that file that reads:

+
+

Port 10022

+
+

to, for instance, change the port number sshd.service will listen on +to port 10022.

+

Root login over SSH is disabled by default and should remain disabled +for most systemd. However, in some cases this is acceptable and it can +be easily enabled by adding the following line to /etc/ssh/sshd_config +that reads:

+
+

PermitRootLogin yes

+
+
+
+

nginx

+

Nginx ships by default in a non-functional configuration. However, +an example configuration file is present that can be used to enable +a simple server. To use this template configuration, create:

+
+

mkdir -p /etc/nginx/conf.d

+
+

And then copy configuration templates over to this folder:

+
+

cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf +cp /usr/share/nginx/conf/server.conf.example /etc/nginx/conf.d/server.conf

+
+

Edit the file to assure options such as SSL and PHP are enabled in +the preferred method. In the default configuration, PHP is enabled +to run listening to /run/php-fpm.sock. The template file has PHP +by default disabled, but the listed example lines can be uncommented +to make the nginx service process php documents.

+
+
+

php-fpm

+
+

php-fpm(8)

+
+

Php’s default configuration file doesn’t allow us to provide an +alternative as it is programmed to only read the builtin file. If you +wish to have php-fpm use a different configuration, you must pass it a +startup option to tell it where it is. This can be done by systemctl +edit --full php-fpm.service. That command copies the default php-fpm +service unit to /etc/systemd/system/ and allows the user to override +any option. It spawns an editor with the copy.

+

Then, the user should change the line:

+
+

ExecStart=/usr/sbin/php-fpm --nodaemonize

+
+

to:

+
+

ExecStart=/usr/sbin/php-fpm --nodaemonize --fpm-config /etc/php-fpm.conf

+
+

The template php-fpm.conf can be found at /usr/share/defaults/php/php-fpm.conf. +One should copy this to a place in /etc/:

+
+

cp /usr/share/defaults/php/php-fpm.conf /etc/php-fpm.conf

+
+

Then, the user should edit /etc/php-fpm.conf and assure that +configuration options are all properly set as needed.

+

Care must be taken using the default pool configuration. If needed, +the user should also create /etc/php-fpm.d/ and include pool +configuration files from either /usr/share/defaults/php/php-fpm.d/ or +copy them and modify them as needed as well, as well as adjust the +include configuration option in php-fpm.conf to point to a new +location for pool configuration files.

+
+
+

Network interface management

+

Clear Linux has switched the network interface management model to be fully +managed by NetworkManager when installed on real hardware. Previously, Ethernet +interfaces were managed by systemd-networkd whereas Wi-Fi and others were +managed by NetworkManager. Clear Linux cloud images continue to use +systemd-networkd.

+

When updating from previous versions of Clear Linux, the installation will be +reconfigured to continue with systemd-networkd managing the Ethernet interfaces. +Since the connectivity could be lost during the procedure, physical access to the +system is required. To switch to NetworkManager for all the interfaces, the +user should disable and stop systemd-networkd:

+
+

sudo systemctl disable systemd-networkd +sudo systemctl stop systemd-networkd

+
+

Then, remove the file /etc/NetworkManager/conf.d/systemd-networkd-unmanaged.conf

+

Finally, restart NetworkManager

+
+

sudo systemctl restart NetworkManager

+
+
+
+
+

SEE ALSO

+ +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/swupd-update.service.4.html b/reference/manpages/swupd-update.service.4.html new file mode 100644 index 000000000..b8b28d1c7 --- /dev/null +++ b/reference/manpages/swupd-update.service.4.html @@ -0,0 +1,1252 @@ + + + + + + + + + + swupd-update.service — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

swupd-update.service

+
+

Performs an OS update

+
+
Copyright:
+

(C) 2017 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

4

+
+
+
+

SYNOPSIS

+

swupd-update.service

+

/usr/lib/systemd/system/swupd-update.service

+
+
+

DESCRIPTION

+

Instructs the systemd(1) system daemon how to start and control the +swupd service to perform an update.

+

When this unit runs, the output will be sent to the systemd journal, and +it can be inspected with the journalctl(1) command.

+

The user can disable all background updates (either started through +timers or not) by executing the following command:

+

systemctl mask swupd-update.service

+
+
+

ENVIRONMENT

+

This unit is a systemd(1) unit file.

+
+
+

SEE ALSO

+

swupd(1), swupd-update.timer(4)

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/swupd-update.timer.4.html b/reference/manpages/swupd-update.timer.4.html new file mode 100644 index 000000000..2455e9b66 --- /dev/null +++ b/reference/manpages/swupd-update.timer.4.html @@ -0,0 +1,1249 @@ + + + + + + + + + + swupd-update.timer — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

swupd-update.timer

+
+

Schedules periodical updates

+
+
Copyright:
+

(C) 2017 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

4

+
+
+
+

SYNOPSIS

+

swupd-update.timer

+

/usr/lib/systemd/system/swupd-update.timer

+
+
+

DESCRIPTION

+

Instructs the systemd(1) system daemon when to periodically start a +system software update. The update itself may not execute if the +swupd-update.service(4) is disabled. See that manual page for +information on how to disable that unit.

+
+
+

ENVIRONMENT

+

This unit is a systemd(1) unit file.

+
+
+

SEE ALSO

+

swupd(1), swupd-update.service(4)

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/swupd.1.html b/reference/manpages/swupd.1.html new file mode 100644 index 000000000..84028629e --- /dev/null +++ b/reference/manpages/swupd.1.html @@ -0,0 +1,2102 @@ + + + + + + + + + + swupd — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

swupd

+
+

OS software update program

+
+
Copyright:
+

(C) 2020 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

swupd [subcommand] <flags>

+
+
+

DESCRIPTION

+

swupd(1) is an OS-level software update program that applies updates +to system software.

+

The updates are fetched from a central software update server. If a +valid update is found on the server, it can be downloaded and applied.

+

The swupd tool can also install and remove bundles, check for +updates without applying them, perform system-level diagnose of +the system software, and install an OS.

+

A version url server provides version information. This server +notifies the program of available updates.

+

A content url server (can be the same as version url server) +provides the file and metadata content for all versions. The content url +server provides metadata in the form of manifests. These Manifest files +list and describe file contents, symlinks, directories. Additionally, +the actual content is provided to clients in the form of archive files.

+

swupd consumes update artifacts generated by mixer in the specific +format the installed version of swupd understands. For more information +about how these artifacts are generated see mixer(1) and os-format(7).

+

The swupd tool can also manage 3rd-party content, this allows users to +install, remove, and update bundles from 3rd-party repositories.

+
+
+

OPTIONS

+

The following options are applicable to most subcommands, and can be +used to modify the core behavior and resources that swupd uses.

+
+
-h, --help
+

Display general help information. If put after a subcommand, it +will display help specific to that subcommand.

+
+
-v, --version
+

Displays the version information of the swupd program, and exit. +It also displays compile options and copyright information.

+
+
-p <path>, --path=<path>
+

Optionally set the top-level directory for the +swupd-managed system. This can be used to point to a chroot installation +of the OS or a custom mount. If not specified this will default to /.

+
+
-u <url>, --url=<url>
+

Specify an RFC-3986 encoded url. The url will be used to +download version information and file content downloads.

+
+
-P <port>, --port=<port>
+

Specify the port number of the server to connect to. +Applies to both version and file content url server connections.

+
+
-c <url>, --contenturl=<url>
+

Specify an RFC-3986 encoded url. The url will be +used for file content downloads only.

+
+
-v <url>, --versionurl=<url>
+

Specify an RFC-3986 encoded url. The url will be +used to download version information.

+
+
-F <formatstring>, --format=<formatstring>
+

Specify the format suffix for +version file downloads. Is usually one of 1, 2, 3, etc. or +staging. Software update formats may change regularly and normally +you should consult the swupd server data for the appropriate latest +version available. If that version is not supported by your version of +swupd, you should subtract 1 from the number and try again until +it succeeds.

+
+
-S <path>, --statedir=<path>
+

Specify an alternate path for swupd cache and data directory. +Normally swupd uses /var/lib/swupd.

+
+
-K <path>, --cachedir=<path>
+

Specify an alternate swupd cache directory. +Normally swupd uses /var/lib/swupd.

+
+
-Z <path>, --datadir=<path>
+

Specify an alternate swupd data directory. +Normally swupd uses /var/lib/swupd.

+
+
-C <path>, --certpath=<cert>
+

Specify alternate path to swupd certificate store (pem file). +Default is /usr/share/clear/update-ca/Swupd_Root.pem

+
+
-W <n>, --max-parallel-downloads=<n>
+

Set the maximum number of parallel downloads.

+
+
-r <n>, --max-retries=<n>
+

Maximum number of retries for download failures.

+
+
-d <n>, --retry-delay=<n>
+

Initial delay in seconds between download retries, this will +be doubled for each retry until the download succeeds or the maximum +number of retries has been reached.

+
+
-n, --nosigcheck
+

Do not attempt to enforce certificate or signature checking.

+
+
-n, --nosigcheck-latest
+

Do not attempt to enforce signature checking when +retrieving the latest version number.

+
+
-I, --ignore-time
+

Ignore system/certificate time when validating signature.

+
+
-t, --time
+

Show verbose time output for swupd operations.

+
+
-N, --no-scripts
+

Do not run the post-update scripts and boot update tool.

+
+
-b, --no-boot-update
+

Do not update the boot files using clr-boot-manager.

+
+
-j, --json-output
+

Prints the swupd output as a machine readable JSON stream.

+
+
-y, --yes
+

Assume yes as answer to all prompts and run non-interactively.

+
+
--allow-insecure-http
+

For security reasons, swupd only allows system updates +using secure https connections by default. This option forces swupd +to allow updates over insecure http connections.

+

Warning: although it is not recommended, if an http server is +set up as the upstream server, the allow_insecure_http=true option will +need to be setup in the swupd configuration file for the autoupdate +command to continue to work.

+
+
--quiet
+

Sets swupd to print a minimal and more stable output that is easier +to parse for its commands. Only the most relevant information and errors +are printed out. +Output displayed when using this option is rarely going to change, so +this is a good option to use when writing scripts that use swupd.

+
+
--verbose
+

Enable verbosity for commands.

+
+
--debug
+

Print extra information to help debugging problems.

+
+
--no-progress
+

Don’t print progress report on commands that informs the +percentage left in current operation.

+
+
--wait-for-scripts
+

Wait for the post-update scripts to complete.

+
+
--assume=<yes|no>
+

Sets an automatic response to all prompts and run +non-interactively.

+
+
+
+
+

SUBCOMMANDS

+
+

info

+
+

Shows the current OS version and the URLs used for updates.

+
+
+
+

autoupdate

+
+

Enables or disables automatic updates, or reports current +status. Enabling updates does not cause an immediate update - +use swupd update to force one if desired.

+
+
+
--enable
+

Enable autoupdates

+
+
--disable
+

Disable autoupdates

+
+
+
+
+

check-update

+
+

Checks whether an update is available and prints out the information +if so. Does not download update content.

+
+
+
+

update

+
+

Performs a system software update.

+

The program will contact the version server at the version url, and +check to see if a system software update is available. If an update +is available, the update content will be downloaded from the content +url and stored in the /var/lib/swupd state path. Once all content +is downloaded and verified, the update is applied to the system.

+

In case any problem arises during a software update, the program +attempts to correct the issue, possibly by performing a swupd repair +operation, which corrects broken or missing files and other issues.

+

After the update is applied, the system performs an array of +post-update actions. These actions are triggered through systemd(1) +and reside in the update-triggers.target(4) system target.

+
+
+
-V <version>, --version=<version>
+

Update to a specific version, also accepts ‘latest’ (default).

+
+
-s, --status
+

Do not perform an update, instead display whether an update is +available on the version url server, and what version number is +available. This is the same as running swupd check-update.

+
+
-k, --keepcache
+

Do not delete the swupd state directory content after +updating the system.

+
+
--download
+

Do not perform an update, instead download all resources needed +to perform the update, and exit.

+
+
--update-search-file-index
+

Update the index used by search-file to speed up +searches. Don’t enable this if you have download or space restrictions.

+
+
--3rd-party
+

If update is successfull, also update content from 3rd-party +repositories.

+
+
+
+
+

bundle-add <bundles>

+
+

Installs new software bundles. Any bundle name listed after bundle-add +will be installed in the system. A list of all existing bundles can be +displayed with the bundle-list --all command.

+

The names can also be aliases that are not actual bundles names but instead +are names in an alias configuration file. See swupd-alias(7)

+
+
+
--skip-optional
+

Do not install optional bundles (also-add flag in +Manifests). +A bundle may include other bundles that will also get installed +when installing the bundle that includes them. This included bundles +can be either optional, or mandatory. Optional bundles can be skipped +at install time by using this option.

+
+
--skip-diskspace-check
+

Skip checking for available disk space before installing +a bundle. +By default, swupd attempts to determine if there is enough free +disk space to add the passed in bundle before attempting to install. +The current implementation will check free space in /usr/ by default, +or it will check the passed in –path option with /usr/ appended.

+
+
+
+
+

bundle-remove <bundles>

+
+

Removes software bundles. Any bundle name listed after bundle-remove +will be removed from the system. If the bundle is required by another +bundle(s) on the system, a tree will be displayed to indicate which bundles +are blocking removal.

+
+
+
-x, --force
+

Removes a bundle along with all the bundles that depend on it.

+

Warning: This operation is dangerous and must be used with care since +it can remove many unexpected bundles.

+
+
+
+
-R, –recursive Removes a bundle and its dependencies recursively, except for

bundle os-core.

+

Warning: This operation is dangerous and must be used with care since +it can remove many unexpected bundles.

+
+
+
+
--orphans
+

Removes all orphaned bundles. Orphan bundles are those that are no +longer required by any of the tracked bundles.

+

Warning: This operation is dangerous and must be used with care since +it can remove many unexpected bundles.

+
+
+
+
+

bundle-list

+
+

List all installed software bundles in the local system. Available bundles +can be listed with the --all option.

+
+
+
-a, --all
+

Lists all available software bundles, either installed or not, that +are available.

+
+
-D <bundle>, --has-dep=<bundle>
+

Displays a list of all bundles which include +the passed BUNDLE as a dependency. Combine with --all to report all +bundles including those not installed on the system. Combine with +--verbose to show a tree of those bundles.

+
+
--status
+

Show the installation status of the listed bundles. Bundles +installation status can be; “explicitly installed”, meaning that they +were specifically requested to be installed by the user, or they can be +“implicitly installed”, meaning they were installed as a dependency of +another explicitly installed bundle.

+
+
--deps=<bundle>
+

Lists all bundle dependencies of the passed BUNDLE, +including recursively included bundles.

+
+
--orphans
+

List orphaned bundles. Orphan bundles are those that are installed +but no longer required by any tracked bundle.

+
+
+
+
+

bundle-info

+
+

Display detailed information about a bundle.

+
+
+
-V <version>, --version=<version>
+

Show the bundle info for the specified +version, it also accepts ‘latest’.i It defaults to the current version +if no version is specified.

+
+
--dependencies
+

Show the bundle’s direct and indirect dependencies as well as if +they are optional or mandatory dependencies. Direct dependencies are +those that are specifically included by the bundle in question, while +indirect dependencies are those that are included by the bundles that +are a direct dependency of the bundle in question.

+
+
--files
+

Show the files directly included in this bundle, in other words it +shows the files included in the bundle’s manifest. If this option is used +along with the --dependencies option, all files installed by the +bundle are listed, including those files installed by the dependencies +of the bundle.

+
+
+
+ +
+

search-file <string>

+
+

Search for matching paths in manifest data. The specified {string} +is matched in any part of the path listed in manifests, and all +matches are printed, including the name of the bundle in which the +match was found.

+

If manifest data is not present in the state folder, it is +downloaded from the content url.

+

Because this search consults all manifests, it normally requires to +download all manifests for bundles that are not installed, and may +result in the download of several mega bytes of manifest data.

+
+
+
-V <version>, --version=<version>
+

Search for a match of the given file in the +specified version version.

+
+
-l, --library
+

Restrict search to designated dynamic shared library paths.

+
+
-B, --binary
+

Restrict search to designated program binary paths.

+
+
-T <num_results>, --top=<num_results>
+

Only display the top specified number of +results for each bundle.

+
+
-m, --csv
+

Output the search results in a machine readable CSV format.

+
+
-i, --init
+

Just perform the collection and download of all required manifest +resources needed to perform the search, then exit.

+
+
-o <order>, --order=<order>
+

Sort the output in one of two ways:

+
    +
  • Use ‘alpha’ to order alphabetically (default)

  • +
  • Use ‘size’ to order by bundle size (smaller to larger)

  • +
+
+
+
+
+

diagnose

+
+

Perform system software installation verification. The program will +obtain all the manifests needed from version url and content url to +establish whether the system software is correctly installed and not +overwritten, modified, missing or otherwise incorrect (permissions, etc.).

+

After obtaining the proper resources, all files that are under +control of the software update program are verified according to the +manifest data

+
+
+
-V <version>, --version=<version>
+

Diagnose against the specified manifest VERSION.

+
+
-x, --force
+

Attempt to proceed even if non-critical errors found.

+
+
-q, --quick
+

Omit checking hash values. Instead only looks for missing files +and directories and/or symlinks.

+
+
-B <bundles>, --bundles=<bundles>
+

Forces swupd to only diagnose the (comma separated) list of bundles provided.

+

Examples:

+
+
    +
  • --bundles xterm,vim

    +
    +

    Diagnoses only bundles xterm and vim.

    +
    +
  • +
+
+
+
-Y, --picky
+

Also list files which should not exist. Only files listed in the +manifests should exist. By default swupd only looks for these +files at /usr, this path can be changed using --picky-tree. +Some paths at /usr are skipped by default: +/usr/lib/modules, /usr/lib/kernel, /usr/local +and /usr/src. These paths can be changed using +--picky-whitelist.

+
+
-X <path>, --picky-tree=<path>
+

Changes the path where --picky and +--extra-files-only looks for extra files. To be specified as +absolute PATH. +The default path is /usr.

+
+
-w <regex>, --picky-whitelist=<regex>
+

Any path matching the POSIX extended regular expression regex is ignored by --picky. The given expression is always +wrapped in ^( and )$ and thus has to match the entire path. +Matched directories get skipped completely.

+

The default is to ignore /usr/lib/kernel, +/usr/lib/modules, /usr/src and /usr/local.

+

Examples:

+
+
    +
  • /var|/etc/machine-id

    +
    +

    Ignores /var or /etc/machine-id, regardless of +whether they are directories or something else. In the +usual case that /var is a directory, also everything +inside it is ignored because the directory gets skipped +while scanning the directory tree.

    +
    +
  • +
  • empty string or ^$

    +
    +

    Matches nothing, because paths are never empty.

    +
    +
  • +
+
+
+
--extra-files-only
+

Like --picky, but it only looks for extra files. +It omits checking hash values, and for missing files, directories and/or +symlinks.

+
+
--file
+

Forces swupd to only diagnose the specified file or directory +(recursively).

+
+
+
+
+

repair

+
+

Correct any issues found. This will overwrite incorrect file content, +add missing files and do additional corrections, permissions, etc.

+
+
+
-V <version>, --version=<version>
+

Repair against the specified manifest +version.

+
+
-x, --force
+

Attempt to proceed even if non-critical errors found.

+
+
-q, --quick
+

Omit repairing corrupt files. Instead only add missing files +and directories and/or symlinks.

+
+
-B <bundles>, --bundles=<bundles>
+

Forces swupd to only repair the (comma separated) list +of bundles provided.

+

Examples:

+
+
    +
  • --bundles xterm,vim

    +
    +

    Repairs only bundles xterm and vim.

    +
    +
  • +
+
+
+
-Y, --picky
+

Also removes files which should not exist. Only files listed +in the manifests should exist. By default swupd only looks for these +files at /usr, this path can be changed using --picky-tree. +Some paths at /usr are skipped by default: +/usr/lib/modules, /usr/lib/kernel, /usr/local +and /usr/src. These paths can be changed using +--picky-whitelist.

+
+
-X <path>, --picky-tree=<path>
+

Changes the path where --picky and +--extra-files-only looks for extra files. To be specified as +absolute PATH. The default path is /usr.

+
+
-w <regex>, --picky-whitelist=<regex>
+

Any path matching the POSIX extended regular +expression regex is ignored by --picky. The given expression is +always wrapped in ^( and )$ and thus has to match the entire +path. Matched directories get skipped completely.

+

The default is to ignore /usr/lib/kernel, +/usr/lib/modules, /usr/src and /usr/local.

+

Examples:

+
+
    +
  • /var|/etc/machine-id

    +
    +

    Ignores /var or /etc/machine-id, regardless of +whether they are directories or something else. In the +usual case that /var is a directory, also everything +inside it is ignored because the directory gets skipped +while scanning the directory tree.

    +
    +
  • +
  • empty string or ^$

    +
    +

    Matches nothing, because paths are never empty.

    +
    +
  • +
+
+
+
--extra-files-only
+

Like --picky, but it only removes extra files. It omits +repairing corrupt files, and adding missing files, directories and/or +symlinks.

+
+
--file
+

Forces swupd to only repair the specified file or directory +(recursively).

+
+
+
+
+

os-install

+
+

Perform system software installation in the specified location. Install +all files into {path} as specified by the swupd os-install {path} +option. Useful to generate a new system root. The only bundle that will +be installed by default is os-core unless more bundles are specified +with the --bundles option.

+
+
+
-V <version>, --version=<version>
+

Install the specified version of the OS.

+
+
-x, --force
+

Attempt to proceed even if non-critical errors found.

+
+
-B <bundles>, --bundles=<bundles>
+

Include the (comma separated) list of +bundles with the base OS install.

+

Examples:

+
+
    +
  • --bundles xterm,vim

    +
    +

    Installs bundles xterm and vim, along with os-core +(installed by default).

    +
    +
  • +
+
+
+
-s <path>, --statedir-cache=<path>
+

After checking for content in the +statedir, check the statedir-cache before downloading it over the +network.

+
+
--download
+

Do not perform an install, instead download all resources +needed to perform the install, and exit.

+
+
--skip-optional
+

Do not install optional bundles (also-add flag in +Manifests). +A bundle may include other bundles that will also get installed +when installing the bundle that includes them. This included bundles +can be either optional, or mandatory. Optional bundles can be skipped +at install time by using this option.

+
+
+
+
+

mirror

+
+

Configure a mirror URL for swupd to use instead of the defaults on the +system or compiled into the swupd binary.

+
+
+
-s <url>, --set=<url>
+

Set the content and version URLs to URL by adding +configuration files to <path>/etc/swupd/mirror_contenturl and +<path>/etc/swupd/mirror_versionurl

+
+
-U, --unset
+

Remove the content and version URL configuration by removing +<path>/etc/swupd

+
+
+
+
+

clean

+
+

Removes files cached by swupd.

+

Note that removing these files may cause swupd to perform slower the next time +it is used since it may need to download some files from the update server +again.

+
+
+
--all
+
+
Removes all the content including recent metadata.
+
+
+
--dry-run
+

Just prints files that would be removed.

+
+
+
+
+

hashdump

+
+

Calculates and print the Manifest hash for a specific file on disk.

+
+
+
-n, --no-xattrs
+

Ignore extended attributes when calculating hash.

+
+
-p <path>, --path=<path>
+

Specify the PATH to use for operations. This can be +used to point to a chroot installation of the OS or a custom mount.

+
+
+
+
+

3rd-party

+
+

Manages 3rd-party repositories and content installed from them. A 3rd-party +repository enables the distribution of user produced content.

+

The following subcommands are available to manage 3rd-party repositories:

+
    +
  • add

    +

    Adds a 3rd-party repository.

    +
    +
      +
    • force

    • +
    +

    Attempt to proceed with the removal of the repo even if non-critical +errors found.

    +
    +
  • +
  • remove

    +

    Removes a 3rd-party repository along with all the content installed +from it from the system.

    +
    +
      +
    • force

    • +
    +

    Attempt to proceed with the removal of the repo even if non-critical +errors found.

    +
    +
  • +
  • list

    +

    Lists the 3rd-party repositories available to the system. These +repositories must have been previously added using swupd 3rd-party add.

    +
  • +
+

Most of the swupd subcommands used for managing upstream content are +supported to manage 3rd-party content along with most of their options. +To use these subcommands for 3rd-party content, it is necessary to use the +3rd-party subcommand followed by the desired operation to be performed.

+

This is the syntax for 3rd-party operations to manage content:

+

$ swupd 3rd-party <subcommand> [option(s)]

+

Example:

+
+
    +
  • swupd 3rd-party bundle-add my_bundle

    +

    Looks for the 3rd-party bundle my_bundle among all the available +3rd-party repositories, and installs it in the system as long as +it is found in one, and only one, repository. If the bundle exists +in more than one 3rd-party repository, users are required to specify +the repository to install it from by using the --repo option.

    +

    There is no need to specify the 3rd-party repository if the bundle +name is unique among 3rd-party repositories, even if a bundle with +the same name exists in the upstream update server. Bundles from +3rd-party repositories are installed in a different location so they +don’t clash with upstream bundles.

    +
  • +
  • swupd 3rd-party update --repo my_repo

    +

    Performs a software update for content installed from the 3rd-party +repository my_repo. If no repository is specified, content from +all 3rd-party repositories is updated.

    +
  • +
+
+

All 3rd-party content is installed in the following location: +/opt/3rd-party/<bundle_name>/

+

The following subcommands are available to manage 3rd-party content:

+
    +
  • update

    +

    Update to latest version of a 3rd-party repository. +For information about the options for this command please refer to +the swupd update section.

    +
  • +
  • bundle-add

    +

    Installs a bundle from a 3rd-party repository. +For information about the options for this command please refer to +the swupd bundle-add section.

    +
  • +
  • bundle-remove

    +

    Remove a bundle from a 3rd-party repository. +For information about the options for this command please refer to +the swupd bundle-remove section.

    +
  • +
  • bundle-list

    +

    List bundles from a 3rd-party repository. +For information about the options for this command please refer to +the swupd bundle-list section.

    +
  • +
  • bundle-info

    +

    Display information about a bundle in a 3rd-party repository. +For information about the options for this command please refer to +the swupd bundle-info section.

    +
  • +
  • diagnose

    +

    Verify content from a 3rd-party repository. +For information about the options for this command please refer to +the swupd diagnose section.

    +
  • +
  • repair

    +

    Repair local issues relative to a 3rd-party repository. +For information about the options for this command please refer to +the swupd repair section.

    +
  • +
  • check-update

    +

    Check if a new version of a 3rd-party repository is available. +For information about the options for this command please refer to +the swupd check-update section.

    +
  • +
  • clean

    +

    Clean cached files of a 3rd-party repository. +For information about the options for this command please refer to +the swupd clean section.

    +
  • +
+
+
+
+
+

FILES

+

/usr/share/defaults/swupd

+
+

Sometimes a set of flags is always used for one, or many swupd commands. The +swupd configuration file provides a convenient way of persistently define +these flags so they don’t need to be specified every time a command is run.

+

The configuration file is an INI type of file that consists of sections, each led +by a [section] header, followed by key/value entries separated by a ‘=’ character. +Note that there should be no whitespace between key=value. The configuration +file may include comments, prefixed by either the ‘#’ or the ‘;’ characters.

+

There can be one section for each swupd command (e.g. [bundle-add], [update], etc.) +and one for global options (e.g. [GLOBAL]). Global options can be specified in the +either in the GLOBAL section, in a command section, or in both. Global options +specified in the command section have higher precedence than those specified in the +GLOBAL section, so it is possible to define a GLOBAL option that will apply to all +swupd command except for that one overwritten in the command section.

+

A sample swupd configuration file can be found at this location (this file should not +be modified): +/usr/share/defaults/swupd

+

To use it, copy it to /etc/swupd where swupd reads the configuration from.

+
+
+
+

EXIT STATUS

+

On success, 0 is returned. A non-zero return code signals a failure.

+

If the subcommand check-update was specified, the program returns +0 if an update is available, 1 if no update available, and a +return value higher than 1 signals a failure.

+

If the subcommand was autoupdate without options, then the program +returns 0 if automatic updating is enabled.

+

If the subcommand was diagnose, then the program returns 0 if the system +is consistent at the end of the process or 1 if there are invalid/missing +files in the system.

+

The non-zero return codes for other operations are listed here:

+

2 A required bundle was removed or was attempted to be removed

+
+
3 The specified bundle is invalid
+
4 Unable to download or read MoM manifest
+
5 Unable to delete a file
+
6 Unable to rename a directory
+
7 Unable to create a file
+
8 Unable to recursively load included manifests
+
9 Unable to obtain lock on state directory
+
10 Unable to rename a file
+
11 Unable to initialize curl agent
+
12 Initialization error
+
13 Bundle not tracked on system
+
14 Unable to load manifest into memory
+
15 Invalid command-line option
+
16 Unable to connect to update server
+
17 File download issue
+
18 Unable to untar a file
+
19 Unable to create required directory
+
20 Unable to determine current version of the OS
+
21 Unable to initialize signature verification
+
22 System time is off by a large margin
+
23 Pack download issue
+
24 Unable to verify server SSL certificate
+
25 There is not enough disk space left (or it cannot be determined)
+
26 The required path was not found in any manifest
+
27 Unexpected condition found
+
28 Unable to execute another program in a subprocess
+
29 Unable to list the content of a directory
+
30 An error occurred computing the hash of a file
+
31 Unable to get current system time
+
32 Unable to write a file
+
34 swupd ran out of memory
+
35 Unable to fix/replace/delete one or more files
+
36 Unable to execute binary, is either missing or invalid
+
37 Invalid 3rd-party repository (not found)
+
38 File is missing or invalid
+
+
+
+

SEE ALSO

+ + +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/tallow.1.html b/reference/manpages/tallow.1.html new file mode 100644 index 000000000..fbf5925af --- /dev/null +++ b/reference/manpages/tallow.1.html @@ -0,0 +1,1269 @@ + + + + + + + + + + tallow — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

tallow

+

Reduce log clutter due to ssh login attempts.

+
+

SYNOPSIS

+

/usr/sbin/tallow

+
+
+

DESCRIPTION

+

tallow is a daemon that watches the systemd journal for messages +from the sshd service. It parses the messages and looks for +attempted random logins such as failed logins to the root account and +failed logins to invalid user accounts, and various other obviously +malicious login attempts that try things as forcing old protocols, or +weak key systems.

+

If such logins were detected, the offending IP address is stored in a +list. Items from this list are regularly purged, but if the amount of +times that a specific IP address is seen exceeds a threshold, an +ipset(1) entry is inserted in the tallow or tallow6 ipset, and +further packets from that ip address will be blocked by an +iptables(1) or ip6tables(1) rule that tallow creates at startup. +Additionally, certain types of login failure will trigger a short term +ban of further packets from the offending IP address immediately.

+

The system administrator needs to assure that the tallow and tallow6 +ipsets are left alone and that the inserted iptables rules are properly +matching on packets.

+

Care should be taken to assure that legitimate users are not blocked +inadvertently. You may wish to list any valid IP address with the +whitelist option in tallow.conf(5). Multiple addresses can be +whitelisted.

+
+
+

OPTIONS

+

The tallow daemon itself has no runtime configuration. All +configuration is done through the tallow.conf(5) config file.

+
+
+

SIGNALS

+

The USR1 signal causes tallow to print out it’s internal +tracking table of IP addresses. This requires that tallow is compiled +with the -DDEBUG=1 symbol passed to the compiler.

+
+
+

SEE ALSO

+

systemd-journald(1), iptables(1), ipset(1), tallow.conf(5), +tallow.patterns(5)

+
+
+

BUGS

+

tallow is NOT A SECURITY SOLUTION, nor does it protect against +random password logins. A attacker may still be able to logon to your +systems if you allow password logins.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/tallow.conf.5.html b/reference/manpages/tallow.conf.5.html new file mode 100644 index 000000000..cf7014689 --- /dev/null +++ b/reference/manpages/tallow.conf.5.html @@ -0,0 +1,1292 @@ + + + + + + + + + + tallow.conf — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

tallow.conf

+

The tallow configuration file

+
+

NAME

+

tallow.conf - Tallow daemon configuration file

+
+
+

SYNOPSIS

+

/etc/tallow.conf

+
+
+

DESCRIPTION

+

This file is read on startup by the tallow(1) daemon, and can be used to +provide options to the tallow daemon. If not present, tallow will +operate with built-in defaults.

+
+
+

OPTIONS

+

fwcmd_path=<string> Specifies the location of the ipset(1) +firewall-cmd(1) programs. By default, tallow will look in “/usr/sbin” +for them.

+

ipt_path=<string> Specifies the location of the ipset(1) +program and iptables(1) or ip6tables(1) programs. By default, tallow +will look in “/usr/sbin” for them.

+

expires=<int> The number of seconds that IP addresses are +blocked for. Note that due to the implementation, IP addresses may be +blocked for much longer than this period. If IP addresses are seen, but +not blocked within this period, they are also removed from the watch +list. Defaults to 3600s.

+

whitelist=<ip address|pattern> Specify an IP address or +pattern that should never be blocked. Multiple IP addresses can be +included by repeating the whitelist option several times. By +default, 127.0.0.1, 192.168., and 10. are whitelisted. If you create a +manual whitelist, you must include these entries if you want to continue +them to be whitelisted as well, otherwise they will be omitted from the +whitelist.

+

If the last character of the listed ip adress is a . or a :, +then the matching is only performed on the leftmost characters of an IP +address against the whitelist entry. For instance, if you whitelist +10. then all IP addresses in the 10/8 subnet mask will match +this whitelist entry and never be blocked.

+

ipv6=<0|1> Enable or disable ipv6 (ip6tables) support. Ipv6 +is disabled automatically on systems that do not appear to have ipv6 +support and enabled when ipv6 is present. Use this option to explicitly +disable ipv6 support if your system does not have ipv6 or is missing +ip6tables. Even with ipv6 disabled, tallow will track and log ipv6 +addresses.

+

nocreate=<0|1> Disable the creation of firewall rules and +ipset sets. By default, tallow will create new firewall-cmd(1) or +iptables(1) and ip6tables(1) rules when needed automatically. If set to +1, tallow(1) will not create any new firewall DROP rules or +ipset sets that are needed work. You should create them manually before +tallow starts up and remove them afterwards using the sets of commands +below.

+

Use the following commands if you’re using iptables(1):

+
ipset create tallow hash:ip family inet timeout 3600
+iptables -t filter -I INPUT 1 -m set --match-set tallow src -j DROP
+
+ipset create tallow6 hash:ip family inet6 timeout 3600
+ip6tables -t filter -I INPUT 1 -m set --match-set tallow6 src -j DROP
+
+
+

Use the following commands if you’re using firewalld(1):

+
firewall-cmd --permanent --new-ipset=tallow --type=hash:ip --family=inet --option=timeout=3600
+firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -m set --match-set tallow src -j DROP
+
+firewall-cmd --permanent --new-ipset=tallow6 --type=hash:ip --family=inet6 --option=timeout=3600
+firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 1 -m set --match-set tallow6 src -j DROP
+
+
+
+
+

SEE ALSO

+

tallow(1), tallow.patterns(5)

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/tallow.patterns.5.html b/reference/manpages/tallow.patterns.5.html new file mode 100644 index 000000000..2cada6a75 --- /dev/null +++ b/reference/manpages/tallow.patterns.5.html @@ -0,0 +1,1339 @@ + + + + + + + + + + tallow.patterns — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

tallow.patterns

+

Tallow pattern matching configuration files.

+
+

SYNOPSIS

+

tallow(1) uses regular expressions to match journal entries and extract +an IP address from them. JSON files are used to configure the patterns +and banning thresholds used by tallow(1).

+

/etc/tallow/*.json /usr/share/tallow/*.json

+
+
+

DESCRIPTION

+

tallow(1) uses regular expressions to match journal entries and extract +an IP address from them. JSON files are used to configure the patterns +and banning thresholds used by tallow(1). This adds the ability to +extend the patterns tallow(1) will recognize. Many JSON files can exist +for logical grouping. The tallow(1) daemon will read all JSON files in +the configuration directories at startup.

+

tallow(1) operates with default pattern definitions +in/usr/share/tallow/*.json. Users can add more patterns with their +own JSON files under /etc/tallow. The default JSON files can be +overridden by creating the same file under /etc/tallow.

+
+
+

FILE FORMAT

+

Pattern configuration files use the JavaScript Object Notation (JSON) +format.

+

The JSON must be two levels deep and all properties are required. The +root object is an array containing objects with a filter key and an +items key.

+
    +
  • filter is a string that defines a field for filtering the journal +file. This helps make sure patterns are only matched to a subset of +journal entries. See systemd.journal-fields(7) for valid journal +fields.

  • +
  • items is an array of objects that contains three elements: +ban, score, and pattern.

    +
      +
    • ban is an integer that defines the number of seconds to ban +originating IP for. If this value is > 0, the IP address get +banned immediately when a journal entry matches pattern.

    • +
    • score is a double that defines a value to add to the +accumulated “score” of an originating IP address each time a +journal entry matches the pattern. If the combined score is > +1.0, tallow bans the originating IP for the default time of 1 +hour. The ban element value above is not used for bans made +due to score.

    • +
    • pattern is a string that defines a Perl Compatible Regular +Expressions (PCRE) to match against the filtered journal entries. +The PCRE should extract exactly one substring: the originating IP +address for tallow(1). See systemd.journal-fields(7) for valid +journal fields.

    • +
    +
  • +
+
+
+

EXAMPLES

+
    +
  1. The JSON below is a snippet from one of the default pattern +configuration files for blocking certain failed sshd connections.

    +

    The first pattern will ban an IP address after it fails to login 6 +times causing it to reach a total score > 1.0.

    +

    The second pattern will ban an IP address for 10 seconds every time a +login is attempted with an invalid user. Additionally, it will ban +the IP address for 1 hour if it attempts to login with an invalid +user 6 times causing it to reach a total score > 1.0.

    +

    See the /usr/share/tallow/sshd.json file for more sshd +examples.

    +
    [
    +  {
    +    "filter": "SYSLOG_IDENTIFIER=sshd",
    +    "items": [
    +      {
    +        "ban": 0,
    +        "score": 0.2,
    +        "pattern": "MESSAGE=Failed .* for .* from ([0-9a-z:.]+) port \\d+ ssh2"
    +      },
    +      {
    +        "ban": 10,
    +        "score": 0.2,
    +        "pattern": "MESSAGE=Invalid user .* from ([0-9a-z:.]+) port \\d+"
    +      }
    +    ]
    +  }
    +]
    +
    +
    +
  2. +
  3. The JSON below defines a pattern for blocking connections based on +error logs from nginx-mainline if placed in a +/etc/tallow/nginx-mainline.json file.

    +

    The pattern will ban an IP address for 15 seconds every time it +attempts to access a script that does not exist. Additionally, it +will ban the IP address for 1 hour if it attempts to access invalid +scripts 4 times causing it to reach a total score > 1.0.

    +
    [
    +  {
    +    "filter": "SYSLOG_IDENTIFIER=nginx-mainline",
    +    "items": [
    +      {
    +        "ban": 15,
    +        "score": 0.3,
    +        "pattern": ".Primary script unknown. while reading response header from upstream, client: ([0-9a-z:.]+),"
    +      }
    +    ]
    +  }
    +]
    +
    +
    +
  4. +
+
+
+

SEE ALSO

+

tallow(1), tallow.conf(5)

+
+
+

BUGS

+

tallow is NOT A SECURITY SOLUTION, nor does it protect against +random password logins. An attacker may still be able to logon to your +systems if you allow password logins.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/telem-record-gen.1.html b/reference/manpages/telem-record-gen.1.html new file mode 100644 index 000000000..4c6787d2d --- /dev/null +++ b/reference/manpages/telem-record-gen.1.html @@ -0,0 +1,1285 @@ + + + + + + + + + + telem-record-gen — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

telem-record-gen

+
+

Create custom telemetry record

+
+
Copyright:
+

(C) 2017 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

telem-record-gen <options>

+
+
+

DESCRIPTION

+

Generate and attempt to send a telemetry record to telemprobd(1). This +program can be used to create a telemetry record from a shell script +or from another program using e.g. system(). The program connects +to a local telemprobd(1) daemon to spool the record for delivery to +the actual collection service.

+

The payload can be provided as standard input, as a file with the +--payload-file option, or as a string argument with the --payload +option. If neither the --payload or --payload-file is provided, +the payload is assumed to be on <stdin>.

+

Each record is expected to have a class identifier, a record version +number, and a severity level. A class identifier is required to be +provided.

+
+
+

OPTIONS

+
+
    +
  • -h, --help: +Show help options.

  • +
  • -V, --version: +Print the program version.

  • +
  • -f, --config-file <file>: +Path to configuration file (not implemented yet).

  • +
  • -s, --severity: +Severity level (1-4) - (default 1).

  • +
  • -c, --class: +Classification level_1/level_2/level_3.

  • +
  • -p, --payload <payload>: +Record body (max size = 8k).

  • +
  • -P, --payload-file <file>: +File to read payload from.

  • +
  • -R, --record-version <version>: +Version number for format of payload (default 1).

  • +
  • -e, --event-id <version>: +Event id to use in the record. If not provided a randomly generated id will be assigned to record.

  • +
+
+
+
+

RETURN VALUES

+

0 on success. A non-zero exit code indicates a failure occurred.

+
+
+

SEE ALSO

+ +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/telemctl.1.html b/reference/manpages/telemctl.1.html new file mode 100644 index 000000000..92dc53b49 --- /dev/null +++ b/reference/manpages/telemctl.1.html @@ -0,0 +1,1269 @@ + + + + + + + + + + telemctl — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

telemctl

+
+

Telemetry service administration tool

+
+
Copyright:
+

(C) 2017 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

telemctl

+

/etc/telemetrics/opt-in

+
+
+

DESCRIPTION

+

Control actions for telemetry services. The command can be used to start, +restart, or stop telemprobd(1) and telempostd(1), or to opt-in or opt-out of telemetry delivery of records to a central telemetry service.

+
+
+

OPTIONS

+
+
    +
  • start``|``stop``|``restart: +Starts, stops or restarts all running telemetry services.

  • +
  • opt-in: +Opts in to telemetry and the opt-in file /etc/telemetrics/opt-in +is created. Note: this is a one time required operation before +telemetry can be used the first time.

  • +
  • opt-out: +Opts out of telemetry, and stops telemetry services. The opt-in file +/etc/telemetrics/opt-in is deleted.

  • +
  • is-active: +Checks if telemetry client daemons are active (telemprobd and telempostd).

  • +
+
+
+
+

RETURN VALUES

+

0 on success. A non-zero exit code indicates a failure occurred.

+
+
+

SEE ALSO

+ +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/telemetrics.conf.5.html b/reference/manpages/telemetrics.conf.5.html new file mode 100644 index 000000000..00abe91a6 --- /dev/null +++ b/reference/manpages/telemetrics.conf.5.html @@ -0,0 +1,1308 @@ + + + + + + + + + + telemetrics.conf — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

telemetrics.conf

+
+

Telemetry service configuration file

+
+
Copyright:
+

(C) 2017 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

5

+
+
+
+

SYNOPSIS

+

/etc/telemetrics/telemetrics.conf

+

/usr/share/defaults/telemetrics/telemetrics.conf

+
+
+

DESCRIPTION

+

This file contains configuration parameters for the telemprobd(1) and telempostd(1) telemetry service daemons. The daemon reads this file at startup if it exists.

+
+
+

SYNTAX

+

The configuration file contains key=value pairs, formatted as plain +text, one option per line. Comments can be added by preceding them with the +# character. All configuration options should be in a section marked +with [settings].

+
+
+

OPTIONS

+
    +
  • server=<url>

    +

    Server URL including protocol designator.

    +
  • +
  • socket_path=<path>

    +

    Path to the socket that telemprobd will listen on.

    +
  • +
  • cainfo=<path>

    +

    Certificate file to use for validation of SSL endpoint.

    +
  • +
  • tidheader=<header>

    +

    Telemetry ID in header format, usually tidheader=X-Telemetry-TID:<uuid> +post header used to group records in ingestion service, which may be +ingesting for more than one set of clients. Can be set to any string.

    +
  • +
  • record_expiry=<minutes>

    +

    Record expiry time in minutes.

    +
  • +
  • spool_dir=<dir>

    +

    Local spool directory used to store records being processed.

    +
  • +
  • spool_max_size=<kB>

    +

    maximum size of the spool directory in kB. A value of -1 indicates +no limit. The block size of the files in this directory is considered, +and not the actual size of the record itself.

    +
  • +
  • spool_process_time=<seconds>

    +

    Time in seconds for processing spool. Valid range: 120..300. Values +outside this range are clamped.

    +
  • +
  • rate_limit_enabled=<true|false>

    +

    Enable rate limiting. If this is set to false then all rate-limiting +disabled. It is possible to disable each rate-limit individually below.

    +
  • +
  • record_burst_limit=<limit>

    +

    Rate limiting record burst limit. Valid Range: 0..``INT_MAX``, -1 = disabled.

    +
  • +
  • record_window_length=<minutes>

    +

    Rate limiting record window length in minutes. Valid Range: 0..59.

    +
  • +
  • byte_burst_limit=<limit>

    +

    Rate limiting byte burst limit. Valid Range: 0..`INT_MAX`, -1 = disabled.

    +
  • +
  • byte_window_length=<minutes>

    +

    Rate limiting byte window length in minutes. Valid Range: 0..59.

    +
  • +
  • rate_limit_strategy=<strategy>

    +

    Rate limit strategy - what to do with record if rate-limiting prevents +delivery over network. Valid stategies: spool, drop.

    +
  • +
+
+
+

SEE ALSO

+ +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/telemetry.3.html b/reference/manpages/telemetry.3.html new file mode 100644 index 000000000..6904cae2a --- /dev/null +++ b/reference/manpages/telemetry.3.html @@ -0,0 +1,1273 @@ + + + + + + + + + + telemetry — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

telemetry

+
+

C programming interface for telemetrics-client

+
+
Copyright:
+

(C) 2017 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

3

+
+
+
+

SYNOPSIS

+

#include "telemetry.h"

+

struct telem_ref { struct telem_record *record; };

+

int tm_create_record(struct telem_ref **t_ref, uint32_t severity, char *classification, uint32_t payload_version)

+

int tm_set_payload(struct telem_ref *t_ref, char *payload)

+

int tm_send_record(struct telem_ref *t_ref)

+

void tm_free_record(struct telem_ref *t_ref)

+

int tm_set_config_file(const char *c_file)

+

int tm_is_opted_in(void)

+
+
+

DESCRIPTION

+

The functions in the telemetry library facilitate the delivery of +telemetry data to the telemprobd(1) service.

+

The function tm_create_record() initializes a telemetry record and +sets the severity and classification of that record, as well as the +payload version number. The memory needed to store the telemetry record +is allocated and should be freed with tm_free_record() when no longer +needed.

+

The function tm_set_payload() attaches the provided telemetry record +data to the telemetry record. The current maximum payload size is 8192b.

+

The function tm_send_record() delivers the record to the local +telemprobd(1) service.

+

The function tm_set_config_file() can be used to provide an alternate +configuration path to the telemetry library.

+

tm_is_opted_in is a utility provided to check if the one time opt-in +has been performed.

+
+
+

RETURN VALUES

+

All these functions return 0 on success, or a non-zero return value +if an error occurred. The function tm_free_record() does not return +any value. tm_is_opted_in returns 1 when telemetry is opted-in +otherwise 0.

+
+
+

SEE ALSO

+ +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/telempostd.1.html b/reference/manpages/telempostd.1.html new file mode 100644 index 000000000..241d39ba8 --- /dev/null +++ b/reference/manpages/telempostd.1.html @@ -0,0 +1,1283 @@ + + + + + + + + + + telempostd — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

telempostd

+
+

Telemetry client service

+
+
Copyright:
+

(C) 2018 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

telempostd <flags>

+

/etc/telemetrics/telemetrics.conf

+

/usr/share/defaults/telemetrics/telemetrics.conf

+

/etc/telemetrics/opt-in-static-machine-id

+
+
+

DESCRIPTION

+

The telempostd program delivers locally generated telemetry records to a remote +telemetry service. Telemetry data can be in any format, and is relayed as-is.

+
+
+

OPTIONS

+
+
    +
  • -f, --config_file [<file>]: +Configuration file. This overrides the other parameters.

  • +
  • -h, --help: +Display this help message.

  • +
  • -V, --version: +Print the program version.

  • +
+
+
+
+

FILES

+
    +
  • /usr/share/defaults/telemetrics/telemetrics.conf

    +
    +

    If no custom configuration file is found, telempostd uses the +settings in this file.

    +
    +
  • +
  • /etc/telemetrics/telemetrics.conf

    +
    +

    Custom configuration file that telempostd reads. See telemetrics.conf(5).

    +
    +
  • +
+
+
+

EXIT STATUS

+

0 when no errors occurred. A non-zero exit status indicates a failure occurred.

+
+
+

SEE ALSO

+ +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/telemprobd.1.html b/reference/manpages/telemprobd.1.html new file mode 100644 index 000000000..2f37dce2f --- /dev/null +++ b/reference/manpages/telemprobd.1.html @@ -0,0 +1,1290 @@ + + + + + + + + + + telemprobd — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

telemprobd

+
+

Telemetry probes service

+
+
Copyright:
+

(C) 2017 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

1

+
+
+
+

SYNOPSIS

+

telemprobd <flags>

+

/etc/telemetrics/telemetrics.conf

+

/usr/share/defaults/telemetrics/telemetrics.conf

+

/etc/telemetrics/opt-in-static-machine-id

+
+
+

DESCRIPTION

+

The telemprobd program handles communication between telemetry client and telemetry +probes.

+
+
+

OPTIONS

+
+
    +
  • -f, --config_file [<file>]: +Configuration file. This overides the other parameters.

  • +
  • -h, --help: +Display this help message.

  • +
  • -V, --version: +Print the program version.

  • +
+
+
+
+

FILES

+
    +
  • /usr/share/defaults/telemetrics/telemetrics.conf

    +
    +

    If no custom configuration file is found, telemprobd uses the +settings in this file.

    +
    +
  • +
  • /etc/telemetrics/telemetrics.conf

    +
    +

    Custom configuration file that telemprobd reads. See telemetrics.conf(5).

    +
    +
  • +
  • /etc/telemetrics/opt-in-static-machine-id

    +
    +

    If this file exists, the first line of this file will be sent to +the server as the machine ID. Otherwise, the machine ID will be +random and changed regularly.

    +
    +
  • +
+
+
+

EXIT STATUS

+

0 when no errors occurred. A non-zero exit status indicates a failure occurred.

+
+
+

SEE ALSO

+ +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/ucd-data-fetch.1.html b/reference/manpages/ucd-data-fetch.1.html new file mode 100644 index 000000000..41ee2722d --- /dev/null +++ b/reference/manpages/ucd-data-fetch.1.html @@ -0,0 +1,1263 @@ + + + + + + + + + + ucd-data-fetch — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

ucd-data-fetch

+

ucd-data-fetch(1) – Fetch user-data and ssh keys from cloud services

+
+

SYNOPSIS

+

/usr/bin/ucd-data-fetch <aws|oci|tencent>

+
+
+

DESCRIPTION

+

ucd-data-fetch is a helper agent program that fetches openstack +user-data from the http://169.254.*/ service, as well as the SSH pubkey +provided to the cloud instance. After fetching the two pieces of data, +ucd-data-fetch combines them into a valid #cloud-config user-data +text block and passes the output to ucd(1) for +processing/execution.

+

The user-data file is currently only fetched for aws instances.

+
+
+

OPTIONS

+

The only parameter supported is the name of the cloud service provider, +and can be aws, oci or tencent. It is required, and if not +passed as argument 1, will cause the program to terminate with an error +message.

+
+
+

EXIT STATUS

+

On success, 0 is returned, a non-zero failure code otherwise. The exit +code returned may be the exit code of the subsequent ucd program +execution.

+
+ +
+

SEE ALSO

+

ucd(1)

+
+
+

NOTES

+

Creative Commons Attribution-ShareAlike 3.0 Unported

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/ucd.1.html b/reference/manpages/ucd.1.html new file mode 100644 index 000000000..9dbbd3a0c --- /dev/null +++ b/reference/manpages/ucd.1.html @@ -0,0 +1,1363 @@ + + + + + + + + + + ucd — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

ucd

+

micro-config-drive(1) – Configure a cloud instance using config-drive +data

+
+

SYNOPSIS

+

/usr/bin/ucd

+

ucd [OPTIONS…]

+
+
+

DESCRIPTION

+

ucd runs at boot time with the purpose of configuring a cloud +instance for use of the end user.

+

ucd can perform any of the following (optional) tasks:

+
    +
  • create a default account with sudo privileges

  • +
  • lock root and default account, the only way to login is using ssh +keys (security feature)

  • +
  • maintain the cloud instance in a right state (resize/fix partitions +and filesystem)

  • +
  • get and process userdata and metadata from an attached config-drive +block device

  • +
+

Userdata formats supported:

+
    +
  • cloud-config: begins with #cloud-config and is used to +execute certain tasks in a human friendly format

  • +
  • shell-script: begins with #! and is used to execute a shell +script

  • +
+

Metadata formats supported:

+
    +
  • openstack

  • +
+
+
+

OPENSTACK DATASOURCES

+

Datasources are used to retrive instance-specific data in order to +configure a new cloud instance. Openstack attaches two datasources to +the cloud instance when it boots.

+
    +
  • config-drive: is a disk formatted with vfat or iso9660 and have a +label of config-2

  • +
  • metadata service: instances can access to it at +http://169.254.169.254 [NOT SUPPORTED]

  • +
+

more information about openstack datasources can be found in:

+ +
+
+

WORKFLOW

+
`|` Parse options
+`|` Init openstack datasource
+`|->` if config-drive is found then define it as datasource otherwise exit
+`|` Start openstack datasource
+`|->` Get userdata and metadata from datasource
+`|` Run async tasks
+`|->` resize disk
+`|->` resize filesystem
+`|` If a datasource was found
+`|->` if VM first boot was detected
+`|   |->` Run async tasks
+`|   |   |->` lock root account
+`|   |   |->` Create sudoers file for default user account
+`|   |->` Create default user account
+`|->` Process openstack metadata
+`|->` Process openstack userdata
+`|` Join async tasks
+`|` Finish openstack datasource (free resources)
+
+
+
+
+

OPTIONS

+

The following options are understood:

+
    +
  • -h, --help:

    +

    Prints a help message.

    +
  • +
  • -u FILE, --user-data-file FILE:

    +

    Path to a cloud-config user data file&. If omitted, ucd will +attempt to fetch user-data from the openstack link-local connected +data service URL.

    +
  • +
  • --openstack-metadata-file FILE:

    +

    Path to an openstack metadata file. more information: +http://docs.openstack.org/user-guide/cli_config_drive.html#openstack-metadata-format

    +
  • +
  • --openstack-config-drive PATH:

    +

    Path to openstack config drive (iso9660 or vfat filesystem), it will +be used to process metadata and userdata. more information: +http://docs.openstack.org/user-guide/cli_config_drive.html#configuration-drive-contents

    +
  • +
  • --user-data:

    +

    Get and process user data from data sources.

    +
  • +
  • --user-data-once:

    +

    Only on first boot get and process user data from data sources. Note +this option is ignored if --user-data is enabled.

    +
  • +
  • --metadata:

    +

    Get and process metadata from data sources.

    +
  • +
  • --fix-disk:

    +

    Fix disk and filesystem if it is needed.

    +
  • +
  • -v, --version:

    +

    Prints version information.

    +
  • +
  • --first-boot-setup:

    +

    Setup the instance in its first boot. When first boot of the instance +is detected, ucd will perform the following tasks: create a +default user account, create sudoers file for default user account, +lock the root account.

    +
  • +
+
+
+

EXIT STATUS

+

On success, 0 is returned, a non-zero failure code otherwise.

+
+ +
+

SEE ALSO

+

This project is a limited-functionality implementation of the cloud-init +specification. The full documentation of the generic implementation is +available online and can be referenced here:

+

https://cloudinit.readthedocs.org/en/latest/

+

The cloud-config format that ucd(1) supports is documented in +cloud-config(5). This lists the options that are supported, their +structure and function.

+
+
+

NOTES

+

Creative Commons Attribution-ShareAlike 3.0 Unported

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/manpages/update-triggers.target.4.html b/reference/manpages/update-triggers.target.4.html new file mode 100644 index 000000000..27bce0aad --- /dev/null +++ b/reference/manpages/update-triggers.target.4.html @@ -0,0 +1,1260 @@ + + + + + + + + + + update-triggers.target — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

update-triggers.target

+
+

Provides post OS software-update actions

+
+
Copyright:
+

(C) 2017 Intel Corporation, CC-BY-SA-3.0

+
+
Manual section:
+

4

+
+
+
+

SYNOPSIS

+

update-triggers.target

+

/usr/lib/systemd/system/update-triggers.target

+
+
+

DESCRIPTION

+

Instructs the systemd(1) system daemon what units needed to be +started as part of the software update process. After the main software +update content is applied to the OS, the swupd(1) program starts +this systemd target.

+

The main function of this target is to allow optional corrections and +adjustments to be made after installation that can not easily be made +through static file installation methods. This usually applies to things +like cached lists, dynamic configuration files and similar volatile +databases that are regularly altered and may contain user data.

+

One example is the dynamic loader cache which needs to be updated when +ever there are modifications to the system installed dynamic libraries.

+

The user is not intended to execute these scripts and plugin units +directly. If however so this is desired, one can execute the following +command to re-execute all the actions:

+

systemctl start update-triggers.target

+
+
+

ENVIRONMENT

+

This unit is a systemd(1) target file.

+
+
+

SEE ALSO

+

swupd(1)

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/system-requirements.html b/reference/system-requirements.html new file mode 100644 index 000000000..cdb54400f --- /dev/null +++ b/reference/system-requirements.html @@ -0,0 +1,1304 @@ + + + + + + + + + + Recommended minimum system requirements — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ + + + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/reference/tutorial-ratings.html b/reference/tutorial-ratings.html new file mode 100644 index 000000000..ff2b36477 --- /dev/null +++ b/reference/tutorial-ratings.html @@ -0,0 +1,1261 @@ + + + + + + + + + + Tutorial difficulty ratings — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Tutorial difficulty ratings

+

Tutorial difficulty ratings provide a simple way to start using and developing with Clear Linux* OS. If you’re new to the distro, we suggest starting with Easy tutorials and working towards the more Difficult. Ratings not only expose learning paths but also provide a starting point from which to advance or improve use cases, so be sure to share your insights. Three main metrics help us to determine how to rate a tutorial:

+ +

The sum total of these metrics, the rating shown in Figure 1, represents the +ability to successfully complete a tutorial based on skill level, balanced against the risk of failure.

+
+Tutorial difficulty ratings +
+

Figure 1: Tutorial difficulty ratings

+
+
+
+

Time and complexity

+

Are there about 8 or more complex steps? Complex steps are those that:

+
    +
  • Require more than one action

  • +
  • Require external reading/review

  • +
  • Include explanation or context

  • +
  • Give alternative(s)

  • +
+

This metric factors in the cognitive load and its impact on a user.

+
+
+

User experience level

+

Our tutorials primarily target two types of Linux users.

+

Experienced A Linux* user who is familiar with common topics like userspace, networking, sudo privileges, services, and more.

+

Advanced A Linux user who is beyond Experienced and is familiar with most sysadmin and programming topics.

+

This metric establishes a starting point for skills, based on user +experience.

+
+
+

Impact of failure

+

The impact of failure calculates the risk of failing to complete a tutorial as a result of entering incorrect data or configuration, or failing to follow the steps in the given order. We estimate the potential state of a system, given these failure scenarios and their severity. This metric also factors in the ability to troubleshoot and recover when faced with errors. Therefore, the final impact incorporates the previous two metrics while it helps to predict an appropriate difficulty rating.

+
    +
  • Will impact of errors be inconsequential? Easy

  • +
  • Will impact of errors cause inconvenience (but system still works)? Moderate

  • +
  • Will impact of errors cause system failure (difficult to recover)? Difficult

  • +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 000000000..e420df8db --- /dev/null +++ b/search.html @@ -0,0 +1,1231 @@ + + + + + + + + + Search — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + + +
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 000000000..3343dd35b --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"-a option": [[64, "a-option"]], "-n option": [[64, "n-option"]], "3rd-party": [[98, "rd-party"]], "A benchmark approach to compiler performance": [[36, "a-benchmark-approach-to-compiler-performance"]], "A guide to stateless configuration in Clear Linux OS for Intel Architecture": [[95, "a-guide-to-stateless-configuration-in-clear-linux-os-for-intel-architecture"]], "A modern kernel with variants optimized for different platforms": [[36, "a-modern-kernel-with-variants-optimized-for-different-platforms"]], "A summary of OS formats in Clear Linux": [[94, "a-summary-of-os-formats-in-clear-linux"]], "About": [[1, null]], "Access the shared drive": [[135, "access-the-shared-drive"]], "Add (trust) a root CA": [[84, "add-trust-a-root-ca"]], "Add Clear Linux OS Image to DigitalOcean": [[12, "add-cl-image-to-digitalocean"]], "Add New User": [[8, "add-new-user"]], "Add a bundle": [[52, "add-a-bundle"], [58, "add-a-bundle"]], "Add a user to IAM with AWS_CLI privilege": [[14, "add-a-user-to-iam-with-aws-cli-privilege"]], "Add clr-installer YAML configuration files": [[20, "add-clr-installer-yaml-configuration-files"]], "Add kernel modules manually": [[47, null]], "Add kernel modules with DKMS": [[48, null]], "Add local RPMs to mix": [[86, "add-local-rpms-to-mix"]], "Add the Kata runtime to Kubernetes": [[122, "add-the-kata-runtime-to-kubernetes"]], "Add the new user to the wheel group": [[58, "add-the-new-user-to-the-wheel-group"]], "Adding and submitting patches": [[30, "adding-and-submitting-patches"]], "Additional Docker configuration": [[116, "additional-docker-configuration"]], "Additional firmware loading": [[44, "additional-firmware-loading"]], "Additional information": [[38, "additional-information"]], "Additional partitions (optional)": [[8, "additional-partitions-optional"]], "Additional resources": [[129, "additional-resources"], [130, "additional-resources"]], "Administrate": [[1, "administrate"]], "Adopt an agile methodology": [[54, "adopt-an-agile-methodology"]], "Advanced": [[35, "advanced"]], "Advanced Installation": [[7, "advanced-installation"], [8, "advanced-installation"]], "Advanced options": [[7, "advanced-options"], [8, "advanced-options"]], "Advanced: Linux CLI": [[9, "advanced-linux-cli"]], "Advanced: Use systemd-boot to boot Windows 10 OS and Clear Linux OS": [[127, "advanced-use-systemd-boot-to-boot-windows-10-os-and-cl"]], "Aggressive compiler flags": [[36, "aggressive-compiler-flags"]], "Also compatible with VMs": [[32, "also-compatible-with-vms"]], "Alternative": [[45, "alternative"]], "Alternative: Install Windows 10 OS After Clear Linux OS": [[127, "alternative-install-windows-10-os-after-cl"]], "Apache* Hadoop*": [[113, null]], "Appendix A: Use pass-through for virtual machines": [[67, "appendix-a-use-pass-through-for-virtual-machines"]], "Apply for a public IP and add it to the virtual host": [[15, "apply-for-a-public-ip-and-add-it-to-the-virtual-host"]], "Architect the life-cycle of Clear Linux* OS": [[49, null]], "Architecture": [[41, "architecture"]], "Archive": [[120, "archive"]], "Assign Hostname": [[7, "assign-hostname"], [8, "assign-hostname"]], "Assign a static IP address": [[66, null]], "Assign an IP address": [[74, "assign-an-ip-address"]], "Associate with a wireless access point": [[74, "associate-with-a-wireless-access-point"]], "Automated CVE scanning and remediation": [[37, "automated-cve-scanning-and-remediation"]], "Automated effective updating": [[37, "automated-effective-updating"]], "Automatic OS Updates": [[8, "automatic-os-updates"]], "Autoproxy": [[29, null]], "Available bundles": [[76, null]], "Avoid long noun phrases": [[4, "avoid-long-noun-phrases"]], "Avoid nominalizations": [[4, "avoid-nominalizations"]], "Avoid overuse of product name": [[4, "avoid-overuse-of-product-name"]], "Avoid words ending in -ing": [[4, "avoid-words-ending-in-ing"]], "BUGS": [[82, "bugs"], [83, "bugs"], [84, "bugs"], [99, "bugs"], [101, "bugs"]], "Background": [[33, "background"], [34, "background"], [51, "background"], [122, "background"], [131, "background"], [132, "background"], [140, "background"]], "Backup strategy": [[54, "backup-strategy"]], "Bare metal": [[54, "bare-metal"]], "Bare metal only": [[32, "bare-metal-only"]], "Base files for Clear Linux OS for Intel Architecture": [[93, "base-files-for-clear-linux-os-for-intel-architecture"]], "Basic": [[35, "basic"]], "Basic options": [[64, "basic-options"]], "Be brief": [[4, "be-brief"]], "Be friendly": [[4, "be-friendly"]], "Before you begin": [[138, "before-you-begin"]], "Bind NICs to DPDK kernel drivers (Platforms A and B)": [[67, "bind-nics-to-dpdk-kernel-drivers-platforms-a-and-b"]], "Boot Clear Linux OS Using One of Three Methods": [[126, "boot-cl-using-one-of-three-methods"]], "Boot a live desktop image to fix target system": [[59, "boot-a-live-desktop-image-to-fix-target-system"]], "Brightness control": [[129, "brightness-control"]], "Broadcom* Drivers": [[115, null]], "Build a new Clear Linux OS-based container image": [[52, null]], "Build and install kernel module": [[47, "build-and-install-kernel-module"]], "Build and install the kernel": [[46, "build-and-install-the-kernel"]], "Build custom image": [[12, "build-custom-image"]], "Build kernel module with an existing dkms.conf": [[48, "build-kernel-module-with-an-existing-dkms-conf"]], "Build kernel module without an existing dkms.conf": [[48, "build-kernel-module-without-an-existing-dkms-conf"]], "Build pktgen (Platform A)": [[67, "build-pktgen-platform-a"]], "Build the base container image": [[52, "build-the-base-container-image"]], "Build varioius pieces of OS content": [[87, "build-varioius-pieces-of-os-content"]], "Build, install, and load an out-of-tree module": [[47, "build-install-and-load-an-out-of-tree-module"], [48, "build-install-and-load-an-out-of-tree-module"]], "Bulleted lists": [[3, "bulleted-lists"]], "Bundle configuration": [[35, "bundle-configuration"]], "Bundle definition files": [[35, "bundle-definition-files"]], "Bundle list": [[76, "bundle-list"]], "Bundle search": [[39, "bundle-search"]], "Bundles": [[31, null], [35, "bundles"], [140, "bundles"]], "Burn the Clear Linux OS image onto a USB drive": [[9, "burn-the-cl-image-onto-a-usb-drive"]], "C programming interface for telemetrics-client": [[105, "c-programming-interface-for-telemetrics-client"]], "C-states (idle states)": [[53, "c-states-idle-states"]], "CLI (Command Line Interface)": [[74, "cli-command-line-interface"]], "COPYRIGHT": [[81, "copyright"], [108, "copyright"], [109, "copyright"]], "CPU Power and Performance": [[53, null]], "CPU microcode loading": [[44, "cpu-microcode-loading"]], "CPU performance governor": [[36, "cpu-performance-governor"]], "CPU power saving mechanisms": [[53, "cpu-power-saving-mechanisms"]], "CRI+O": [[122, "cri-o"]], "Can I install a software package from another OS on Clear Linux OS?": [[0, "can-i-install-a-software-package-from-another-os-on-cl"]], "Can others copy improvements from Clear Linux OS?": [[0, "can-others-copy-improvements-from-cl"]], "Can you add a driver that I need?": [[0, "can-you-add-a-driver-that-i-need"]], "Capitalization": [[4, "capitalization"]], "Capture Kernel Boot Messages in the Journal": [[45, null]], "Change Kernel Boot": [[43, null]], "Change default port": [[70, "change-default-port"]], "Change the default configuration and data directory": [[124, "change-the-default-configuration-and-data-directory"]], "Change the kernel version": [[46, "change-the-kernel-version"]], "Check GCC compatibility": [[130, "check-gcc-compatibility"]], "Check Processor Compatibility": [[16, null]], "Check compatibility of NVIDIA components": [[130, "check-compatibility-of-nvidia-components"]], "Check if the module is already available": [[47, "check-if-the-module-is-already-available"], [48, "check-if-the-module-is-already-available"]], "Checking limit": [[63, "checking-limit"]], "Choose Language": [[8, "choose-language"]], "Choose Timezone": [[8, "choose-timezone"]], "Choose a container runtime": [[122, "choose-a-container-runtime"]], "Choose a pod network add-on": [[122, "choose-a-pod-network-add-on"]], "Choose boot menu option": [[7, "choose-boot-menu-option"], [8, "choose-boot-menu-option"]], "Clear Linux": [[42, "clear-linux"]], "Clear Linux OS Desktop Installer": [[7, "cl-desktop-installer"]], "Clear Linux OS base image": [[17, "cl-base-image"]], "Clear Linux OS-based application images": [[17, "cl-based-application-images"]], "Clear Linux OS-based runtime images": [[17, "cl-based-runtime-images"]], "Clear Linux* OS container images": [[17, null]], "Clear Linux* OS image types": [[78, null]], "Clear Linux* OS on Amazon Web Services*": [[10, null]], "Clear Linux* OS on DigitalOcean*": [[12, null]], "Clear Linux* OS on Google Cloud Platform*": [[13, null]], "Clear Linux* OS on KVM": [[22, null]], "Clear Linux* OS on Microsoft Hyper-V*": [[21, null]], "Clear Linux* OS on Microsoft* Azure*": [[11, null]], "Clear Linux* OS on Parallels* Desktop for Mac*": [[23, null]], "Clear Linux* OS on Proxmox* Virtual Environment": [[24, null]], "Clear Linux* OS on QingCloud*": [[15, null]], "Clear Linux* OS on VMware* ESXi": [[28, null]], "Clear Linux* OS on VMware* Workstation Player": [[27, null]], "Clear Linux* OS on VirtualBox*": [[26, null]], "Clear Linux* OS using virt-manager": [[25, null]], "Clear Linux* Project Documentation": [[75, null]], "Client configuration": [[41, "client-configuration"]], "Client run-time options": [[41, "client-run-time-options"]], "Clone the Clear Linux OS update content": [[125, "clone-the-cl-update-content"]], "Clone the kernel package": [[46, "clone-the-kernel-package"]], "Cloud instances or virtual machines": [[54, "cloud-instances-or-virtual-machines"]], "Cloud-native applications": [[54, "cloud-native-applications"]], "Code blocks and examples": [[3, "code-blocks-and-examples"]], "Combine multiple interfaces with network bonding": [[69, null]], "Commas and colons": [[4, "commas-and-colons"]], "Compatibility": [[130, "compatibility"]], "Compatible Hardware": [[77, null]], "Compile the module": [[140, "compile-the-module"]], "Compile userspace tools": [[140, "compile-userspace-tools"]], "Compiled with secure options": [[37, "compiled-with-secure-options"]], "Complete successful login": [[138, "complete-successful-login"]], "Conclusion": [[64, "conclusion"]], "Configuration options": [[41, "configuration-options"]], "Configure Apache Hadoop": [[113, "configure-apache-hadoop"]], "Configure DNF": [[62, "configure-dnf"]], "Configure Huge Pages": [[50, null]], "Configure Installation Media": [[8, "configure-installation-media"]], "Configure Network Interfaces": [[8, "configure-network-interfaces"]], "Configure PHP": [[132, "configure-php"]], "Configure PHP-FPM": [[132, "configure-php-fpm"]], "Configure VNC to only accept connection from localhost": [[73, "configure-vnc-to-only-accept-connection-from-localhost"]], "Configure Wi-Fi": [[74, null]], "Configure a VNC-server-start method on your host": [[73, "configure-a-vnc-server-start-method-on-your-host"]], "Configure alternative software paths": [[129, "configure-alternative-software-paths"]], "Configure host system": [[122, "configure-host-system"]], "Configure iPXE": [[20, "configure-ipxe"]], "Configure network": [[20, "configure-network"]], "Configure the Keyboard": [[8, "configure-the-keyboard"]], "Configure workarounds": [[129, "configure-workarounds"]], "Configure your SSH key": [[113, "configure-your-ssh-key"]], "Connect to Clear Linux OS virtual host": [[15, "connect-to-cl-virtual-host"]], "Connect to Windows shared location with Nautilus": [[134, "connect-to-windows-shared-location-with-nautilus"]], "Connect to Your Clear Linux OS Instance": [[12, "connect-to-your-cl-instance"]], "Connect to a VNC session through an SSH tunnel": [[73, "connect-to-a-vnc-session-through-an-ssh-tunnel"]], "Connect to your Clear Linux OS basic instance": [[10, "connect-to-your-clear-linux-os-basic-instance"]], "Connect to your Clear Linux OS instance": [[14, "connect-to-your-cl-instance"]], "Connect to your VNC session": [[73, "connect-to-your-vnc-session"]], "Consequences for the system administrator (user)": [[95, "consequences-for-the-system-administrator-user"]], "Considerations with stateless systems": [[54, "considerations-with-stateless-systems"]], "Container image types": [[17, "container-image-types"]], "Containers": [[18, "containers"], [54, "containers"]], "Content Workflow": [[49, "content-workflow"]], "Contractions": [[4, "contractions"]], "Contribute": [[2, null]], "Contribute via GitHub": [[2, "contribute-via-github"]], "Contribution guidelines": [[2, "contribution-guidelines"]], "Copy MUNGE key and slurm.conf to all worker nodes": [[119, "copy-munge-key-and-slurm-conf-to-all-worker-nodes"]], "Core Concepts": [[55, "core-concepts"]], "Create": [[1, "create"]], "Create VM on Proxmox": [[24, "create-vm-on-proxmox"]], "Create a MS Azure resource group": [[11, "create-a-ms-azure-resource-group"]], "Create a WordPress server": [[138, "create-a-wordpress-server"]], "Create a blank VM": [[27, "create-a-blank-vm"]], "Create a bootable USB drive using Etcher*": [[9, null]], "Create a custom image using clr-installer": [[14, "create-a-custom-image-using-clr-installer"]], "Create a mix": [[35, "create-a-mix"]], "Create a new VirtualBox virtual machine": [[26, "create-a-new-vb-virtual-machine"]], "Create a new user": [[58, "create-a-new-user"]], "Create a new virt-manager virtual machine": [[25, "create-a-new-virt-manager-virtual-machine"]], "Create an AMI from the snapshot": [[14, "create-an-ami-from-the-snapshot"]], "Create an RPM": [[30, "create-an-rpm"]], "Create an S3 bucket": [[14, "create-an-s3-bucket"]], "Create an SSH key (Optional)": [[15, "create-an-ssh-key-optional"]], "Create and Deploy a Clear Linux OS Instance": [[12, "create-and-deploy-a-cl-instance"]], "Create and configure a new VM": [[28, "create-and-configure-a-new-vm"]], "Create and configure new VM": [[21, "create-and-configure-new-vm"]], "Create and enable a new user space": [[58, null]], "Create and log into the Clear Linux OS virtual machine": [[11, "create-and-log-into-the-cl-virtual-machine"]], "Create and run example scripts": [[119, "create-and-run-example-scripts"]], "Create bundle of 3rd-party app with mixer": [[40, "create-bundle-of-3rd-party-app-with-mixer"]], "Create custom telemetry record": [[102, "create-custom-telemetry-record"]], "Create directory to hold 3rd-party app": [[40, "create-directory-to-hold-3rd-party-app"]], "Create more bundles and add to client": [[40, "create-more-bundles-and-add-to-client"]], "Create records with telem-record-gen": [[41, "create-records-with-telem-record-gen"]], "Create slurm.conf configuration file": [[119, "create-slurm-conf-configuration-file"]], "Create your own Linux distribution (mix)": [[54, "create-your-own-linux-distribution-mix"]], "Creating a Docker swarm cluster": [[116, "creating-a-docker-swarm-cluster"]], "Custom Derivatives": [[1, "custom-derivatives"]], "Customize the Linux kernel source": [[46, "customize-the-linux-kernel-source"]], "DESCRIPTION": [[81, "description"], [82, "description"], [83, "description"], [84, "description"], [85, "description"], [86, "description"], [87, "description"], [88, "description"], [89, "description"], [90, "description"], [91, "description"], [92, "description"], [93, "description"], [94, "description"], [95, "description"], [96, "description"], [97, "description"], [98, "description"], [99, "description"], [100, "description"], [101, "description"], [102, "description"], [103, "description"], [104, "description"], [105, "description"], [106, "description"], [107, "description"], [108, "description"], [109, "description"], [110, "description"]], "DNF command usage examples": [[62, "dnf-command-usage-examples"]], "DNS issues": [[122, "dns-issues"]], "Debug system": [[33, null]], "Debugging": [[130, "debugging"]], "Decompress the Clear Linux OS image": [[56, "decompress-the-cl-image"], [56, "id2"], [56, "id4"]], "Default configurations": [[38, "default-configurations"]], "Default partition schema": [[7, "default-partition-schema"], [8, "default-partition-schema"]], "Default ruleset": [[68, "default-ruleset"]], "Delete the applied public IP": [[15, "delete-the-applied-public-ip"]], "Deploy": [[1, "deploy"], [20, "deploy"]], "Deploy OpenFaaS": [[131, "deploy-openfaas"]], "Deploy at Scale": [[54, null]], "Deploy to the cloud": [[18, "deploy-to-the-cloud"]], "Description": [[11, "description"], [29, "description"], [30, "description"], [35, "description"], [39, "description"], [43, "description"], [47, "description"], [48, "description"], [49, "description"], [113, "description"], [114, "description"], [117, "description"], [118, "description"], [121, "description"], [123, "description"], [132, "description"], [133, "description"], [139, "description"]], "Desktop GUI (Graphical User Interface)": [[74, "desktop-gui-graphical-user-interface"]], "Destructive Installation": [[7, "destructive-installation"], [8, "destructive-installation"]], "Detailed procedures": [[128, "detailed-procedures"]], "Detect loop vectorization candidates": [[118, "detect-loop-vectorization-candidates"]], "Determine disk size and list of partitions": [[61, "determine-disk-size-and-list-of-partitions"]], "Developer Workstation": [[55, null]], "Disable the nouveau driver": [[129, "disable-the-nouveau-driver"]], "Disk encryption": [[7, "disk-encryption"], [8, "disk-encryption"]], "Docker": [[122, "docker"]], "Docker*": [[71, "docker"], [116, null]], "Documentation organization": [[3, "documentation-organization"]], "Does it use RPMs or DEBs packages like other distros?": [[0, "does-it-use-rpms-or-debs-packages-like-other-distros"]], "Does it use the Intel Compiler (icc)?": [[0, "does-it-use-the-intel-compiler-icc"]], "Download ISO image": [[23, "download-iso-image"]], "Download OpenZFS release": [[140, "download-openzfs-release"]], "Download WordPress and manage directories": [[138, "download-wordpress-and-manage-directories"]], "Download and extract the Clear Linux OS installer ISO": [[26, "download-and-extract-the-cl-installer-iso"]], "Download and launch the virtual machine image": [[22, "download-and-launch-the-virtual-machine-image"]], "Download and make bootable USB of the live server image": [[19, "download-and-make-bootable-usb-of-the-live-server-image"]], "Download or create a Clear Linux OS image for AWS": [[14, "download-or-create-a-cl-image-for-aws"]], "Download pre-built image": [[14, "download-pre-built-image"]], "Download the Clear Linux OS disk image for Hyper-V": [[21, "download-the-cl-disk-image-for-hyper-v"]], "Download the Clear Linux OS installer ISO": [[25, "download-the-cl-installer-iso"]], "Download the Latest Clear Linux OS Live Server Image": [[24, "download-the-latest-cl-live-server-image"]], "Download the NVIDIA CUDA Toolkit": [[130, "download-the-nvidia-cuda-toolkit"]], "Download the NVIDIA drivers": [[129, "download-the-nvidia-drivers"]], "Download the latest Clear Linux OS installer ISO": [[28, "download-the-latest-cl-installer-iso"]], "Download, verify, and decompress a Clear Linux* OS image": [[56, null]], "Downloading and Installation": [[130, "downloading-and-installation"]], "Drivers": [[115, "drivers"]], "Dual-boot Clear Linux* OS and Windows* 10 OS": [[127, null]], "Dual-boot Clear Linux* OS with Any GRUB-based Linux* Distro": [[126, null]], "ENVIRONMENT": [[96, "environment"], [97, "environment"], [110, "environment"]], "EXAMPLES": [[82, "examples"], [84, "examples"], [101, "examples"]], "EXIT STATUS": [[85, "exit-status"], [86, "exit-status"], [87, "exit-status"], [88, "exit-status"], [89, "exit-status"], [90, "exit-status"], [91, "exit-status"], [92, "exit-status"], [98, "exit-status"], [106, "exit-status"], [107, "exit-status"], [108, "exit-status"], [109, "exit-status"]], "Ease of Use": [[1, "ease-of-use"]], "Eject the Clear Linux OS image USB drive": [[9, "eject-the-cl-image-usb-drive"]], "Enable Kata Containers as default": [[114, "enable-kata-containers-as-default"]], "Enable Linux udev rules for YubiKey": [[139, "enable-linux-udev-rules-for-yubikey"]], "Enable PHP extensions": [[132, "enable-php-extensions"]], "Enable SFTP": [[70, "enable-sftp"]], "Enable U2F in Mozilla Firefox": [[139, "enable-u2f-in-mozilla-firefox"]], "Enable UEFI boot support": [[27, "enable-uefi-boot-support"]], "Enable X11-forwarding": [[70, "enable-x11-forwarding"]], "Enable and configure SSH service": [[70, null]], "Enable journaling of kernel boot messages": [[45, "enable-journaling-of-kernel-boot-messages"]], "Enable or disable telemetry": [[41, "enable-or-disable-telemetry"]], "Enable root login": [[70, "enable-root-login"]], "Enable systemd-boot Menu": [[57, null]], "Encrypt VNC traffic through an SSH tunnel": [[73, "encrypt-vnc-traffic-through-an-ssh-tunnel"]], "Encryption Passphrase": [[8, "encryption-passphrase"]], "Enhanced thermal configuration": [[53, "enhanced-thermal-configuration"]], "Erase LVM Partitions Before Installing Clear Linux OS": [[8, "erase-lvm-partitions-before-installing-cl"]], "Establish a VNC connection to your host": [[73, "establish-a-vnc-connection-to-your-host"]], "Example": [[64, "example"]], "Example 1: Add a bundle": [[51, "example-1-add-a-bundle"]], "Example 1: Build RPM with an existing spec file": [[30, "example-1-build-rpm-with-an-existing-spec-file"]], "Example 1: Disable and enable automatic updates": [[39, "example-1-disable-and-enable-automatic-updates"]], "Example 1: Fresh installation onto bare metal": [[19, "example-1-fresh-installation-onto-bare-metal"]], "Example 1: Mix set up": [[35, "example-1-mix-set-up"]], "Example 1: Return the hostname of each worker and output to show-hostnames.out": [[119, "example-1-return-the-hostname-of-each-worker-and-output-to-show-hostnames-out"]], "Example 1: Use the redis-cli and commands": [[133, "example-1-use-the-redis-cli-and-commands"]], "Example 2: An MPI \u201cHello, World!\u201d program": [[119, "example-2-an-mpi-hello-world-program"]], "Example 2: Build a new RPM": [[30, "example-2-build-a-new-rpm"]], "Example 2: Change Clear Linux OS version (single-stage build)": [[51, "example-2-change-cl-version-single-stage-build"]], "Example 2: Create a simple mix": [[35, "example-2-create-a-simple-mix"]], "Example 2: Find and install Kata Containers*": [[39, "example-2-find-and-install-kata-containers"]], "Example 2: Replicate a previous installation": [[19, "example-2-replicate-a-previous-installation"]], "Example 2: Run the Clear Linux OS Redis Docker* image": [[133, "example-2-run-the-cl-redis-docker-image"]], "Example 3: Change Clear Linux OS version (multi-stage build)": [[51, "example-3-change-cl-version-multi-stage-build"]], "Example 3: Create an update for your mix": [[35, "example-3-create-an-update-for-your-mix"]], "Example 3: Generate a new spec file with a pre-defined package": [[30, "example-3-generate-a-new-spec-file-with-a-pre-defined-package"]], "Example 3: Verify and correct system file mismatch": [[39, "example-3-verify-and-correct-system-file-mismatch"]], "Example 4: Build an image": [[35, "example-4-build-an-image"]], "Example 4: Customize an application image at runtime": [[51, "example-4-customize-an-application-image-at-runtime"]], "Example 4: Provide control files to autospec": [[30, "example-4-provide-control-files-to-autospec"]], "Example 5: Deploy updates to target": [[35, "example-5-deploy-updates-to-target"]], "Example 5: Update an existing package": [[30, "example-5-update-an-existing-package"]], "Example 6: Remove a bundle from client system": [[35, "example-6-remove-a-bundle-from-client-system"]], "Example 7: Execute a format bump": [[35, "example-7-execute-a-format-bump"]], "Example: Develop a function": [[131, "example-develop-a-function"]], "Examples": [[30, "examples"], [35, "examples"], [39, "examples"], [41, "examples"], [47, "examples"], [48, "examples"]], "FAQ": [[0, null]], "FFT project example using FFTW": [[118, "fft-project-example-using-fftw"]], "FILE FORMAT": [[82, "file-format"], [101, "file-format"]], "FILES": [[83, "files"], [84, "files"], [85, "files"], [98, "files"], [106, "files"], [107, "files"]], "File-level separation": [[38, "file-level-separation"]], "Finish installation": [[7, "finish-installation"], [8, "finish-installation"]], "Firewall": [[68, null]], "Firewall software": [[68, "firewall-software"]], "Firmware": [[44, null], [115, "firmware"]], "First console: Start the container": [[51, "first-console-start-the-container"]], "First layer: os-core": [[51, "first-layer-os-core"]], "Fix a broken installation": [[59, null]], "Flatpak*": [[117, null]], "For Configure Installation Media": [[8, "for-configure-installation-media"]], "Format bump": [[35, "format-bump"]], "Format version": [[35, "format-version"]], "Fullfiles, packs, and delta packs": [[39, "fullfiles-packs-and-delta-packs"]], "Function Multi-Versioning": [[118, null]], "General": [[0, "general"]], "General proxy settings for many applications": [[71, "general-proxy-settings-for-many-applications"]], "Generate the FMV patch": [[118, "generate-the-fmv-patch"]], "Get started": [[18, null]], "Get the current boot status": [[43, "get-the-current-boot-status"]], "Get the kernel list installed": [[43, "get-the-kernel-list-installed"]], "Grammar and punctuation": [[4, "grammar-and-punctuation"]], "Guides": [[42, null]], "HPC Cluster": [[119, null]], "Headings": [[3, "headings"], [4, "headings"]], "How does Clear Linux OS address security?": [[1, "how-does-cl-address-security"]], "How is software installed and updated?": [[0, "how-is-software-installed-and-updated"]], "How it works": [[29, "how-it-works"], [30, "how-it-works"], [35, "how-it-works"], [39, "how-it-works"], [64, "how-it-works"]], "How often does it update?": [[0, "how-often-does-it-update"]], "How to use": [[41, "how-to-use"]], "Identify which program is managing the interface": [[66, "identify-which-program-is-managing-the-interface"]], "Identify your device model": [[115, "identify-your-device-model"]], "Image content validation": [[65, "image-content-validation"]], "Image types": [[56, "image-types"]], "Images": [[3, "images"]], "Impact of failure": [[112, "impact-of-failure"]], "Implementation": [[33, "implementation"], [49, "implementation"]], "Import Clear Linux Image and Launch Instance on AWS": [[14, null]], "Import a snapshot of the Clear Linux OS image": [[14, "import-a-snapshot-of-the-cl-image"]], "In-page navigation": [[3, "in-page-navigation"]], "Included firmware": [[44, "included-firmware"]], "Increase Virtual Disk Size of an Image": [[61, null]], "Increase virtual disk size": [[61, "id1"], [61, "id2"]], "Initialize mixer and workspace": [[90, "initialize-mixer-and-workspace"]], "Initialize new VM": [[23, "initialize-new-vm"]], "Initialize the master node": [[122, "initialize-the-master-node"]], "Inline text formatting": [[3, "inline-text-formatting"]], "Install": [[18, "install"], [140, "install"]], "Install Apache": [[124, "install-apache"]], "Install Apache Hadoop": [[113, "install-apache-hadoop"]], "Install Clear Linux OS Over the Network with iPXE": [[20, null]], "Install Clear Linux OS in the virt-manager VM": [[25, "install-cl-in-the-virt-manager-vm"]], "Install Clear Linux OS into the new VM": [[28, "install-cl-into-the-new-vm"]], "Install Clear Linux OS on VM": [[23, "install-cl-on-vm"]], "Install Clear Linux OS on server": [[20, "install-cl-on-server"]], "Install Clear Linux OS on the VirtualBox VM": [[26, "install-cl-on-the-vb-vm"]], "Install Clear Linux OS on your target system": [[8, "install-cl-on-your-target-system"]], "Install Clear Linux OS with Advanced Installation": [[126, "install-cl-with-advanced-installation"]], "Install Clear Linux OS with live-server installer": [[26, "install-cl-with-live-server-installer"]], "Install Clear Linux* OS from the live desktop": [[7, null]], "Install Clear Linux* OS from the live server": [[8, null]], "Install DKMS": [[48, "install-dkms"], [129, "install-dkms"], [137, "install-dkms"]], "Install Kata Containers": [[121, "install-kata-containers"]], "Install MS Azure CLI 2.0 on Clear Linux OS": [[11, "install-ms-azure-cli-2-0-on-cl"]], "Install MariaDB": [[124, "install-mariadb"]], "Install PHP": [[124, "install-php"]], "Install PHP extensions": [[132, "install-php-extensions"]], "Install QEMU-KVM": [[22, "install-qemu-kvm"]], "Install VMware Workstation Pro": [[137, "install-vmware-workstation-pro"]], "Install VMware kernel modules": [[137, "install-vmware-kernel-modules"]], "Install VirtualBox Linux Guest Additions": [[26, "install-vb-linux-guest-additions"]], "Install Windows 10 OS": [[127, "install-windows-10-os"]], "Install a Flatpak app with GNOME Software": [[117, "install-a-flatpak-app-with-gnome-software"]], "Install a Flatpak with the command line": [[117, "install-a-flatpak-with-the-command-line"]], "Install a VNC viewer app": [[73, "install-a-vnc-viewer-app"]], "Install a VNC viewer app and an SSH client on your client system": [[73, "install-a-vnc-viewer-app-and-an-ssh-client-on-your-client-system"]], "Install an SSH client": [[73, "install-an-ssh-client"]], "Install and configure a Clear Linux OS host on bare metal": [[118, "install-and-configure-a-cl-host-on-bare-metal"]], "Install and configure the AWS CLI tool on your system": [[14, "install-and-configure-the-aws-cli-tool-on-your-system"]], "Install and manage 3rd-party bundle on client system": [[40, "install-and-manage-3rd-party-bundle-on-client-system"]], "Install and update the OS software to its current version": [[58, "install-and-update-the-os-software-to-its-current-version"]], "Install dpdk and build l3fwd example (Platform B)": [[67, "install-dpdk-and-build-l3fwd-example-platform-b"]], "Install from live image": [[7, "install-from-live-image"]], "Install in a virtual machine": [[18, "install-in-a-virtual-machine"]], "Install kernel modules": [[137, "install-kernel-modules"]], "Install phpMyAdmin": [[124, "install-phpmyadmin"]], "Install the Clear Linux OS development tooling framework": [[46, "install-the-cl-development-tooling-framework"]], "Install the DKMS kernel": [[140, "install-the-dkms-kernel"]], "Install the NVIDIA CUDA Toolkit": [[130, "install-the-nvidia-cuda-toolkit"]], "Install the NVIDIA drivers": [[129, "install-the-nvidia-drivers"]], "Install the Redis bundle": [[133, "install-the-redis-bundle"]], "Install the VMware Workstation Player hypervisor": [[27, "install-the-vmware-workstation-player-hypervisor"]], "Install the VNC server and misc. components on your host": [[73, "install-the-vnc-server-and-misc-components-on-your-host"]], "Install the containers-basic bundle": [[116, "install-the-containers-basic-bundle"]], "Install the httpd bundle": [[124, "install-the-httpd-bundle"]], "Install up Clear Linux OS server to host updates": [[125, "install-up-cl-server-to-host-updates"]], "Install using clr-installer and a configuration file": [[19, null]], "Installation": [[129, "installation"]], "Installer requirements": [[111, "installer-requirements"]], "Instantiate Clear Linux OS": [[27, "instantiate-cl"]], "Instructions": [[3, "instructions"]], "Instrument your code with the libtelemetry API": [[41, "instrument-your-code-with-the-libtelemetry-api"]], "Integration with Kata Containers* (optional)": [[116, "integration-with-kata-containers-optional"]], "Is Clear Linux OS completely Open Source?": [[1, "is-cl-completely-open-source"]], "Is FFmpeg available?": [[0, "is-ffmpeg-available"]], "Is Google* Chrome* available?": [[0, "is-google-chrome-available"]], "Is Microsoft* Visual Studio Code* available?": [[0, "is-microsoft-visual-studio-code-available"]], "Is ZFS* available?": [[0, "is-zfs-available"]], "Is it a derivative of another Linux distribution?": [[0, "is-it-a-derivative-of-another-linux-distribution"]], "Is telemetry required?": [[0, "is-telemetry-required"]], "Kata Containers*": [[121, null]], "Keep your mirror in sync with upstream": [[125, "keep-your-mirror-in-sync-with-upstream"]], "Kernel": [[36, "kernel"], [42, "kernel"]], "Kernel Command Line": [[8, "kernel-command-line"]], "Kernel Configuration": [[7, "kernel-configuration"]], "Kernel Selection": [[8, "kernel-selection"]], "Kernel development": [[46, null]], "Kernel module availability": [[47, "kernel-module-availability"], [48, "kernel-module-availability"]], "Kernels": [[32, null]], "Known Issues": [[140, "known-issues"]], "Known issues": [[129, "known-issues"]], "Kubernetes": [[71, "kubernetes"]], "Kubernetes*": [[122, null]], "Kubernetes* Best Practices": [[123, null]], "Kubernetes* migration": [[34, null]], "LAMP Web Server": [[124, null]], "Latest versions of compilers and low-level libraries": [[36, "latest-versions-of-compilers-and-low-level-libraries"]], "Launch an instance": [[14, "launch-an-instance"]], "Launch and set up virt-manager": [[25, "launch-and-set-up-virt-manager"]], "Launch the Clear Linux OS Installer": [[8, "launch-the-cl-installer"]], "Launch the Clear Linux OS installer": [[7, "launch-the-cl-installer"]], "Link text": [[4, "link-text"]], "Links": [[3, "links"]], "Linux CPU clock frequency scaling": [[53, "linux-cpu-clock-frequency-scaling"]], "Linux OS steps": [[56, "linux-os-steps"]], "List all binary and source RPMs in the current release": [[62, "list-all-binary-and-source-rpms-in-the-current-release"]], "Lists and instructions": [[3, "lists-and-instructions"]], "Load kernel module": [[47, "load-kernel-module"], [48, "load-kernel-module"]], "Load the kernel module at boot": [[140, "load-the-kernel-module-at-boot"]], "Local bundles": [[35, "local-bundles"]], "Locate, select, and launch the Clear Linux OS Basic AMI": [[10, "locate-select-and-launch-the-cl-basic-ami"]], "Log into your Microsoft Azure account": [[11, "log-into-your-microsoft-azure-account"]], "Logs": [[122, "logs"]], "Main Menu": [[8, "main-menu"]], "Maintain or modify mix": [[35, "maintain-or-modify-mix"]], "Maintenance": [[42, "maintenance"]], "Make content scannable": [[4, "make-content-scannable"]], "Man pages": [[80, null]], "Manage User": [[7, "manage-user"], [8, "manage-user"]], "Manage bundles in a container": [[52, "manage-bundles-in-a-container"]], "Manage mix and upstream versions": [[92, "manage-mix-and-upstream-versions"]], "Manifests": [[39, "manifests"]], "Manually migrate customized configuration files": [[114, "manually-migrate-customized-configuration-files"]], "Markup": [[3, "markup"]], "Meaningful logging & telemetry": [[54, "meaningful-logging-telemetry"]], "Menu capitalization": [[4, "menu-capitalization"]], "Method 1: Manually start a VNC session": [[73, "method-1-manually-start-a-vnc-session"]], "Method 1: Shrink Windows partition and install Clear Linux OS": [[127, "method-1-shrink-windows-partition-and-install-cl"]], "Method 1: Use lsblk on the VM": [[61, "method-1-use-lsblk-on-the-vm"]], "Method 1: Use systemd-boot to Boot Clear Linux OS and also Chain-boot GRUB": [[126, "method-1-use-systemd-boot-to-boot-cl-and-also-chain-boot-grub"]], "Method 2: Add another hard disk to your system where you installed Windows": [[127, "method-2-add-another-hard-disk-to-your-system-where-you-installed-windows"]], "Method 2: Automatically start a VNC session via a systemd service script": [[73, "method-2-automatically-start-a-vnc-session-via-a-systemd-service-script"]], "Method 2: Look at the image configuration YAML file": [[61, "method-2-look-at-the-image-configuration-yaml-file"]], "Method 2: Use GRUB to Boot Clear Linux OS": [[126, "method-2-use-grub-to-boot-cl"]], "Method 3: Multi-user logins with authentication through GDM": [[73, "method-3-multi-user-logins-with-authentication-through-gdm"]], "Migrate Clear Containers to Kata Containers*": [[114, null]], "Minimized attack surface": [[37, "minimized-attack-surface"]], "Minimum installation requirements": [[7, "minimum-installation-requirements"], [8, "minimum-installation-requirements"]], "Mirror Upstream Clear Linux OS Update Server": [[125, null]], "Mix setup": [[35, "mix-setup"]], "Modify / Delete User": [[8, "modify-delete-user"]], "Modify User": [[7, "modify-user"]], "Modify a Clear Linux OS-based container image": [[51, null]], "Modify hostname": [[60, null]], "Modify kernel boot parameters": [[46, "modify-kernel-boot-parameters"]], "Modify kernel configuration": [[46, "modify-kernel-configuration"]], "Modify kernel source code": [[46, "modify-kernel-source-code"]], "Monitor options": [[64, "monitor-options"]], "Mount root partition, verify, and fix": [[59, "mount-root-partition-verify-and-fix"]], "Mount the installation ISO": [[26, "mount-the-installation-iso"]], "Multi-boot Clear Linux* OS with other operating systems": [[128, null]], "Multiple builds of libraries with CPU-specific optimizations": [[36, "multiple-builds-of-libraries-with-cpu-specific-optimizations"]], "NAME": [[100, "name"]], "NOTES": [[81, "notes"], [108, "notes"], [109, "notes"]], "NVIDIA* CUDA Toolkit": [[130, null]], "NVIDIA* Drivers": [[129, null]], "Navigation": [[7, "navigation"], [8, "navigation"]], "Network": [[42, "network"]], "Network Proxy (optional)": [[7, "network-proxy-optional"]], "Network interface management": [[95, "network-interface-management"]], "New pages": [[3, "new-pages"]], "Next Steps": [[133, "next-steps"]], "Next steps": [[11, "next-steps"], [58, "next-steps"], [124, "next-steps"], [140, "next-steps"]], "No display or blank screen": [[129, "no-display-or-blank-screen"]], "Notes, cautions, and warnings": [[3, "notes-cautions-and-warnings"]], "Notices": [[3, "notices"]], "Numbered lists": [[3, "numbered-lists"]], "OPENSTACK DATASOURCES": [[109, "openstack-datasources"]], "OPTIONS": [[81, "options"], [83, "options"], [84, "options"], [85, "options"], [86, "options"], [87, "options"], [89, "options"], [90, "options"], [91, "options"], [92, "options"], [98, "options"], [99, "options"], [100, "options"], [102, "options"], [103, "options"], [104, "options"], [106, "options"], [107, "options"], [108, "options"], [109, "options"]], "OS Format": [[94, null]], "OS Security": [[37, null]], "OS software update mixer": [[85, "os-software-update-mixer"]], "OS software update program": [[98, "os-software-update-program"]], "Obtain kernel module source": [[48, "obtain-kernel-module-source"]], "OpenFaaS templates": [[131, "openfaas-templates"]], "OpenFaaS*": [[131, null]], "OpenZFS*": [[140, null]], "Operating system": [[36, "operating-system"]], "Option 1: Use the clear-linux-check-config.sh script on an existing Linux system": [[16, "option-1-use-the-clear-linux-check-config-sh-script-on-an-existing-linux-system"]], "Option 2: Use a Clear Linux OS live image on a non-Linux system": [[16, "option-2-use-a-cl-live-image-on-a-non-linux-system"]], "Optional: Configure RealVNC Image Quality": [[73, "optional-configure-realvnc-image-quality"]], "Optional: Configure kernel modules to load at boot": [[47, "optional-configure-kernel-modules-to-load-at-boot"], [48, "optional-configure-kernel-modules-to-load-at-boot"]], "Optional: Enable SSH access": [[22, "optional-enable-ssh-access"]], "Optional: Install a graphical user interface (GUI)": [[22, "optional-install-a-graphical-user-interface-gui"]], "Optional: Specify module options and aliases": [[47, "optional-specify-module-options-and-aliases"], [48, "optional-specify-module-options-and-aliases"]], "Orchestration and configuration management": [[54, "orchestration-and-configuration-management"]], "Other resources": [[74, "other-resources"]], "Overriding configurations": [[38, "overriding-configurations"]], "Overriding limit": [[63, "overriding-limit"]], "Overview": [[21, "overview"], [27, "overview"], [28, "overview"], [36, "overview"], [41, "overview"], [44, "overview"], [46, "overview"], [47, "overview"], [48, "overview"], [51, "overview"], [53, "overview"], [54, "overview"], [59, "overview"], [60, "overview"], [62, "overview"], [64, "overview"], [65, "overview"], [67, "overview"], [70, "overview"]], "P-states (performance states)": [[53, "p-states-performance-states"]], "PHP and PHP-FPM": [[132, null]], "Package configuration customization": [[122, "package-configuration-customization"]], "Page structure": [[3, "page-structure"]], "Parallelism": [[4, "parallelism"]], "Partition codes": [[8, "partition-codes"]], "Per-user limits": [[63, "per-user-limits"]], "Perform configuration manipulation actions": [[89, "perform-configuration-manipulation-actions"]], "Perform various configuration actions on bundles": [[88, "perform-various-configuration-actions-on-bundles"]], "Perform various configuration actions on mixer RPM repositories": [[91, "perform-various-configuration-actions-on-mixer-rpm-repositories"]], "Performance": [[36, null]], "Performs an OS update": [[96, "performs-an-os-update"]], "Pick a usage and update strategy": [[54, "pick-a-usage-and-update-strategy"]], "Pick an image distribution strategy": [[54, "pick-an-image-distribution-strategy"]], "Power on the VM and boot Clear Linux OS": [[28, "power-on-the-vm-and-boot-cl"]], "Pre-install": [[18, "pre-install"]], "Preliminary steps": [[7, "preliminary-steps"], [8, "preliminary-steps"], [126, "preliminary-steps"]], "Prerequisite": [[40, "prerequisite"]], "Prerequisites": [[9, "prerequisites"], [10, "prerequisites"], [11, "prerequisites"], [12, "prerequisites"], [13, "prerequisites"], [14, "prerequisites"], [15, "prerequisites"], [19, "prerequisites"], [20, "prerequisites"], [21, "prerequisites"], [23, "prerequisites"], [24, "prerequisites"], [25, "prerequisites"], [26, "prerequisites"], [30, "prerequisites"], [34, "prerequisites"], [35, "prerequisites"], [39, "prerequisites"], [41, "prerequisites"], [45, "prerequisites"], [47, "prerequisites"], [48, "prerequisites"], [49, "prerequisites"], [51, "prerequisites"], [52, "prerequisites"], [59, "prerequisites"], [62, "prerequisites"], [67, "prerequisites"], [70, "prerequisites"], [71, "prerequisites"], [113, "prerequisites"], [114, "prerequisites"], [116, "prerequisites"], [117, "prerequisites"], [119, "prerequisites"], [121, "prerequisites"], [122, "prerequisites"], [123, "prerequisites"], [125, "prerequisites"], [126, "prerequisites"], [127, "prerequisites"], [129, "prerequisites"], [130, "prerequisites"], [131, "prerequisites"], [132, "prerequisites"], [134, "prerequisites"], [135, "prerequisites"], [136, "prerequisites"], [137, "prerequisites"], [139, "prerequisites"], [140, "prerequisites"]], "Provides post OS software-update actions": [[110, "provides-post-os-software-update-actions"]], "Proxy": [[8, "proxy"]], "Proxy Configuration": [[71, null]], "Pull a copy of the Linux kernel source code": [[46, "pull-a-copy-of-the-linux-kernel-source-code"]], "Pulling and running an image from Docker Hub*": [[116, "pulling-and-running-an-image-from-docker-hub"]], "Query package info from upstream repository": [[62, null]], "Quick reference": [[39, "quick-reference"]], "Quotation marks": [[4, "quotation-marks"]], "RETURN VALUES": [[102, "return-values"], [103, "return-values"], [105, "return-values"]], "Recommended configurations": [[111, "recommended-configurations"]], "Recommended minimum system requirements": [[111, null]], "Recommended options": [[8, "recommended-options"]], "Reconfigure the VM\u2019s settings to boot the newly-installed Clear Linux OS": [[28, "reconfigure-the-vm-s-settings-to-boot-the-newly-installed-cl"]], "Redis*": [[133, null]], "Reference": [[41, "reference"], [79, null], [122, "reference"]], "References": [[2, "references"], [19, "references"], [30, "references"], [35, "references"]], "Refresh a package and inspect": [[30, "refresh-a-package-and-inspect"]], "Related topic": [[47, "related-topic"]], "Related topics": [[7, "related-topics"], [8, "related-topics"], [10, "related-topics"], [11, "related-topics"], [12, "related-topics"], [13, "related-topics"], [14, "related-topics"], [17, "related-topics"], [21, "related-topics"], [27, "related-topics"], [30, "related-topics"], [31, "related-topics"], [34, "related-topics"], [35, "related-topics"], [36, "related-topics"], [39, "related-topics"], [40, "related-topics"], [46, "related-topics"], [48, "related-topics"], [51, "related-topics"], [55, "related-topics"], [116, "related-topics"], [122, "related-topics"], [136, "related-topics"], [139, "related-topics"]], "Release Cadence": [[1, "release-cadence"]], "Release Workflow": [[49, "release-workflow"]], "Remote-desktop to a host using VNC": [[73, null]], "Remove (distrust) a root CA": [[84, "remove-distrust-a-root-ca"]], "Remove Clear Linux OS virtual host": [[15, "remove-cl-virtual-host"]], "Remove a bundle": [[52, "remove-a-bundle"]], "Request changes be included with the Clear Linux OS kernel": [[46, "request-changes-be-included-with-the-cl-kernel"]], "Required options": [[7, "required-options"], [8, "required-options"]], "Resize the filesystem": [[61, "resize-the-filesystem"]], "Resize the last partition of the virtual disk": [[61, "resize-the-last-partition-of-the-virtual-disk"]], "Resource limits": [[63, null]], "Restart system services after an OS update": [[64, null]], "Restructured boot sequence": [[36, "restructured-boot-sequence"]], "Run Kata Containers": [[114, "run-kata-containers"], [121, "run-kata-containers"]], "Run l3fwd application (Platform B)": [[67, "run-l3fwd-application-platform-b"]], "Run pktgen application (Platform A)": [[67, "run-pktgen-application-platform-a"]], "Run the Hadoop daemons": [[113, "run-the-hadoop-daemons"]], "Run the Jupyter machine learning example code": [[136, "run-the-jupyter-machine-learning-example-code"]], "Run the MapReduce wordcount example": [[113, "run-the-mapreduce-wordcount-example"]], "SEE ALSO": [[81, "see-also"], [82, "see-also"], [83, "see-also"], [84, "see-also"], [85, "see-also"], [86, "see-also"], [87, "see-also"], [88, "see-also"], [89, "see-also"], [90, "see-also"], [91, "see-also"], [92, "see-also"], [93, "see-also"], [94, "see-also"], [95, "see-also"], [96, "see-also"], [97, "see-also"], [98, "see-also"], [99, "see-also"], [100, "see-also"], [101, "see-also"], [102, "see-also"], [103, "see-also"], [104, "see-also"], [105, "see-also"], [106, "see-also"], [107, "see-also"], [108, "see-also"], [109, "see-also"], [110, "see-also"]], "SIGNALS": [[99, "signals"]], "SSH into your host and launch VNC": [[73, "ssh-into-your-host-and-launch-vnc"]], "SUBCOMMANDS": [[85, "subcommands"], [87, "subcommands"], [88, "subcommands"], [89, "subcommands"], [91, "subcommands"], [92, "subcommands"], [98, "subcommands"]], "SYNOPSIS": [[81, "synopsis"], [82, "synopsis"], [83, "synopsis"], [84, "synopsis"], [85, "synopsis"], [86, "synopsis"], [87, "synopsis"], [88, "synopsis"], [89, "synopsis"], [90, "synopsis"], [91, "synopsis"], [92, "synopsis"], [93, "synopsis"], [94, "synopsis"], [95, "synopsis"], [96, "synopsis"], [97, "synopsis"], [98, "synopsis"], [99, "synopsis"], [100, "synopsis"], [101, "synopsis"], [102, "synopsis"], [103, "synopsis"], [104, "synopsis"], [105, "synopsis"], [106, "synopsis"], [107, "synopsis"], [108, "synopsis"], [109, "synopsis"], [110, "synopsis"]], "SYNTAX": [[104, "syntax"]], "Safe Installation": [[7, "safe-installation"], [8, "safe-installation"]], "Samba Server": [[135, null]], "Samba* as a client": [[134, null]], "Save Configuration Settings": [[8, "save-configuration-settings"]], "Saving data locally": [[41, "saving-data-locally"]], "Scaling driver": [[53, "scaling-driver"]], "Scaling governor": [[53, "scaling-governor"]], "Scenarios": [[41, "scenarios"]], "Schedules periodical updates": [[97, "schedules-periodical-updates"]], "Second console: Add a bundle": [[51, "second-console-add-a-bundle"]], "Second layer: httpd": [[51, "second-layer-httpd"]], "Security hardening": [[124, "security-hardening"]], "Security in software": [[37, "security-in-software"]], "Security in system design": [[37, "security-in-system-design"]], "Security in updates": [[37, "security-in-updates"]], "Select Additional Bundles": [[7, "select-additional-bundles"], [8, "select-additional-bundles"]], "Select Installation Media": [[7, "select-installation-media"]], "Select Keyboard": [[7, "select-keyboard"]], "Select Time Zone": [[7, "select-time-zone"]], "Select and start Clear Linux OS virtual host with QingCloud console": [[15, "select-and-start-cl-virtual-host-with-qingcloud-console"]], "Service limits": [[63, "service-limits"]], "Set a static machine id": [[41, "set-a-static-machine-id"]], "Set default kernel to boot": [[43, "set-default-kernel-to-boot"]], "Set hugepages (Platforms A and B)": [[67, "set-hugepages-platforms-a-and-b"]], "Set system time": [[72, null]], "Set up Kubernetes automatically": [[122, "set-up-kubernetes-automatically"]], "Set up Kubernetes manually": [[122, "set-up-kubernetes-manually"]], "Set up WordPress with web-based GUI": [[138, "set-up-wordpress-with-web-based-gui"]], "Set up a Jupyter Notebook": [[136, "set-up-a-jupyter-notebook"]], "Set up a backend server to collect telemetry records": [[41, "set-up-a-backend-server-to-collect-telemetry-records"]], "Set up a nginx web server for mixer": [[35, "set-up-a-nginx-web-server-for-mixer"], [40, "set-up-a-nginx-web-server-for-mixer"]], "Set up an SSH tunnel from your client system to your Clear Linux OS host": [[73, "set-up-an-ssh-tunnel-from-your-client-system-to-your-cl-host"]], "Set up controller node": [[119, "set-up-controller-node"]], "Set up file sharing": [[135, "set-up-file-sharing"]], "Set up kernel development environment": [[46, "set-up-kernel-development-environment"]], "Set up password-less SSH access and pdsh on all nodes": [[119, "set-up-password-less-ssh-access-and-pdsh-on-all-nodes"]], "Set up systemd": [[140, "set-up-systemd"]], "Set up the physical environment (Platforms A and B)": [[67, "set-up-the-physical-environment-platforms-a-and-b"]], "Set up worker nodes": [[119, "set-up-worker-nodes"]], "Set your hostname": [[60, "set-your-hostname"]], "Setting proxy servers for Kubernetes": [[122, "setting-proxy-servers-for-kubernetes"]], "Setup Clear Linux OS VM on GCP": [[13, "setup-cl-vm-on-gcp"]], "Setup NAT": [[20, "setup-nat"]], "Setup a web server to host the mirrored content": [[125, "setup-a-web-server-to-host-the-mirrored-content"]], "Setup dnsmaq for DHCP, DNS, and TFTP functionalities": [[20, "setup-dnsmaq-for-dhcp-dns-and-tftp-functionalities"]], "Setup environment to build source": [[30, "setup-environment-to-build-source"]], "Setup nginx web server to host iPXE": [[20, "setup-nginx-web-server-to-host-ipxe"]], "Show only version and release information for a package in a specific release": [[62, "show-only-version-and-release-information-for-a-package-in-a-specific-release"]], "Show the binary package for a specified binary file": [[62, "show-the-binary-package-for-a-specified-binary-file"]], "Show the source package for a specified binary file": [[62, "show-the-source-package-for-a-specified-binary-file"]], "Show version information for a package in a specific release": [[62, "show-version-information-for-a-package-in-a-specific-release"]], "Show version information for a package in current release": [[62, "show-version-information-for-a-package-in-current-release"]], "Skip to finish installation": [[8, "skip-to-finish-installation"]], "Slow boot times": [[129, "slow-boot-times"]], "Software": [[0, "software"]], "Software Updater Configuration": [[7, "software-updater-configuration"]], "Software availability": [[0, "software-availability"]], "Software build toolchain": [[36, "software-build-toolchain"]], "Software configuration": [[38, "software-configuration"]], "Software version capitalization": [[4, "software-version-capitalization"]], "Some limitations of 3rd-party bundles": [[40, "some-limitations-of-3rd-party-bundles"]], "Start VM and Install Clear Linux OS on Promox": [[24, "start-vm-and-install-cl-on-promox"]], "Start the Redis-server": [[133, "start-the-redis-server"]], "Start the VM": [[21, "start-the-vm"]], "Stateless": [[38, null]], "Stop Clear Containers instances": [[114, "stop-clear-containers-instances"]], "Stop and deallocate the Clear Linux OS VM and resources": [[11, "stop-and-deallocate-the-cl-vm-and-resources"]], "Stop the Clear Linux OS instance": [[10, "stop-the-cl-instance"]], "Structure and formatting": [[3, null]], "Submit a request to add the module": [[47, "submit-a-request-to-add-the-module"], [48, "submit-a-request-to-add-the-module"]], "Swupd Mirror": [[8, "swupd-mirror"]], "System area": [[38, "system-area"]], "System requirements": [[7, "system-requirements"], [8, "system-requirements"], [111, "id1"]], "System reset": [[38, "system-reset"]], "System-wide limits": [[63, "system-wide-limits"]], "TUI (Text-based User Interface)": [[74, "tui-text-based-user-interface"]], "TYPES": [[81, "types"]], "Table 1. Compatible Hardware": [[77, "id2"]], "Table 1. Default partition schema": [[7, "id25"], [8, "id35"]], "Table 1: Types of platform-independent Clear Linux OS images": [[56, "id6"], [78, "id1"]], "Table 1: VNC-server-start Configuration Methods": [[73, "id1"]], "Table 1: Variables in builder.conf": [[35, "id4"]], "Table 2: Bundle directives": [[35, "id6"]], "Table 2: Types of platform-specific Clear Linux OS images": [[56, "id7"], [78, "id2"]], "Telemetrics": [[41, null]], "Telemetry": [[7, "telemetry"], [8, "telemetry"], [64, "telemetry"]], "Telemetry client service": [[106, "telemetry-client-service"]], "Telemetry probes service": [[107, "telemetry-probes-service"]], "Telemetry service administration tool": [[103, "telemetry-service-administration-tool"]], "Telemetry service configuration file": [[104, "telemetry-service-configuration-file"]], "TensorFlow* machine learning": [[136, null]], "Terminate a VNC connection to your host": [[73, "terminate-a-vnc-connection-to-your-host"]], "Test Network Settings": [[8, "test-network-settings"]], "Test directly on a development machine": [[30, "test-directly-on-a-development-machine"]], "Test in a Clear Linux OS virtual machine": [[30, "test-in-a-cl-virtual-machine"]], "Test packaged software": [[30, "test-packaged-software"]], "Test your mirror": [[125, "test-your-mirror"]], "The latest Linux* codebase": [[37, "the-latest-linux-codebase"]], "The telemetry API": [[41, "the-telemetry-api"]], "Thermal management": [[53, "thermal-management"]], "Third console: Save the modified container": [[51, "third-console-save-the-modified-container"]], "Third layer: cgit": [[51, "third-layer-cgit"]], "Time and complexity": [[112, "time-and-complexity"]], "Troubleshooting": [[7, "troubleshooting"], [8, "troubleshooting"], [26, "troubleshooting"], [29, "troubleshooting"], [44, "troubleshooting"], [68, "troubleshooting"], [115, "troubleshooting"], [121, "troubleshooting"], [122, "troubleshooting"], [129, "troubleshooting"], [137, "troubleshooting"], [140, "troubleshooting"]], "Turbo boost": [[53, "turbo-boost"]], "Tutorial difficulty ratings": [[112, null]], "Tutorials": [[120, null]], "Uninstallation": [[129, "uninstallation"]], "Uninstalling": [[122, "uninstalling"], [130, "uninstalling"]], "Unmount the ISO": [[26, "unmount-the-iso"]], "Update content validation": [[65, "update-content-validation"]], "Update the Clear Linux OS instance": [[10, "update-the-cl-instance"]], "Update the control plane": [[123, "update-the-control-plane"]], "Update worker nodes": [[123, "update-worker-nodes"]], "Updates": [[1, "updates"], [39, "updates"]], "Updating": [[39, "updating"], [129, "updating"]], "Upgrade 1.17.x \u2014> 1.18.15": [[34, "upgrade-1-17-x-1-18-15"]], "Upgrade 1.18.15 \u2014> 1.19.x": [[34, "upgrade-1-18-15-1-19-x"]], "Upload Clear Linux OS Live Server Image to Promox Server": [[24, "upload-cl-live-server-image-to-promox-server"]], "Upload image": [[12, "upload-image"]], "Upload the Clear Linux OS image into the bucket": [[14, "upload-the-cl-image-into-the-bucket"]], "Upload the Clear Linux OS installer ISO to the VMware server": [[28, "upload-the-cl-installer-iso-to-the-vmware-server"]], "Upstream bundles": [[35, "upstream-bundles"]], "Usage": [[33, "usage"]], "Use DPDK to send packets between platforms": [[67, null]], "Use imperatives": [[4, "use-imperatives"]], "Use phpMyAdmin to manage a database": [[124, "use-phpmyadmin-to-manage-a-database"]], "Use pre-built image": [[12, "use-pre-built-image"]], "Use present tense": [[4, "use-present-tense"]], "Use simple English": [[4, "use-simple-english"]], "Use simple words": [[4, "use-simple-words"]], "Use strong verbs": [[4, "use-strong-verbs"]], "Use the active voice": [[4, "use-the-active-voice"]], "Use the serial comma": [[4, "use-the-serial-comma"]], "Use your cluster": [[122, "use-your-cluster"]], "User areas": [[38, "user-areas"]], "User experience level": [[112, "user-experience-level"]], "Using Network Manager": [[74, "using-network-manager"]], "Using NetworkManager": [[66, "using-networkmanager"]], "Using systemd-networkd": [[66, "using-systemd-networkd"]], "Using the NVIDIA CUDA Toolkit": [[130, "using-the-nvidia-cuda-toolkit"]], "Using wpa_supplicant": [[74, "using-wpa-supplicant"]], "Utility to enforce kernel runtime parameters": [[36, "utility-to-enforce-kernel-runtime-parameters"]], "VM only": [[32, "vm-only"]], "VMware* Workstation Pro": [[137, null]], "Validate signatures": [[65, null]], "Verified trust": [[37, "verified-trust"]], "Verify controller can run jobs on all nodes": [[119, "verify-controller-can-run-jobs-on-all-nodes"]], "Verify integrity of installer media (optional)": [[7, "verify-integrity-of-installer-media-optional"], [8, "verify-integrity-of-installer-media-optional"]], "Verify setup": [[20, "verify-setup"]], "Verify the integrity of the Clear Linux OS image": [[56, "verify-the-integrity-of-the-cl-image"], [56, "verify-mac"], [56, "verify-windows"]], "Versioning": [[39, "versioning"]], "Versioning infrastructure": [[54, "versioning-infrastructure"]], "View the list of trusted CAs": [[84, "view-the-list-of-trusted-cas"]], "View your hostname": [[60, "view-your-hostname"]], "WORKFLOW": [[109, "workflow"]], "What Clear Linux OS isn\u2019t?": [[1, "what-cl-isn-t"]], "What is CRI+O?": [[122, "what-is-cri-o"]], "What is Clear Linux OS?": [[0, "what-is-cl"], [1, "what-is-cl"]], "What is Docker?": [[122, "what-is-docker"]], "What is Kata Containers*?": [[122, "what-is-kata-containers"]], "What is Kubernetes?": [[122, "what-is-kubernetes"]], "What is a Container Network Interface (CNI)?": [[122, "what-is-a-container-network-interface-cni"]], "What is a Container Runtime Interface (CRI)?": [[122, "what-is-a-container-runtime-interface-cri"]], "What is containerd?": [[122, "what-is-containerd"]], "What is the default firewall?": [[0, "what-is-the-default-firewall"]], "What makes Clear Linux OS different?": [[1, "what-makes-cl-different"]], "What software is available on Clear Linux OS?": [[0, "what-software-is-available-on-cl"]], "What\u2019s the thinking around Server vs. Desktop?": [[1, "whats-the-thinking-around-server-vs-desktop"]], "Where are the files that I usually see under /etc like fstab?": [[0, "where-are-the-files-that-i-usually-see-under-etc-like-fstab"]], "Where can I install system-wide files then?": [[95, "where-can-i-install-system-wide-files-then"]], "Which Components are used in Clear Linux?": [[1, "which-components-are-used-in-clear-linux"]], "White space and line length": [[3, "white-space-and-line-length"]], "Who is the target audience?": [[1, "who-is-the-target-audience"]], "Why another Linux distribution?": [[0, "why-another-linux-distribution"]], "Why create new components rather than modifying existing projects?": [[1, "why-create-new-components-rather-than-modifying-existing-projects"]], "Why does it have a different approach to software management?": [[0, "why-does-it-have-a-different-approach-to-software-management"]], "Windows* OS steps": [[56, "windows-os-steps"]], "WordPress* Server": [[138, null]], "Workstation Setup": [[55, "workstation-setup"]], "Write configuration to disk": [[8, "write-configuration-to-disk"]], "Writing guide": [[4, null]], "YubiKey* Support": [[139, null]], "allow": [[64, "allow"]], "autospec": [[30, null]], "autospec/mock": [[71, "autospec-mock"]], "autoupdate": [[98, "autoupdate"]], "b43 and b43legacy": [[115, "b43-and-b43legacy"]], "boot partition": [[7, "boot-partition"], [8, "boot-partition"]], "bootcmd": [[81, "bootcmd"]], "brcmfmac and brcmsmac": [[115, "brcmfmac-and-brcmsmac"]], "broadcom-wl": [[115, "broadcom-wl"]], "builder.conf": [[35, "builder-conf"]], "bundle-add ": [[98, "bundle-add-bundles"]], "bundle-info": [[98, "bundle-info"]], "bundle-list": [[98, "bundle-list"]], "bundle-remove ": [[98, "bundle-remove-bundles"]], "check-update": [[98, "check-update"]], "clean": [[98, "clean"]], "cloud-config": [[81, null]], "clr-man-pages": [[80, "clr-man-pages"]], "clr-power-tweaks": [[80, "clr-power-tweaks"]], "clr-power-tweaks.conf": [[82, null]], "clr_power": [[83, null]], "clrtrust": [[80, "clrtrust"], [84, null]], "containerd": [[122, "containerd"]], "default": [[64, "default"]], "diagnose": [[98, "diagnose"]], "disallow": [[64, "disallow"]], "envar": [[81, "envar"]], "firewalld": [[68, "firewalld"]], "git over SSH": [[71, "git-over-ssh"]], "groups": [[81, "groups"]], "hashdump": [[98, "hashdump"]], "hostname": [[81, "hostname"]], "info": [[98, "info"]], "ipset": [[68, "ipset"]], "iptables": [[68, "iptables"]], "is-active": [[41, "is-active"]], "ldconfig": [[95, "ldconfig"]], "macOS* steps": [[56, "macos-steps"]], "micro-config-drive": [[80, "micro-config-drive"]], "mirror": [[98, "mirror"]], "mixer": [[35, null], [85, null]], "mixer-tools": [[80, "mixer-tools"]], "mixer.add-rpms": [[86, null]], "mixer.build": [[87, null]], "mixer.bundle": [[88, null]], "mixer.config": [[89, null]], "mixer.init": [[90, null]], "mixer.repo": [[91, null]], "mixer.versions": [[92, null]], "nginx": [[95, "nginx"]], "os-core": [[93, null]], "os-install": [[98, "os-install"]], "package_upgrade": [[81, "package-upgrade"]], "packages": [[81, "packages"]], "php-fpm": [[95, "php-fpm"]], "repair": [[98, "repair"]], "root partition": [[7, "root-partition"], [8, "root-partition"]], "runcmd": [[81, "runcmd"]], "search": [[98, "search"]], "search-file ": [[98, "search-file-string"]], "service": [[81, "service"]], "ssh_authorized_keys": [[81, "ssh-authorized-keys"]], "sshd": [[95, "sshd"]], "start/stop/restart": [[41, "start-stop-restart"]], "stateless": [[95, null]], "swap partition (optional)": [[7, "swap-partition-optional"], [8, "swap-partition-optional"]], "swupd": [[39, null], [98, null]], "swupd 3rd-party": [[40, null]], "swupd search": [[55, "swupd-search"]], "swupd-client": [[80, "swupd-client"]], "swupd-update.service": [[96, null]], "swupd-update.timer": [[97, null]], "systemd": [[95, "systemd"]], "tallow": [[80, "tallow"], [99, null]], "tallow.conf": [[100, null]], "tallow.patterns": [[101, null]], "telem-record-gen": [[102, null]], "telemctl": [[103, null]], "telemetrics-client": [[80, "telemetrics-client"]], "telemetrics.conf": [[104, null]], "telemetry": [[105, null]], "telempostd": [[106, null]], "telemprobd": [[107, null]], "ucd": [[109, null]], "ucd-data-fetch": [[108, null]], "update": [[98, "update"]], "update-triggers.target": [[110, null]], "users": [[81, "users"]], "wait_for_network": [[81, "wait-for-network"]], "write_files": [[81, "write-files"]], "\u201cOh no! Something has gone wrong\u201d GNOME* crash": [[129, "oh-no-something-has-gone-wrong-gnome-crash"]]}, "docnames": ["FAQ/index", "about", "collaboration/collaboration", "collaboration/structure-formatting", "collaboration/writing-guide", "disclaimers", "documentation_license", "get-started/bare-metal-install-desktop", "get-started/bare-metal-install-server", "get-started/bootable-usb", "get-started/cloud-install/aws-web", "get-started/cloud-install/azure", "get-started/cloud-install/digitalocean", "get-started/cloud-install/gce", "get-started/cloud-install/import-clr-aws", "get-started/cloud-install/qingcloud", "get-started/compatibility-check", "get-started/containers/container-images", "get-started/index", "get-started/install-configfile", "get-started/ipxe-install", "get-started/virtual-machine-install/hyper-v", "get-started/virtual-machine-install/kvm", "get-started/virtual-machine-install/parallels", "get-started/virtual-machine-install/proxmox", "get-started/virtual-machine-install/virt-manager", "get-started/virtual-machine-install/virtualbox-cl-installer", "get-started/virtual-machine-install/vmw-player", "get-started/virtual-machine-install/vmware-esxi-install-cl", "guides/clear/autoproxy", "guides/clear/autospec", "guides/clear/bundles", "guides/clear/compatible-kernels", "guides/clear/debug", "guides/clear/k8s-migration", "guides/clear/mixer", "guides/clear/performance", "guides/clear/security", "guides/clear/stateless", "guides/clear/swupd", "guides/clear/swupd-3rd-party", "guides/clear/telemetrics", "guides/index", "guides/kernel/change-kernel-boot", "guides/kernel/firmware", "guides/kernel/kernel-boot-msg", "guides/kernel/kernel-development", "guides/kernel/kernel-modules", "guides/kernel/kernel-modules-dkms", "guides/maintenance/architect-lifecycle", "guides/maintenance/configure-hugepages", "guides/maintenance/container-image-modify", "guides/maintenance/container-image-new", "guides/maintenance/cpu-performance", "guides/maintenance/deploy-at-scale", "guides/maintenance/developer-workstation", "guides/maintenance/download-verify-decompress", "guides/maintenance/enable-systemd-boot-menu", "guides/maintenance/enable-user-space", "guides/maintenance/fix-broken-install", "guides/maintenance/hostname", "guides/maintenance/increase-virtual-disk-size", "guides/maintenance/query-upstream", "guides/maintenance/resource-limits", "guides/maintenance/restart", "guides/maintenance/validate-signatures", "guides/network/assign-static-ip", "guides/network/dpdk", "guides/network/firewall", "guides/network/network-bonding", "guides/network/openssh-server", "guides/network/proxy", "guides/network/time", "guides/network/vnc", "guides/network/wifi", "index", "reference/bundles/bundles", "reference/compatible-hardware", "reference/image-types", "reference/index", "reference/man-pages", "reference/manpages/cloud-config.5", "reference/manpages/clr-power-tweaks.conf.5", "reference/manpages/clr_power.1", "reference/manpages/clrtrust.1", "reference/manpages/mixer.1", "reference/manpages/mixer.add-rpms.1", "reference/manpages/mixer.build.1", "reference/manpages/mixer.bundle.1", "reference/manpages/mixer.config.1", "reference/manpages/mixer.init.1", "reference/manpages/mixer.repo.1", "reference/manpages/mixer.versions.1", "reference/manpages/os-core.7", "reference/manpages/os-format.7", "reference/manpages/stateless.7", "reference/manpages/swupd-update.service.4", "reference/manpages/swupd-update.timer.4", "reference/manpages/swupd.1", "reference/manpages/tallow.1", "reference/manpages/tallow.conf.5", "reference/manpages/tallow.patterns.5", "reference/manpages/telem-record-gen.1", "reference/manpages/telemctl.1", "reference/manpages/telemetrics.conf.5", "reference/manpages/telemetry.3", "reference/manpages/telempostd.1", "reference/manpages/telemprobd.1", "reference/manpages/ucd-data-fetch.1", "reference/manpages/ucd.1", "reference/manpages/update-triggers.target.4", "reference/system-requirements", "reference/tutorial-ratings", "tutorials/apache-hadoop", "tutorials/archive/kata_migration", "tutorials/broadcom", "tutorials/docker", "tutorials/flatpak", "tutorials/fmv", "tutorials/hpc", "tutorials/index", "tutorials/kata", "tutorials/kubernetes", "tutorials/kubernetes-bp", "tutorials/lamp-server", "tutorials/mirror-upstream-server", "tutorials/multi-boot/dual-boot-linux", "tutorials/multi-boot/dual-boot-win", "tutorials/multi-boot/multi-boot", "tutorials/nvidia", "tutorials/nvidia-cuda", "tutorials/openfaas", "tutorials/php", "tutorials/redis", "tutorials/smb-desktop", "tutorials/smb-server", "tutorials/tensorflow-machine-learning", "tutorials/vmware-workstation", "tutorials/wordpress", "tutorials/yubikey-u2f", "tutorials/zfs"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2}, "filenames": ["FAQ/index.rst", "about.rst", "collaboration/collaboration.rst", "collaboration/structure-formatting.rst", "collaboration/writing-guide.rst", "disclaimers.rst", "documentation_license.rst", "get-started/bare-metal-install-desktop.rst", "get-started/bare-metal-install-server.rst", "get-started/bootable-usb.rst", "get-started/cloud-install/aws-web.rst", "get-started/cloud-install/azure.rst", "get-started/cloud-install/digitalocean.rst", "get-started/cloud-install/gce.rst", "get-started/cloud-install/import-clr-aws.rst", "get-started/cloud-install/qingcloud.rst", "get-started/compatibility-check.rst", "get-started/containers/container-images.rst", "get-started/index.rst", "get-started/install-configfile.rst", "get-started/ipxe-install.rst", "get-started/virtual-machine-install/hyper-v.rst", "get-started/virtual-machine-install/kvm.rst", "get-started/virtual-machine-install/parallels.rst", "get-started/virtual-machine-install/proxmox.rst", "get-started/virtual-machine-install/virt-manager.rst", "get-started/virtual-machine-install/virtualbox-cl-installer.rst", "get-started/virtual-machine-install/vmw-player.rst", "get-started/virtual-machine-install/vmware-esxi-install-cl.rst", "guides/clear/autoproxy.rst", "guides/clear/autospec.rst", "guides/clear/bundles.rst", "guides/clear/compatible-kernels.rst", "guides/clear/debug.rst", "guides/clear/k8s-migration.rst", "guides/clear/mixer.rst", "guides/clear/performance.rst", "guides/clear/security.rst", "guides/clear/stateless.rst", "guides/clear/swupd.rst", "guides/clear/swupd-3rd-party.rst", "guides/clear/telemetrics.rst", "guides/index.rst", "guides/kernel/change-kernel-boot.rst", "guides/kernel/firmware.rst", "guides/kernel/kernel-boot-msg.rst", "guides/kernel/kernel-development.rst", "guides/kernel/kernel-modules.rst", "guides/kernel/kernel-modules-dkms.rst", "guides/maintenance/architect-lifecycle.rst", "guides/maintenance/configure-hugepages.rst", "guides/maintenance/container-image-modify.rst", "guides/maintenance/container-image-new.rst", "guides/maintenance/cpu-performance.rst", "guides/maintenance/deploy-at-scale.rst", "guides/maintenance/developer-workstation.rst", "guides/maintenance/download-verify-decompress.rst", "guides/maintenance/enable-systemd-boot-menu.rst", "guides/maintenance/enable-user-space.rst", "guides/maintenance/fix-broken-install.rst", "guides/maintenance/hostname.rst", "guides/maintenance/increase-virtual-disk-size.rst", "guides/maintenance/query-upstream.rst", "guides/maintenance/resource-limits.rst", "guides/maintenance/restart.rst", "guides/maintenance/validate-signatures.rst", "guides/network/assign-static-ip.rst", "guides/network/dpdk.rst", "guides/network/firewall.rst", "guides/network/network-bonding.rst", "guides/network/openssh-server.rst", "guides/network/proxy.rst", "guides/network/time.rst", "guides/network/vnc.rst", "guides/network/wifi.rst", "index.rst", "reference/bundles/bundles.rst", "reference/compatible-hardware.rst", "reference/image-types.rst", "reference/index.rst", "reference/man-pages.rst", "reference/manpages/cloud-config.5.rst", "reference/manpages/clr-power-tweaks.conf.5.rst", "reference/manpages/clr_power.1.rst", "reference/manpages/clrtrust.1.rst", "reference/manpages/mixer.1.rst", "reference/manpages/mixer.add-rpms.1.rst", "reference/manpages/mixer.build.1.rst", "reference/manpages/mixer.bundle.1.rst", "reference/manpages/mixer.config.1.rst", "reference/manpages/mixer.init.1.rst", "reference/manpages/mixer.repo.1.rst", "reference/manpages/mixer.versions.1.rst", "reference/manpages/os-core.7.rst", "reference/manpages/os-format.7.rst", "reference/manpages/stateless.7.rst", "reference/manpages/swupd-update.service.4.rst", "reference/manpages/swupd-update.timer.4.rst", "reference/manpages/swupd.1.rst", "reference/manpages/tallow.1.rst", "reference/manpages/tallow.conf.5.rst", "reference/manpages/tallow.patterns.5.rst", "reference/manpages/telem-record-gen.1.rst", "reference/manpages/telemctl.1.rst", "reference/manpages/telemetrics.conf.5.rst", "reference/manpages/telemetry.3.rst", "reference/manpages/telempostd.1.rst", "reference/manpages/telemprobd.1.rst", "reference/manpages/ucd-data-fetch.1.rst", "reference/manpages/ucd.1.rst", "reference/manpages/update-triggers.target.4.rst", "reference/system-requirements.rst", "reference/tutorial-ratings.rst", "tutorials/apache-hadoop.rst", "tutorials/archive/kata_migration.rst", "tutorials/broadcom.rst", "tutorials/docker.rst", "tutorials/flatpak.rst", "tutorials/fmv.rst", "tutorials/hpc.rst", "tutorials/index.rst", "tutorials/kata.rst", "tutorials/kubernetes.rst", "tutorials/kubernetes-bp.rst", "tutorials/lamp-server.rst", "tutorials/mirror-upstream-server.rst", "tutorials/multi-boot/dual-boot-linux.rst", "tutorials/multi-boot/dual-boot-win.rst", "tutorials/multi-boot/multi-boot.rst", "tutorials/nvidia.rst", "tutorials/nvidia-cuda.rst", "tutorials/openfaas.rst", "tutorials/php.rst", "tutorials/redis.rst", "tutorials/smb-desktop.rst", "tutorials/smb-server.rst", "tutorials/tensorflow-machine-learning.rst", "tutorials/vmware-workstation.rst", "tutorials/wordpress.rst", "tutorials/yubikey-u2f.rst", "tutorials/zfs.rst"], "indexentries": {"[shareddrive]": [[135, "index-0", false]], "environment variable": [[41, "index-0", false], [67, "index-0", false], [67, "index-1", false], [67, "index-2", false], [67, "index-3", false], [135, "index-0", false], [135, "index-1", false]], "https_proxy": [[41, "index-0", false]], "rte_sdk": [[67, "index-0", false], [67, "index-2", false]], "rte_target": [[67, "index-1", false], [67, "index-3", false]], "valid users": [[135, "index-1", false]]}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [3, 4, 10, 12, 14, 15, 16, 19, 22, 26, 27, 29, 30, 34, 35, 36, 37, 39, 40, 41, 44, 45, 46, 47, 48, 51, 52, 53, 54, 62, 63, 67, 69, 71, 73, 74, 76, 81, 82, 83, 84, 87, 88, 90, 94, 95, 98, 99, 102, 112, 115, 116, 118, 119, 122, 126, 129, 130, 132, 133, 136, 138, 140], "0": [4, 6, 8, 12, 14, 19, 20, 22, 26, 30, 34, 35, 39, 41, 43, 46, 48, 50, 52, 53, 61, 62, 67, 71, 73, 74, 76, 81, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 115, 116, 117, 118, 119, 122, 125, 126, 129, 131, 132, 133, 137, 140], "00": [11, 26, 43, 51, 62, 67, 74, 119], "000": 9, "0000": [66, 67, 118], "00000": 113, "00000000": 66, "000000000": 118, "000000000000": 66, "0001": 131, "0022": 22, "00a0c93ec93b": 59, "00bdf0dc": 126, "00bf4f8c8c0ec006633a48fd9ee746b30bb9df17": 46, "00fa9ccd98e9b8378": 14, "01": [62, 67, 118, 119, 140], "012f5fa81cb5": 43, "018536": 11, "02": [11, 62], "0200": 67, "03": [11, 62, 67, 84], "04": [11, 51, 62, 67, 84, 119, 126], "048": 50, "05": [52, 62, 118], "0501": 46, "0502": 46, "0657fd6d": 59, "0666": 130, "08": [34, 76, 118], "08d400baffd": 52, "09": [27, 118], "0933c84b4f4f": 59, "0a4c": 43, "0bedd545": 126, "0ceae320279b": 52, "0d": [11, 74], "0dai": 76, "0m": 45, "0req": 132, "0w23h8": 77, "0x0": 59, "0x0000": 43, "0x0001": 43, "0x0007": 43, "0x1": 74, "0x3": 67, "0x402": 22, "0xef": 59, "0xf": 67, "1": [1, 3, 4, 9, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 33, 37, 38, 41, 43, 45, 48, 49, 50, 52, 53, 54, 59, 62, 65, 66, 67, 69, 72, 74, 76, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 122, 124, 125, 129, 131, 132, 134, 135, 136, 138], "10": [7, 8, 10, 11, 12, 13, 14, 15, 21, 24, 25, 26, 27, 28, 35, 41, 43, 45, 50, 70, 74, 76, 90, 92, 98, 100, 101, 119, 122, 126, 128, 130, 132, 136], "100": [20, 39, 41, 51, 52, 119, 125, 133, 137], "1000": [41, 133], "1000000": 118, "1001": 46, "10022": [22, 95], "100644": [30, 51], "100g": 127, "100gb": 125, "100m": [9, 59, 127], "100mb": 127, "101": 118, "1024": [67, 119], "1024m": 61, "1048576": 126, "105": 43, "1050623": 126, "1050624": 126, "10g": 22, "10gb": 22, "11": [7, 8, 10, 12, 13, 14, 24, 25, 26, 27, 28, 51, 55, 61, 76, 98, 117, 118, 126, 132], "1106": 126, "111": 118, "112": 118, "1131": 125, "114": 118, "115200n8": 43, "117": 122, "119": 9, "11d2": 59, "12": [4, 7, 8, 10, 11, 13, 14, 24, 26, 27, 28, 34, 40, 52, 98, 122, 126], "120": 104, "122": 41, "1234": 73, "127": [52, 71, 73, 100, 116, 122, 131], "128mb": [27, 28, 111], "13": [0, 7, 8, 10, 11, 13, 14, 24, 27, 28, 30, 34, 51, 62, 76, 77, 98, 118, 132], "130": 74, "13t23": 11, "14": [7, 8, 10, 11, 13, 14, 23, 27, 28, 30, 41, 52, 59, 76, 98], "142m": [9, 59], "1434": 43, "1436": 43, "143m": 127, "14452": 132, "147": 118, "148": 118, "1497": 119, "14e4": 115, "15": [3, 7, 8, 11, 13, 14, 19, 27, 28, 30, 39, 41, 51, 52, 76, 98, 101, 119, 137], "150": [7, 118], "15000": 62, "150m": [8, 19, 20, 127], "150mb": [7, 8], "151": 118, "1521": 67, "1539023189": 41, "1539023621": 41, "15780": 11, "1588358889": 125, "159": 118, "15960": 11, "15g": 9, "15m": [20, 122], "15th": 2, "16": [7, 8, 13, 14, 20, 27, 28, 62, 71, 76, 80, 98, 118, 122], "16050": 11, "16150": 11, "162": 118, "1648877": 136, "16500": 11, "1663": 119, "168": [20, 35, 69, 71, 73, 100, 122, 125], "16810": 11, "169": [108, 109], "16e3ed0df8da": 52, "16m": [9, 127], "17": [7, 8, 13, 14, 51, 52, 76, 84, 98, 118, 119, 132, 136], "170": 118, "172": 122, "1723": 119, "173": 118, "174": 118, "175": 20, "17650": 52, "17660": 52, "177": 73, "17790": 52, "17820": 52, "17850": 52, "17870": 52, "18": [7, 8, 13, 14, 30, 60, 98], "180": 4, "18080": 11, "181": 118, "184": 10, "18620": 11, "187": 118, "18860": 11, "18940": 10, "19": [7, 8, 13, 14, 45, 76, 98, 118, 119, 126, 132], "190": 118, "19100": 10, "1915": 119, "192": [20, 35, 69, 71, 73, 100, 118, 122, 125], "195": [74, 118], "19600": 11, "197": 118, "1985": 76, "1995": 76, "19b4411cf4bd": 52, "1ab": 76, "1ade": 126, "1e": 67, "1g": [8, 9, 50], "1gb": [27, 50], "1m": [45, 132], "1min": 119, "1st": 74, "2": [3, 4, 7, 8, 9, 10, 12, 13, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 34, 36, 38, 41, 43, 46, 52, 53, 60, 62, 67, 72, 76, 82, 98, 101, 109, 111, 113, 115, 117, 122, 124, 125, 130, 131, 134, 135, 136, 138, 140], "20": [7, 8, 13, 14, 34, 35, 41, 43, 46, 51, 57, 61, 62, 76, 84, 98, 111, 122, 126, 127], "200": 122, "2000x1200": 73, "2001": 46, "2008": 36, "200m": 8, "201": 69, "2010": 36, "2012": [11, 52], "2017": [11, 52, 81, 93, 95, 96, 97, 102, 103, 104, 105, 107, 108, 109, 110, 118], "2018": [85, 86, 87, 88, 89, 90, 91, 92, 94, 106], "2019": [42, 51, 62, 108, 132], "20190616": 51, "2020": [98, 119], "20200305t153154z": 14, "20200305t231847z": 14, "20200305t233347z": 14, "2024": 80, "2031": 84, "204288000": 126, "2048": [21, 26, 50, 67, 126], "2048gb": 25, "2048kb": [50, 67], "2048mb": 28, "207": 118, "209": 10, "20gb": 25, "21": [7, 8, 9, 14, 34, 62, 98, 118, 119], "21000": 62, "215": 118, "219969c5": 126, "21gb": [126, 127], "22": [3, 7, 8, 14, 22, 42, 51, 70, 71, 98, 119, 129], "223": 115, "2233": 45, "2236710e4fc11e4a646ce956c7802788": 41, "22533": 113, "22674": 113, "22854": 113, "229": 118, "22gb": 126, "23": [7, 8, 14, 34, 62, 98, 119], "23046": 113, "23150": 113, "23300": 39, "234": [7, 8], "237": 126, "237180": 39, "2375": 22, "24": [7, 8, 14, 69, 76, 98], "2412": 74, "244": 122, "24430": 39, "244m": [59, 127], "245": [11, 45], "245m": 9, "2462": 74, "248": 8, "249": 118, "25": [8, 14, 35, 73, 74, 98, 126, 127], "250": 126, "250m": [20, 126, 127], "250mb": 126, "25180": 41, "252": [8, 34], "253": 20, "254": [61, 108, 109], "255": [7, 20, 43], "256": [7, 43, 118], "256m": 8, "26": [8, 14, 51, 74, 84, 98, 118], "2620": 77, "26228": 113, "264d": 126, "265": 43, "2699": 77, "2699a": 77, "27": [8, 14, 35, 98, 118], "27000": 121, "271": 115, "272336": 51, "2723b7d20716": 52, "279505430": 118, "27a3": 74, "28": [8, 14, 35, 52, 98, 119, 136], "284": 118, "286g": 127, "28881": 136, "29": [8, 74, 98], "29740": 35, "2a": 84, "2c": 74, "2c27": 126, "2d": [76, 84], "2d60cd03": 126, "2f": 84, "2f070e8e71679f2b1f28794e3a6c42e": 41, "2g": [8, 9, 59, 126], "2gb": 28, "2m12": 122, "2mb": 50, "2mbp": 15, "2n": 11, "2nd": [74, 111, 139], "3": [3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 34, 41, 52, 61, 62, 66, 67, 74, 76, 81, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 117, 118, 119, 124, 126, 127, 131, 134, 136, 138], "30": [8, 35, 41, 61, 62, 69, 98, 115, 125], "300": [45, 61, 104], "30010": 19, "30140": 23, "30700": 35, "31": [7, 8, 98], "3104": 77, "31110": 51, "31112": 131, "31130": 67, "316": 118, "31870": 12, "31880": 61, "31930": 121, "32": [8, 26, 51, 61, 76, 98], "32150": 59, "32400": 14, "32570": 40, "32900": 125, "32bit": 76, "32gb": 27, "32m": [19, 35, 61], "33": [8, 118, 119], "33000": 125, "33010": 125, "333": 118, "334": 8, "335": [8, 126, 127], "337d": 126, "33974": 52, "33982": 52, "33cb": 126, "33m": 61, "34": [8, 10, 19, 62, 74, 98, 119, 132], "34090": 34, "3425": 43, "34270": 34, "345": 62, "346676": 11, "35": [51, 59, 98], "36": [84, 98, 118], "3600": 100, "360080695296": 126, "3667u": 77, "37": [11, 19, 98], "377": 52, "38": [43, 74, 98], "387": 129, "38792": 11, "39": [10, 119], "3986": 98, "3a": 11, "3ad": 69, "3cd6bfa5da77": 126, "3d": 76, "3de": 37, "3dprint": 76, "3e": 74, "3e634d6e0792": 52, "3f36746426fa": 43, "3g": [35, 59, 76, 127], "3q4d": 52, "3rd": [1, 35, 42, 74], "4": [6, 7, 8, 9, 10, 11, 12, 13, 14, 22, 23, 24, 25, 26, 27, 28, 34, 41, 46, 52, 60, 62, 67, 69, 73, 76, 81, 84, 96, 97, 98, 101, 102, 110, 111, 115, 117, 118, 119, 122, 124, 126, 127, 136, 138], "40": [35, 41], "400": [10, 119], "404": [35, 40, 41], "4096": [22, 67], "40_custom": 126, "40b7": 126, "40d0": 126, "41": [45, 119], "4130": 77, "41cf": 43, "42": [52, 118], "4200": 70, "4210u": 77, "423": 39, "4250u": 77, "43": 45, "43c4": 59, "44": 118, "440b29bb8c4f": 43, "443": 122, "4498": 43, "450m": [9, 127], "4542": 136, "45gb": 125, "45m": 122, "46": [62, 74], "4650u": 41, "47": [45, 51, 62, 119], "4700mq": 77, "4790": 77, "48": 127, "48d8a9eb": 43, "49": [34, 118, 137], "493c": 126, "497430528": 126, "498481151": 126, "498481152": 126, "498993151": 126, "498993152": 126, "4a": 74, "4a16": 126, "4a62": 43, "4a67b082": 43, "4b": 84, "4b0ca67300727477913c331ff124928a98bcf2fb12c011a855f17cd73137a890": 65, "4bad": 126, "4cd5": 126, "4cf2": 74, "4d0d60207a904ebbab96680a51ac1339": 60, "4d5e": 43, "4db1": 59, "4e9f": 126, "4eb1": 43, "4f": 74, "4f34": 126, "4f68bce3": 59, "4g": [8, 126, 127], "4gb": [9, 24, 111, 127], "4k": 61, "4m": 9, "5": [4, 7, 8, 9, 10, 12, 13, 14, 23, 24, 25, 26, 27, 28, 34, 45, 47, 48, 61, 62, 73, 76, 81, 82, 83, 95, 98, 99, 100, 101, 104, 106, 107, 109, 117, 118, 124, 126, 127, 129, 136, 137, 138, 140], "50": [19, 39, 62, 63, 121, 122, 131], "5000": 20, "50000": 20, "509": 84, "51": 114, "510m": 61, "512": [36, 50, 61, 126], "512000": 126, "512m": [35, 61, 126], "5180": 74, "51a107cde388": 126, "52": [35, 74], "5240": 74, "528": 62, "54": [61, 73, 74, 119], "5414c3a12993": 52, "54g": [35, 61], "55": [45, 74, 119, 122], "5557u": 77, "559": 62, "56": 119, "57": [52, 76], "5739": 126, "576": 50, "5765": 74, "58": 119, "58a7": 126, "59": [11, 41, 104, 119], "5900": 73, "5901": 73, "5902": 73, "5903": 73, "5905": 73, "5924": 22, "59260fe": 51, "5a7926b4": 126, "5c0c": 43, "5d": 74, "5g": [9, 59, 127], "5gb": 35, "5gpj2_kube": 122, "5m7": 122, "5mb": 52, "6": [7, 8, 9, 10, 11, 12, 13, 14, 20, 23, 24, 25, 26, 27, 28, 30, 34, 39, 43, 73, 98, 101, 115, 117, 118, 124, 126, 127, 131, 136, 138], "60": [20, 82, 122], "600": [119, 131], "600mb": [28, 111], "6138": 77, "616mb": 52, "62": 84, "624640": 50, "6260u": 77, "627": 8, "628": 62, "62gib": 52, "63": [7, 8, 60], "632": 60, "6379": 133, "64": [16, 23, 26, 27, 28, 60, 111, 115, 126, 129], "643": 59, "648": 119, "64bit": 12, "64mib": [7, 8], "65": 74, "65221b07": 126, "6560u": 77, "6600": 77, "67": [67, 74], "67ba1j": 12, "67e7ac9a": 43, "691544026": 118, "692": 51, "696": 46, "6_30_223_271": 115, "6b2a6bf": 51, "6g": [61, 127], "6h": 20, "6m": [8, 59], "7": [7, 8, 9, 10, 11, 12, 13, 14, 21, 23, 24, 25, 26, 27, 28, 34, 51, 52, 56, 62, 73, 76, 85, 93, 94, 95, 98, 101, 115, 118, 124, 126, 127, 131, 136, 138], "70": [20, 43, 66, 74, 139], "703281151": 126, "703282608": 126, "70g": 8, "70ghz": 41, "71": [41, 43, 52], "71b60f15003e": 52, "721": 119, "723": 118, "7238f35abcd0": 52, "7260u": 77, "73": 74, "7300u": 77, "74": 59, "742192751c1a": 52, "7567u": 77, "76": 74, "7694989e97d": 52, "78": 3, "79": [8, 74, 118], "7900x": 77, "7a": 74, "7b": 74, "7c": 84, "7g": [8, 127], "7hz3": 52, "7tilxtexhs940cuz": 119, "7tnomss9w7gjfpjzy75hgbp": 113, "7zip": 26, "8": [7, 8, 10, 12, 13, 14, 19, 20, 23, 24, 25, 26, 27, 28, 30, 35, 43, 46, 52, 60, 61, 62, 71, 73, 76, 95, 98, 100, 112, 113, 117, 118, 122, 124, 126, 127, 130, 131, 136, 138], "80": [20, 116, 122, 125], "800m": 12, "802": [66, 69, 76], "806": 52, "8080": 116, "8086": 67, "810900": 34, "8188d7d94b8b": 126, "8192": 82, "8192b": [41, 105], "8200": 8, "83": 74, "8300": 8, "8302": 43, "832739": 34, "835m": 59, "84e5": 59, "85": 52, "8650u": 77, "868786": 34, "8700": 77, "88": [30, 52], "8809g": 77, "89": 30, "8diafu66zgc9": 12, "8ead5f2c0c33": 52, "8g": [61, 127], "8k": 102, "8m": 45, "8min": 132, "9": [7, 8, 10, 12, 13, 14, 22, 23, 24, 25, 26, 27, 28, 30, 43, 51, 62, 69, 73, 76, 98, 118, 126], "90": 119, "9000": [69, 113], "9048e5e50717ea4497b757314bad98ea3763c145": 52, "91": [8, 11, 127], "913802006": 118, "92": 52, "925910": 34, "9350": 77, "94": [7, 8], "9552": 126, "96": 122, "9660": 76, "96a8565d0ca54b0c80364a1e5e7b0f88": 10, "96e7": 59, "97": [9, 84, 126, 136], "97b846a": 30, "97e": 113, "9812": 126, "98d3514e5a984e8cbbdf46a2f0d6b397": 60, "99": [91, 122, 136], "9912422": 136, "9a": [101, 122], "9a3796d": 51, "9b": 84, "9c2d8d184e5da67c95d601382adf14862e4f2228": 52, "9ce4": 126, "9df89e4": 51, "A": [0, 4, 7, 8, 10, 17, 20, 21, 24, 25, 26, 28, 29, 30, 35, 37, 38, 39, 40, 41, 46, 48, 49, 52, 54, 65, 66, 68, 73, 76, 81, 84, 85, 86, 87, 88, 89, 90, 91, 92, 98, 99, 101, 102, 103, 104, 106, 107, 112, 116, 118, 119, 122, 125, 129, 130, 133, 134, 136, 139], "AND": 37, "AT": 34, "And": [1, 20, 43, 76, 95, 119, 125, 126], "As": [13, 33, 35, 40, 42, 49, 64, 114, 115, 118, 119, 129, 131, 140], "At": [8, 11, 14, 20, 26, 35, 54, 57, 92, 116, 119, 124, 126, 127, 138], "BY": [81, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 102, 103, 104, 105, 106, 107, 108, 109, 110], "Be": [7, 19, 20, 41, 68, 73, 125, 126, 132, 135, 140], "By": [1, 4, 8, 12, 26, 35, 40, 41, 45, 48, 53, 60, 68, 73, 83, 85, 92, 98, 100, 122, 124, 125, 126, 132, 133], "For": [0, 1, 3, 4, 7, 9, 10, 11, 12, 14, 15, 19, 24, 27, 28, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 47, 48, 49, 51, 52, 53, 54, 56, 58, 61, 62, 63, 66, 67, 68, 69, 71, 73, 81, 82, 84, 95, 98, 100, 111, 113, 115, 116, 118, 119, 121, 122, 124, 125, 127, 129, 130, 131, 133, 135, 136, 138, 140], "IN": 74, "IT": [1, 4, 39, 54, 76], "If": [0, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21, 22, 23, 26, 27, 29, 30, 34, 35, 36, 38, 39, 40, 41, 44, 45, 46, 47, 48, 50, 52, 56, 60, 61, 63, 64, 65, 66, 67, 68, 69, 71, 73, 74, 81, 84, 85, 87, 88, 91, 95, 98, 99, 100, 101, 102, 104, 106, 107, 109, 110, 112, 113, 114, 115, 116, 119, 121, 122, 123, 124, 127, 129, 130, 131, 132, 133, 134, 135, 137, 140], "In": [1, 7, 8, 9, 10, 11, 13, 15, 19, 23, 24, 25, 26, 27, 28, 30, 34, 35, 36, 37, 38, 39, 40, 44, 46, 47, 50, 51, 53, 54, 59, 61, 62, 64, 65, 66, 70, 73, 74, 81, 86, 87, 88, 89, 90, 91, 92, 94, 95, 98, 113, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 129, 130, 131, 133, 134, 135, 136, 137, 139, 140], "Into": 43, "It": [0, 4, 7, 20, 21, 26, 27, 30, 32, 33, 35, 36, 37, 39, 40, 41, 44, 46, 51, 53, 54, 68, 73, 76, 83, 84, 90, 93, 95, 98, 99, 104, 108, 113, 115, 119, 122, 124, 125, 129, 130, 133, 136, 137, 140], "NOT": [34, 99, 101, 109, 116], "No": [0, 7, 29, 30, 37, 41, 51, 73, 76, 131, 137], "Not": [3, 4, 35, 40, 61, 74, 95], "Of": 48, "On": [7, 8, 12, 13, 14, 15, 17, 19, 23, 24, 25, 26, 27, 28, 33, 34, 39, 40, 41, 45, 73, 85, 86, 87, 88, 89, 90, 91, 92, 98, 108, 109, 115, 117, 119, 122, 123, 134, 135, 137], "One": [1, 20, 38, 43, 95, 110, 122, 133, 139], "Or": [4, 7, 19], "TO": [47, 48], "That": 95, "The": [0, 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 42, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 65, 66, 67, 68, 69, 70, 73, 74, 76, 78, 81, 82, 83, 84, 85, 88, 89, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 121, 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "Then": [8, 9, 28, 35, 46, 95, 125, 126, 133], "There": [2, 3, 4, 14, 18, 25, 37, 39, 40, 41, 53, 54, 60, 61, 65, 73, 98, 119, 126, 127, 129, 131], "These": [1, 3, 11, 14, 17, 25, 26, 30, 35, 36, 37, 38, 46, 63, 75, 80, 81, 91, 98, 115, 119, 123, 129, 130, 133, 138, 139], "To": [1, 3, 7, 8, 10, 11, 12, 14, 15, 19, 22, 25, 26, 27, 30, 31, 35, 36, 38, 39, 40, 41, 46, 47, 48, 50, 51, 53, 55, 56, 57, 58, 64, 70, 72, 73, 74, 76, 81, 83, 95, 98, 111, 113, 115, 118, 119, 121, 122, 124, 126, 127, 129, 130, 132, 136, 138, 140], "Will": 112, "With": [7, 8, 11, 27, 28, 29, 31, 38, 39, 54, 73, 113, 118, 122, 124, 131, 136], "_": [3, 4, 11, 40, 74, 125, 131], "__": [11, 74], "___": [11, 74], "____": 11, "_____": 11, "__attribute__": 118, "__init__": 131, "__version__": 51, "_f": 8, "_gnu_sourc": 41, "_linux": 130, "_mnt": 8, "_sampl": 130, "_structur": 3, "_wiki": 3, "a1sai": 77, "a4ab": 59, "a512": 56, "a5a0": 126, "a85105011175": 126, "a8d9": 74, "aaaab3nzac1yc2eaaaadaqabaaabaqc65oihs4up27xkopqkwgt9": 12, "aadd": 118, "abbr": 3, "abe6aaf2": 43, "abi": 62, "abil": [8, 11, 54, 101, 112, 128, 132], "abl": [1, 3, 7, 13, 29, 30, 39, 41, 48, 54, 58, 70, 88, 99, 101, 115, 118, 122, 126, 131, 135], "abort": [30, 117], "about": [0, 3, 4, 10, 11, 13, 15, 26, 28, 29, 34, 35, 37, 41, 47, 48, 49, 51, 52, 54, 55, 59, 68, 76, 84, 94, 98, 109, 111, 112, 115, 120, 122, 127, 129, 130, 131, 132, 137, 139], "abov": [3, 8, 15, 20, 28, 30, 35, 40, 46, 48, 59, 66, 73, 81, 84, 101, 116, 119, 124, 126, 129, 134, 140], "abrmd": 76, "abrupt": 68, "abseil": 76, "absent": 41, "absolut": [0, 15, 98], "abstract": [76, 131], "ac": 11, "accel": 76, "acceler": [26, 51, 76, 129, 130], "accept": [1, 3, 4, 7, 8, 11, 12, 13, 25, 28, 41, 46, 68, 76, 82, 95, 98, 119, 139], "access": [1, 4, 10, 11, 13, 14, 15, 20, 23, 40, 41, 44, 54, 55, 59, 68, 73, 76, 95, 101, 109, 113, 116, 117, 122, 124, 129, 130, 133, 134, 138, 139], "accfg": 76, "accident": 37, "accommod": [1, 22, 53], "accomplish": [0, 38, 73, 138], "accord": [3, 20, 39, 41, 76, 81, 98, 122, 129], "accordingli": 20, "accordion": 4, "account": [10, 12, 13, 15, 24, 28, 53, 58, 63, 73, 76, 81, 99, 109, 119, 124, 135], "accountsservic": 76, "accru": 10, "accumul": 101, "accur": [4, 41], "accuraci": 136, "achiev": [36, 53, 54, 82, 95], "ack": 76, "acl": 76, "acm": 76, "acpi": [26, 53, 76, 129], "acpi_osi": 129, "acpica": [53, 76], "acpidump": 53, "acpixtract": 53, "acquir": [20, 138], "acr": 11, "acronym": 3, "across": [0, 29, 36, 39, 76, 87, 113], "act": [1, 54, 83], "action": [3, 4, 7, 8, 10, 15, 21, 28, 38, 40, 41, 44, 56, 67, 76, 85, 98, 103, 112, 119, 138], "activ": [1, 7, 11, 14, 20, 22, 33, 35, 43, 50, 53, 58, 67, 70, 73, 74, 76, 81, 103, 111, 119, 132], "actual": [4, 12, 19, 20, 33, 35, 39, 54, 87, 94, 98, 102, 104, 137], "ad": [3, 8, 10, 11, 12, 14, 34, 35, 36, 39, 40, 41, 46, 51, 52, 53, 61, 67, 73, 74, 76, 81, 82, 83, 84, 88, 90, 91, 95, 98, 104, 115, 118, 119, 122, 124, 125, 131, 139], "ad28a3390ecc": 52, "ada": 76, "adapt": [20, 74, 76], "adcc": 126, "add": [2, 3, 4, 7, 10, 11, 19, 21, 22, 25, 26, 27, 30, 33, 34, 35, 38, 39, 41, 42, 44, 46, 50, 53, 55, 61, 62, 66, 67, 68, 70, 71, 72, 73, 74, 76, 80, 81, 82, 85, 88, 91, 95, 100, 101, 113, 115, 116, 117, 118, 119, 121, 124, 125, 126, 129, 130, 131, 132, 133, 135, 136, 137, 138, 140], "add_network": 74, "adder": 52, "addit": [1, 3, 4, 10, 11, 12, 19, 23, 27, 28, 29, 30, 34, 35, 36, 37, 39, 40, 46, 47, 48, 51, 69, 73, 74, 76, 79, 81, 86, 87, 88, 89, 90, 91, 92, 98, 115, 119, 121, 122, 124, 127, 128, 131, 132, 136, 137], "addition": [3, 32, 39, 81, 88, 95, 98, 99, 101, 113, 116], "addon": 122, "addr": [22, 67, 74], "address": [4, 8, 11, 12, 13, 15, 20, 22, 29, 35, 37, 40, 41, 42, 67, 68, 69, 73, 76, 99, 100, 101, 119, 122, 125, 132, 134, 135, 138], "adher": [41, 76, 122], "adjac": 127, "adjust": [26, 35, 53, 83, 95, 110, 122], "admin": [20, 34, 41, 82, 109, 122, 131, 138], "administ": 11, "administr": [7, 8, 26, 31, 39, 41, 55, 58, 60, 64, 68, 73, 76, 99, 119, 122, 125, 133], "adminstr": 119, "admonit": 3, "adress": 100, "advanc": [23, 24, 26, 36, 53, 62, 66, 74, 76, 111, 112, 118, 122, 125, 129, 130, 135, 137, 139], "advantag": [1, 36, 37, 38, 54, 71, 74, 118, 133], "adventur": 76, "advisor": 11, "advisori": 37, "adwaita": 76, "ae": [24, 36, 76], "aerror": 118, "af": 74, "af977cb": 51, "afb": 35, "affect": 36, "after": [3, 7, 8, 13, 14, 15, 19, 20, 21, 23, 27, 28, 30, 34, 35, 36, 37, 38, 39, 41, 42, 46, 47, 48, 51, 53, 55, 59, 60, 61, 67, 70, 73, 74, 76, 83, 85, 88, 95, 98, 101, 108, 110, 111, 117, 122, 124, 125, 126, 129, 130, 131, 132, 133, 136, 137, 138], "afterward": [35, 100], "again": [9, 26, 28, 30, 35, 46, 50, 64, 94, 98, 118, 119, 124, 126, 136], "against": [1, 12, 33, 35, 37, 39, 46, 47, 48, 51, 54, 68, 76, 88, 98, 99, 100, 101, 112, 115, 127, 129, 137], "agent": [76, 98, 108, 122], "aggreg": 69, "agil": 0, "ago": [51, 52, 62, 119, 132], "ai": [1, 11, 55], "aid": 66, "aim": [1, 14, 37, 46, 54, 76, 82, 95, 116], "aio": 22, "airplai": 76, "ak": 11, "aka": 11, "akia5legqpq3eub3jms7": 14, "akonadi": 76, "alert": 3, "algebra": 76, "algorithm": [53, 76], "alia": [90, 92, 98], "alias": [12, 19, 20, 35, 98], "align": 87, "aliyun": 76, "all": [0, 1, 2, 3, 4, 7, 8, 9, 11, 12, 13, 16, 17, 20, 28, 29, 30, 34, 35, 36, 37, 39, 40, 41, 46, 47, 48, 51, 53, 54, 55, 56, 58, 61, 63, 64, 65, 66, 68, 69, 70, 71, 73, 76, 82, 85, 87, 88, 90, 91, 93, 95, 96, 98, 99, 100, 101, 103, 104, 105, 110, 113, 114, 115, 116, 121, 122, 123, 124, 126, 127, 129, 131, 132, 136, 137, 138, 140], "alloc": [7, 8, 11, 25, 26, 41, 50, 67, 105, 127], "allocat": 50, "allow": [0, 1, 3, 7, 8, 10, 11, 12, 13, 19, 20, 22, 23, 25, 26, 29, 30, 35, 37, 38, 39, 40, 41, 44, 47, 48, 53, 54, 58, 68, 70, 73, 76, 84, 85, 92, 95, 98, 99, 101, 110, 116, 117, 119, 122, 124, 125, 126, 127, 129, 130, 131, 132, 137], "allow_insecure_http": [35, 98], "allowed_image_typ": 131, "allowoverrid": 124, "allowtcpforward": 70, "alon": [1, 3, 99], "along": [10, 35, 54, 98, 124], "alongsid": [7, 8, 126], "alpha": 98, "alphabet": 98, "alphanumer": [7, 8], "alreadi": [10, 11, 24, 25, 26, 30, 38, 39, 41, 46, 53, 54, 66, 70, 73, 113, 115, 122, 126, 127, 129, 134, 135], "alsa": 76, "also": [0, 1, 4, 7, 8, 9, 10, 11, 19, 21, 22, 24, 28, 30, 31, 33, 35, 36, 37, 38, 39, 40, 41, 46, 48, 51, 53, 54, 55, 58, 60, 61, 68, 74, 112, 115, 119, 122, 123, 124, 127, 129, 130, 131, 133, 134, 137, 140], "alt": [3, 129], "alter": 110, "altern": [0, 1, 7, 8, 13, 28, 35, 39, 46, 76, 95, 98, 105, 112, 121, 122, 130, 136], "although": [50, 53, 62, 73, 98, 126], "altogeth": [47, 48, 73], "alwai": [4, 7, 35, 39, 44, 48, 50, 98, 115, 128, 129, 137], "alwaysshar": 73, "am": 46, "amateur": 76, "amazing_villani": 51, "amazon": [11, 12, 13, 14, 18, 56, 76, 78, 119], "amazonaw": 10, "ambigu": [4, 39], "amd": [26, 27, 53], "america": [7, 72], "among": [98, 126], "amount": [3, 26, 37, 41, 87, 92, 99, 113, 127], "an": [0, 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 49, 52, 53, 55, 56, 63, 65, 67, 68, 69, 70, 71, 76, 81, 82, 84, 85, 87, 89, 90, 92, 94, 95, 98, 99, 100, 101, 105, 108, 109, 111, 112, 114, 115, 118, 121, 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137, 140], "analitza": 76, "analog": 41, "analys": 76, "analysi": [30, 41, 76], "analyt": [11, 41], "analyz": [30, 76, 118], "anchor": 84, "android": 76, "angel": 72, "angl": 3, "ani": [0, 1, 3, 7, 8, 10, 17, 20, 26, 29, 30, 33, 34, 35, 36, 38, 39, 40, 41, 44, 46, 47, 51, 52, 53, 54, 55, 59, 62, 64, 65, 73, 76, 81, 82, 84, 85, 87, 88, 93, 95, 98, 99, 100, 104, 105, 106, 109, 113, 114, 115, 116, 119, 122, 124, 128, 130, 131, 132, 136, 140], "annot": [76, 122], "anonhugepag": 50, "anonym": [41, 124], "anoth": [3, 7, 10, 11, 23, 26, 35, 44, 51, 54, 67, 74, 76, 98, 102, 115, 122, 129, 136], "ansi_color": [51, 59], "ansibl": [1, 54, 76], "answer": [0, 98], "antiviru": [1, 76], "anyon": [3, 124, 135], "anyth": [1, 76, 140], "anywher": [65, 74, 88], "aoe": 20, "aosp": 76, "apach": [38, 76, 120], "apart": 12, "api": [14, 34, 55, 76, 122], "apic": 26, "apiserv": 34, "app": [0, 11, 20, 27, 41, 53, 67, 70, 76, 129, 133], "appear": [3, 7, 8, 10, 11, 14, 15, 24, 26, 35, 38, 61, 100, 113, 116, 118, 119, 123, 124, 126, 129, 138, 139, 140], "append": [8, 45, 46, 48, 51, 81, 98, 119, 122, 129, 130, 137], "appl": [4, 76], "appli": [3, 7, 8, 19, 21, 25, 34, 36, 39, 46, 51, 53, 54, 63, 65, 68, 69, 71, 82, 83, 87, 88, 98, 110, 114, 115, 118, 122, 131], "applic": [0, 1, 11, 15, 25, 34, 35, 36, 38, 39, 41, 46, 53, 55, 58, 68, 70, 73, 76, 81, 84, 85, 98, 117, 118, 122, 124, 129, 130, 131, 132, 133, 134, 136, 139], "appreci": 4, "approach": [30, 31, 33, 37, 46, 47, 48, 51, 54, 118, 119], "appropri": [3, 4, 8, 21, 24, 26, 27, 30, 33, 35, 38, 54, 66, 73, 98, 112, 122, 129, 130, 134, 135], "approv": 2, "approx": 126, "approxim": 125, "appservic": 11, "appstream": 76, "apr": [45, 76], "apt": [22, 31, 39, 58, 73, 123], "ar": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 21, 22, 23, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 44, 46, 47, 48, 50, 51, 52, 53, 54, 56, 58, 60, 61, 62, 63, 64, 66, 67, 69, 71, 73, 74, 76, 77, 78, 80, 81, 82, 83, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 98, 99, 100, 101, 103, 104, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 129, 131, 132, 133, 134, 136, 137, 138, 139, 140], "arab": 76, "arandr": 76, "arbitrari": [41, 76, 81], "arch": [41, 43, 117, 118], "arch_atom": 118, "architect": [1, 42, 75], "architectur": [1, 14, 20, 32, 34, 36, 37, 49, 52, 54, 60, 76, 118, 122, 130, 137], "archiv": [13, 30, 35, 39, 46, 48, 76, 98, 115, 130], "arduino": 55, "area": [54, 95, 136], "aren": [30, 36, 129, 130], "arg": [51, 131], "argc": [41, 119], "argon2": 76, "argument": [7, 8, 29, 39, 41, 51, 52, 67, 84, 102, 108, 118], "argv": [41, 119], "aria2": 76, "aris": 98, "ark": [76, 111], "arol": 118, "around": [29, 132], "arrai": [41, 98, 101, 118, 136], "arrow": [7, 8, 74, 127], "articl": [4, 51, 138, 139], "artifact": [49, 54, 98], "ask": [0, 1, 7, 8, 10, 27, 37, 46, 64, 73, 119], "aslr": 37, "aspect": [22, 35], "aspel": 76, "asprintf": 41, "assembl": 76, "assembli": 76, "assert": 22, "asset": [11, 76], "assign": [12, 13, 15, 20, 21, 42, 67, 69, 73, 102], "assimp": 76, "assist": [14, 28, 30, 41, 75, 76], "associ": [1, 11, 13, 29, 63, 81, 124, 129, 130], "assum": [4, 10, 15, 30, 41, 53, 54, 59, 62, 67, 81, 83, 98, 102, 116, 119, 121, 122, 124, 131, 136, 138, 139], "assumpt": [38, 123], "assur": [8, 35, 49, 95, 99, 134], "asterisk": [3, 138], "asub": 118, "asund": 76, "async": 109, "asynchron": 76, "ata": 9, "atkmm": 76, "atom": [76, 77, 111, 118], "att": 83, "attach": [8, 9, 27, 28, 41, 105, 109, 127], "attack": [99, 101, 138], "attempt": [8, 30, 36, 52, 81, 94, 95, 98, 99, 101, 102, 109, 140], "attica": 76, "attr": 76, "attribut": [3, 6, 10, 26, 68, 73, 81, 98, 108, 109, 118], "audaci": 76, "audienc": [4, 54], "audio": 76, "audiomodul": 62, "audit": 76, "aug": 80, "augment": 0, "auth": [117, 131], "authent": [10, 11, 12, 37, 74, 76, 84, 95, 113, 119, 131, 134, 139], "author": [12, 37, 81, 84, 113, 122], "authorit": [20, 76], "authorized_kei": 113, "auto": [7, 8, 24, 26, 29, 39, 43, 53, 94, 126, 140], "autoar": 76, "autoconf": 76, "autoconnect": 25, "autoindex": [35, 40, 125], "autoinstal": [48, 115], "autom": [12, 29, 30, 46, 49, 54, 75, 76, 122, 131], "automat": [1, 7, 9, 15, 20, 25, 29, 30, 33, 35, 37, 40, 41, 43, 44, 47, 48, 53, 54, 55, 64, 65, 68, 74, 76, 81, 87, 88, 90, 95, 98, 100, 115, 116, 119, 121, 123, 124, 125, 129, 130, 131, 133, 135, 137, 139, 140], "automot": 76, "autoproxi": [1, 8, 42, 71], "autospec": [1, 35, 36, 39, 40, 42, 46, 55, 75], "autospecnew": 30, "autostart": [12, 20, 22, 26, 55, 73, 76, 117], "autoupd": [12, 19, 20, 35, 39, 40], "aux": 113, "auxiliari": 33, "auxservic": 113, "av1": 76, "avahi": 76, "avail": [1, 7, 8, 9, 10, 11, 12, 14, 16, 17, 21, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 39, 40, 41, 43, 46, 50, 51, 53, 54, 56, 61, 67, 73, 74, 75, 78, 79, 85, 87, 88, 92, 98, 109, 115, 116, 117, 119, 122, 124, 125, 126, 127, 129, 131, 132, 133, 135, 136, 138, 139, 140], "avb": 62, "avbstreamhandl": 62, "avoid": [3, 22, 26, 33, 35, 37, 40, 41, 54, 74, 76, 95, 119, 122, 131], "avx": 36, "avx2": [36, 118], "aw": [10, 18, 55, 56, 76, 78, 108, 119], "awai": [54, 126], "awar": [7, 19, 35, 54, 94, 125, 135], "awesom": 34, "awk": 14, "awqfaac8qzhhl": 119, "awscleartestkei": 10, "axel": 76, "az": [11, 60], "azur": [10, 12, 13, 14, 18, 21, 32, 56, 76, 78, 119], "azurecliprod": 11, "b": [9, 12, 30, 41, 51, 52, 73, 98, 118, 119], "b0": 84, "b1effab": 51, "b22a": 126, "b4": 76, "b6c7": 43, "b6f5": 126, "b7": 84, "b7f5": 43, "b9": 74, "b932": 126, "ba4b": 59, "babel": 76, "babeltrac": 76, "babl": 76, "back": [3, 9, 11, 34, 43, 46, 52, 53, 54, 64, 71, 74, 76, 87, 88, 116, 124, 126, 128, 129], "backend": 76, "background": [29, 64, 73, 96, 116], "backlight": 129, "backup": [11, 15, 72, 76, 89], "backward": [76, 118], "bacon": 4, "bad": [76, 135], "bad_signatur": 65, "balanc": [53, 54, 76, 112, 122, 129], "balena": 9, "balenaetch": 9, "baloo": 76, "ban": [99, 101], "banana": 4, "band": 54, "bandwidth": [12, 15, 69, 76], "baobab": 76, "bar": [4, 7, 8, 10, 12, 13, 14, 15, 41, 74, 139], "bare": [8, 11, 21, 28, 35, 62, 67, 71, 75, 76, 116, 121, 122, 124, 136], "base": [1, 10, 11, 13, 19, 20, 23, 25, 26, 30, 31, 35, 36, 37, 39, 42, 45, 46, 49, 53, 54, 55, 68, 69, 73, 76, 81, 83, 98, 101, 112, 115, 116, 118, 119, 122, 123, 124, 128, 129, 131], "basenam": 26, "baseurl": [62, 87], "bash": [11, 20, 22, 40, 51, 52, 74, 76, 93, 119, 131], "bashrc": [11, 71], "basi": [14, 36, 39, 52, 63], "basic": [2, 3, 4, 9, 11, 15, 19, 20, 28, 30, 34, 39, 49, 52, 55, 58, 60, 67, 72, 73, 76, 88, 113, 119, 122, 123, 124, 127, 131, 132, 133, 136], "batch": [11, 119], "batchai": 11, "batteri": [4, 53], "bbd6": 43, "bc": 76, "bc99": 43, "bcach": 76, "bcc": 76, "bcdedit": 26, "bcm": 115, "bcm43xx": 115, "bcma": 115, "bd11": 126, "bdevic": [12, 19, 20, 35, 61], "bear": 140, "becam": 127, "becaus": [0, 1, 4, 5, 13, 14, 25, 28, 29, 35, 36, 40, 44, 48, 51, 52, 53, 63, 64, 65, 67, 69, 73, 87, 94, 98, 111, 114, 115, 122, 126, 127, 132], "becom": [35, 36, 37, 38, 139], "been": [0, 7, 11, 15, 26, 28, 30, 35, 36, 37, 39, 41, 46, 47, 51, 53, 65, 66, 74, 77, 98, 105, 111, 115, 116, 124, 127, 129, 130, 131, 132, 138], "befor": [3, 4, 7, 9, 10, 12, 13, 14, 15, 16, 18, 20, 22, 23, 25, 26, 30, 34, 35, 36, 37, 41, 43, 47, 48, 51, 54, 55, 56, 58, 61, 62, 65, 66, 68, 73, 81, 95, 98, 100, 103, 114, 115, 116, 119, 121, 122, 123, 124, 126, 128, 129, 136, 137, 140], "begin": [4, 11, 20, 25, 26, 41, 46, 47, 48, 109, 123], "beginn": 136, "behav": 68, "behavior": [30, 36, 41, 47, 48, 54, 85, 98, 129], "behind": [19, 29, 35, 36, 39, 71, 116, 121, 122], "being": [1, 5, 20, 29, 30, 35, 37, 41, 47, 48, 54, 64, 66, 73, 76, 82, 87, 104, 122, 137], "belgian": 76, "believ": [37, 41], "belong": [35, 119], "below": [0, 1, 3, 4, 7, 8, 9, 11, 12, 14, 15, 16, 17, 19, 21, 22, 27, 30, 34, 35, 36, 37, 38, 41, 44, 46, 47, 48, 50, 51, 53, 54, 59, 61, 64, 65, 66, 67, 68, 70, 71, 73, 74, 81, 84, 95, 100, 101, 104, 115, 116, 119, 121, 122, 124, 126, 127, 129, 130, 131, 132, 133, 135, 138], "bemenu": 76, "bench": 118, "bench_iodim": 118, "benchmark": 76, "benefit": [1, 4, 17, 36, 37, 54, 58, 95, 122, 125], "berkelei": 76, "besid": [8, 26, 76, 124, 134], "best": [2, 13, 32, 34, 37, 39, 69, 76, 95, 120, 122], "beta": 12, "better": [2, 3, 53, 131], "between": [0, 7, 8, 12, 19, 20, 35, 36, 38, 39, 42, 54, 60, 73, 76, 87, 91, 98, 107, 121, 122, 129], "beyond": [54, 76, 112, 138], "bf": 84, "bf23": 126, "bgp": 76, "bi": 76, "bias": 1, "big": [113, 125], "bill": [11, 13, 131], "bin": [11, 20, 30, 33, 34, 39, 40, 41, 43, 44, 51, 52, 62, 64, 73, 95, 108, 109, 119, 122, 126, 129, 130, 131, 132, 140], "binari": [30, 31, 33, 34, 36, 39, 44, 48, 52, 76, 87, 98, 115, 119, 123, 135, 140], "bind": [15, 76, 129, 133], "bindcarri": 69, "bindsto": 129, "binutil": 76, "bio": [7, 8, 12, 20, 21, 22, 23, 24, 25, 26, 27, 41, 48, 53, 56, 78, 126, 127, 129, 137], "bios": [7, 127], "bios_vers": 41, "biosdecod": 30, "bison": 76, "bit": [3, 16, 23, 26, 27, 28, 76, 111, 115, 129], "bitmap": [3, 76], "bittorr": 76, "bla": 76, "black": 129, "blacklist": [37, 115, 129], "blank": [11, 88, 124], "bldg2": 60, "blender": 76, "blind": 37, "blivet": 76, "blkid": 126, "blob": [11, 44], "block": [1, 12, 14, 19, 20, 29, 35, 36, 37, 61, 76, 98, 99, 100, 101, 104, 108, 109, 113, 115, 124, 134], "blocker": 1, "blog": [0, 37, 122, 138], "blue": 26, "blueprint": [1, 54], "bluetooth": [76, 83, 115], "bluez": 76, "bmap": 76, "bmp": 131, "board": 119, "board_nam": 41, "boardgam": 76, "bodi": [3, 4, 102, 131], "boinc": 76, "bold": 3, "bond": 42, "bond1": 69, "bone": 11, "book": 76, "bookmark": 76, "bool": 88, "boolean": 81, "boost": [36, 76], "boot": [1, 12, 13, 16, 19, 20, 21, 22, 23, 26, 32, 35, 38, 40, 42, 44, 50, 51, 52, 53, 54, 55, 56, 60, 61, 67, 68, 73, 74, 76, 78, 81, 83, 95, 98, 109, 111, 116, 119, 120, 122, 124, 125, 133, 135, 137], "bootabl": [7, 8, 16, 18, 20, 35, 54, 75, 125, 126, 127], "bootchart": [20, 36], "bootctl": [43, 126, 127], "bootf": 140, "booth": 76, "bootkmsg": 45, "bootload": [1, 11, 12, 20, 26, 35, 43, 46, 48, 55, 57, 76, 126, 127, 129, 137, 140], "bootloaderx64": [43, 126], "bootmgfw": 43, "bootx64": 43, "borgbackup": 76, "botan": 76, "both": [3, 35, 37, 40, 41, 53, 64, 67, 69, 95, 98, 113, 114, 116, 117, 119, 122, 129], "bottom": [3, 8, 13, 21, 24, 124], "bouncer": 76, "bound": 67, "boundari": 94, "box": [1, 3, 7, 8, 10, 22, 25, 26, 27, 37, 68, 76, 84, 111, 127, 135, 138], "box1": 60, "bpf": 76, "bpftrace": 76, "bq9mg442b": 11, "bracket": [3, 50, 66], "branch": [2, 3, 51, 117], "brcm80211": 115, "break": [20, 47, 94, 95, 129, 140], "breakfast": 4, "bridg": [35, 52, 53, 68, 122], "bring": [10, 24, 28, 74, 118, 126], "broadband": 76, "broadcom": 120, "broken": [34, 42, 65, 98], "broker": 76, "bronz": 77, "brotli": 76, "brows": [13, 17, 21, 25, 27, 35, 76, 116], "browsabl": 135, "browser": [0, 1, 10, 11, 13, 15, 16, 28, 41, 76, 124, 136, 138, 139], "bsd": [30, 71, 76], "bsdiff": 76, "bspwm": 76, "bssid": 74, "btai7": 12, "btop": 76, "btrf": [0, 43, 76], "bu": [22, 67, 76], "bucket": [13, 76], "buffer": [36, 45, 67, 76, 82], "bug": [0, 41], "bug_report_url": [51, 59], "build": [0, 1, 3, 11, 17, 39, 40, 41, 42, 49, 54, 55, 71, 76, 80, 85, 90, 91, 94, 115, 116, 117, 118, 123, 129, 131, 136, 137, 140], "builddir": 30, "builder": [1, 40, 51, 76, 85, 86, 87, 88, 89], "buildlog": 118, "buildreq": 76, "buildreq_add": 30, "built": [0, 11, 17, 20, 22, 27, 30, 35, 36, 37, 41, 46, 48, 51, 52, 54, 55, 61, 70, 73, 76, 82, 83, 95, 100, 115, 119, 122, 129, 130, 131], "built_module_loc": 48, "built_module_nam": [48, 115], "builtin": [95, 122], "bump": [34, 92, 94], "bundl": [0, 1, 3, 11, 12, 14, 19, 20, 22, 25, 26, 27, 28, 30, 32, 33, 34, 36, 37, 38, 41, 42, 44, 46, 47, 48, 53, 54, 55, 60, 61, 62, 64, 65, 67, 68, 70, 72, 73, 75, 79, 80, 81, 85, 87, 90, 93, 113, 114, 115, 117, 118, 119, 121, 122, 123, 125, 129, 130, 131, 132, 135, 136, 137], "bundle_nam": 98, "burn": [7, 8, 59, 125], "burst": [41, 104], "busctl": 29, "busi": [54, 67, 76], "busybox": [114, 121], "butter": 4, "button": [7, 8, 9, 10, 13, 15, 24, 25, 26, 27, 28, 73, 117, 126, 136, 139], "byobu": 76, "bystricki": 35, "byte": [41, 50, 69, 98, 104, 126, 136], "byte_burst_limit": [41, 104], "byte_window_length": [41, 104], "bz2": 130, "bzip2": [12, 76], "c": [11, 12, 19, 20, 27, 30, 36, 37, 41, 48, 52, 55, 56, 67, 73, 76, 81, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 102, 103, 104, 106, 107, 108, 109, 110, 111, 115, 118, 119, 124, 127, 129, 130, 131], "c08805003c8d": 126, "c12a7328": 59, "c2750": 77, "c50bb4a1c2f5": 126, "c7": 11, "c9": 67, "c_file": 105, "c_librari": 30, "c_rehash": 84, "ca": [40, 98, 117, 122], "cab": 76, "cabextract": 76, "cabl": 67, "cach": [11, 35, 39, 46, 51, 76, 84, 85, 88, 95, 98, 110, 125, 129, 130, 133, 140], "cachedir": 98, "cachegrind": 76, "cad": 76, "cafil": 65, "cainfo": 104, "cairo": 76, "cairomm": 76, "calc": 76, "calcul": [76, 98, 112, 136], "calendar": 76, "call": [1, 3, 4, 7, 8, 12, 14, 20, 24, 27, 28, 29, 31, 35, 36, 39, 41, 46, 50, 51, 52, 53, 54, 62, 69, 74, 76, 122, 124, 126, 131, 140], "caller": 41, "callggrind": 76, "calloc": 41, "callout": 3, "camera": [23, 76], "can": [1, 3, 4, 7, 8, 10, 11, 12, 13, 15, 17, 19, 20, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 49, 51, 52, 53, 54, 55, 58, 59, 60, 61, 63, 64, 66, 68, 70, 73, 74, 76, 81, 82, 83, 84, 85, 87, 92, 93, 94, 96, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 120, 121, 122, 124, 125, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "canal": 122, "cancel": [7, 8, 10, 20, 26], "candid": 122, "cannot": [0, 12, 30, 34, 37, 39, 40, 43, 53, 57, 59, 63, 65, 67, 71, 72, 73, 98, 115, 122, 124, 127], "capabl": [1, 16, 20, 35, 36, 39, 47, 48, 53, 54, 76, 111, 130, 131, 140], "capac": [27, 28, 61], "capit": 3, "capitol": 81, "capnproto": 76, "capston": 76, "caption": 3, "captur": [35, 42, 76], "carbon": 77, "card": [15, 67, 76, 115, 129, 130, 139], "care": [18, 51, 54, 95, 98, 99, 123, 126], "carefulli": [15, 35, 134], "carri": [16, 30, 94, 111], "carv": 76, "cascad": 39, "case": [0, 1, 3, 4, 7, 8, 11, 19, 20, 30, 32, 35, 36, 39, 46, 50, 51, 55, 60, 67, 76, 81, 87, 94, 95, 98, 111, 112, 115, 119, 122, 123, 127, 128], "caset": 118, "casync": 76, "cat": [12, 30, 35, 40, 47, 48, 50, 51, 52, 53, 59, 63, 70, 113, 114, 115, 119, 121, 122, 131], "catalog": [11, 13, 76], "catastroph": 38, "categori": [35, 41, 73], "caus": [3, 9, 30, 36, 64, 68, 82, 94, 98, 99, 101, 108, 111, 112, 115, 119, 129, 130], "caution": 4, "caveat": [34, 115], "cb": 67, "cc": [81, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 102, 103, 104, 105, 106, 107, 108, 109, 110], "cc31c0a75d27": 126, "ccach": [46, 76], "cce3d029b788": 74, "ccmp": 74, "cd": [24, 26, 27, 28, 30, 35, 40, 46, 47, 48, 49, 51, 53, 54, 67, 76, 115, 124, 125, 129, 130, 131, 136, 137, 138, 140], "cdn": [11, 15, 16, 19, 20, 22, 39, 46, 51, 52, 62, 65, 67, 125], "cdrom": 25, "ce": 52, "celeron": [77, 83], "cell": 136, "cena_x64fr": 9, "center": [33, 76], "cento": 126, "central": [84, 98, 103], "centric": 51, "cer": 84, "cert": [35, 84, 98, 122], "certain": [1, 36, 37, 47, 48, 53, 76, 87, 99, 101, 109], "certif": [11, 35, 37, 40, 56, 65, 76, 84, 87, 98, 104, 122, 138], "certificatefil": 84, "certpath": 98, "certsign": 84, "certsign_root_ca": 84, "certutil": 56, "cf": 52, "cfg": 71, "cfitsio": 76, "cflag": [36, 67], "cgdisk": 8, "cgi": 76, "cgroup": [52, 63, 119, 122, 132], "cgroupf": 52, "chain": [37, 47, 65, 68, 84], "chainload": 126, "challeng": [38, 54, 115], "challengeresponseauthent": 95, "chan": 74, "chanc": [0, 56], "chang": [0, 3, 4, 7, 8, 9, 10, 11, 13, 14, 15, 19, 20, 21, 22, 25, 26, 30, 35, 36, 38, 39, 41, 42, 47, 50, 53, 54, 60, 61, 63, 67, 68, 73, 76, 81, 82, 83, 87, 92, 94, 95, 98, 107, 114, 116, 118, 119, 121, 122, 123, 126, 132, 133, 136, 140], "chapter": 140, "char": [41, 105, 119], "charact": [3, 7, 8, 13, 60, 76, 82, 98, 100, 104, 130], "characterist": 76, "chardetect": 39, "charg": [10, 11, 15], "chassi": 60, "chat": [75, 76], "check": [1, 3, 7, 8, 11, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 37, 39, 41, 43, 44, 49, 50, 53, 56, 58, 62, 66, 67, 68, 72, 76, 84, 85, 87, 88, 92, 103, 105, 111, 115, 116, 119, 121, 122, 124, 125, 129, 136, 137, 138, 140], "checkbox": [8, 15, 24, 25, 28, 134], "checkmark": [14, 126], "checkout": 46, "checkpoint": 35, "checksum": [7, 8, 9, 37, 56], "chees": 76, "chess": 76, "chevron": 8, "chicago": 2, "children": [12, 19, 20, 35, 61], "chines": 76, "chipset": 26, "chmod": [10, 16, 20, 30, 35, 40, 46, 119, 130, 137], "choic": [1, 4, 8, 41, 54, 126], "choos": [0, 10, 11, 12, 13, 15, 20, 21, 25, 26, 36, 40, 41, 46, 65, 67, 74, 127, 130], "chooser": 76, "chose": [11, 73], "chosen": [41, 73, 122], "chost": 119, "chown": [119, 122], "chroot": [35, 98], "chrootdir": 20, "ci": [49, 54], "cidr": 122, "cidr_netmask": 66, "cif": 134, "cipher": 37, "circuitco": 77, "cisco": 76, "citi": 7, "cjson": 76, "cjson_librari": 30, "cl": [27, 41, 127], "cl_version": 51, "clam": 76, "clamav": [1, 76], "clamp": [41, 104], "clang": [0, 36, 76], "clarifi": 3, "clariti": [3, 4], "clash": 98, "class": [102, 113], "classic": [0, 76, 131], "classif": [41, 76, 102, 105, 131], "classifi": 41, "classification_sample_async": 131, "claus": [4, 30], "clean": [30, 34, 35, 39, 41, 48, 115, 124], "clear": [2, 3, 4, 5, 6, 18, 19, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 50, 53, 54, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 119, 120, 121, 122, 123, 124, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 140], "clear123": 20, "clear_efi": 59, "clearli": [3, 4, 38], "clearlinux": [0, 8, 14, 16, 17, 19, 20, 22, 23, 26, 30, 33, 35, 36, 39, 41, 43, 46, 51, 52, 59, 62, 64, 65, 67, 71, 75, 82, 83, 84, 85, 90, 93, 94, 95, 98, 102, 103, 104, 105, 106, 107, 111, 118, 125, 126, 127, 131, 133], "clearlinuxo": [21, 26], "clearlinuxroot": 65, "clearresourcegroup": 11, "clearvm": 11, "cli": [0, 23, 76, 121, 131, 134], "cli_config_dr": 109, "clich\u00e9": 4, "click": [4, 7, 9, 10, 12, 13, 14, 15, 21, 23, 24, 25, 26, 27, 28, 55, 56, 73, 74, 76, 117, 124, 126, 127, 130, 136, 137, 138, 139], "client": [1, 11, 12, 15, 20, 21, 29, 33, 34, 36, 39, 52, 62, 70, 71, 76, 85, 87, 94, 95, 98, 101, 102, 103, 104, 107, 113, 116, 119, 120, 123, 125, 133, 135], "client_node_nam": 34, "clientlib": 76, "clipboard": [11, 76], "cloc": 76, "clock": [36, 76, 119], "clone": [2, 19, 29, 30, 41, 51, 53, 76, 118, 131], "clone_": 46, "clone_dmidecod": 30, "clone_linux": 46, "clone_m4": 30, "cloneabl": 54, "close": [3, 4, 7, 9, 11, 14, 23, 25, 27, 38, 53, 54, 73, 115, 116, 126], "cloud": [1, 10, 11, 12, 14, 27, 28, 32, 34, 36, 39, 55, 56, 61, 66, 76, 78, 80, 95, 108, 109, 119, 122, 123, 131], "cloudguest": [11, 12, 27, 54, 56, 76, 78], "cloudinit": 109, "clr": [1, 7, 8, 10, 12, 16, 18, 26, 30, 33, 35, 36, 41, 43, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 57, 64, 73, 76, 83, 98, 111, 122, 126, 127, 129, 137, 140], "clr_boot": [7, 8, 126, 127], "clr_debug_daemon": 33, "clr_debug_fus": 33, "clr_f_mnt_": 8, "clr_f_swap": 8, "clr_installer_conf_dir": 20, "clr_iso": 59, "clr_mnt": 8, "clr_mnt_": 8, "clr_power": [36, 80, 82], "clr_root": [7, 8, 126, 127], "clr_root_f": 8, "clr_swap": [7, 8, 126, 127], "clri": 20, "clrlinux": [20, 126, 127], "clrtrust": [1, 37], "clrtust": 84, "cluster": [11, 34, 35, 54, 76, 113, 120, 123, 131], "clusterinform": 122, "clutter": [76, 99], "cm": 34, "cmake": 30, "cmd": [20, 52, 68, 100, 131], "cmdline": [41, 45, 46, 47, 48, 50, 129, 137], "cmocka": 76, "cmrt": 76, "cmu": 76, "cnc": 76, "co": 114, "cockpit": 76, "code": [1, 2, 5, 11, 30, 31, 32, 33, 36, 38, 44, 47, 48, 64, 76, 85, 86, 87, 88, 89, 90, 91, 92, 98, 102, 103, 108, 109, 118, 122, 130, 131, 132, 140], "codebas": 36, "codec": [1, 76], "coexist": 73, "coffe": 4, "cogl": 76, "cognit": [11, 112], "cognitiveservic": 11, "collabor": [1, 4], "collat": 124, "collect": [1, 3, 30, 36, 62, 76, 98, 102, 133], "collectd": 76, "collector": 41, "collid": 46, "colon": [3, 73], "color": [67, 76], "colord": 76, "colorlevel": 73, "columbiad": 76, "column": [11, 26, 34, 66, 81], "com": [0, 8, 10, 12, 17, 29, 30, 33, 35, 36, 41, 46, 51, 52, 53, 59, 62, 64, 71, 82, 83, 84, 85, 94, 95, 98, 102, 103, 104, 105, 106, 107, 111, 118, 119, 122, 129, 130, 131, 133, 139, 140], "combin": [35, 37, 39, 41, 42, 68, 76, 98, 101, 108, 115, 122], "come": [11, 15, 20, 35, 36, 37, 39, 43, 44, 46, 47, 48, 61, 64, 116, 117, 129, 139], "comma": [81, 98], "command": [0, 1, 3, 4, 7, 9, 10, 11, 17, 20, 22, 23, 26, 27, 30, 33, 34, 35, 37, 38, 39, 41, 43, 44, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 72, 73, 75, 76, 78, 81, 84, 85, 87, 88, 89, 91, 92, 93, 95, 96, 98, 100, 103, 110, 113, 114, 115, 116, 118, 119, 121, 122, 123, 124, 129, 131, 134, 135, 136, 137, 140], "commenc": 4, "comment": [3, 41, 98, 104, 126], "commit": [2, 15, 39, 46, 51, 68, 88], "commod": 54, "common": [1, 4, 6, 17, 30, 37, 39, 46, 51, 54, 60, 62, 68, 71, 73, 76, 81, 108, 109, 112, 131, 133, 134, 137], "commonli": [0, 3, 19, 129, 137], "commun": [0, 1, 4, 20, 29, 33, 35, 40, 48, 75, 76, 107, 115, 122, 125], "compani": 3, "companion": 53, "compar": [39, 55, 56, 58, 65, 68, 87], "comparison": [36, 46, 76], "compat": [1, 7, 8, 18, 19, 20, 26, 28, 35, 36, 39, 69, 76, 79, 87, 92, 94, 101, 111, 115, 118, 122, 129, 140], "compat32": 129, "compel": 116, "compil": [31, 33, 41, 43, 46, 47, 48, 76, 95, 98, 99, 118, 119, 129, 130, 132, 137], "complement": 54, "complet": [4, 7, 8, 9, 10, 11, 13, 14, 15, 19, 25, 26, 27, 28, 30, 31, 35, 41, 46, 48, 53, 58, 59, 64, 67, 73, 74, 76, 94, 98, 112, 115, 116, 117, 118, 122, 123, 124, 125, 126, 127], "complex": [0, 29, 36, 41, 46, 69, 118, 129, 138], "compli": 38, "complianc": [14, 39], "compliant": [76, 95, 122], "complic": [4, 29, 85], "complimentari": 68, "compon": [16, 33, 34, 37, 39, 40, 41, 44, 54, 67, 76, 111, 115, 122, 124, 129, 137, 138], "compos": [39, 76, 84, 90, 132], "composit": [51, 76], "compositor": [1, 76], "comprehens": [4, 77], "compress": [12, 21, 26, 33, 35, 52, 56, 76, 78], "compressor": 76, "compromis": 37, "comput": [1, 2, 10, 11, 13, 14, 15, 20, 35, 55, 56, 60, 76, 78, 98, 109, 113, 118, 119, 122, 130, 131], "concept": [3, 4, 31, 54, 68, 116], "concern": 8, "concert": 54, "concis": [3, 4], "conclus": 4, "condit": [3, 4, 53, 64, 76, 98, 131], "conduct": 2, "conf": [20, 29, 38, 40, 41, 43, 45, 47, 50, 53, 62, 63, 68, 70, 71, 72, 73, 74, 80, 83, 85, 86, 87, 88, 95, 99, 101, 106, 107, 114, 115, 121, 122, 124, 125, 126, 129, 130, 132, 133, 135, 137, 140], "confid": 4, "config": [1, 12, 19, 20, 29, 30, 34, 35, 36, 40, 41, 46, 54, 55, 61, 67, 71, 73, 76, 85, 86, 87, 88, 90, 91, 92, 95, 99, 102, 108, 109, 117, 122, 129, 132, 139], "config_fil": [106, 107], "config_opt": 71, "config_rte_build_shared_lib": 67, "configur": [0, 1, 3, 4, 10, 11, 12, 13, 15, 18, 22, 23, 25, 26, 27, 29, 30, 31, 34, 36, 40, 42, 45, 63, 66, 67, 68, 69, 76, 81, 82, 83, 85, 86, 87, 90, 92, 98, 99, 100, 101, 102, 105, 106, 107, 109, 110, 112, 115, 117, 120, 121, 123, 125, 126, 130, 131, 135, 136, 137, 139, 140], "confirm": [7, 8, 15, 24, 26, 35, 40, 41, 65, 67, 70, 77, 124, 129, 133, 138], "conflict": [20, 26, 30, 68, 115, 122, 129], "confront": 1, "confus": [4, 76, 95], "congratul": [7, 10, 11, 23, 25, 34, 60, 70, 72, 113, 114, 116, 118, 124, 136, 138], "conjunct": [44, 119], "conki": 76, "connect": [1, 7, 8, 11, 13, 19, 20, 21, 22, 24, 25, 27, 28, 29, 39, 41, 49, 51, 59, 66, 67, 68, 70, 71, 74, 76, 84, 95, 98, 101, 102, 109, 111, 113, 119, 122, 124, 125, 131, 133, 135, 138, 140], "connection_nam": 66, "connector": 76, "conntrack": 68, "consciou": 37, "consecut": 3, "consequ": 4, "consid": [1, 3, 12, 18, 21, 26, 36, 46, 47, 48, 53, 54, 55, 64, 68, 74, 84, 104, 133, 134], "consider": [37, 70], "consist": [2, 3, 4, 11, 35, 39, 41, 54, 73, 84, 98, 119], "consol": [3, 10, 11, 13, 14, 19, 21, 22, 24, 25, 26, 30, 43, 47, 76, 113, 124, 137], "const": [105, 118], "constrain": 122, "construct": [4, 81], "consult": [26, 34, 64, 95, 98], "consum": [35, 37, 40, 49, 54, 85, 87, 98], "consumpt": [11, 33, 76], "contact": [35, 76, 98], "contain": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 117, 118, 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "container": [17, 54, 75, 116, 122], "container_id": 51, "containerd": 52, "content": [3, 7, 8, 9, 11, 12, 20, 24, 31, 33, 35, 39, 40, 41, 51, 54, 55, 56, 59, 66, 73, 75, 76, 81, 84, 85, 91, 94, 95, 98, 109, 110, 115, 124, 129, 130, 132, 140], "contents": 125, "contenturl": [35, 40, 98], "context": [38, 52, 76, 112], "continu": [1, 5, 7, 8, 9, 10, 11, 15, 23, 26, 30, 47, 48, 54, 55, 61, 66, 77, 95, 98, 100, 113, 114, 115, 116, 122, 124, 125, 129, 133, 138, 139], "contribut": [0, 3, 30], "control": [11, 26, 29, 33, 34, 36, 41, 43, 46, 53, 54, 55, 63, 67, 68, 76, 88, 95, 96, 98, 103, 122, 132, 133, 139], "controladdr": 119, "controlmachin": 119, "convei": 3, "conveni": [41, 47, 48, 98, 120, 131, 140], "convent": [3, 8, 56, 76, 78, 92], "convers": [76, 85], "convert": [27, 53, 76, 81, 84, 89, 122, 131], "cool": [11, 53], "cooper": 4, "coordin": [4, 49], "copi": [10, 11, 12, 13, 15, 19, 30, 35, 37, 38, 39, 40, 41, 44, 48, 51, 74, 76, 88, 95, 98, 113, 115, 124, 127, 129, 131, 132, 133, 136], "copyfromloc": 113, "copyq": 76, "copyright": [0, 11, 51, 52, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 102, 103, 104, 105, 106, 107, 110], "core": [11, 12, 15, 19, 20, 22, 27, 35, 40, 41, 52, 53, 54, 60, 76, 77, 80, 82, 83, 85, 98, 111, 113], "coredn": [34, 122], "coreo": 81, "corespersocket": 119, "corner": [22, 25, 28], "corosync": 76, "corpor": [1, 11, 21, 22, 25, 26, 27, 29, 32, 35, 36, 37, 41, 52, 53, 67, 71, 77, 81, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 115, 116, 118, 121, 129, 131, 138], "correct": [3, 4, 15, 29, 30, 34, 41, 59, 73, 81, 88, 98, 110, 115, 119, 130], "correctli": [3, 30, 35, 44, 67, 98, 122], "correspond": [35, 36, 47, 48, 56, 67, 78, 87, 124, 129, 137, 140], "corrupt": [56, 98], "cosmo": 11, "cosmosdb": 11, "cost": 36, "coturn": 76, "could": [1, 51, 64, 95, 133], "counsel": 140, "count": [43, 76, 119], "coupl": [18, 68, 125], "courteou": 4, "cover": [0, 4, 41, 116, 122, 124, 129], "cp": [10, 19, 20, 30, 35, 38, 40, 41, 44, 45, 46, 48, 71, 76, 95, 113, 115, 119, 122, 124, 125, 127, 131, 132, 133], "cpio": [40, 43, 46, 76], "cpp": 76, "cppunit": 76, "cpu": [12, 15, 16, 22, 24, 25, 26, 28, 41, 42, 52, 67, 76, 82, 83, 87, 111, 118, 119], "cpu_model": 41, "cpufreq": [53, 82], "cpuidl": 53, "cracklib": 37, "craft": 122, "crash": [7, 8, 41], "crd": 122, "creat": [2, 3, 7, 8, 10, 13, 16, 17, 18, 19, 20, 23, 29, 34, 36, 38, 39, 42, 44, 45, 46, 47, 48, 49, 51, 52, 55, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 81, 85, 86, 87, 88, 90, 95, 98, 99, 100, 101, 103, 109, 111, 113, 115, 122, 124, 125, 126, 127, 129, 130, 131, 132, 133, 135, 136, 137, 139, 140], "create_stack": 122, "creation": [12, 13, 15, 28, 30, 36, 39, 41, 49, 75, 76, 100], "creation_timestamp": 41, "creativ": [6, 81, 108, 109], "creativecommon": [81, 108, 109], "credenti": [11, 14, 19, 23, 73, 119, 124, 134, 138], "credit": 51, "cri": 34, "crio": 122, "crit": 41, "critic": [54, 76, 95, 98, 128], "croni": 76, "cross": [3, 11, 76, 94, 115, 127], "crowdsourc": 54, "crt": 84, "crypto": [76, 122], "cryptographi": 76, "cryptomgr": 43, "cryptoprocessor": 76, "cryptsetup": [8, 37, 76], "csharp": 131, "csp": [54, 119], "csv": 98, "ctrl": [26, 74, 124, 129], "ctrl_interfac": 74, "ctrl_interface_group": 74, "ctstate": 68, "cuda": 120, "cuda_": 130, "cultur": [36, 37, 76], "cumbersom": 39, "cumul": 41, "cunit": 76, "cup": 76, "curat": 33, "curl": [11, 16, 19, 20, 22, 29, 30, 35, 46, 47, 48, 62, 65, 67, 76, 98, 116, 138, 139], "current": [1, 10, 11, 12, 13, 15, 16, 19, 20, 26, 34, 35, 39, 41, 46, 53, 56, 60, 61, 63, 65, 76, 78, 81, 85, 87, 92, 94, 98, 105, 108, 115, 118, 124, 131, 136], "current_driv": 53, "cursor": [26, 76], "custom": [7, 8, 10, 11, 13, 20, 23, 25, 27, 28, 30, 35, 37, 38, 41, 43, 47, 48, 49, 52, 54, 64, 68, 71, 73, 75, 76, 95, 98, 106, 107, 111, 115, 124, 126, 127, 129, 131, 132, 133, 137, 139], "custom_modul": 48, "customiz": [0, 41, 46, 47, 48, 76], "cut": [43, 73, 118], "cvma": 20, "cycl": [41, 42, 53, 75], "cyru": 76, "cython": 76, "d": [20, 21, 22, 26, 27, 35, 40, 41, 43, 45, 46, 47, 48, 50, 51, 63, 67, 70, 71, 73, 74, 76, 81, 83, 95, 98, 101, 114, 115, 116, 119, 121, 122, 124, 125, 126, 129, 130, 131, 132, 137, 139, 140], "d01862ca79d1064ea379cd715cfdd53a": 45, "d4": 74, "d4ce9d526fa6": 51, "d54250wyk": 77, "d5cb69e9": 126, "d6ee7903e14d": 52, "d73d6040afd7693cccdfece479df9795": 41, "d84d": 43, "d9": 74, "d_type": 52, "dad": 4, "daemon": [20, 25, 29, 35, 38, 40, 41, 52, 53, 64, 68, 70, 71, 72, 73, 76, 83, 95, 96, 97, 99, 100, 101, 102, 103, 104, 110, 114, 116, 121, 122, 129], "daemonset": 34, "dai": [0, 37, 41, 48, 51, 54, 123, 125, 129, 137], "daili": [1, 37, 39], "damag": 3, "danger": [3, 98], "darktabl": 76, "dash": [3, 60], "dashboard": [10, 11, 41, 124, 138], "dat": [29, 53], "data": [0, 3, 8, 9, 11, 12, 20, 33, 34, 35, 38, 39, 49, 54, 55, 60, 62, 64, 67, 69, 76, 80, 81, 95, 98, 105, 106, 109, 110, 112, 113, 119, 127, 128, 133, 136, 138], "databas": [11, 37, 41, 55, 62, 76, 110, 133, 136, 138], "datacent": [12, 54], "datadir": 98, "datanod": 113, "dataset": [76, 136, 140], "datasheet": 11, "datastor": 28, "date": [14, 41, 51, 81, 84, 115, 119, 122, 140], "dav1d": 76, "david": 133, "db": [11, 20, 41], "dbm": 74, "dbu": [29, 76, 117], "dbx": 76, "dcd9adb40611": 52, "dconf": [76, 117], "dd": [9, 76, 119], "ddcutil": 76, "ddd": 76, "ddebug": 99, "de": 76, "deal": [29, 76], "deb": [123, 133], "debug": [1, 22, 35, 36, 41, 42, 52, 76, 83, 98, 119], "debug_info_ban": 35, "debug_info_lib": 35, "debug_info_src": 35, "debugcon": 22, "debugg": [33, 76], "debuginfo": 33, "dec": 11, "decid": [1, 46, 54, 114, 119, 122], "decim": 81, "decis": [1, 36, 37, 41, 45, 54], "declar": [30, 41], "decod": [0, 76], "decompress": [21, 26, 27, 28, 42, 67, 76, 124, 136], "decreas": 53, "decrypt": 76, "dedic": [11, 20], "dedupl": 76, "deep": [55, 76, 101, 131], "def": [3, 131], "default": [1, 11, 12, 13, 14, 15, 20, 21, 22, 25, 26, 27, 28, 34, 35, 36, 37, 39, 40, 41, 45, 46, 47, 48, 50, 51, 52, 53, 54, 56, 57, 60, 63, 66, 72, 73, 76, 81, 82, 83, 85, 86, 87, 88, 90, 91, 92, 94, 95, 98, 100, 101, 102, 104, 106, 107, 109, 113, 116, 118, 119, 121, 122, 126, 127, 129, 130, 131, 132, 133, 139, 140], "default_hugepagesz": 50, "defaultlimitnofil": 63, "defect": 95, "defend": 37, "defens": 122, "defin": [0, 3, 7, 8, 10, 11, 20, 35, 36, 38, 40, 41, 46, 53, 61, 66, 68, 76, 81, 82, 83, 85, 88, 94, 98, 101, 109, 118, 119, 122, 124, 126, 129, 136], "definit": [3, 39, 40, 46, 55, 76, 81, 85, 87, 88, 101, 124], "degrad": 122, "degre": [4, 54, 131], "del": 133, "delai": 98, "delet": [19, 22, 26, 30, 34, 35, 38, 41, 52, 64, 76, 98, 103, 116, 122], "delimit": [41, 82], "deliv": [1, 36, 37, 39, 41, 53, 76, 94, 105, 106], "deliveri": [11, 39, 41, 102, 103, 104, 105], "dell": [48, 77], "delta": [35, 85, 87], "demand": [39, 53, 130], "demo": 136, "demonstr": [1, 15, 20, 61, 69, 119, 125, 136], "deni": 68, "denot": 34, "densiti": 3, "dep": 98, "depend": [0, 7, 8, 27, 30, 35, 36, 39, 49, 53, 54, 56, 62, 64, 67, 73, 85, 87, 93, 95, 98, 115, 122, 125, 129, 130, 131, 135, 139, 140], "depict": [20, 61], "deploi": [17, 30, 31, 34, 37, 41, 42, 49, 55, 76, 118, 122, 130, 140], "deploy": [1, 11, 35, 49, 54, 76, 122, 131], "depmod": 115, "deprec": [35, 58, 76, 85, 114], "depth": [3, 56, 76, 81, 136], "der": [65, 84], "deriv": [30, 35, 49, 75, 139], "desc": 122, "describ": [3, 4, 8, 10, 14, 15, 20, 22, 25, 30, 32, 34, 35, 39, 41, 44, 47, 48, 49, 51, 52, 54, 56, 59, 60, 61, 62, 64, 65, 67, 69, 70, 72, 73, 76, 77, 81, 87, 98, 121, 122, 123, 132, 135], "descript": [4, 14, 56, 68, 73, 76, 78, 129, 131], "descriptor": [20, 63], "deselect": 8, "design": [0, 1, 20, 27, 28, 29, 35, 36, 38, 40, 44, 45, 54, 55, 56, 76, 98, 104, 113, 122, 124, 125, 126, 129, 132, 133], "desir": [7, 8, 14, 24, 26, 27, 28, 30, 35, 37, 38, 41, 46, 51, 53, 64, 95, 98, 110, 117, 124, 126, 127, 140], "desktop": [0, 9, 16, 18, 19, 20, 22, 25, 26, 27, 28, 36, 40, 42, 43, 53, 55, 56, 60, 70, 75, 76, 77, 78, 83, 111, 113, 117, 118, 124, 125, 126, 127, 129, 134, 135, 137, 138], "despit": 39, "desrt": 117, "dest_module_loc": [48, 115], "destin": [4, 38, 68, 73], "destroi": [7, 8, 9], "destruct": 127, "detach": 28, "detail": [0, 1, 3, 4, 7, 8, 10, 11, 13, 14, 19, 25, 26, 27, 28, 29, 30, 35, 36, 39, 46, 48, 49, 51, 54, 62, 63, 66, 67, 69, 71, 76, 81, 84, 85, 86, 87, 89, 90, 91, 92, 95, 98, 116, 117, 119, 121, 122, 124, 131, 132, 135, 136, 137, 138], "detect": [8, 23, 25, 29, 30, 39, 44, 48, 49, 53, 76, 81, 94, 99, 109, 115, 122, 129, 140], "determin": [0, 22, 35, 39, 41, 47, 48, 49, 64, 65, 67, 69, 74, 82, 83, 95, 98, 112, 125, 129, 137, 140], "determinist": 76, "dev": [2, 8, 9, 12, 14, 19, 20, 30, 33, 35, 39, 43, 47, 51, 59, 61, 62, 63, 64, 67, 73, 74, 76, 115, 118, 119, 122, 126, 127, 129, 130], "devbind": 67, "develop": [0, 1, 5, 7, 8, 11, 17, 19, 26, 33, 35, 36, 40, 41, 42, 47, 51, 54, 58, 62, 66, 67, 75, 76, 112, 115, 118, 121, 130, 132, 133], "devhelp": 76, "devic": [7, 8, 9, 11, 12, 14, 19, 20, 22, 26, 27, 35, 36, 39, 43, 44, 53, 66, 67, 68, 69, 74, 76, 82, 83, 109, 111, 116, 126, 127, 129, 130, 139, 140], "device0": 129, "device_id": 67, "deviceam": 14, "devicelogin": 11, "devicetre": 43, "devop": [1, 75, 76], "devpkg": [55, 67, 76, 119, 140], "devtest": 11, "df": 113, "dfc48a71ceb5": 43, "dfu": 76, "dhcp": [8, 29, 60, 66, 69, 74, 76], "diagnos": [36, 39, 76], "diagnosi": 8, "diagnost": 76, "diagram": 76, "dialog": [7, 8, 9, 10, 15, 23, 25, 76, 135], "dialogu": [7, 26, 129], "dictat": 122, "dictionari": [2, 76], "did": [1, 4, 39], "didn": 122, "diff": [30, 39, 51, 56, 76, 87], "differ": [7, 8, 9, 10, 11, 20, 22, 26, 27, 30, 31, 35, 41, 46, 51, 53, 54, 56, 57, 61, 63, 68, 76, 78, 81, 82, 83, 92, 95, 98, 115, 117, 118, 119, 122, 131, 132, 135, 139], "difficult": [1, 3, 4, 112, 118, 120], "difficulti": [79, 120], "diffoscop": 76, "diffutil": 76, "dig": 29, "digest": 51, "digikam": 76, "digit": [37, 76, 136], "digitalocean": [10, 11, 13, 14, 18], "dim": 118, "dimension": 76, "ding": 76, "dino": 76, "dir": [52, 104, 122], "direct": [3, 4, 20, 21, 22, 27, 29, 39, 40, 51, 63, 76, 81, 98, 100, 119, 122, 124, 129, 130, 132, 137], "directli": [3, 4, 21, 28, 29, 35, 39, 44, 46, 47, 48, 65, 66, 68, 74, 81, 87, 95, 98, 110, 115, 122, 129, 136, 140], "directori": [0, 3, 9, 10, 11, 20, 22, 26, 27, 28, 30, 35, 38, 39, 41, 44, 46, 47, 48, 51, 52, 56, 58, 61, 63, 66, 67, 69, 72, 73, 74, 76, 81, 84, 87, 88, 90, 95, 98, 101, 104, 113, 115, 118, 119, 122, 125, 129, 130, 131, 132, 133, 135, 136, 137, 140], "directx": 76, "disabl": [0, 1, 7, 8, 20, 22, 26, 29, 37, 43, 46, 47, 48, 53, 68, 70, 73, 74, 76, 81, 87, 94, 95, 96, 97, 98, 100, 104, 119, 121, 122, 132, 137, 139], "disallow": [37, 124], "disassembli": 76, "disbal": 129, "disc": 24, "discard": 64, "disclaim": 5, "disclos": 3, "disconnect": [28, 66, 68], "discourag": [37, 116], "discov": [30, 51, 120], "discover": 76, "discoveri": [29, 76, 122], "discriptor": 20, "discuss": [0, 2, 4, 56, 73, 124], "disk": [1, 9, 11, 12, 13, 14, 18, 19, 20, 22, 24, 25, 26, 27, 28, 35, 37, 41, 42, 43, 44, 54, 56, 76, 78, 98, 109, 111, 125, 126], "diskimages": 14, "disklabel": 126, "diskpart": 8, "diskspac": 98, "diskutil": 8, "displai": [1, 11, 21, 22, 23, 25, 26, 34, 41, 56, 60, 61, 64, 67, 70, 73, 76, 83, 85, 86, 87, 88, 89, 90, 91, 92, 98, 106, 107, 122, 124, 136], "disregard": 132, "distinct": [3, 75], "distribut": [1, 12, 29, 31, 36, 38, 39, 44, 46, 47, 48, 49, 51, 55, 76, 93, 95, 98, 113, 115, 117, 122, 123, 125, 130, 140], "distro": [1, 9, 22, 27, 35, 38, 40, 41, 49, 73, 112, 123, 128, 129], "divid": [4, 20, 49], "django": 76, "djvu": 76, "dklm": 52, "dkm": [42, 47, 55, 76, 115], "dkms_binaries_onli": 48, "dkms_source_tre": 48, "dl": 11, "dla": 11, "dldt": 131, "dlpa": 52, "dma": 129, "dmax": 118, "dmesg": [44, 45, 115], "dmidecod": 30, "dmsetup": 8, "dn": [66, 76, 119, 134], "dnf": [22, 73, 76, 85, 87, 91], "dnsmasq": 20, "dnssec": 76, "dnsstublisten": 20, "do": [0, 1, 3, 4, 7, 8, 9, 10, 11, 12, 25, 26, 29, 30, 31, 34, 35, 36, 37, 39, 41, 45, 46, 63, 64, 67, 68, 69, 70, 71, 73, 76, 84, 85, 87, 88, 95, 98, 100, 104, 114, 115, 116, 117, 119, 120, 122, 123, 124, 125, 126, 127, 130, 131, 137], "do_classif": 131, "doc": [34, 76, 82, 109, 130, 136], "docbook": 76, "docgen": 76, "dock": [40, 76], "docker": [17, 51, 52, 54, 55, 75, 76, 114, 120, 121, 131], "docker_default_runtim": [114, 121], "dockerfil": [17, 51, 52, 76, 131], "dockerhub": [39, 54, 55, 76], "dockershim": 122, "document": [2, 4, 5, 8, 11, 20, 27, 32, 34, 35, 36, 39, 41, 44, 46, 48, 53, 54, 67, 68, 69, 74, 76, 77, 81, 85, 93, 94, 95, 98, 102, 103, 104, 105, 106, 107, 109, 115, 116, 122, 123, 124, 129, 130, 131, 132, 136], "documentroot": 124, "docutil": 76, "doe": [7, 8, 13, 15, 16, 25, 30, 35, 38, 39, 41, 44, 45, 46, 47, 48, 51, 52, 53, 56, 57, 59, 62, 66, 68, 70, 73, 91, 98, 99, 100, 101, 105, 116, 122, 123, 126, 129, 130, 132, 133, 138, 140], "doesn": [1, 30, 35, 36, 41, 54, 95, 119], "dog": [3, 4], "dolphin": 76, "domain": [7, 8, 29, 41, 71, 76, 119], "domotica": 76, "don": [3, 4, 7, 13, 26, 41, 54, 73, 98, 127], "done": [29, 50, 52, 87, 95, 99, 114, 115, 122, 124, 137], "dosfstool": 76, "dot": 60, "doubl": [26, 44, 98, 101, 118, 139], "doublecheck": 19, "dovecot": 76, "down": [4, 7, 8, 10, 11, 13, 23, 26, 28, 35, 36, 46, 61, 119, 124, 126, 127], "downgrad": 39, "downhil": 76, "download": [7, 8, 9, 10, 11, 12, 13, 15, 16, 20, 27, 29, 30, 33, 35, 37, 39, 42, 46, 48, 51, 52, 54, 59, 61, 62, 65, 67, 76, 85, 87, 90, 98, 111, 115, 116, 117, 124, 125, 126, 131, 136, 137, 139], "downstream": [30, 35], "doxygen": 76, "dozen": 131, "dpcpp": 76, "dpdk": [42, 76], "dpm": 76, "dptf": 53, "dptfxtract": 53, "dragon": 76, "drain": [34, 83, 123], "draw": 76, "dri": 117, "drift": [36, 54], "drill": 61, "drive": [1, 7, 8, 12, 16, 18, 19, 21, 22, 26, 27, 28, 54, 59, 75, 76, 109, 125, 126, 127, 134], "driver": [1, 21, 22, 26, 36, 43, 46, 47, 48, 52, 69, 76, 116, 120, 121, 122, 130], "drop": [23, 26, 28, 41, 43, 63, 68, 76, 100, 104, 121, 122, 124], "dropdown": 14, "droplet": 12, "dropwatch": 76, "drv": 67, "dry": 98, "dtc": 76, "dual": 128, "due": [0, 1, 22, 29, 36, 37, 41, 47, 48, 52, 56, 70, 71, 81, 99, 100, 101, 111, 119, 122], "duktap": [29, 76], "duperemov": 76, "duplic": [51, 76], "dure": [7, 8, 11, 20, 28, 33, 35, 36, 37, 40, 41, 44, 46, 51, 54, 67, 74, 95, 98, 122, 127, 131, 132, 137], "dv": 22, "dvd": [23, 24, 27, 28], "dvi": 76, "dvybwnlg7hxdi": 12, "dwg": 76, "dxf": 76, "dxhn6ev6kfm34odvwdxecj0jcx5uixciebfoulujeh": 12, "dyem": 52, "dynam": [20, 26, 36, 48, 53, 54, 55, 68, 76, 98, 110, 124, 129, 130, 132], "e": [1, 3, 7, 12, 19, 20, 26, 34, 35, 39, 41, 51, 54, 76, 81, 98, 102, 111, 119, 122, 123, 126, 133, 140], "e1000": [24, 67], "e2fsprog": 76, "e3": 111, "e3825": 77, "e5": [77, 111], "e7": 111, "e8": [67, 84], "e8cd": 59, "e9": 74, "ea2e4278": 43, "ea484c7606c9": 126, "each": [1, 3, 4, 8, 11, 15, 20, 31, 34, 35, 36, 39, 40, 41, 53, 54, 56, 67, 69, 71, 73, 81, 82, 84, 87, 95, 98, 101, 102, 104, 113, 118, 122, 123, 124, 125, 127, 132], "eap": 74, "earli": [7, 8, 43, 44, 122], "earlier": [1, 3, 14, 24, 25, 40, 58, 65, 66, 88, 136], "earlyoom": 76, "easi": [3, 4, 37, 39, 54, 112, 116, 120, 122, 126, 129, 133], "easier": [1, 36, 46, 47, 48, 54, 60, 64, 98, 118], "easiest": 22, "easili": [1, 3, 4, 19, 35, 37, 38, 46, 51, 54, 76, 95, 110, 133], "eastern": 76, "eat": 4, "eb": [14, 74], "ebpf": 76, "ec2": [10, 14], "ec23189ef954": 52, "ec5064287c60": 52, "ecdsa": [10, 113], "echo": [20, 30, 40, 41, 45, 47, 50, 53, 67, 95, 115, 122, 129, 130, 131, 132, 140], "ecosystem": [35, 76, 116], "ecvbwpwr": 14, "eda": 76, "edff383290e5": 43, "edg": [1, 55, 118], "edit": [2, 7, 8, 19, 25, 27, 28, 30, 35, 41, 46, 48, 51, 57, 62, 66, 70, 73, 76, 85, 88, 95, 113, 119, 122, 124, 132, 140], "editor": [11, 30, 35, 46, 48, 51, 52, 55, 66, 69, 76, 95, 113, 124, 132], "educ": 76, "ee": 84, "ee664fec": 126, "ef00": 8, "efa893350647": 52, "effect": [3, 4, 11, 29, 35, 38, 41, 53, 54, 69, 71, 76, 81, 124, 140], "effici": [0, 4, 33, 37, 39, 53, 54, 64, 68, 82, 119], "effortlessli": 29, "efi": [8, 9, 21, 23, 26, 27, 28, 35, 43, 59, 61, 76, 126, 127, 129], "efivar": [43, 76], "eg": 74, "egl": 129, "egl_external_platform": 129, "egl_vendor": 129, "eh3xzveeddeaxoej0mzsj2ukqsbi": 12, "eid": 76, "eigen": 76, "either": [3, 5, 8, 16, 25, 27, 34, 35, 51, 56, 71, 81, 90, 92, 95, 96, 98, 119, 125], "electron": [55, 76], "element": [3, 76, 101], "elfutil": 76, "elig": 10, "elimin": [56, 71], "ell": 76, "els": [3, 41, 98, 115], "emac": 76, "email": [2, 13, 30, 46, 76, 133], "emb": 95, "embed": 35, "emit": 76, "emphas": [4, 76], "emphasi": [3, 4], "emploi": [1, 37, 49, 53, 54, 63], "empti": [0, 7, 8, 26, 35, 40, 56, 81, 84, 88, 98], "emul": [3, 22, 25, 27, 72, 76], "en": [3, 109, 115, 129], "en_u": [12, 19, 20, 35], "ena": 14, "enabl": [0, 1, 3, 7, 8, 11, 15, 20, 21, 25, 26, 28, 29, 34, 35, 36, 37, 40, 42, 46, 47, 48, 49, 50, 52, 53, 62, 67, 68, 69, 71, 72, 73, 74, 76, 81, 91, 95, 98, 100, 104, 109, 115, 116, 119, 122, 124, 125, 129, 130, 131, 133, 135, 137, 140], "enable_network": 74, "enablebrightnesscontrol": 129, "enablesshkeysign": 119, "enchant": 76, "enclos": 50, "encod": [0, 76, 81, 84, 98, 113], "encount": [8, 22, 26, 46, 48, 88, 115], "encourag": [8, 37, 138, 140], "encrypt": [1, 15, 21, 36, 37, 70, 76], "end": [1, 3, 26, 27, 39, 41, 43, 46, 47, 48, 60, 61, 68, 73, 76, 95, 98, 109, 126, 133, 138], "endeavour": 76, "endors": 140, "endpoint": [54, 104, 122], "endsect": 129, "endtim": 11, "energi": [36, 53], "enforc": [1, 39, 47, 53, 68, 83, 98], "engag": 33, "engin": [1, 13, 27, 29, 48, 55, 56, 76, 78, 115, 122, 130], "english": [124, 138], "enhanc": [1, 36, 41, 46, 47, 48, 76], "enjoi": 64, "eno1": 20, "eno2": 20, "enough": [7, 8, 41, 54, 98, 126, 127], "enp1s0": 69, "enp1s0f": 69, "enp1s0f0": 69, "enp1s0f1": 69, "enp1s0f2": 69, "enp1s0f3": 69, "enrol": 43, "ensur": [1, 7, 8, 9, 15, 19, 20, 27, 35, 37, 39, 41, 46, 48, 49, 59, 65, 68, 70, 81, 113, 115, 119, 122, 123, 124, 129, 137, 140], "entail": 136, "enter": [2, 7, 8, 10, 11, 13, 14, 15, 23, 26, 27, 35, 39, 40, 41, 51, 52, 53, 56, 58, 61, 70, 72, 73, 74, 112, 113, 117, 118, 119, 121, 124, 126, 127, 131, 133, 134, 135, 138], "enterpris": 76, "entir": [0, 19, 35, 36, 39, 48, 85, 95, 98, 127, 136], "entiti": 1, "entri": [7, 8, 25, 29, 43, 46, 48, 55, 67, 70, 76, 82, 87, 98, 99, 100, 101, 122, 126, 129, 138], "entropi": 76, "enumer": [55, 76], "env": [131, 140], "environ": [1, 3, 7, 8, 12, 15, 17, 18, 22, 25, 27, 28, 29, 35, 36, 41, 49, 51, 54, 56, 74, 76, 78, 81, 82, 89, 114, 116, 118, 119, 121, 122, 129, 130, 131, 132], "envvar": 3, "eof": [12, 20, 35, 40, 50, 52, 63, 73, 74, 114, 115, 119, 121, 122, 125, 126, 129], "eog": 76, "ephemer": [10, 38, 54, 131], "epoch": 35, "ept": 27, "equal": [3, 36], "equat": 29, "equinix": 76, "equip": 3, "equiv": 119, "eras": [7, 20], "erobot": 125, "error": [0, 8, 9, 11, 14, 26, 30, 41, 48, 51, 76, 87, 88, 98, 101, 105, 106, 107, 108, 112, 122, 129, 137], "esc": 8, "esp": [43, 126, 127], "espanol": 76, "especi": [3, 33, 48, 53, 122, 126, 129, 137], "ess": 74, "essenti": 1, "establish": [10, 11, 41, 68, 74, 84, 98, 112, 113], "estim": 112, "esxi": [18, 27, 56, 78], "etc": [4, 20, 28, 29, 35, 36, 38, 39, 40, 41, 44, 45, 47, 48, 50, 53, 54, 57, 59, 62, 63, 64, 66, 68, 69, 70, 71, 72, 73, 74, 76, 81, 82, 83, 84, 95, 98, 100, 101, 103, 104, 106, 107, 113, 114, 115, 116, 119, 121, 122, 124, 125, 126, 129, 130, 132, 133, 135, 137, 139, 140], "etcd": 34, "etcher": [16, 18, 19, 125], "ethernet": [1, 20, 66, 67, 68, 95], "etherneten01": 66, "ethtool": [55, 76], "evalu": [1, 53, 64, 120], "evcd": 76, "evdev": 76, "even": [1, 40, 64, 73, 84, 98, 100, 111, 118, 127], "event": [4, 11, 54, 74, 76, 102, 122, 139], "event_id": 41, "eventgrid": 11, "eventview": 76, "ever": [110, 138], "everi": [1, 7, 8, 35, 36, 39, 41, 50, 54, 98, 101, 129, 132], "everydai": 4, "everyth": [4, 36, 38, 39, 49, 98, 113], "evinc": 76, "evolut": 76, "evolv": [41, 118, 138], "exact": [36, 39, 51, 95, 115], "exactli": 101, "exampl": [0, 1, 4, 7, 8, 9, 10, 12, 14, 15, 16, 20, 21, 22, 23, 25, 28, 33, 36, 37, 38, 40, 43, 45, 46, 50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 68, 69, 70, 72, 73, 74, 76, 95, 98, 110, 111, 115, 116, 117, 121, 122, 124, 125, 126, 127, 129, 130, 135, 138], "exce": [3, 99], "exceed": 63, "except": [3, 8, 38, 41, 98, 122], "excess": [4, 38, 41], "exchang": 76, "exclud": [7, 8, 30, 33, 51, 82, 113], "exclus": 30, "exec": [11, 51, 63, 76, 126], "execreload": 132, "execstart": [73, 95, 129, 132], "execstartpr": 73, "execstop": 73, "execut": [3, 8, 10, 11, 14, 16, 26, 30, 33, 34, 36, 37, 40, 41, 46, 53, 54, 58, 61, 73, 76, 81, 83, 84, 94, 96, 97, 98, 108, 109, 110, 113, 118, 119, 122, 130, 131, 136, 137, 140], "exempt": 95, "exercis": [76, 133], "exist": [3, 7, 8, 9, 10, 11, 21, 25, 27, 28, 35, 36, 38, 40, 41, 43, 46, 47, 51, 52, 54, 60, 66, 70, 73, 85, 87, 88, 91, 95, 98, 101, 104, 107, 114, 116, 122, 126, 127, 130, 132, 133, 134, 140], "exit": [7, 8, 11, 20, 26, 35, 41, 53, 58, 61, 74, 76, 83, 102, 103, 119, 124], "exit_failur": 41, "exiv2": 76, "exo": 76, "expand": [10, 13, 23, 28, 58, 61, 89, 122, 133], "expandtab": 19, "expat": 76, "expect": [4, 16, 23, 30, 35, 36, 40, 44, 51, 52, 68, 73, 81, 87, 102, 113, 115, 119, 133], "experi": [1, 22, 26, 49, 76, 119, 127], "experienc": [58, 112], "experiment": [52, 55, 76], "expert": [26, 73], "expertis": 4, "expir": [14, 62, 81, 84, 100], "expired": 81, "expiri": 104, "explain": [0, 3, 7, 8, 10, 12, 13, 15, 21, 22, 23, 24, 25, 26, 27, 28, 43, 53, 59, 66, 67, 69, 95, 113, 114, 123, 134, 139], "explan": [0, 4, 35, 41, 95, 112, 116], "explanatori": 3, "explicit": 132, "explicitli": [35, 37, 41, 50, 81, 95, 98, 100, 119, 122, 123, 140], "explor": [7, 11, 26, 48, 120, 135], "exponenti": 37, "export": [36, 67, 71, 74, 76, 122, 130, 131], "expos": [1, 28, 36, 37, 41, 54, 76, 112, 129, 138], "exposur": 37, "express": [76, 98, 101], "ext": [7, 8, 131], "ext2": [1, 76], "ext3": 1, "ext4": [1, 8, 12, 19, 20, 35, 43, 61, 126, 127], "extend": [68, 76, 98, 101], "extens": [3, 11, 16, 26, 36, 47, 48, 53, 66, 76, 111, 118, 137], "extent": 76, "extern": [3, 29, 35, 47, 48, 54, 68, 85, 112, 115, 129], "extf": 52, "extra": [3, 7, 8, 24, 33, 36, 46, 51, 53, 55, 61, 73, 76, 98, 130, 132, 140], "extract": [0, 20, 21, 30, 39, 40, 46, 48, 51, 52, 53, 56, 76, 84, 87, 101, 115, 129, 136, 137, 138], "extractor": 76, "extremetuxrac": 76, "ey": 76, "f": [7, 14, 20, 22, 35, 40, 43, 63, 73, 84, 98, 102, 106, 107, 113, 119, 126, 127, 131, 140], "f1": 73, "f10": [7, 127], "f1y6sa": 113, "f2": [7, 8, 129], "f2501e67": 74, "f2f": [1, 7, 8, 43], "f6": 84, "f76c78d": 30, "f7a1": 43, "f81f": 59, "fa": [74, 84], "faa": [76, 131], "faas_passwd": 131, "faas_us": 131, "fabric": [11, 122], "face": 112, "facilit": [34, 48, 105], "factor": [112, 139], "factori": [1, 49, 62, 95], "fahrenheit": 4, "fail": [4, 7, 8, 20, 29, 30, 35, 41, 64, 99, 101, 111, 112, 122, 129, 137], "failedcreatepodsandbox": 122, "failedschedul": 122, "faillog": 81, "failov": 76, "failovermethod": 62, "failur": [4, 7, 8, 30, 41, 76, 85, 86, 87, 88, 89, 90, 91, 92, 98, 99, 102, 103, 106, 107, 108, 109], "fairli": 54, "fall": [34, 87, 119], "fallbackntp": 72, "fals": [12, 19, 20, 35, 41, 52, 71, 81, 104, 113, 126, 129], "famili": [28, 76, 100, 111], "familiar": [4, 14, 24, 29, 40, 49, 112, 116, 119], "fan": 76, "fanci": 4, "fann": 76, "far": [15, 124], "fashion": 44, "fast": [1, 18, 32, 46, 67, 69, 75, 76], "fastcgi": 132, "faster": [1, 35, 36, 45, 46, 53, 76], "fastest": 4, "fastfetch": 76, "fat": 76, "fat32": [7, 8], "fatal": 30, "favor": [36, 54], "favorit": [35, 40], "fb": 84, "fbcaf984b709": 59, "fcoe": 20, "fd": [22, 25, 30, 35, 76, 84], "fd0": 61, "fdisk": 126, "fdupe": 76, "fe": 74, "feasibl": 44, "featur": [1, 3, 7, 8, 11, 16, 21, 26, 27, 29, 37, 41, 43, 46, 51, 53, 54, 69, 71, 76, 79, 95, 109, 111, 116, 122], "fedora": [22, 73, 126], "feed": 76, "feedback": [11, 41], "feel": 1, "feh": 76, "felt": 0, "fetch": [33, 34, 80, 98, 109], "few": [1, 3, 4, 9, 29, 31, 66, 73, 87], "ff06fc76ec5148040acb4fcb2bc8105cc72f1963b55de0daf3a4ed664c6fe72c": 65, "ffffffff": 41, "ffmpeg": 76, "fftw": 76, "fg": 73, "fh": 95, "fi": [4, 42, 95], "fido2": 139, "field": [7, 8, 10, 12, 14, 23, 24, 25, 28, 36, 41, 43, 54, 56, 73, 78, 81, 84, 88, 101, 124, 125, 126, 133, 135], "fifteen": 41, "figur": [1, 3, 7, 8, 9, 10, 11, 12, 13, 14, 20, 21, 23, 24, 25, 26, 27, 28, 29, 33, 35, 38, 41, 49, 56, 61, 67, 73, 76, 112, 117, 119, 124, 125, 126, 127, 131, 134, 135, 136, 138], "file": [1, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 36, 40, 41, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 55, 56, 59, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 78, 81, 86, 87, 88, 89, 90, 91, 92, 96, 97, 99, 100, 102, 103, 108, 109, 110, 113, 115, 116, 117, 118, 121, 122, 124, 125, 126, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140], "file_path": 131, "filecount": 125, "filehugepag": 50, "filelight": 76, "filemanag": 76, "filenam": [3, 44, 46, 56, 78, 81, 88, 115], "fileserv": 76, "filesystem": [0, 7, 8, 11, 30, 33, 38, 51, 52, 64, 76, 82, 83, 93, 95, 109, 126, 134, 140], "filezilla": 117, "filezillaproject": 117, "fill": [15, 76], "filter": [41, 68, 76, 100, 101], "final": [3, 4, 7, 8, 11, 12, 30, 40, 51, 61, 95, 112, 116, 119, 131], "financ": 76, "find": [0, 2, 3, 4, 10, 11, 14, 15, 17, 21, 27, 29, 30, 34, 41, 44, 51, 55, 59, 61, 64, 73, 75, 76, 95, 117, 118, 127, 131, 132, 136, 137], "find_model_path": 131, "finder": 135, "findproxyforurl": 29, "findutil": [51, 76], "fine": [34, 60, 140], "finger": 37, "fingerprint": [10, 11, 113], "finish": [9, 10, 11, 12, 21, 24, 25, 27, 28, 34, 36, 39, 51, 53, 61, 109, 127, 137], "finit": 76, "fio": 76, "firefox": [1, 76], "firewal": [1, 19, 20, 41, 42, 76, 100], "firewalld": [0, 1, 76, 100], "firmwar": [20, 25, 27, 28, 30, 35, 38, 42, 43, 53, 76, 129], "first": [1, 2, 3, 4, 7, 8, 9, 15, 26, 30, 34, 35, 36, 40, 41, 52, 53, 61, 70, 71, 73, 74, 81, 84, 87, 88, 94, 95, 101, 103, 107, 109, 113, 115, 116, 118, 119, 122, 126, 129, 136, 137], "fit": 113, "five": 3, "fix": [1, 30, 34, 37, 39, 41, 42, 52, 61, 76, 98, 109, 119, 129, 140], "fixabl": 37, "flac": 76, "flag": [3, 23, 24, 35, 39, 40, 41, 52, 67, 74, 85, 86, 87, 88, 89, 90, 91, 92, 98, 106, 107, 111, 118, 122, 125], "flannel": 122, "flare": 76, "flash": [9, 76], "flask": 41, "flat": 35, "flathub": 117, "flatpak": [0, 1, 76, 120, 129], "flex": 76, "flexibl": [28, 44, 54, 76], "flight": 34, "floor": 60, "floppi": 126, "flow": [2, 20, 29, 33, 76], "flowchart": 3, "fluidsynth": 76, "fly": [33, 35], "fmt": 76, "focu": [1, 41, 54, 76, 131], "focus": [1, 32, 54, 76, 116, 131], "folder": [3, 13, 30, 35, 46, 53, 76, 95, 98, 115, 122, 125, 129, 130, 135, 139], "follow": [2, 3, 4, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 47, 48, 50, 51, 52, 53, 54, 56, 57, 58, 60, 61, 62, 63, 65, 66, 67, 70, 71, 72, 73, 74, 81, 84, 85, 86, 87, 88, 89, 90, 91, 92, 95, 96, 98, 100, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 129, 130, 132, 133, 135, 136, 137, 138, 140], "font": 76, "fontconfig": 76, "fontforg": 76, "fonttool": 76, "foo": [12, 95, 118], "foobar": 12, "footprint": [36, 111], "fopt": 118, "forc": [1, 3, 8, 53, 81, 84, 98, 99, 129], "forcibli": 84, "forecast": 76, "foreign": 37, "fork": [0, 2, 20, 54, 76], "forkstat": 76, "form": [0, 4, 8, 36, 39, 41, 47, 48, 54, 60, 98, 116], "formal": 4, "format": [0, 2, 4, 8, 9, 12, 14, 22, 27, 36, 40, 41, 46, 53, 56, 67, 76, 78, 80, 81, 84, 85, 87, 89, 90, 92, 95, 98, 102, 104, 106, 109, 113, 115, 127, 131], "formatstr": 98, "fortran": 76, "fortun": 76, "forum": [0, 75], "forward": [20, 25, 39, 46, 67, 68, 73, 94, 95, 122], "fossil": 76, "found": [0, 3, 17, 29, 32, 35, 37, 40, 41, 44, 46, 53, 88, 95, 98, 106, 107, 109, 116, 117, 122, 127, 129, 130, 131, 133], "four": [3, 51, 53, 67, 69, 119, 136], "fp32": 131, "fpm": [120, 124], "fprintd": 76, "fqdn": [11, 119], "fqhalhi": 119, "fr": 76, "frame": 69, "framework": [48, 53, 55, 68, 76, 113, 115, 117, 121, 131], "frameworks5": 76, "free": [0, 7, 8, 10, 11, 12, 41, 44, 45, 60, 76, 98, 109, 126], "freebsd": 140, "freed": [41, 105], "freedesktop": 117, "freedom": 1, "freeglut": 76, "freeli": 41, "freerdp": 76, "freestand": 43, "freetyp": 76, "french": 76, "freq": 74, "frequenc": [36, 74], "frequent": [3, 36, 44, 54, 76], "fresh": 20, "freshli": 38, "fribidi": 76, "friend": [76, 133], "friendli": [60, 109, 116], "fritz": 55, "from": [1, 3, 4, 9, 10, 11, 12, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 61, 66, 67, 68, 74, 75, 76, 80, 81, 82, 84, 85, 86, 87, 88, 91, 94, 95, 98, 99, 100, 101, 102, 108, 109, 112, 113, 114, 115, 117, 118, 119, 122, 123, 124, 125, 126, 127, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 140], "front": [41, 68, 76], "frontend": [76, 84], "frontload": 4, "fry": 4, "fsck": 140, "fsearch": 76, "fstype": [12, 19, 20, 35, 61, 127], "ftp": [71, 76], "ftp_proxi": 71, "fulfil": [7, 8, 11], "full": [3, 11, 26, 35, 36, 37, 41, 55, 58, 67, 70, 71, 76, 81, 87, 95, 109, 116, 132], "fullfil": 87, "fulli": [35, 36, 41, 73, 95, 115, 124, 138], "function": [4, 11, 28, 29, 30, 31, 35, 38, 39, 41, 44, 47, 48, 51, 55, 59, 76, 81, 84, 87, 95, 98, 105, 109, 110, 115, 116, 120, 122, 124, 129, 132, 136, 140], "functionapp": 11, "fundament": [41, 122], "further": [4, 10, 36, 46, 84, 99, 116, 122, 132, 137], "furthermor": 118, "fuse": [33, 76], "futur": [0, 4, 12, 35, 41, 46, 74, 116, 119, 126, 128, 140], "fw": [43, 44], "fwcmd_path": 100, "fwupd": 76, "fyi": 34, "g": [1, 3, 7, 25, 26, 39, 41, 53, 54, 58, 76, 81, 98, 102, 111, 118, 122, 123, 126, 130, 140], "gafr": 52, "gain": 118, "game": [4, 76, 133], "gap": 35, "garcon": 76, "gatewai": [66, 76, 131], "gateway_ip_address": 66, "gather": 49, "gb": [7, 8, 26, 61, 111], "gc": 76, "gcab": 76, "gcc": [0, 36, 41, 51, 67, 76, 118], "gcc10": 76, "gcc11": 76, "gcc7": 76, "gcc8": [76, 130], "gcc9": 76, "gce": [13, 56, 76, 78], "gconf": 76, "gcr": 76, "gdal": 76, "gdb": [33, 76], "gdk": 76, "gdm": [22, 76, 129], "geani": 76, "gear": 7, "geari": 76, "geco": [12, 81], "gedit": 76, "geeqi": 76, "gegl": 76, "gen": 80, "genealog": 76, "genealogi": 76, "gener": [1, 3, 4, 7, 8, 9, 11, 12, 13, 21, 24, 25, 26, 27, 33, 35, 36, 39, 40, 41, 46, 48, 49, 51, 53, 54, 56, 60, 65, 67, 70, 73, 76, 78, 80, 81, 84, 85, 87, 89, 92, 98, 102, 106, 109, 111, 119, 124, 131, 132, 134, 137], "gentoo": 115, "geo": 76, "geoclu": 76, "geocod": 76, "geographi": 76, "geometri": 73, "geospati": 76, "german": 76, "get": [1, 3, 4, 11, 12, 14, 19, 20, 22, 25, 26, 28, 31, 34, 35, 38, 39, 40, 41, 52, 55, 56, 58, 69, 71, 73, 75, 82, 84, 87, 95, 98, 101, 109, 115, 117, 118, 119, 122, 123, 124, 129, 130, 131, 137], "get_ext": 131, "get_image_from_url": 131, "getaddrinfo": 29, "getenv": 131, "getstart": 139, "gexiv2": 76, "gflag": 76, "gh": 76, "ghostscript": 76, "ghw": 76, "gi": [55, 76], "gib": [24, 126], "gif": 76, "gigabit": 67, "gigabyt": 77, "gimp": 76, "git": [20, 29, 30, 39, 41, 44, 46, 51, 53, 76, 88, 90, 118, 122, 131], "github": [0, 1, 3, 8, 17, 25, 30, 32, 33, 35, 36, 39, 41, 46, 47, 48, 49, 51, 53, 62, 64, 71, 76, 82, 83, 84, 85, 94, 95, 98, 102, 103, 104, 105, 106, 107, 118, 122, 129, 131, 139, 140], "githubusercont": [30, 35, 46, 139], "gitk": 30, "give": [1, 4, 12, 24, 28, 35, 41, 55, 112, 119, 126, 127], "given": [29, 35, 41, 98, 112, 137], "gj": 76, "glanc": 54, "glew": 76, "glfw": 76, "glfw3": 76, "glib": 76, "glibc": [36, 76], "glibmm": 76, "glm": 76, "glmark2": 76, "glob": [82, 131], "glob3": 131, "global": [13, 22, 30, 35, 36, 40, 46, 63, 76, 86, 87, 88, 89, 90, 91, 92, 98, 135], "global_cflag": 36, "glog": 76, "glu": 76, "glusterf": 76, "glvnd": 129, "gmbh": 41, "gmime": 76, "gmmlib": 76, "gmp": 76, "gmsh": 76, "gmt": 84, "gnome": [0, 1, 25, 33, 40, 56, 76, 78, 134], "gnomelib": 76, "gnu": [30, 36, 37, 51, 56, 76, 78], "gnupg": 76, "gnuplot": 76, "gnutl": 76, "go": [4, 7, 8, 12, 14, 15, 20, 22, 23, 28, 34, 35, 46, 56, 61, 73, 76, 98, 111, 122, 124, 125, 127, 129, 130, 131, 136, 138], "goaccess": 76, "goal": [0, 38, 95], "gobject": 76, "goe": [4, 41], "golang": [17, 131], "gold": 77, "good": [0, 4, 14, 37, 54, 56, 98, 115, 118], "googl": [10, 11, 12, 14, 18, 29, 56, 76, 78], "googletest": 76, "goto": [20, 41], "gotoblas2": 76, "gov": 37, "govern": 54, "governor": 82, "gp": 76, "gp7nhboveacwr3eifzn7xttg8b1phvo": 14, "gpart": [7, 76, 126], "gpast": 76, "gperftool": 76, "gpg": 76, "gpgcheck": 62, "gpgme": [51, 76], "gphoto": 76, "gphoto2": 76, "gpl": 46, "gpsd": 76, "gpt": [7, 61, 126], "gpu": [76, 129, 130], "gpxe": 20, "grab": 51, "gracefulli": 46, "gradio": 76, "grammar": [2, 76], "grammat": 4, "gramp": 76, "grant": [20, 35, 40, 119, 124, 125, 134, 135], "granular": [31, 39, 131], "graph": [36, 53, 76], "graphen": 76, "graphic": [3, 7, 16, 26, 46, 66, 70, 76, 111, 129, 130], "graphit": 76, "graphviz": 76, "great": [3, 4], "greater": [7, 8, 41, 111], "greatest": [76, 125], "green": 126, "greengrass": 76, "greeter": 76, "grep": [14, 20, 22, 26, 30, 43, 46, 48, 50, 67, 72, 73, 114, 115, 119, 121, 129, 132], "grid": [11, 60, 76, 136], "grilo": 76, "grisbi": 76, "ground": 1, "group": [2, 10, 13, 14, 25, 30, 34, 46, 53, 63, 76, 101, 104, 119, 122], "grow": [1, 37, 77], "growpart": 76, "grpc": 76, "grub": 128, "grub_timeout": 126, "grubx64": 126, "gsequenc": 76, "gset": 76, "gsl": 76, "gsound": 76, "gspell": 76, "gst": 76, "gstreamer": 76, "gtk": [74, 76], "gtk2": 76, "gtk3": 76, "gtk4": 76, "gtkmm3": 76, "gtkplu": 76, "gtksourceview": 76, "gtkspell3": 76, "gtkwave": 76, "guarante": [0, 12, 35, 39, 85], "guard": 76, "guess": 124, "guest": [23, 24, 25, 27, 28, 32, 55, 56, 67, 76, 78, 135], "gui": [1, 3, 14, 19, 25, 27, 53, 55, 70, 73, 76, 137], "guid": [0, 1, 2, 3, 12, 13, 14, 18, 19, 20, 23, 24, 25, 27, 28, 30, 34, 35, 36, 37, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 61, 62, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 82, 109, 116, 118, 125, 127, 129, 130, 131, 132, 135], "guidanc": 48, "guidelin": [3, 4, 40, 122], "guil": 76, "guilabel": [3, 4, 21, 27], "gunzip": [23, 56], "gutenprint": 76, "gvim": 76, "gz": [12, 13, 21, 30, 43, 47, 48, 56, 78, 115, 124, 136, 138, 140], "gzip": [12, 76], "h": [41, 52, 71, 73, 84, 85, 86, 87, 88, 89, 90, 91, 92, 98, 102, 105, 106, 107, 109, 118, 119], "h15": 60, "h370": 77, "ha": [0, 1, 3, 4, 7, 8, 11, 15, 20, 28, 29, 30, 35, 36, 37, 38, 39, 41, 46, 51, 53, 54, 56, 61, 64, 65, 67, 68, 70, 71, 74, 77, 84, 88, 94, 95, 98, 99, 105, 111, 115, 116, 122, 124, 127, 131, 132], "had": [4, 37, 121, 122], "hadoop": [76, 120], "halt": 81, "ham": 76, "hand": [26, 45, 136], "handbook": 140, "handl": [44, 83, 92, 107, 131, 139], "handler": [81, 129, 131], "handwrit": 136, "happen": [9, 29, 33, 39, 44, 68], "haproxi": 76, "hard": [21, 24, 26, 27, 28, 76], "harddisk": 26, "harden": [37, 138], "hardinfo": 76, "hardwar": [4, 8, 14, 19, 21, 23, 26, 27, 28, 32, 36, 41, 44, 46, 47, 48, 53, 76, 79, 95, 111, 115, 116, 119, 122, 130], "harfbuzz": 76, "hash": [3, 25, 26, 39, 65, 81, 98, 100, 122, 133], "hashfil": 56, "haswel": 36, "hate": 11, "have": [1, 3, 4, 8, 10, 11, 15, 19, 20, 22, 23, 24, 25, 26, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 44, 46, 47, 52, 54, 59, 60, 62, 63, 66, 67, 70, 71, 73, 74, 81, 82, 94, 95, 98, 100, 102, 109, 111, 113, 114, 115, 116, 118, 119, 121, 122, 124, 125, 129, 130, 131, 132, 134, 135, 136, 138, 139, 140], "haveg": 76, "haven": [15, 36], "hazard": 3, "hd": 111, "hdd": 76, "hdf": 113, "he": [4, 68], "head": 22, "header": [35, 41, 47, 48, 67, 76, 88, 98, 101, 104, 129, 137], "headless": 76, "health": [34, 76], "healthi": 54, "heartbeat": 41, "hello": [40, 41, 76], "helloclear": [30, 40], "helloworld": 119, "help": [0, 1, 2, 3, 4, 8, 11, 27, 30, 33, 34, 35, 36, 39, 41, 46, 51, 55, 66, 68, 75, 76, 84, 85, 86, 87, 88, 89, 90, 91, 92, 98, 101, 102, 106, 107, 109, 112, 119, 127, 131, 137, 138, 140], "helper": [39, 51, 52, 55, 76, 108], "helper_script": 131, "heof": 41, "here": [0, 2, 3, 4, 8, 11, 12, 14, 15, 26, 40, 41, 44, 45, 48, 56, 65, 67, 87, 98, 109, 116, 119, 124, 126, 140], "heredoc": 41, "hermitian": 118, "hevc": 76, "hex": [8, 81], "hexadecim": 81, "hexb90g": 20, "hexchat": 76, "hget": 133, "hgetal": 133, "hi": 76, "hidden": [73, 136], "hide": 4, "hierarchi": 38, "high": [36, 41, 54, 63, 76, 131], "higher": [40, 45, 51, 53, 67, 98], "highest": [41, 91], "highli": [8, 54, 76, 95, 111], "highlight": [3, 7, 8, 10, 11, 25, 35, 68, 71, 75, 76, 127], "higlight": 76, "hindi": 76, "hint": 95, "histor": 115, "histori": [54, 74, 76], "hit": 74, "hmset": 133, "hojp": 52, "hold": [35, 41, 123, 133], "holist": [0, 36], "home": [8, 10, 11, 12, 27, 35, 38, 40, 41, 54, 58, 59, 71, 73, 76, 81, 116, 118, 119, 122, 125, 129, 135, 136], "home_url": [51, 59], "homedir": [12, 81], "hood": 0, "hook": 48, "host": [2, 7, 8, 10, 11, 13, 16, 17, 21, 22, 24, 25, 26, 29, 33, 35, 40, 41, 42, 49, 52, 54, 62, 67, 68, 70, 71, 76, 113, 116, 117, 119, 121, 124, 130, 131, 132, 135, 136, 137, 138, 139], "host_typ": 41, "hostbasedauthent": 119, "hostbasedusesnamefrompacketonli": 119, "hostfwd": 22, "hostmgmt": [54, 76], "hostnam": [12, 20, 29, 41, 42, 54, 73, 122], "hostnamectl": 60, "hour": 101, "hous": 1, "how": [3, 4, 7, 8, 10, 11, 12, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 34, 40, 44, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 65, 66, 67, 69, 70, 71, 72, 73, 76, 95, 96, 97, 98, 112, 114, 115, 117, 119, 120, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "howdi": 76, "howev": [0, 1, 7, 8, 14, 29, 30, 33, 35, 44, 46, 47, 54, 55, 58, 62, 68, 71, 95, 110, 114, 115, 119, 123, 125, 129, 132, 135, 139, 140], "hp": [43, 76], "hpc": [35, 76, 120], "href": 113, "html": [0, 3, 76, 82, 109, 124, 125, 138], "htop": 76, "htpc": 76, "http": [0, 3, 8, 10, 11, 16, 17, 19, 20, 22, 23, 29, 30, 33, 35, 36, 37, 39, 40, 41, 44, 46, 47, 48, 51, 52, 53, 55, 59, 62, 64, 65, 67, 68, 71, 76, 81, 82, 83, 84, 85, 90, 93, 94, 95, 98, 102, 103, 104, 105, 106, 107, 108, 109, 111, 115, 116, 118, 121, 122, 124, 125, 129, 130, 131, 138, 139, 140], "http_proxi": [51, 71, 122, 131], "httpd": [38, 76], "httpproxi": 122, "httpproxycidr": 122, "https_proxi": [41, 51, 71, 122, 131], "hub": [17, 51, 52, 133], "huge": [42, 67], "hugepag": 50, "hugepages": 50, "hugepages_fre": 50, "hugepages_rsvd": 50, "hugepages_surp": 50, "hugepages_tot": 50, "hugepagesz": 50, "hugetlb": 50, "hugetlbf": 67, "hugo": 76, "human": [33, 60, 109], "hundr": 31, "hunspel": 76, "hvm": 14, "hwloc": 76, "hybrid": [76, 115, 129], "hygien": 37, "hyper": [18, 26, 32, 56, 76, 78], "hypertext": 76, "hyperv": [11, 21, 32, 56, 76, 78], "hypervisor": [21, 26, 28, 30, 32, 54, 61, 137], "hypervisorlaunchtyp": 26, "hyphen": [7, 8, 39], "i": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 49, 50, 51, 52, 53, 54, 56, 59, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "i0209": 34, "i3": [76, 77], "i350": 67, "i5": 77, "i7": [41, 77], "i9": 77, "i915": 43, "ia": [76, 118], "ib": 118, "ibu": 76, "icd": 76, "icdiff": 76, "icecream": 76, "ich9": 26, "icon": [7, 13, 15, 25, 26, 28, 60, 74, 76, 117, 126, 137], "icu4c": 76, "id": [11, 14, 22, 26, 27, 43, 51, 52, 55, 59, 60, 67, 73, 74, 76, 84, 98, 102, 104, 106, 107, 115, 117, 122], "id_lik": [51, 59], "id_rsa": [11, 113], "id_str": 74, "idea": [4, 36], "ideal": 19, "ident": [14, 76, 81, 94], "identif": [76, 129], "identifi": [0, 1, 3, 9, 30, 38, 39, 41, 46, 48, 51, 60, 64, 76, 83, 84, 102, 119, 126, 129, 131, 137, 139], "idiom": 4, "idl": [36, 76, 119, 132], "idler": 131, "idv": 40, "idx1": 136, "idx3": 136, "ieee": 76, "ifconfig": [69, 134], "ifindex": 74, "iftop": 76, "igb": 67, "igb_uio": 67, "igfx_off": [43, 129], "ignor": [1, 23, 29, 34, 36, 37, 39, 48, 52, 61, 73, 98, 109, 129, 137], "ignorerhost": 119, "igpu": 129, "igt": 76, "iio": 76, "ill": 140, "illustr": [10, 41, 65], "im": 76, "imag": [1, 8, 10, 11, 13, 18, 20, 25, 26, 27, 28, 30, 42, 66, 67, 74, 75, 76, 79, 87, 95, 115, 122, 126, 127, 131, 136], "imageformat": 76, "imagemagick": 76, "imagick": 132, "imagin": 131, "imap": 76, "imath": 76, "img": [12, 14, 22, 30, 35, 56, 65, 67, 78], "immedi": [3, 7, 8, 21, 25, 37, 38, 76, 83, 94, 98, 99, 101, 124], "immun": 1, "impact": [0, 41, 53, 64], "imper": 76, "implant": [7, 8], "implement": [1, 12, 20, 29, 36, 39, 47, 54, 63, 64, 68, 71, 76, 81, 84, 95, 98, 100, 102, 109, 113, 118, 121, 124, 132], "impli": 81, "implicitli": [87, 98], "import": [1, 3, 4, 12, 13, 18, 20, 30, 35, 36, 44, 48, 51, 53, 54, 67, 68, 76, 115, 122, 126, 129, 130, 131, 136, 137, 140], "importtaskid": 14, "impos": 68, "improv": [1, 2, 7, 8, 21, 27, 35, 36, 37, 39, 41, 51, 64, 76, 85, 112, 118], "inaccess": 38, "inact": [52, 81], "inadequ": 111, "inadvert": 99, "inbound": 68, "inbox": [2, 76], "inc": 115, "incent": 1, "includ": [1, 3, 4, 8, 11, 13, 15, 19, 20, 21, 30, 32, 33, 35, 36, 37, 39, 41, 47, 48, 49, 51, 54, 56, 58, 60, 64, 67, 69, 70, 71, 74, 75, 76, 78, 81, 82, 83, 85, 88, 90, 94, 95, 98, 100, 104, 105, 111, 112, 113, 115, 116, 117, 118, 119, 121, 122, 124, 129, 130, 132, 135, 137, 139, 140], "includeopt": 124, "inclus": [1, 46], "incom": 68, "incomp": 140, "incompat": [122, 129, 140], "incomplet": 7, "inconsequenti": 112, "inconsist": 87, "inconveni": 112, "incorpor": [1, 35, 49, 54, 112, 123, 140], "incorrect": [98, 112], "incr": 133, "increas": [4, 18, 21, 22, 26, 27, 36, 42, 45, 46, 53, 73, 82, 116, 122], "increment": [35, 37, 87, 92, 94, 133], "incur": 11, "indent": [3, 19], "indents": 19, "independ": [11, 29, 76, 140], "index": [30, 51, 52, 68, 76, 98, 124, 125, 133], "indic": [3, 4, 7, 16, 26, 29, 35, 41, 48, 54, 56, 69, 81, 85, 86, 87, 88, 89, 90, 91, 92, 98, 102, 103, 104, 106, 107, 129, 132, 137], "indirect": [98, 129], "individu": [0, 11, 31, 39, 41, 46, 47, 48, 63, 69, 87, 104, 121], "industri": [1, 20, 76], "inet": 100, "inet6": 100, "inetd": 73, "infer": [30, 131], "inferenc": 41, "infin": 63, "infinit": 119, "influenc": [30, 81], "info": [1, 33, 35, 39, 42, 51, 52, 76, 114, 118, 121, 125], "inform": [0, 1, 3, 4, 5, 8, 10, 11, 12, 14, 15, 20, 22, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 39, 40, 41, 43, 46, 47, 48, 49, 51, 52, 53, 54, 65, 67, 68, 73, 76, 79, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 95, 97, 98, 109, 111, 113, 115, 116, 118, 119, 122, 124, 129, 130, 136, 138, 140], "infra": 74, "infrastructur": [49, 76, 81, 131, 133], "ing": 119, "ingest": [41, 104], "inherit": [35, 51, 82, 122], "ini": [40, 98, 132], "inih": 76, "init": [1, 12, 20, 35, 40, 43, 46, 52, 54, 76, 80, 81, 85, 91, 93, 98, 109, 119, 122, 137], "initcal": 43, "initcall_debug": [20, 43], "initdb": 62, "initi": [1, 12, 20, 26, 35, 40, 41, 44, 46, 62, 67, 68, 73, 76, 81, 85, 91, 98, 105, 118, 129, 135, 136, 138], "initra": 43, "initrd": [7, 8, 20, 43, 44, 55, 76], "inject": 40, "inkscap": 76, "innotek": 41, "innov": 1, "inotifi": 76, "input": [35, 46, 68, 73, 76, 84, 85, 87, 100, 102, 113, 129, 131, 136], "insecur": [35, 40, 52, 98, 125], "insensit": 60, "insert": [3, 7, 8, 26, 47, 48, 53, 76, 99, 133], "insid": [11, 17, 29, 30, 48, 51, 52, 63, 76, 98, 122], "insight": 112, "insmod": 47, "inspect": [39, 52, 84, 96, 136], "inspir": [76, 133], "instal": [1, 3, 4, 9, 12, 13, 16, 21, 30, 31, 33, 34, 35, 36, 37, 38, 41, 42, 44, 51, 52, 53, 54, 55, 56, 57, 60, 61, 62, 64, 65, 66, 68, 70, 71, 72, 74, 75, 76, 78, 81, 87, 110, 114, 115, 119, 122, 123, 128, 131, 135, 136, 138, 139], "install_root": 51, "installazurecli": 11, "installpath": 130, "instanc": [4, 11, 13, 15, 18, 27, 30, 32, 39, 81, 95, 100, 108, 109, 124, 131, 133], "instant": [41, 76], "instead": [1, 4, 11, 22, 26, 31, 35, 36, 37, 38, 39, 44, 46, 54, 62, 64, 65, 73, 76, 95, 98, 119, 122, 126, 129, 137], "instruct": [2, 4, 7, 8, 9, 10, 11, 16, 18, 21, 23, 24, 25, 26, 27, 28, 30, 32, 34, 36, 42, 47, 48, 53, 59, 62, 66, 71, 73, 75, 76, 95, 96, 97, 110, 111, 115, 116, 117, 118, 121, 122, 123, 124, 126, 129, 130, 131, 132, 135, 136, 137, 138, 139], "int": [41, 100, 105, 118, 119], "int8": 131, "int_max": 104, "intact": 13, "integ": [81, 90, 101], "integr": [1, 4, 25, 26, 30, 33, 37, 38, 47, 49, 54, 58, 65, 75, 76, 122, 129, 130, 133], "intel": [1, 11, 21, 22, 25, 26, 27, 32, 35, 36, 37, 41, 43, 51, 52, 53, 59, 67, 76, 77, 81, 85, 86, 87, 88, 89, 90, 91, 92, 94, 96, 97, 98, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 115, 118, 126, 129, 131, 133, 138], "intel_idl": 53, "intel_iommu": [43, 129], "intel_pst": 53, "intellig": 76, "intend": [0, 1, 35, 62, 73, 76, 110, 115, 122, 124], "intens": 46, "intent": 116, "intention": [41, 63, 119], "interact": [11, 19, 20, 22, 24, 29, 51, 54, 55, 57, 74, 76, 98, 119], "interchang": 76, "interdepend": [47, 48], "interest": [1, 35, 54, 118], "interfac": [1, 3, 11, 15, 20, 37, 41, 42, 43, 46, 68, 76, 115, 129, 130, 131], "interface_nam": [66, 74], "intermedi": [34, 52, 92], "intermediari": [0, 49], "intermingl": 38, "intermitt": 115, "intern": [6, 20, 32, 39, 65, 84, 90, 99, 119, 122], "internation": 76, "internet": [7, 8, 11, 19, 59, 71, 76, 111, 116, 122, 125, 131, 134], "interpret": 35, "interrupt": [3, 33, 46], "interv": 41, "intltool": 76, "introduc": [3, 33, 94, 118, 128, 140], "introduct": [3, 4], "introductori": 3, "introspect": 76, "intrus": 1, "invalid": [65, 88, 98, 99, 101], "invit": [64, 133], "invoc": 73, "invok": [35, 40, 64, 94, 95, 131], "involv": [41, 44, 122, 125, 131], "io": [34, 52, 131, 133], "iobas": 22, "iommu": 129, "iot": [1, 11, 36, 76], "iotop": 76, "ip": [8, 11, 12, 13, 20, 22, 34, 35, 40, 41, 42, 55, 68, 69, 73, 76, 99, 100, 101, 119, 122, 125, 134, 135], "ip6tabl": [68, 99, 100, 122], "ip_address": 66, "ip_forward": [20, 122], "ipc": 117, "iperf": 76, "ipmctl": 76, "ipmi": 76, "ipmitool": 76, "ipp": 76, "iproute2": [55, 76], "ipset": [76, 99, 100], "ipt_path": 100, "iptabl": [0, 1, 20, 76, 99, 100, 122], "ipv4": [15, 20, 66, 68, 74, 82, 100, 122], "ipv6": [51, 68, 100], "ipvsadm": 76, "ipx": [18, 54], "ipxe_app_nam": 20, "ipxe_boot_script": 20, "ipxe_lan_ip": 20, "ipxe_port": 20, "ipxe_root_dir": 20, "ipxe_subnet": 20, "ipxe_subnet_bitmask": 20, "ipxe_subnet_mask_ip": 20, "ipxeboot": 20, "ipxecli": 20, "ipynb": 136, "irc": [75, 76], "iri": 51, "irrevoc": 88, "irssi": 76, "isa": [22, 76], "iscsi": [20, 76], "isi": 76, "isn": [76, 81], "iso": [7, 8, 9, 16, 19, 24, 27, 56, 76, 78, 125, 126], "iso9660": [76, 109, 127], "isol": [30, 46, 54, 81, 122, 129, 130], "isometr": 76, "isset": 20, "issu": [0, 2, 8, 20, 27, 29, 30, 39, 41, 46, 54, 56, 59, 64, 68, 76, 82, 83, 84, 94, 98, 115, 119, 134, 137], "isv": 11, "isync": 76, "ital": [3, 4], "item": [3, 4, 10, 13, 15, 16, 20, 25, 35, 39, 40, 81, 99, 101], "iter": 1, "its": [1, 8, 12, 19, 21, 22, 23, 25, 26, 27, 28, 30, 32, 33, 35, 36, 37, 38, 39, 40, 49, 51, 53, 54, 56, 63, 69, 70, 73, 74, 77, 78, 85, 87, 89, 95, 98, 109, 111, 112, 118, 119, 122, 124, 127, 129, 130, 131, 132, 135, 136, 138], "itself": [41, 54, 81, 85, 88, 92, 97, 99, 104], "iw": 74, "iwd": 76, "j": [20, 30, 68, 98, 100], "j3455": 77, "jabber": 76, "jack": 76, "jack2": 76, "jag": 76, "jan": 11, "jansson": 76, "jar": 113, "jargon": 4, "java": [76, 131], "java8": 131, "javascript": [76, 101], "jdb": 76, "jemalloc": 76, "joa4": 52, "job": [11, 76, 113], "jobtrack": 113, "joe": [35, 76], "join": [0, 34, 41, 74, 109, 122], "journal": [41, 42, 48, 54, 64, 76, 96, 99, 101, 140], "journalctl": [96, 122, 140], "journald": [45, 99], "jp": 113, "jpeg": 3, "jq": 76, "jr2bjb9irfsmkbys8urd603xng": 12, "json": [14, 22, 30, 52, 76, 98, 101, 116, 122], "jsoncpp": 76, "judi": 76, "jul": [62, 84], "jumbo": 69, "jump": 34, "jun": 51, "june": 4, "juro": 35, "just": [3, 15, 27, 29, 34, 35, 37, 38, 43, 54, 58, 73, 98, 125, 131], "k": [98, 135], "k8": [34, 76, 122], "k8s_coredn": 122, "kalgebra": 76, "kamera": 76, "kapidox": 76, "kart": 76, "kaslr": 37, "kata": [17, 34, 120], "kata3": 122, "kate": 76, "kb": [39, 50, 62, 104, 117], "kbackup": 76, "kbase": 115, "kbd": [3, 76], "kcachegrind": 76, "kcalc": 76, "kcharselect": 76, "kcolorchoos": 76, "kcron": 76, "kde": [1, 76], "kdebugset": 76, "kdeconnect": 76, "kdenliv": 76, "kdf": 76, "kdiagram": 76, "keditbookmark": 76, "keep": [3, 4, 41, 54, 124, 126, 129, 130, 140], "keepaliv": 76, "keepass": 76, "keepassxc": 76, "keepcach": 98, "keepimag": 19, "kei": [7, 8, 10, 11, 12, 13, 14, 21, 25, 26, 37, 41, 43, 54, 70, 73, 74, 76, 81, 82, 84, 98, 99, 101, 104, 108, 109, 116, 127, 129, 133], "kept": [41, 51, 88, 119], "kerbernet": 122, "kernel": [0, 1, 11, 12, 18, 19, 20, 21, 24, 26, 27, 30, 35, 37, 39, 41, 44, 50, 52, 53, 55, 56, 57, 60, 63, 64, 68, 76, 78, 82, 83, 95, 98, 115, 122, 126, 129, 130, 136], "kernel_vers": 41, "kerneldir": 48, "kernelv": [48, 115], "keybind": 76, "keyboard": [12, 19, 20, 26, 35, 76], "keychain": 76, "keyfil": 10, "keygen": 113, "keymap": 76, "keypad": 4, "keyscan": 119, "keystrok": 3, "keyutil": 76, "keyvault": 11, "keyword": 4, "kfind": 76, "kgeographi": 76, "kicad": 76, "kill": [73, 132], "kind": [31, 54, 69], "kit": [55, 67, 76], "kitinerari": 76, "kleopatra": 76, "kmediaplay": 76, "kmime": 76, "kmod": 76, "kmousetool": 76, "kmplot": 76, "knote": 76, "know": [4, 11, 15, 30, 35, 37, 67, 129], "knowledg": [1, 4, 58, 119], "known": [0, 10, 11, 35, 36, 37, 46, 53, 54, 68, 71, 76, 115, 130, 134], "known_host": 119, "ko": [47, 48, 129, 140], "koji": [49, 76], "kolourpaint": 76, "kompar": 76, "konqueror": 76, "konsol": 76, "kontact": 76, "konvers": 76, "kpxe": 20, "krb5": 76, "kronosnet": 76, "ksh": 76, "ksystemlog": 76, "ktarget": 46, "ku9wfj6eysdgzbhhcmuhfstxauav4poh5d0lr": 12, "kube": [34, 39, 122], "kubeadm": [34, 122, 123], "kubectl": [34, 122, 123, 131], "kubelet": [34, 122, 123], "kubelet_extra_arg": 122, "kubeproxi": 34, "kubernet": [11, 17, 39, 42, 76, 120, 131], "kubuntu": 126, "kvm": [12, 18, 25, 30, 32, 35, 43, 55, 56, 61, 67, 76, 78], "kwayland": 76, "kyotocabinet": 76, "l": [11, 20, 46, 62, 73, 76, 98, 126, 130, 135], "lab": [11, 60, 76], "label": [3, 7, 8, 11, 26, 59, 61, 109, 124, 136], "lacptransmitr": 69, "ladebug": 76, "lake": 11, "lamp": [120, 132, 138], "lan": [20, 54], "lan_interfac": 20, "land": 3, "lang": [76, 131], "languag": [1, 3, 4, 7, 12, 17, 19, 20, 35, 36, 76, 131, 132, 133, 138], "laptop": [53, 77, 129], "larg": [30, 39, 41, 46, 51, 54, 55, 67, 68, 69, 76, 87, 98, 113], "larger": [9, 36, 76, 98], "largest": 36, "last": [3, 4, 51, 52, 62, 70, 94, 100, 126, 137], "lastlog": 81, "latenc": 76, "later": [7, 11, 13, 14, 15, 26, 27, 28, 30, 35, 36, 41, 48, 73, 119, 122, 125, 132], "latest": [1, 7, 8, 11, 13, 14, 19, 20, 22, 30, 32, 34, 35, 39, 40, 41, 43, 46, 51, 52, 65, 76, 82, 85, 90, 92, 94, 98, 109, 116, 119, 122, 123, 124, 125, 126, 129, 130, 133, 135, 138, 140], "latex": 76, "latt": 76, "latter": [20, 119], "lauch": 8, "launch": [9, 13, 15, 18, 24, 26, 27, 30, 35, 51, 52, 55, 61, 74, 76, 116, 117, 126, 127, 133, 137, 139], "launcher": [76, 129], "layer": [37, 41, 63, 67, 76, 122, 124, 133, 136], "layer3": 69, "layout": [7, 37], "lcms2": 76, "ld": [95, 129, 130], "ld_library_path": 130, "ldap": 76, "ldb": 76, "ldconfig": 129, "ldtarbal": 48, "lead": 122, "leaderboard": 133, "leaner": 55, "leap": 76, "learn": [3, 10, 11, 13, 15, 28, 29, 30, 34, 35, 39, 47, 48, 51, 55, 59, 68, 76, 112, 120, 122, 130, 131, 133, 139, 140], "leas": 20, "leasefil": 20, "least": [3, 8, 20, 67, 111, 125, 126, 127], "leav": [1, 4, 7, 11, 13, 14, 92, 126], "lecun": 136, "led": 98, "ledmon": 76, "left": [0, 7, 10, 13, 14, 15, 25, 26, 81, 98, 99, 118, 124, 126], "lefthand": 10, "leftmost": 100, "legaci": [1, 12, 37, 56, 76, 78], "legacybio": 12, "legal": [0, 140], "legitim": 99, "len": 131, "lend": 54, "length": [4, 7, 8, 41, 45, 104], "lengthi": 95, "lenovo": 77, "lens": 76, "lensfun": 76, "leptonica": 76, "less": [1, 16, 76, 111, 118], "let": [11, 35, 37, 76, 93, 116, 138], "letsencrypt": 76, "letter": [3, 4, 7, 60, 81], "level": [2, 3, 4, 30, 39, 40, 41, 44, 49, 51, 54, 58, 63, 68, 74, 76, 98, 101, 102, 120, 129, 138], "level_1": 102, "level_2": 102, "level_3": 102, "leverag": [1, 29, 37, 51, 54, 132], "lexic": 76, "lf": 76, "lftp": 76, "lga": 26, "lib": [11, 20, 26, 33, 35, 39, 40, 44, 45, 47, 48, 51, 52, 59, 62, 64, 76, 95, 96, 97, 98, 110, 115, 118, 129, 137, 140], "lib32": 129, "lib64": [11, 67, 95, 129, 130], "libabigail": 76, "libadwaita": 76, "libarch": 76, "libass": 76, "libassuan": 76, "libatasmart": 76, "libatomic_op": 76, "libav": 0, "libavif": 76, "libavtp": 76, "libbench2": 118, "libblockdev": 76, "libbpf": 76, "libbsd": 76, "libbtrfsutil": 76, "libburn": 76, "libbytes": 76, "libc": 76, "libcacard": 76, "libcanberra": 76, "libcap": 76, "libcbor": 76, "libcdio": 76, "libcgroup": 76, "libclc": 76, "libcloudprovid": 76, "libconfig": 76, "libcroco": 76, "libcurl": 29, "libcxx": 76, "libdaemon": 76, "libdatri": 76, "libdazzl": 76, "libdbusmenu": 76, "libdep": 76, "libdir": 129, "libdisplai": 76, "libdmx": 76, "libdrm": 76, "libeconf": 76, "libedit": 76, "libepoxi": 76, "libera": 75, "libev": 76, "libevdev": 76, "libexec": [70, 122, 140], "libexif": 76, "libffi": [11, 76], "libfido2": 76, "libfontenc": 76, "libgcrypt": 76, "libgd": 76, "libgdata": 76, "libge": 76, "libgit2": 76, "libgl": 129, "libglib": [35, 76], "libglvnd": 76, "libglx": 129, "libgnomekbd": 76, "libgpg": 76, "libgphoto2": 76, "libgsf": 76, "libgsystem": 76, "libgtop": 76, "libgudev": 76, "libgusb": 76, "libgweath": 76, "libhandi": 76, "libic": 76, "libidn": 76, "libidn2": 76, "libinput": 76, "libiscsi": 76, "libisof": 76, "libjcat": 76, "libjpeg": 76, "libkcapi": 76, "libksba": 76, "libliftoff": 76, "liblzma": 76, "libmaxminddb": 76, "libmbim": 76, "libmediaart": 76, "libmicrohttpd": 76, "libmnl": 76, "libmspack": 76, "libmtp": 76, "libmypaint": 76, "libndp": 76, "libnetfilter_conntrack": 76, "libnetfilter_cthelp": 76, "libnetfilter_cttimeout": 76, "libnetfilter_queu": 76, "libnfnetlink": 76, "libnftnl": 76, "libnic": 76, "libnl": 76, "libnma": 76, "libnotifi": 76, "libnsl": 76, "libnuma": 76, "liboauth": 76, "libogg": 76, "libopa": 30, "libosinfo": 76, "libpcap": 76, "libpciaccess": 76, "libpea": 76, "libpinyin": 76, "libpipelin": 76, "libpng": 76, "libport": 76, "libproxi": 76, "libpsl": 76, "libpthread": 76, "libpwqual": 76, "libqb": 76, "libqmi": 76, "libqrtr": 76, "librari": [13, 29, 30, 33, 37, 41, 54, 55, 64, 67, 76, 81, 95, 98, 105, 110, 113, 118, 129, 130, 132, 133, 136], "libratbag": 76, "libraw": 76, "librecad": 76, "libreoffic": [20, 76], "librepo": 76, "librsvg": 76, "librte_pmd_e1000": 67, "librttopo": 76, "libsampler": 76, "libsass": 76, "libsctp": 76, "libseccomp": 76, "libsecret": 76, "libsigcplusplu": 76, "libskk": 76, "libslirp": 76, "libsmbio": 76, "libsndfil": 76, "libsodium": 76, "libsolv": 76, "libsoup": 76, "libspatialit": 76, "libspectr": 76, "libspiro": 76, "libsrtp": 76, "libssh": 76, "libssh2": 76, "libstatgrab": 76, "libstdc": 36, "libstdcpp": [55, 76], "libstoragemgmt": 76, "libtasn1": 76, "libthai": 76, "libtheora": 76, "libtirpc": 76, "libtraceev": 76, "libtracef": 76, "libu2f": 139, "libunibreak": 76, "libunwind": 76, "libur": 76, "libus": 76, "libusb": 76, "libuuid": 30, "libuuid_librari": 30, "libuv": 76, "libva": 76, "libvdpau": 76, "libvirt": [25, 76], "libvirtd": 25, "libvorbi": 76, "libvpx": 76, "libwacom": 76, "libwebp": 76, "libwnck3": 76, "libx11": 76, "libx11client": [35, 76], "libxau": 76, "libxaw": 76, "libxcb": 76, "libxcomposit": 76, "libxcursor": 76, "libxcvt": 76, "libxdamag": 76, "libxdmcp": 76, "libxext": 76, "libxfce4ui": 76, "libxfce4util": 76, "libxfix": 76, "libxfont": 76, "libxfont2": 76, "libxft": 76, "libxi": 76, "libxinerama": 76, "libxkbcommon": 76, "libxkbfil": 76, "libxklavi": 76, "libxml2": 76, "libxmu": 76, "libxpm": 76, "libxpres": 76, "libxr": 76, "libxrandr": 76, "libxrend": 76, "libxscrnsav": 76, "libxslt": 76, "libxt": 76, "libxtst": 76, "libxv": 76, "libxvmc": 76, "libxxf86dga": 76, "libxxf86vm": 76, "libyami": 76, "libyaml": 81, "libzf": 140, "libzip": 76, "libzmq": 76, "licens": [0, 1, 6, 30, 44, 46, 51, 62, 81, 108, 109, 115], "life": [42, 75], "lifecycl": 54, "light": [41, 76], "lightdm": [1, 76], "lightweight": [37, 39, 55, 74, 76, 121, 122], "like": [3, 4, 8, 11, 14, 26, 29, 35, 46, 47, 48, 50, 53, 54, 68, 73, 74, 76, 83, 88, 98, 110, 112, 118, 119, 122, 125, 129, 132, 133], "limit": [1, 3, 4, 7, 15, 29, 33, 41, 42, 44, 53, 76, 104, 109, 122], "line": [1, 7, 11, 19, 20, 27, 30, 33, 35, 37, 39, 41, 43, 46, 47, 48, 51, 53, 57, 62, 66, 67, 70, 71, 73, 76, 81, 82, 95, 98, 104, 107, 118, 121, 124, 126, 129, 131, 137], "linear": 76, "link": [1, 13, 20, 30, 32, 35, 36, 39, 40, 66, 69, 71, 109, 125, 129, 130, 137], "linkabl": 3, "linker": [36, 76, 95, 129, 130], "linux": [2, 3, 4, 5, 6, 18, 19, 29, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 43, 44, 45, 47, 48, 50, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 120, 121, 122, 123, 124, 129, 130, 131, 132, 134, 135, 136, 137, 138, 140], "list": [0, 4, 8, 10, 11, 13, 14, 16, 20, 24, 26, 27, 28, 30, 32, 35, 36, 39, 40, 41, 46, 47, 48, 51, 52, 53, 56, 58, 59, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 77, 78, 81, 82, 85, 87, 88, 91, 95, 99, 100, 109, 110, 113, 115, 116, 117, 119, 124, 125, 127, 131, 132, 133, 135, 136, 139], "list_of_hardwar": 115, "listaccesskei": 14, "listen": [1, 20, 41, 68, 70, 73, 76, 95, 104, 125], "listenstream": [70, 73, 95], "lite": 76, "liter": 131, "littl": [4, 27, 28], "live": [1, 9, 18, 23, 25, 27, 28, 35, 41, 52, 54, 56, 74, 75, 78, 87, 111, 113, 118, 124, 125, 126, 127, 135, 138], "lksctp": 76, "ll": [4, 30, 35, 41, 119, 125, 127, 131, 133], "lldb": 76, "lldp": 76, "lldpd": 76, "llen": 133, "llvm": [36, 76], "lm": [16, 76], "lmdb": 76, "ln": [20, 35, 40, 125, 129, 130], "lo": [68, 72], "load": [11, 26, 29, 35, 37, 43, 51, 54, 55, 67, 73, 76, 98, 112, 115, 127, 129, 130, 132, 136, 137], "loader": [43, 44, 76, 110, 111, 126], "loaderentri": 43, "loaderx64": 43, "local": [3, 8, 15, 22, 24, 25, 27, 30, 33, 34, 38, 40, 46, 52, 68, 69, 72, 73, 76, 85, 88, 90, 95, 98, 102, 104, 105, 106, 109, 113, 117, 122, 125, 129, 130, 131, 140], "local_bundle_dir": 35, "local_file_path": 131, "local_repo_dir": 35, "local_rpm_dir": [35, 85, 86], "localhost": [20, 22, 35, 40, 41, 68, 71, 113, 122, 124, 125, 138], "locat": [3, 11, 13, 14, 20, 22, 23, 24, 26, 28, 30, 35, 38, 40, 41, 46, 60, 61, 64, 67, 73, 76, 84, 85, 88, 95, 98, 100, 116, 121, 122, 124, 125, 127, 130, 132, 135], "lock": [11, 46, 53, 76, 81, 98, 109, 131], "locker": 76, "lockstep": 1, "log": [2, 7, 8, 10, 14, 15, 16, 19, 21, 22, 23, 24, 26, 28, 30, 35, 36, 41, 45, 46, 52, 53, 57, 58, 61, 64, 69, 71, 73, 76, 81, 93, 99, 100, 101, 113, 118, 119, 124, 125, 126, 129, 130, 132, 133, 134, 135, 137, 138], "log_buf_len": 45, "logic": [69, 101, 122, 126], "login": [7, 8, 11, 13, 15, 19, 20, 22, 26, 37, 63, 76, 95, 99, 101, 109, 124, 129, 131], "logitech": 76, "logo": [1, 21, 22, 25, 26, 27, 32, 36, 37, 53, 111, 115, 118, 129, 131, 138], "logon": [99, 101], "logout": 11, "logrot": 76, "long": [17, 26, 39, 41, 60, 76, 98, 129, 140], "longer": [35, 36, 41, 42, 53, 84, 98, 100, 105, 114, 126], "look": [3, 11, 22, 28, 29, 34, 35, 40, 41, 44, 46, 47, 48, 50, 53, 59, 64, 67, 73, 85, 87, 88, 98, 99, 100, 115, 117, 119, 122, 125, 129, 130, 132], "lookup": [29, 119, 133], "loop": [3, 8, 41, 127], "loop0": [8, 59, 127], "loopback": [68, 116], "loophol": 38, "los_angel": [7, 72], "lose": [76, 118], "losless": 76, "loss": [3, 128], "lossless": 76, "lost": [10, 95, 113, 122], "lot": [115, 125], "love": [0, 11], "low": [3, 41, 44, 53, 76], "lower": [3, 25, 63, 134], "lowercas": [3, 4], "lowest": [41, 69], "lpop": 133, "lr": 76, "lrang": 133, "lrwxrwxrwx": 11, "lrzit5ar66ibtfia8qmiisrfbum": 10, "lsb_releas": 140, "lsblk": [8, 9, 59, 127], "lshw": 129, "lsmod": [26, 48, 115, 129, 140], "lsof": [68, 76], "lspci": [67, 115], "lsusb": 139, "lt": [26, 32, 41, 47, 48, 55, 76, 115, 129, 137, 140], "ltelemetri": 41, "lto": 36, "ltp": [55, 76], "lts2017": 76, "lts2018": [26, 76], "lts2019": 76, "lts2020": 76, "lts2021": 76, "ltscurrent": 76, "ltsprev": 76, "lttng": 76, "lua": 76, "luajit": 76, "luk": [1, 7, 8, 37, 43], "lutri": 76, "lv": 76, "lvm": 7, "lvm2": 76, "lxt": 76, "lxt2": 76, "lynx": [1, 76], "lyx": 76, "lz4": 76, "lzma": 76, "lzo": 76, "m": [22, 46, 48, 51, 67, 68, 98, 100, 115, 131, 132, 140], "m2f8djgj71zvi9msnmkthmsph3qhbm8pgxdndabe2yffgi479jxveqwkvq6oxiuggnq5yxfif0tcn": 20, "m4": 30, "mac": [18, 67, 68], "macaddress": 11, "machin": [10, 13, 19, 21, 24, 27, 28, 32, 35, 36, 39, 46, 49, 51, 53, 55, 56, 60, 76, 78, 98, 106, 107, 113, 116, 120, 122, 134, 135], "machine_id": 41, "maco": [8, 23, 73, 76, 135], "macro": [36, 76], "macvlan": 52, "made": [0, 4, 7, 8, 25, 29, 34, 36, 39, 41, 45, 46, 51, 64, 101, 110, 114, 115, 116, 124], "madvis": 50, "magic": 76, "mahjongg": 76, "mai": [0, 1, 3, 4, 7, 8, 9, 11, 13, 14, 21, 22, 25, 26, 30, 36, 38, 39, 41, 42, 46, 47, 48, 53, 54, 55, 60, 64, 65, 66, 68, 69, 74, 81, 82, 94, 95, 97, 98, 99, 100, 101, 104, 108, 110, 111, 115, 116, 117, 119, 120, 122, 125, 127, 128, 129, 131, 132, 140], "mail": 76, "mailbox": 76, "maildir": 76, "mailto": [51, 59], "main": [3, 4, 7, 10, 15, 25, 26, 30, 34, 39, 41, 46, 110, 112, 118, 119, 124, 126, 132, 136], "mainli": 1, "mainlin": [76, 101], "mainpid": 132, "maintain": [0, 1, 2, 11, 25, 30, 36, 37, 38, 46, 47, 48, 49, 52, 54, 60, 76, 95, 109, 114, 129, 130, 132, 133, 135, 140], "mainten": [0, 1, 30, 75, 84], "maj": [8, 61], "major": [37, 58, 76, 137], "make": [2, 3, 7, 12, 14, 16, 20, 26, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 46, 47, 48, 53, 54, 56, 60, 61, 64, 67, 68, 70, 73, 74, 76, 78, 81, 84, 95, 101, 114, 115, 116, 118, 119, 122, 124, 125, 126, 127, 129, 130, 132, 133, 136, 137, 140], "make_clon": 30, "makef": 8, "makefil": [30, 46, 67], "maker": [55, 76], "malfunct": 122, "malici": 99, "malloc": 41, "malwar": 76, "man": [29, 30, 35, 36, 38, 39, 47, 48, 53, 63, 66, 68, 73, 76, 79, 95, 130], "man8": 30, "manag": [1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140], "manage_network_ns_lifecycl": 122, "managedapp": 11, "managedbi": 11, "mandatori": 98, "mangl": 76, "mani": [0, 1, 31, 35, 36, 37, 39, 44, 46, 47, 48, 54, 56, 76, 78, 81, 95, 98, 101, 116, 119, 129, 131, 133], "manifest": [35, 51, 65, 85, 87, 98, 125], "manipul": [66, 68, 76, 129], "manpag": [69, 73], "manual": [0, 1, 2, 7, 8, 15, 21, 26, 28, 29, 30, 34, 35, 36, 39, 41, 42, 44, 46, 48, 53, 54, 56, 65, 66, 69, 71, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 100, 102, 103, 104, 105, 106, 107, 110, 111, 115, 121, 126, 129, 130, 132, 137, 139], "manufactur": [44, 53, 115, 129, 130, 139], "map": [8, 14, 55, 76, 133, 135], "mapper": 116, "mapr": 113, "mapreduce_shuffl": 113, "march": 36, "margin": 98, "mari": 133, "mariadb": [1, 17, 76, 138], "mark": [3, 7, 34, 35, 39, 81, 104, 115, 123], "marketplac": [10, 11, 12, 14], "markup": 76, "mask": [20, 29, 53, 68, 74, 81, 96, 100, 121, 122], "masquerad": 20, "master": [4, 15, 30, 35, 39, 41, 46, 62, 113, 123, 131, 132, 139], "master_node_ip": 131, "match": [7, 8, 19, 20, 39, 41, 48, 51, 56, 65, 66, 68, 69, 74, 82, 88, 98, 99, 100, 101, 117, 119], "materi": [1, 36], "mathemat": [76, 136], "matrix": 115, "matter": [0, 3, 4, 39], "max": [45, 63, 77, 87, 98, 102, 118], "max_cstat": 53, "maxdepth": 3, "maxim": [28, 36], "maximum": [7, 8, 27, 36, 41, 53, 63, 98, 104, 105], "maxtim": 119, "mayb": [14, 119], "mb": [21, 26, 51, 61, 62, 117], "mbedtl": 76, "mbit": 74, "md4c": 76, "mdn": 60, "me": [0, 2, 4, 138], "mean": [1, 3, 4, 38, 39, 44, 46, 50, 53, 65, 68, 81, 98, 119, 122, 124, 131], "meaning": 60, "meant": 36, "measur": [37, 43, 54, 76, 138], "mechan": [4, 41, 44, 47, 63, 121, 129], "med": 41, "media": [0, 1, 9, 19, 25, 26, 35, 39, 76, 126, 127], "mediasdk": 76, "mediat": 76, "meet": [1, 7, 8], "mega": 98, "meld": 76, "mem": [67, 119], "memcach": 76, "meminfo": 50, "memor": 76, "memori": [12, 15, 21, 22, 24, 25, 26, 27, 28, 37, 41, 52, 67, 76, 98, 105, 111, 119, 122, 129, 132, 133], "menu": [3, 10, 13, 15, 19, 20, 21, 23, 26, 27, 42, 43, 46, 56, 59, 66, 74, 76, 124, 126, 127, 134], "menuconfig": 46, "menuentri": 126, "menuselect": [3, 4], "mer": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "mercuri": 76, "merg": [0, 2, 36, 76], "merriam": 2, "mesa": [76, 129], "mesh": 76, "messag": [3, 7, 8, 10, 11, 23, 25, 26, 42, 46, 48, 51, 52, 56, 61, 64, 76, 84, 99, 101, 106, 107, 108, 109, 116, 119, 122, 123, 124, 129, 134, 137], "met": 64, "meta": [35, 76], "metac": 76, "metadata": [35, 39, 62, 85, 87, 94, 98, 109, 113], "metal": [8, 21, 28, 35, 62, 67, 71, 75, 116, 121, 122, 124, 136], "metalink": 51, "metaphor": 4, "method": [7, 8, 12, 14, 15, 30, 35, 39, 41, 51, 53, 56, 62, 66, 74, 78, 95, 110, 121, 133, 135], "metric": [54, 76, 112], "mget": 133, "mgr": 25, "mgunweqhueptggvopjt65i": 12, "mh": 76, "mhz": 74, "mib": [24, 126], "micro": [1, 10, 12, 54, 109], "microarchitectur": 36, "microphon": 23, "microservic": 51, "microsoft": [2, 3, 9, 10, 12, 13, 14, 18, 26, 32, 43, 56, 76, 78, 119, 127], "mid": 3, "middl": [15, 26], "middlewar": 76, "might": [3, 4, 19, 58, 129, 140], "migrat": [42, 54, 76, 120, 121], "miimonitorsec": 69, "mime": 76, "min": [8, 14, 61, 87], "mind": 36, "minecraft": 76, "miner": 76, "minetest": 76, "minetestserv": 76, "mingw": 76, "mini": 11, "minicom": 76, "minim": [1, 36, 38, 41, 51, 54, 64, 74, 76, 93, 98, 111, 116, 122], "minimalist": 76, "minimum": [3, 9, 18, 19, 20, 24, 27, 28, 35, 36, 54, 55, 79, 87, 126], "minnowboard": 77, "minor": [2, 27, 29, 37, 123, 140], "mint": [22, 73, 126], "minut": [9, 15, 41, 51, 52, 104], "minvers": 125, "mirror": [7, 30, 35, 76, 120], "mirror_contenturl": 98, "mirror_versionurl": 98, "miss": [5, 30, 33, 45, 52, 95, 98, 100, 131], "mistak": 4, "mit": 30, "mitig": 1, "mitr": 37, "mix": [30, 38, 40, 46, 49, 62, 85, 87, 88, 90], "mix_vers": 35, "mixbundl": [35, 88], "mixer": [1, 30, 39, 42, 46, 47, 48, 49, 54, 55, 76, 94, 98], "mixin": 42, "mixvers": 35, "mkconf": 140, "mkdir": [20, 35, 38, 40, 41, 44, 45, 47, 48, 50, 51, 62, 63, 66, 67, 69, 71, 72, 73, 74, 95, 113, 114, 115, 119, 121, 122, 124, 125, 126, 127, 129, 130, 131, 132, 135, 136, 139, 140], "mkhermitian": 118, "mkosi": 76, "mktarbal": 48, "ml": 55, "mlt": 76, "mm": [50, 67, 76], "mnist": 136, "mnist_exampl": 136, "mnt": [59, 67, 126, 127], "mo": 131, "mo_path": 131, "mobaxterm": 15, "mobil": [54, 76], "mock": [30, 46], "mod": [48, 76, 129, 137], "mod_wsgi": 76, "modconfig": 137, "mode": [11, 15, 19, 23, 26, 52, 67, 69, 74, 76, 111, 119], "model": [9, 24, 37, 39, 55, 75, 76, 95, 113, 126, 129, 130, 131, 136, 139], "model_dir": 131, "model_nam": 131, "model_path": 131, "model_precis": 131, "modemmanag": 76, "moder": [112, 120], "modern": [0, 1, 46, 53, 76, 111], "modeset": 129, "modest": 111, "modif": [11, 29, 38, 41, 46, 76, 110, 132], "modifi": [4, 11, 17, 22, 29, 30, 38, 39, 41, 42, 43, 47, 48, 55, 61, 63, 65, 66, 67, 69, 73, 76, 82, 84, 85, 88, 95, 98, 113, 122, 124, 126, 133], "modinfo": 115, "modprob": [47, 48, 67, 115, 129, 130], "modul": [0, 32, 35, 37, 42, 43, 46, 51, 55, 67, 76, 81, 95, 98, 115, 124, 129, 132], "modular": [1, 76], "module_nam": [47, 48], "modulenotfounderror": 51, "modulepath": 129, "mold": 76, "mom": [4, 35, 65, 87, 98, 125], "moment": [15, 92], "monitor": [11, 37, 39, 41, 49, 54, 76, 129], "mono": 76, "monospac": [3, 76], "month": 3, "monthli": 14, "more": [0, 1, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 20, 21, 23, 26, 27, 28, 29, 30, 32, 34, 35, 36, 37, 39, 41, 44, 46, 47, 48, 51, 52, 53, 54, 55, 56, 59, 61, 62, 66, 67, 68, 73, 74, 76, 81, 83, 84, 85, 86, 87, 89, 90, 91, 92, 95, 98, 101, 104, 109, 111, 112, 115, 116, 119, 122, 124, 125, 127, 128, 129, 130, 131, 133, 135, 136, 137, 139, 140], "moreutil": 76, "mosquitto": 76, "most": [1, 3, 4, 29, 33, 38, 41, 46, 51, 60, 73, 76, 83, 85, 94, 95, 98, 111, 112, 115, 131], "mostli": [0, 30, 39, 46], "motd": [48, 123, 129, 137], "motherboard": [26, 44], "mount": [4, 7, 8, 9, 19, 30, 33, 67, 76, 98, 126, 127, 140], "mount_point": 8, "mountpoint": [8, 9, 12, 19, 20, 35, 61], "mous": [7, 26, 76], "move": [1, 10, 11, 27, 39, 54, 67, 124, 126, 136, 139], "movi": 76, "mozilla": 76, "mozjs102": 76, "mozjs115": 76, "mozjs91": 76, "mp": 118, "mp3": 76, "mpeg": 76, "mpfr": 76, "mpg123": 76, "mpi_comm_rank": 119, "mpi_comm_s": 119, "mpi_comm_world": 119, "mpi_fin": 119, "mpi_get_processor_nam": 119, "mpi_init": 119, "mpi_max_processor_nam": 119, "mpicc": 119, "mpv": 76, "mqtt": 76, "mta": 76, "mtd": 76, "mtdev": 76, "mtr": 76, "mtubyt": 69, "mtune": 36, "much": [1, 34, 36, 37, 71, 95, 100, 129, 130], "multi": [34, 76, 120, 122, 129, 132], "multicast": 76, "multilay": 76, "multilin": 81, "multimedia": [0, 76], "multipath": 76, "multipl": [0, 2, 3, 8, 16, 37, 38, 39, 42, 46, 48, 51, 75, 76, 82, 99, 100, 111, 113, 116, 117, 118, 119, 121, 122, 127, 129, 133, 137], "multiplex": 76, "multipurpos": 76, "multithread": 76, "mumbl": 76, "mundan": 29, "mung": 35, "musescor": 76, "music": 76, "musl": 76, "must": [2, 3, 7, 8, 10, 11, 12, 13, 20, 28, 29, 30, 34, 35, 40, 41, 44, 46, 47, 48, 50, 51, 52, 53, 60, 61, 66, 67, 68, 69, 73, 84, 90, 94, 95, 98, 100, 101, 118, 122, 123, 124, 126, 129, 130, 132, 134, 137, 138, 140], "mutt": 76, "mutter": 76, "mv": [124, 138, 139], "mw": 76, "my": [4, 14, 40, 46, 52, 118, 119, 132], "my_bundl": 98, "my_repo": 98, "mycroft": 76, "mydomain": 12, "myhost": 122, "mynet0": 22, "myshareddr": 135, "mysharedr": 135, "mysql": [11, 124], "mysql_secure_instal": 124, "mzi7sxme528ecmpm2ftohddkvrurp": 12, "n": [11, 34, 41, 46, 52, 53, 62, 63, 67, 73, 74, 82, 98, 118, 119, 122, 124, 126, 129, 131, 140], "n4": 119, "na": [1, 76, 118], "nacl": 76, "name": [3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 35, 36, 39, 40, 41, 46, 47, 48, 51, 52, 56, 58, 59, 60, 61, 62, 64, 66, 68, 69, 72, 73, 74, 76, 78, 81, 84, 88, 91, 98, 108, 113, 115, 116, 119, 122, 124, 125, 126, 127, 129, 131, 133, 135, 136, 137, 138, 140], "name_len": 119, "namenod": 113, "namespac": [13, 41, 113, 116, 131], "nano": 124, "narrow": 127, "nasm": 76, "nat": 76, "nation": 37, "nativ": [0, 4, 7, 8, 11, 19, 20, 32, 34, 35, 36, 39, 43, 46, 47, 48, 51, 52, 55, 60, 67, 76, 122, 123, 129, 133, 137, 140], "natur": 54, "nautilu": 76, "navig": [4, 10, 13, 14, 15, 26, 27, 28, 30, 35, 46, 51, 124, 129, 130, 131, 138], "nb": 118, "nc": 68, "ncat": 76, "ncdu": 76, "ncurs": 76, "ndctl": 76, "ndhcp": 74, "necessari": [3, 4, 20, 33, 35, 41, 46, 48, 49, 54, 76, 87, 90, 92, 98, 115, 118, 122, 129, 131, 137, 138], "need": [1, 3, 4, 8, 11, 12, 13, 14, 15, 19, 21, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 61, 63, 64, 65, 67, 70, 71, 73, 74, 75, 81, 85, 92, 94, 95, 98, 99, 100, 105, 109, 110, 113, 114, 115, 116, 118, 119, 122, 124, 125, 127, 129, 130, 132, 133, 136, 137, 138, 139, 140], "neg": 87, "negoti": [74, 76], "nehalem": 36, "neither": [102, 140], "neomutt": 76, "neovim": 76, "nepomuk": 76, "nest": [43, 81], "net": [11, 20, 22, 76, 82, 115, 122, 124], "netcat": 71, "netcdf": 76, "netdata": 76, "netdev": [22, 69], "nete": 131, "netfilt": 68, "netflow": 76, "nethog": 76, "netlink": 76, "netplan": 76, "netstat": [68, 73], "nettl": 76, "network": [0, 1, 11, 13, 15, 18, 19, 21, 24, 25, 29, 33, 34, 35, 39, 41, 52, 54, 55, 66, 67, 68, 73, 76, 81, 85, 98, 104, 109, 111, 112, 115, 116, 117, 119, 124, 132, 133, 136], "network1": 74, "network1password": 74, "network2": 74, "network3": 74, "network4": 74, "network5": 74, "networkctl": [35, 66], "networkd": [1, 12, 20, 69, 74, 76, 95], "networkmanag": [1, 19, 20, 64, 74, 76, 95], "networkx": 131, "neural": [55, 76, 136], "never": [4, 50, 94, 95, 98, 100, 113], "new": [0, 4, 7, 10, 11, 12, 13, 15, 17, 19, 22, 24, 27, 34, 35, 37, 39, 40, 41, 42, 46, 47, 48, 49, 51, 53, 54, 60, 61, 62, 66, 67, 68, 69, 70, 72, 73, 76, 81, 82, 85, 87, 88, 89, 92, 94, 95, 98, 100, 109, 112, 113, 115, 116, 117, 118, 119, 122, 124, 126, 127, 129, 131, 132, 133, 136, 137, 138, 140], "new_id": 67, "newer": [27, 34, 35, 36, 53, 67, 115, 118, 125], "newest": [36, 37], "newli": [24, 27, 29, 35, 52, 58, 117, 124, 126, 127], "newt": 76, "next": [3, 7, 8, 12, 14, 15, 22, 23, 25, 26, 27, 28, 35, 40, 41, 51, 59, 73, 76, 92, 98, 119, 122, 125, 127, 136, 138], "nf": [76, 122], "nfile": 63, "nftabl": [68, 76], "ng": 76, "nghttp2": 76, "nginx": [1, 17, 41, 55, 76, 101, 116, 125, 132], "nic": 69, "nil": [19, 133], "nim": 76, "nist": 37, "nl": 51, "nload": 76, "nlopt": 76, "nm": 66, "nmap": 76, "nmcli": [66, 74], "nmconnect": 66, "nmtui": [8, 66, 74], "nn": 67, "nname": 74, "no_proxi": [71, 122], "no_timer_check": [20, 43], "no_turbo": 53, "nobodi": 73, "nocreat": 100, "nodaemon": [95, 132], "node": [17, 24, 34, 67, 73, 76, 81, 113, 131], "node0": 67, "node1": 67, "nodebug": 115, "nodej": [76, 131], "nodelist": 119, "nodemanag": 113, "nodenam": 119, "nodev": 67, "nograph": 22, "non": [1, 4, 8, 19, 22, 26, 35, 36, 38, 44, 76, 85, 86, 87, 88, 89, 90, 91, 92, 95, 98, 102, 103, 105, 106, 107, 108, 109, 119, 129, 140], "none": [14, 73, 124, 127, 131], "nonstandard": 76, "noout": 84, "nopasswd": [12, 119], "noption": 129, "nor": [95, 99, 101, 140], "noreplac": [20, 43], "normal": [3, 15, 29, 47, 48, 63, 95, 98, 124, 127, 129], "nosigcheck": 98, "nosql": 133, "notab": 19, "notabl": 119, "notat": [76, 101], "note": [1, 11, 26, 34, 35, 41, 51, 54, 68, 73, 76, 82, 88, 98, 100, 103, 115, 118, 122, 124, 131, 132, 138], "notest": 43, "notfound": 30, "noth": [35, 98, 115], "notic": 8, "notif": [48, 76, 117, 129, 137], "notifi": [98, 132], "notmuch": 76, "nouveau": 130, "nova": 109, "novel": [0, 33], "novic": 1, "now": [8, 10, 11, 13, 14, 15, 20, 24, 26, 27, 34, 35, 40, 51, 53, 58, 68, 70, 73, 74, 76, 118, 119, 122, 123, 124, 125, 130, 133, 135, 138, 139, 140], "noyc": 133, "npb": 76, "npsm5_kube": 122, "nr_hugepag": [50, 67], "nspr": 76, "nss": 76, "ntask": 119, "ntf": [76, 127], "ntlm": 51, "ntopng": 76, "ntp": [72, 76, 119], "nuanc": 131, "nuc": 138, "nuc5i7ryb": 77, "nuc5i7ryh": 77, "nuc6cai": 77, "nuc6cayb": 77, "nuc6i5syh": [77, 138], "nuc6i6syh": 77, "nuc7i5bnh": 77, "nuc7i5dnh": 77, "nuc7i7bnh": 77, "nuc7i7dnk": 77, "nuc8i7hvk": 77, "null": [11, 39, 41, 51, 52, 63, 64, 73, 74, 115, 119, 122, 129], "num": 30, "num_result": 98, "numa": 67, "numactl": 76, "number": [1, 4, 7, 8, 9, 11, 12, 13, 15, 19, 21, 22, 24, 26, 27, 28, 30, 35, 37, 39, 41, 46, 50, 51, 53, 54, 56, 60, 61, 63, 67, 68, 73, 78, 87, 92, 94, 95, 98, 100, 101, 102, 105, 113, 119, 122, 126, 131, 136], "numer": [55, 76, 138], "numpi": [17, 76], "nut": 76, "nvcc": 130, "nvd": 37, "nvidia": 120, "nvidia_cuda": 130, "nvreg_enablebacklighthandl": 129, "nx": 76, "o": [2, 3, 4, 5, 6, 18, 19, 29, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 50, 53, 54, 55, 57, 59, 60, 61, 62, 63, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 86, 88, 89, 90, 91, 92, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 119, 120, 121, 123, 124, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 140], "o3": [36, 118], "oath": 76, "ob": 76, "objdump": 118, "object": [4, 11, 13, 36, 67, 76, 101], "observ": [41, 140], "obtain": [11, 13, 14, 29, 33, 37, 39, 44, 46, 74, 76, 98, 115, 122, 129, 131], "obviou": 124, "obvious": 99, "ocaml": 76, "occasion": 94, "occur": [1, 3, 8, 14, 30, 33, 35, 39, 41, 48, 54, 64, 87, 94, 98, 102, 103, 105, 106, 107, 122, 128, 129, 137], "oci": [108, 122], "ocl": 76, "ocr": 76, "octal": 81, "octav": 76, "off": [1, 8, 26, 28, 30, 58, 98, 125], "offend": 99, "offer": [1, 4, 11, 27, 28, 30, 37, 40, 54, 56, 65, 78, 113, 116, 121, 122, 128, 131, 133], "offic": 76, "offici": [15, 17, 35, 51, 52, 71, 98, 116, 131, 137, 140], "offlin": 85, "offload": 54, "offset": 19, "oflag": 9, "often": [1, 14, 36, 48, 60, 76, 95, 118, 123], "oiio": 76, "ok": [21, 26, 27, 56, 74, 124, 135], "okular": 76, "old": [35, 43, 46, 76, 87, 89, 99], "older": [37, 41, 46, 87, 115, 120, 130], "oldest": 94, "omiss": 82, "omit": [65, 81, 87, 95, 98, 100, 109, 140], "onc": [2, 3, 10, 11, 13, 20, 25, 29, 30, 33, 35, 41, 51, 54, 73, 87, 94, 98, 109, 113, 115, 116, 118, 119, 122, 124, 138], "one": [3, 4, 7, 8, 13, 14, 15, 16, 20, 27, 30, 34, 35, 36, 39, 41, 46, 47, 48, 51, 53, 54, 62, 67, 68, 71, 73, 76, 82, 84, 89, 95, 98, 101, 103, 104, 105, 110, 112, 113, 118, 119, 122, 125, 126, 127, 129, 132, 135], "oneapi": 76, "ones": [41, 64, 71, 73], "oneshot": 129, "onevpl": 76, "onig": 76, "onli": [1, 3, 4, 5, 7, 8, 11, 14, 20, 26, 30, 33, 35, 36, 38, 39, 41, 48, 53, 54, 55, 59, 64, 76, 81, 84, 87, 88, 93, 94, 95, 98, 100, 101, 108, 109, 112, 115, 119, 124, 127, 129, 130, 131, 135, 137, 140], "onlin": [76, 109, 138], "onnx": 76, "ons": 122, "onscreen": 8, "onto": [26, 30, 37, 40, 46, 111, 115, 122], "onward": 14, "oob": 22, "oomkil": 76, "oop": 41, "op": 8, "opa": 30, "open": [0, 2, 7, 8, 9, 10, 11, 14, 16, 19, 20, 21, 22, 23, 25, 26, 27, 30, 31, 33, 35, 36, 37, 39, 41, 45, 46, 47, 48, 51, 55, 56, 59, 61, 63, 67, 70, 73, 76, 113, 115, 116, 117, 121, 122, 124, 126, 127, 129, 130, 132, 133, 135, 136], "openbla": 76, "opencl": 76, "openconnect": 76, "opencv": [55, 76, 131], "openexr": 76, "openfaa": [76, 120], "openfaas_url": 131, "opengl": [76, 111, 129], "openjpeg": 76, "openldap": 76, "openmpi": [35, 76, 119], "opensourc": 129, "openssh": [11, 12, 20, 35, 37, 52, 55, 70, 76], "openssl": [11, 51, 65, 76, 84, 140], "openstack": 108, "openvino": [76, 131], "openvswitch": 76, "openzf": 120, "oper": [1, 4, 7, 9, 10, 11, 14, 17, 21, 23, 25, 26, 27, 29, 31, 33, 35, 37, 38, 41, 51, 52, 53, 54, 60, 67, 69, 76, 81, 83, 84, 85, 98, 100, 101, 103, 116, 120, 122, 124, 129, 130, 132, 133, 135, 136, 137], "opi": 51, "opt": [38, 40, 41, 64, 98, 103, 105, 106, 107, 129, 130], "optflag": 36, "optic": [26, 76], "optim": [0, 1, 27, 32, 37, 39, 51, 55, 56, 69, 76, 78, 82, 87, 118, 126, 131], "optimu": 129, "option": [0, 1, 3, 4, 9, 10, 11, 12, 13, 14, 19, 20, 21, 25, 26, 27, 28, 30, 34, 35, 36, 39, 43, 46, 50, 54, 59, 65, 66, 67, 68, 70, 82, 88, 95, 110, 111, 118, 119, 122, 124, 125, 126, 127, 129, 130, 132, 134, 138], "opu": 76, "opusfil": 76, "oracl": [2, 41, 76], "orc": 76, "orchestr": [32, 34, 49, 55, 76, 116, 122], "order": [3, 4, 7, 8, 12, 23, 28, 35, 36, 38, 41, 43, 54, 59, 88, 98, 109, 112, 119, 124, 126], "ordinari": 36, "org": [0, 1, 3, 16, 19, 20, 22, 23, 29, 30, 33, 35, 37, 39, 41, 43, 44, 46, 51, 52, 59, 62, 65, 67, 76, 81, 82, 85, 90, 93, 94, 95, 98, 102, 103, 104, 105, 106, 107, 108, 109, 111, 113, 115, 117, 122, 125, 126, 138], "organ": [4, 54, 76, 81, 84, 125], "origin": [4, 22, 26, 35, 39, 56, 76, 101, 126], "orphan": 98, "os": [26, 49, 126, 127], "os_core_instal": 51, "os_release_path": 35, "ospf": 76, "ostre": 76, "ostyp": 52, "osv": [1, 54], "other": [1, 3, 4, 7, 8, 10, 11, 12, 16, 17, 23, 27, 28, 29, 30, 34, 35, 36, 38, 39, 45, 46, 47, 48, 51, 53, 54, 55, 62, 63, 76, 81, 82, 84, 85, 93, 95, 98, 99, 106, 107, 115, 120, 122, 123, 124, 126, 127, 129, 131, 133, 134, 135, 136], "otherwis": [8, 20, 27, 30, 35, 41, 46, 56, 71, 98, 100, 105, 107, 108, 109, 122], "otp": [76, 139], "ou": 84, "our": [0, 1, 2, 3, 4, 7, 8, 10, 11, 12, 24, 27, 32, 35, 39, 40, 51, 58, 74, 112, 113, 116, 118, 120, 122, 123, 124, 126, 127, 133, 136, 138], "out": [0, 1, 3, 11, 22, 30, 35, 37, 39, 41, 46, 53, 54, 58, 65, 68, 71, 73, 74, 76, 81, 84, 85, 88, 98, 99, 103, 111, 115, 122, 125, 127, 129, 137, 138, 140], "outag": [54, 64], "outbound": [68, 122], "outform": 84, "outlin": [30, 76], "outout": 140, "output": [3, 9, 11, 12, 14, 16, 26, 29, 30, 34, 35, 39, 40, 41, 43, 44, 46, 47, 48, 50, 51, 52, 53, 56, 59, 60, 61, 62, 64, 65, 66, 67, 68, 70, 73, 76, 83, 84, 85, 87, 88, 96, 98, 108, 113, 115, 116, 118, 122, 125, 126, 127, 129, 131, 132, 133, 136, 137], "outsid": [1, 3, 40, 41, 51, 59, 69, 84, 95, 104, 129, 130, 138], "over": [1, 3, 7, 18, 29, 33, 35, 38, 54, 70, 76, 85, 88, 95, 98, 104, 115, 119, 122, 125, 129, 131, 133], "overal": [35, 53], "overh": 53, "overhead": 0, "overid": 107, "overlai": 52, "overlap": [39, 51, 115], "overlay2": 116, "overlayf": 116, "overrid": [36, 41, 47, 48, 70, 71, 76, 82, 83, 87, 95, 106, 124, 129, 130, 132], "overridden": [36, 53, 101], "overview": [3, 11, 13, 25], "overwrit": [98, 113, 129, 132], "overwritten": [39, 41, 71, 95, 98, 122, 132], "ovmf": [22, 24, 25, 30, 35], "ovmf_cod": 22, "ovmf_var": 22, "own": [1, 2, 8, 12, 14, 20, 30, 35, 36, 37, 38, 39, 40, 41, 46, 49, 53, 59, 71, 73, 74, 85, 95, 101, 115, 124, 127, 132, 135], "owner": [1, 41, 81], "ownership": [30, 119], "oyaml": 34, "p": [0, 20, 22, 30, 35, 36, 40, 41, 44, 45, 47, 50, 51, 61, 62, 63, 66, 67, 68, 69, 71, 72, 73, 74, 95, 98, 102, 113, 114, 115, 116, 119, 121, 122, 124, 125, 126, 129, 130, 132, 139, 140], "p0": [36, 53], "p1": 46, "p11": [55, 76], "p2p": 74, "pac": 29, "pacdiscoveri": 29, "pack": [35, 51, 52, 85, 87, 98], "packag": [1, 3, 11, 31, 33, 35, 36, 37, 39, 42, 44, 47, 48, 49, 53, 54, 58, 67, 70, 75, 76, 87, 93, 95, 114, 116, 118, 123, 124, 129, 131, 136, 140], "package_nam": [48, 115], "package_vers": [48, 115], "packagenam": 46, "packages3d": 76, "packet": [20, 42, 68, 76, 99], "pacrunn": 29, "page": [0, 4, 7, 8, 9, 10, 11, 13, 14, 15, 17, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 36, 38, 39, 41, 42, 47, 48, 53, 54, 63, 66, 67, 73, 76, 79, 95, 97, 116, 117, 122, 124, 126, 130, 131, 132, 138, 140], "page_alloc": 43, "pager": 76, "paho": 76, "paint": 76, "pair": [10, 11, 76, 82, 104], "pam": [37, 63, 76], "pamnam": 73, "panda": 76, "pandoc": 76, "pane": 26, "panel": [4, 76, 124], "pango": 76, "pangomm": 76, "paradigm": [76, 124], "paragraph": [3, 4], "parallel": [3, 18, 76, 87, 98, 130], "paramet": [11, 28, 35, 47, 48, 50, 51, 53, 56, 57, 63, 76, 78, 81, 82, 83, 84, 104, 106, 107, 108, 121, 122, 129, 137], "parent": [0, 17, 125], "pari": 76, "pars": [29, 76, 81, 88, 89, 98, 99, 109, 131, 132], "parser": 76, "part": [0, 2, 3, 4, 5, 7, 8, 9, 12, 19, 20, 35, 36, 47, 48, 49, 60, 61, 68, 76, 95, 98, 110, 113, 115, 122, 123, 124, 127], "parti": [1, 35, 37, 42, 43], "particip": [7, 8], "particular": [39, 40, 54, 115, 125], "partit": [9, 19, 20, 22, 28, 35, 43, 54, 76, 109, 119, 126], "partitionnam": 119, "partlabel": [9, 59, 126, 127], "partner": 11, "partprob": 8, "parttyp": [59, 127], "partuuid": [43, 126], "pass": [7, 8, 20, 22, 29, 30, 41, 43, 46, 48, 64, 73, 76, 87, 88, 95, 98, 99, 108, 122, 132], "passiv": 4, "passnic0": 67, "passnic1": 67, "passphras": 7, "passwd": [41, 58, 73, 81], "password": [7, 8, 16, 19, 20, 21, 22, 26, 30, 35, 37, 41, 58, 64, 73, 74, 76, 81, 95, 99, 101, 113, 124, 131, 133, 135, 138, 139], "passwordauthent": 95, "past": [1, 10, 12, 13, 35, 37, 74], "past_vers": 35, "pasword": 119, "patch": [0, 1, 26, 32, 36, 37, 39, 46, 54, 76, 115], "patch0501": 46, "patch0502": 46, "patch1001": 46, "patch2001": 46, "patchelf": 76, "patchset": 76, "path": [3, 11, 15, 25, 35, 40, 41, 44, 47, 51, 54, 59, 67, 73, 76, 81, 82, 84, 86, 87, 88, 89, 90, 91, 92, 95, 98, 102, 104, 105, 109, 112, 115, 126, 127, 130, 131, 132, 135, 140], "pathnam": 11, "patient": 125, "patriot_memori": 9, "pattern": [4, 37, 38, 76, 80, 99, 100, 131], "paus": 52, "payload": [41, 68, 102, 105], "payload_fil": 41, "payload_format_vers": 41, "payload_vers": [41, 105], "pc": [13, 53, 55, 76], "pcb": 76, "pci": [22, 67, 115], "pciutil": 76, "pclmul": 111, "pclmulqdq": 16, "pcmanfm": 76, "pcoem": 115, "pcre": [76, 101], "pcre2": 76, "pcsc": 76, "pd1j7jecbx2lsb55x2ywzaua": 12, "pdcp": 119, "pdf": 76, "pdn": 76, "pdsh": 35, "pdt": [62, 132], "pe32": 76, "peanut": 4, "peer": [4, 84], "pem": [10, 35, 40, 65, 84, 98], "pend": [7, 14, 76], "penguin": [7, 76, 126], "pentium": 83, "peopl": 1, "per": [1, 3, 4, 7, 8, 9, 36, 37, 39, 47, 48, 51, 76, 81, 83, 84, 104, 119, 122, 131], "percentag": [9, 98], "perfectli": 140, "perform": [0, 1, 3, 4, 19, 20, 21, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 40, 41, 42, 45, 46, 52, 54, 58, 61, 64, 65, 68, 70, 73, 76, 81, 82, 83, 85, 87, 94, 98, 100, 105, 109, 111, 116, 118, 119, 122, 124, 129, 132, 136], "period": [4, 14, 76, 83, 100, 125], "peripher": 76, "perl": [11, 17, 52, 76, 101, 118, 133], "perman": [10, 11, 63, 68, 100], "permiss": [14, 20, 24, 25, 28, 35, 39, 40, 41, 81, 98, 113, 117, 119, 124, 125, 130, 135], "permit": [64, 113], "permitrootlogin": [20, 70, 95], "persist": [20, 38, 46, 54, 68, 76, 98, 111], "person": [1, 4, 8, 76], "perspect": 41, "pgo": 36, "philosophi": [36, 37, 38, 54, 76], "phone": 76, "phonon": 76, "phoronix": [36, 76], "photo": 76, "photograph": 76, "photographi": 76, "php": [76, 120, 131, 138], "php7": 131, "phpinfo": 124, "phpmyadmin": 138, "phrase": 3, "physic": [26, 36, 54, 68, 69, 95, 122, 126], "pick": [3, 41, 46, 73, 132], "picki": [30, 39, 59, 98], "pickl": 4, "pickup": [38, 129], "pictur": [76, 131], "pid": [73, 132], "pidfil": [73, 132], "pidgin": 76, "pie": 37, "piec": [33, 35, 39, 47, 48, 85, 93, 108, 131], "pii": 41, "pim": 76, "ping": [76, 133], "pipelin": [49, 54], "pipewir": 76, "pitfal": 3, "pixbuf": 76, "pixman": 76, "pkc": [55, 76], "pkcs11": 76, "pkg": [36, 46, 76], "pkgconfig": [55, 76], "pkh": 0, "pl": 118, "pl2": 118, "place": [3, 4, 11, 41, 44, 47, 48, 54, 81, 82, 95, 101, 115, 129, 130, 134, 137, 140], "plai": [27, 76], "plain": [3, 104], "plaintext": [74, 76], "plan": [3, 8, 11, 12, 27, 34, 54, 73, 138, 140], "plane": [34, 67, 76, 122], "plant": 73, "plasma": 76, "platform": [1, 4, 8, 10, 11, 12, 14, 18, 26, 32, 42, 53, 54, 55, 75, 76, 77, 83, 116, 118, 129, 130, 140], "platfrom": 76, "playback": [0, 76], "player": [18, 28, 56, 76, 78, 137], "pleas": [0, 8, 15, 26, 30, 34, 41, 71, 82, 88, 95, 98, 116, 121, 131], "plethora": 40, "plot": 136, "plotter": 76, "plu": [4, 73, 76, 119, 137], "plug": [9, 19], "plugin": [46, 52, 76, 110, 122, 139], "plzip": 76, "pm": 62, "pmdk": 76, "pmix": 35, "png": [3, 76], "po": [9, 76, 127], "po4a": 76, "pod": [34, 131], "podman": 76, "point": [3, 4, 7, 8, 11, 29, 35, 41, 46, 55, 64, 76, 95, 98, 112, 116, 125, 127, 130, 131, 132, 136], "pointer": [39, 41, 54, 129], "polici": [4, 11, 36, 39, 41, 68, 83], "polkit": 76, "poll": [53, 67], "pong": 133, "pool": [1, 20, 67, 76, 95, 140], "pop": [10, 15, 56], "pop3": 76, "popd": 40, "poppler": 76, "popt": 76, "popul": 20, "popular": [11, 17, 35, 39, 46, 51, 54, 55, 76, 129, 131, 132], "popup": 76, "port": [1, 8, 22, 29, 51, 67, 68, 69, 71, 73, 76, 95, 98, 101, 116, 122, 131, 133], "portabl": 76, "portal": [11, 76], "portion": 4, "portmanteau": 41, "pose": 125, "posix": 98, "possibl": [0, 1, 3, 4, 7, 30, 34, 36, 37, 39, 41, 44, 54, 71, 76, 87, 98, 104, 115, 129, 130], "possibli": [98, 122], "post": [0, 1, 7, 8, 14, 19, 20, 37, 39, 40, 41, 51, 52, 87, 98, 104, 122, 127], "postarch": [12, 19, 20, 35], "postfix": 76, "postgr": [11, 17, 41], "postgresql": [11, 41, 76], "postpon": 123, "postreboot": [12, 19, 20, 35], "postrout": 20, "postscript": 76, "potenti": [3, 36, 54, 64, 112, 133], "power": [4, 7, 8, 20, 21, 26, 30, 36, 42, 54, 61, 76, 83, 127, 129], "powerdn": 76, "poweredg": 77, "powermanag": 117, "poweroff": [22, 30, 35], "powersav": [53, 82], "powershel": 26, "powerst": 11, "powertop": 76, "practic": [0, 2, 4, 13, 34, 37, 46, 47, 48, 95, 120, 122], "pre": [3, 8, 9, 11, 20, 22, 27, 28, 34, 40, 48, 54, 55, 61, 73, 76, 116, 117, 130], "preassign": 73, "preboot": 54, "prebuilt": [54, 76], "preced": [8, 13, 35, 88, 98, 104], "precis": [76, 131], "precompil": [48, 129], "predefin": 38, "predict": [112, 136], "preempt": 76, "preempt_rt": [43, 76], "prefer": [4, 7, 8, 12, 15, 27, 30, 34, 72, 73, 74, 95, 127], "prefix": [87, 98, 129, 130, 131, 138], "preflight": [34, 122], "preinstal": 35, "premad": 48, "premis": [11, 54, 131], "prepar": 41, "prepend": 81, "prerequisit": [3, 54], "preschool": 76, "present": [3, 7, 8, 20, 26, 57, 60, 70, 73, 95, 98, 100, 122, 126, 127, 136], "preset": [36, 132], "press": [2, 7, 8, 9, 10, 11, 26, 41, 61, 73, 124, 127, 135], "pretti": [60, 88, 125], "pretty_nam": [51, 59], "prevent": [53, 81, 83, 104, 115, 124, 126, 129, 140], "preview": [4, 11, 56, 78], "previou": [8, 10, 11, 13, 14, 22, 30, 35, 40, 41, 50, 76, 87, 95, 112, 125, 126, 129], "previous": [8, 10, 15, 22, 26, 28, 51, 54, 66, 84, 95, 98, 115, 122, 124, 127, 131], "price": 10, "primari": [7, 9, 35, 76, 81, 101, 127], "primarili": [76, 112], "primary_dns_ip": 66, "primer": 3, "princip": 11, "principl": 4, "print": [4, 10, 14, 16, 40, 41, 56, 61, 76, 84, 85, 88, 92, 98, 99, 102, 106, 107, 109, 119, 131], "printer": [74, 76], "printer2": 74, "printf": [41, 74, 119, 129], "prior": [4, 8, 34], "priorit": [36, 53, 138], "prioriti": [3, 62, 91], "privaci": [41, 51, 59, 76], "privacy_policy_url": [51, 59], "privat": [10, 11, 12, 20, 29, 119, 122], "privateca": 84, "privateipaddress": 11, "privatetmp": 132, "privileg": [8, 19, 44, 52, 58, 69, 73, 76, 84, 109, 112, 119, 124, 125, 130, 133], "pro": [4, 120, 136], "proactiv": [0, 37, 41], "probabl": 131, "probe": [41, 76], "probenam": 41, "problem": [0, 1, 3, 12, 26, 29, 36, 39, 41, 64, 68, 76, 98, 115, 118, 119, 137], "problemat": 129, "proc": [20, 50, 63, 82, 83, 122], "proce": [8, 10, 11, 25, 73, 98, 119, 126], "procedur": [3, 95], "proceed": [9, 12, 14, 41, 73, 119, 126], "process": [7, 8, 9, 10, 13, 15, 20, 25, 30, 35, 36, 40, 43, 44, 46, 49, 50, 51, 54, 55, 59, 61, 62, 63, 65, 67, 68, 74, 76, 81, 95, 98, 104, 108, 109, 110, 113, 114, 116, 119, 122, 127, 129, 130, 131, 132], "processor": [7, 8, 18, 19, 20, 21, 26, 27, 32, 36, 44, 53, 76, 77, 111, 119], "processor_nam": 119, "procf": 64, "procp": 76, "produc": [14, 35, 39, 54, 61, 85, 98], "product": [3, 10, 27, 35, 43, 54, 76, 116, 131, 138], "profession": [1, 4, 76], "profil": [11, 36, 55, 71, 76, 81, 118, 122, 129], "prog": 76, "program": [1, 11, 17, 33, 36, 38, 41, 48, 53, 76, 81, 83, 85, 93, 95, 100, 102, 106, 107, 108, 110, 112, 113, 129, 130, 131, 133, 137], "programmat": 14, "progress": [5, 8, 9, 14, 35, 98, 129], "proj": 76, "project": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "projectcalico": 122, "prompt": [7, 8, 10, 11, 13, 19, 21, 23, 26, 27, 41, 56, 58, 78, 98, 113, 117, 127, 129, 130, 137], "propag": 122, "proper": [4, 9, 44, 90, 95, 98, 118, 125, 127], "properli": [1, 8, 9, 11, 14, 15, 22, 27, 28, 35, 39, 59, 64, 95, 99, 113, 119, 123, 135, 139], "properti": [11, 14, 63, 73, 89, 101, 113], "proprietari": [1, 115, 129, 130], "protect": [99, 101], "proto": 76, "protobuf": 76, "protocol": [20, 35, 43, 76, 99, 104, 139], "prototyp": 55, "provid": [0, 1, 3, 4, 5, 8, 11, 19, 20, 21, 22, 26, 28, 29, 31, 32, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 53, 54, 55, 58, 60, 61, 62, 63, 64, 66, 68, 69, 70, 74, 75, 76, 79, 81, 84, 85, 86, 87, 88, 91, 93, 95, 98, 100, 102, 105, 108, 112, 115, 116, 117, 122, 124, 126, 129, 131, 132, 133, 136, 137, 139, 140], "provis": [4, 11, 12, 39, 76, 81], "provisioningst": 11, "proxi": [1, 19, 29, 30, 34, 35, 42, 51, 76, 116, 120, 121], "proxim": 125, "proxmox": 18, "proxycommand": 71, "psensor": 76, "pseudo": [43, 66, 76], "psk": 74, "psl": 51, "pspp": 76, "ptk": 74, "ptr": 41, "pub": [11, 44, 46, 113, 119], "pubkei": 108, "public": [2, 10, 11, 12, 13, 20, 37, 68, 76, 81, 119], "publicipaddress": 11, "publicli": 116, "publish": [2, 11, 35, 36, 37, 51, 52, 87, 116, 129], "pugixml": 76, "pull": [2, 7, 10, 17, 35, 54, 76, 122, 133], "pulseaudio": 76, "punctuat": 3, "purg": 99, "purpos": [1, 3, 5, 7, 15, 35, 40, 41, 54, 65, 76, 109, 125, 132], "push": 129, "pushd": 40, "put": [0, 3, 4, 10, 35, 38, 40, 71, 81, 85, 95, 98, 119, 140], "putti": 73, "pwd": [14, 35, 52], "pwgen": 76, "pxe": [20, 52, 54, 56, 76, 78], "py": [39, 131], "pycairo": 76, "pydata": 76, "pygam": 76, "pygobject": 76, "pynacl": 76, "pypi": 76, "pyqt6": 76, "python": [11, 17, 36, 39, 51, 52, 55, 76, 131, 133], "python3": [11, 36, 39, 51, 76, 131], "pytorch": [55, 76], "pyyaml": 76, "q": [61, 98, 114, 124], "q35": 24, "qalcul": 76, "qat": 76, "qatlib": 76, "qbittorr": 76, "qcdebug": 76, "qemu": [25, 30, 32, 35, 67, 76], "qf": 62, "qingcloud": 18, "qmapshack": 76, "qpdf": 76, "qrencod": 76, "qt": 76, "qt3d": 76, "qt5": 76, "qt5ct": 76, "qt6": 76, "qt6base": 76, "qt6svg": 76, "qt6tool": 76, "qtbase": 76, "qtchart": 76, "qtconnect": 76, "qtdatavis3d": 76, "qtdeclar": 76, "qtgamepad": 76, "qtlocat": 76, "qtmultimedia": 76, "qtnetworkauth": 76, "qtquickcontrols2": 76, "qtremoteobject": 76, "qtscript": 76, "qtscxml": 76, "qtsensor": 76, "qtserialbu": 76, "qtserialport": 76, "qtspeech": 76, "qtsvg": 76, "qttool": 76, "qtvirtualkeyboard": 76, "qtwayland": 76, "qtwebchannel": 76, "qtwebsocket": 76, "qtx11extra": 76, "qtxmlpattern": 76, "quad": 69, "quagga": 76, "quak": 76, "qualifi": [41, 73, 130], "qualiti": [49, 63, 76], "quantiti": 67, "quassel": 76, "quasselcor": 76, "queri": [29, 40, 42, 73, 76], "question": [0, 1, 4, 46, 98, 124], "quick": [3, 98, 122, 133], "quickassist": 76, "quicker": 30, "quickest": 8, "quickli": [3, 4, 30, 41, 54, 122], "quicklink": 75, "quickstart": [13, 133], "quiet": [20, 43, 46, 53, 98], "quilt": 46, "quit": [7, 8, 39, 74], "quot": [3, 4], "quota": 63, "qxl": 22, "r": [8, 17, 26, 41, 47, 48, 76, 98, 102, 113, 127, 129, 131, 137, 140], "r2r": 118, "r630": 77, "r8": 118, "rabbitmq": 76, "race": [36, 76], "radio": [24, 76], "raidz_test": 140, "ram": [26, 27, 28, 44, 111], "ramdisk": 20, "ran": [98, 113, 124], "random": [11, 37, 43, 76, 99, 101, 107, 136], "randomli": 102, "rang": [20, 41, 61, 69, 94, 104, 122], "rank": [118, 119], "rapidli": [1, 37], "rare": [8, 98], "rate": [41, 53, 74, 79, 104], "rate_limit_en": [41, 104], "rate_limit_strategi": [41, 104], "rather": [3, 39, 53, 116, 131], "ratio": 22, "raw": [14, 22, 30, 35, 46, 62, 76, 139], "rawtherape": 76, "rax": 118, "rc": [11, 129, 137], "rc4": 37, "rclone": 76, "rcu": 76, "rcu_expedit": 43, "rcupdat": 43, "rcx": 118, "rd": 43, "rdahead": 76, "rdma": 76, "rdp": 76, "rdq": 12, "re": [0, 1, 2, 4, 7, 8, 19, 26, 27, 34, 35, 36, 39, 45, 47, 48, 68, 84, 94, 100, 110, 112, 119, 124, 126, 127, 137, 140], "re2": 76, "reach": [41, 71, 72, 85, 98, 101, 126], "read": [2, 3, 4, 15, 34, 35, 36, 38, 41, 44, 53, 64, 76, 95, 98, 100, 101, 102, 104, 106, 107, 112, 113, 115, 116, 122, 123, 132, 135], "readabl": [2, 3, 33, 85, 98], "reader": [3, 4], "readi": [7, 9, 21, 25, 26, 27, 34, 37, 46, 113, 116, 124, 131, 133, 138, 140], "readili": 54, "readlin": 76, "readm": [3, 30, 47, 48, 111, 122, 131], "readthedoc": 109, "real": [41, 76, 81, 95, 133], "realist": 76, "realiz": 1, "realloc": 41, "realmemori": 119, "realpath": 26, "realtim": 76, "reap": 58, "reappear": 126, "reason": [0, 29, 41, 82, 87, 98, 119, 122, 125], "reboot": [7, 8, 19, 20, 22, 23, 25, 26, 27, 28, 34, 37, 38, 43, 45, 46, 47, 48, 50, 57, 59, 60, 69, 73, 76, 95, 115, 126, 127, 129, 130, 137, 139, 140], "rebootmgr": 76, "rebuild": [30, 46, 47, 48, 51, 54, 115, 129, 137, 140], "rebuilt": [48, 51, 129, 137, 140], "recal": [73, 138], "receiv": [41, 68, 76, 122], "recent": [35, 37, 51, 98], "recogn": [76, 86, 87, 89, 90, 91, 92, 101], "recognit": [76, 136], "recogniz": 129, "recommend": [7, 9, 18, 19, 20, 27, 28, 35, 36, 40, 47, 48, 49, 55, 73, 74, 79, 95, 98, 114, 115, 116, 118, 119, 125, 129, 132, 137, 140], "recompil": [48, 140], "reconfigur": 95, "record": [20, 54, 64, 67, 76, 80, 103, 104, 105, 106, 122], "record_burst_limit": [41, 104], "record_burst_window": 41, "record_expiri": [41, 104], "record_format_vers": 41, "record_retention_en": 41, "record_server_delivery_en": 41, "record_window_length": [41, 104], "recov": [76, 112], "recoveri": 68, "recreat": 30, "recurs": [76, 98, 125, 131], "recursor": 76, "redeploi": 54, "redi": [11, 17, 51, 76, 120], "redirect": 11, "redistribut": [44, 115, 140], "reduc": [3, 4, 27, 28, 35, 51, 53, 76, 99, 126, 140], "redund": [37, 69, 140], "ref": [3, 81], "refer": [3, 4, 11, 13, 23, 25, 26, 28, 36, 37, 38, 40, 47, 48, 49, 51, 54, 55, 67, 69, 71, 73, 81, 98, 115, 116, 117, 121, 124, 126, 127, 130, 132, 135, 138, 140], "referenc": [3, 11, 38, 41, 109, 116], "refresh": 35, "refus": [68, 122], "regard": [3, 30, 35, 41, 124, 140], "regardless": [98, 130], "regener": 87, "regex": 98, "region": [7, 11, 12, 13, 14, 76], "regist": [11, 14, 28, 46, 115, 118], "registri": [11, 52, 54], "registrydword": 129, "regress": 60, "regul": 113, "regular": [39, 40, 52, 98, 101, 122], "regularli": [98, 99, 107, 110], "rehash": 84, "reinstal": 129, "reject": 125, "rel": [3, 54, 64, 98], "relai": [76, 106], "relat": [3, 33, 41, 63, 68, 76, 85, 113], "relaunch": 22, "relax": 124, "releas": [0, 3, 4, 7, 8, 11, 12, 13, 14, 24, 26, 30, 34, 35, 36, 37, 39, 40, 41, 46, 51, 54, 56, 59, 61, 65, 67, 76, 92, 125, 126, 130], "releasev": 62, "relev": [3, 4, 15, 30, 39, 54, 55, 95, 98, 120], "reli": [20, 38, 47, 48, 64, 87, 119, 129, 130, 137], "reliabl": [20, 43, 76], "reload": [20, 35, 38, 40, 66, 70, 73, 81, 114, 121, 122, 124, 129, 139], "reluct": 118, "remain": [0, 1, 7, 8, 9, 11, 13, 14, 20, 35, 39, 40, 61, 68, 73, 95, 116, 126, 127, 129], "remapp": 76, "rememb": [3, 4, 53, 60, 138], "remmina": 76, "remot": [10, 12, 13, 15, 22, 34, 42, 54, 55, 68, 70, 76, 85, 106, 117, 122, 124, 129], "remov": [3, 4, 7, 8, 9, 11, 26, 27, 29, 30, 34, 37, 38, 39, 41, 46, 47, 48, 51, 56, 59, 64, 70, 76, 78, 81, 85, 88, 91, 93, 95, 100, 114, 124, 126, 127, 129, 138, 139, 140], "remove_al": 8, "remove_id": 67, "renam": [60, 67, 76, 98, 124, 138], "render": [38, 76], "renew": 76, "reobtain": 22, "repair": [3, 30, 39, 59, 95, 129], "repeat": [3, 36, 76, 100, 116], "repeatedli": 54, "replac": [3, 8, 39, 41, 52, 54, 58, 66, 73, 74, 76, 89, 98, 118, 124, 137], "replai": 76, "repli": 133, "replic": 113, "repo": [29, 30, 32, 35, 40, 41, 46, 49, 51, 76, 80, 85, 87, 98], "repoadd": 30, "repopul": 35, "repoqueri": 62, "report": [7, 8, 41, 45, 53, 62, 64, 85, 87, 92, 98, 119, 121, 129], "repositori": [2, 3, 28, 35, 36, 37, 40, 41, 42, 44, 46, 48, 49, 52, 54, 61, 76, 80, 85, 86, 98, 115, 116, 117, 131, 140], "repostatu": 30, "repres": [28, 39, 41, 46, 112], "represent": 76, "reproduc": 54, "reprot": 129, "req": 131, "request": [0, 2, 29, 33, 41, 73, 74, 76, 95, 98, 119, 122, 131, 132, 134], "requir": [1, 3, 11, 12, 16, 18, 19, 20, 24, 25, 27, 28, 29, 30, 34, 35, 36, 38, 41, 44, 47, 48, 49, 51, 52, 53, 54, 55, 56, 64, 65, 67, 68, 69, 70, 73, 76, 78, 79, 81, 84, 93, 95, 98, 99, 101, 102, 103, 108, 112, 114, 115, 116, 119, 121, 122, 123, 124, 126, 127, 129, 130, 131, 132, 136, 137, 138, 140], "requri": 76, "rescan": 8, "research": [76, 115], "reserv": [9, 11, 41, 76, 127], "reset": [8, 34, 72, 122], "reset_stack": 122, "reshap": 136, "resid": [9, 27, 35, 38, 40, 64, 76, 98, 119, 126, 132], "resili": 54, "resiz": [22, 109, 126], "resize2f": 61, "resizepart": 61, "resnet": 131, "resolut": 29, "resolv": [0, 20, 29, 30, 36, 37, 68, 76, 119], "resourc": [12, 13, 25, 36, 42, 46, 48, 54, 58, 67, 76, 85, 98, 109, 111, 119, 122], "resourcegroup": 11, "resourcemanag": 113, "respect": [3, 4, 29, 32, 95], "respond": [30, 68, 76, 124], "respons": [30, 33, 35, 40, 54, 98, 101, 119, 124, 133, 140], "rest": [3, 8, 35, 38, 41, 73, 76, 129, 130], "restart": [7, 8, 11, 20, 28, 29, 30, 34, 35, 38, 40, 42, 53, 54, 66, 69, 70, 72, 73, 74, 81, 95, 103, 114, 116, 119, 121, 122, 123, 124, 132, 133], "restic": 76, "restor": [20, 30, 38, 52, 68, 84, 95, 127, 129, 130], "restrict": [1, 4, 23, 29, 63, 68, 98, 132], "restructuredtext": [2, 3, 4], "result": [8, 13, 14, 16, 22, 30, 33, 37, 39, 41, 46, 69, 74, 84, 88, 98, 112, 118, 119, 122, 126, 129, 131, 134, 138, 140], "resum": [30, 74], "ret": 41, "retain": [11, 43, 47, 48], "retest": [119, 136], "retri": [35, 98], "retriev": [19, 62, 76, 98, 122, 131, 134], "retriv": 109, "return": [7, 8, 10, 16, 20, 22, 25, 26, 30, 36, 39, 41, 47, 53, 54, 62, 74, 85, 86, 87, 88, 89, 90, 91, 92, 98, 108, 109, 118, 129, 131, 133], "retyp": [41, 58], "reus": [0, 46, 49, 113], "reusabl": 76, "revers": [4, 41, 76, 115, 116], "revert": [7, 8, 35, 64], "review": [2, 8, 10, 14, 20, 21, 39, 48, 55, 64, 112, 114, 115, 122, 129, 137], "revis": [5, 35, 140], "reword": 4, "rewrit": [3, 4, 20], "rf": 38, "rfc": 98, "rfkill": [83, 115], "rhythmbox": 76, "rich": 76, "ridg": 76, "right": [0, 7, 8, 14, 15, 21, 22, 24, 26, 27, 28, 56, 73, 74, 85, 109, 126, 127], "rip": 76, "ripgrep": 76, "ripng": 76, "ripper": 76, "risk": [37, 76, 112, 134, 139, 140], "rlwrap": 76, "rm": [8, 22, 30, 38, 51, 61, 116, 119, 121, 124, 129, 138], "rmdir": 124, "rngd": 64, "ro": [8, 61, 84, 117], "roadblock": 118, "robert": 133, "robin": 76, "robust": 122, "rock": 76, "rogu": 63, "role": [3, 11, 21, 55, 76, 131], "roll": [0, 1, 36, 37, 39, 54], "roller": 76, "rom": [26, 61], "room": [92, 126], "root": [11, 13, 14, 15, 16, 19, 20, 21, 22, 30, 35, 37, 40, 41, 43, 51, 52, 58, 61, 69, 73, 76, 81, 93, 95, 98, 99, 101, 109, 113, 119, 122, 124, 125, 126, 127, 130, 138, 140], "rootf": 1, "rootflag": 43, "rootfstyp": 43, "rotat": [41, 76, 118], "round": 76, "rout": [20, 73, 76], "router": 20, "routin": [1, 76], "row": 94, "rpc": 122, "rpg": 76, "rpm": [35, 36, 40, 46, 49, 75, 80, 85, 90, 123], "rpm2cpio": [40, 46], "rpmbuild": 30, "rpmrc": 36, "rpop": 133, "rpush": 133, "rr": 76, "rrdtool": 76, "rsa": [11, 12, 113, 119, 122], "rsi": 76, "rss": 76, "rst": 3, "rsync": 76, "rsyslog": 76, "rt": 76, "rte_sdk": 67, "rte_target": 67, "rtmpdump": 76, "rubi": [76, 133], "rule": [0, 3, 68, 99, 100], "run": [3, 4, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 34, 35, 36, 38, 39, 40, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 58, 59, 61, 66, 68, 69, 70, 73, 74, 75, 76, 81, 83, 87, 88, 93, 95, 96, 98, 103, 109, 111, 115, 117, 118, 122, 123, 124, 125, 129, 130, 131, 132, 135, 137, 138, 139, 140], "runc": [52, 116, 122], "runfil": 130, "runner": 76, "runtim": [34, 45, 52, 55, 60, 68, 76, 83, 99, 113, 114, 116, 121, 129, 130, 132], "runtimeclass": 122, "rusf": 52, "rust": 76, "rv": [44, 48, 115], "rvi": 27, "rw": [20, 43], "rwsem": 46, "rwxr": 11, "rxvt": 76, "s2600wt2": 77, "s3": 76, "s3bucket": 14, "s3f": 76, "s3kei": 14, "sa": [81, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 102, 103, 104, 105, 106, 107, 108, 109, 110], "safe": [11, 34, 64, 119, 127, 137], "safeguard": 11, "sai": [25, 119], "sake": [116, 119], "salli": 60, "salt": 76, "samba": [76, 120], "same": [1, 3, 4, 7, 8, 11, 19, 22, 26, 30, 35, 39, 41, 48, 65, 67, 69, 73, 76, 98, 101, 114, 118, 119, 122, 125, 129, 131, 134], "sampl": [14, 19, 20, 29, 34, 35, 36, 41, 48, 51, 62, 64, 66, 67, 76, 98, 130, 131], "samsung_mz7pc128hafu": 9, "samtool": 76, "sandbox": [30, 73, 76, 122], "sandi": 53, "sandwich": 4, "sane": 76, "sanit": 46, "saniti": 84, "sasl": 76, "sassc": 76, "sata": 9, "satisfi": [7, 8, 122], "save": [3, 7, 12, 14, 15, 19, 20, 27, 28, 35, 43, 46, 65, 67, 68, 74, 76, 87, 116, 118, 119, 129, 130, 131, 132, 134, 136, 137, 138], "save_config": 74, "sbatch": 119, "sbc": 76, "sbin": [95, 99, 100, 132, 140], "scalabl": [46, 47, 48, 54, 76, 131], "scale": [1, 11, 42, 76, 113, 122], "scaling_driv": 53, "scaling_governor": [53, 82], "scan": [1, 3, 4, 30, 74, 76, 98, 119, 132, 140], "scan_result": 74, "scannabl": 3, "scdoc": 76, "scenario": [35, 54, 66, 112, 122], "scene": [29, 39], "schedul": [34, 76, 119, 122, 131], "schema": [76, 134], "schemat": 76, "scheme": 37, "school": 76, "sci": 4, "scienc": [55, 76], "scientif": 76, "scm": [44, 76], "scon": 76, "scontrol": 119, "scope": [54, 69, 115, 129, 138], "score": 101, "scratch": [27, 35, 52, 122], "screen": [7, 9, 10, 11, 13, 14, 21, 23, 26, 27, 34, 56, 73, 74, 76, 122, 124, 126, 127, 130, 137, 138], "screenshot": [3, 27, 73, 76], "script": [11, 12, 14, 19, 20, 22, 26, 29, 30, 35, 39, 40, 41, 46, 51, 52, 67, 76, 81, 98, 101, 102, 109, 110, 118, 122, 124, 129, 130, 131, 132, 137, 140], "scroll": [7, 13, 24, 74], "scsi": [27, 76], "scummvm": 76, "sda": [8, 9, 12, 19, 20, 35, 59, 61, 126, 127], "sda1": [8, 9, 14, 59, 126, 127], "sda2": [8, 9, 59, 126, 127], "sda3": [8, 9, 126, 127], "sda4": [9, 126, 127], "sda5": [9, 127], "sda6": [9, 127], "sda7": [9, 127], "sdb": [9, 59, 127], "sdb1": [9, 59, 127], "sdb2": [59, 127], "sdb3": 59, "sdc": 9, "sdc1": 9, "sddm": [1, 76], "sdk": 30, "sdl": 76, "sdl2": 76, "sdl2_gfx": 76, "sdl2_imag": 76, "sdl2_mixer": 76, "sdl2_net": 76, "sdl2_ttf": 76, "sdl_gfx": 76, "sdl_imag": 76, "sdl_mixer": 76, "sdl_net": 76, "sdl_ttf": 76, "seahors": 76, "seamlessli": [29, 33, 122, 129], "search": [0, 4, 7, 10, 14, 25, 29, 30, 36, 47, 48, 51, 60, 76, 95, 117, 126, 129, 132, 139], "searchabl": 76, "seatd": 76, "sec": 132, "second": [3, 7, 8, 35, 36, 41, 57, 60, 61, 70, 98, 100, 101, 104, 115, 122, 126, 127, 131], "secondari": [76, 129], "secondary_dns_ip": 66, "secondarynamenod": 113, "secret": [11, 14, 131], "section": [3, 4, 7, 8, 10, 11, 12, 14, 15, 18, 19, 24, 26, 27, 28, 35, 36, 40, 41, 46, 47, 48, 51, 53, 61, 63, 67, 70, 73, 74, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 102, 103, 104, 105, 106, 107, 110, 115, 116, 119, 122, 124, 127, 129, 131, 132, 140], "sector": [8, 126], "secur": [0, 3, 7, 8, 10, 11, 13, 14, 20, 21, 29, 35, 38, 39, 42, 43, 44, 46, 47, 48, 54, 55, 63, 70, 73, 74, 76, 98, 99, 101, 109, 116, 121, 122, 125, 134, 138, 139], "secureboot": 43, "securitytyp": 73, "sed": [51, 122, 129], "see": [1, 3, 4, 7, 8, 10, 11, 12, 14, 16, 17, 19, 20, 23, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 40, 41, 44, 45, 46, 47, 48, 51, 53, 54, 56, 59, 60, 63, 64, 66, 67, 68, 69, 71, 72, 73, 74, 111, 114, 115, 118, 121, 122, 124, 125, 126, 127, 129, 130, 131, 132, 135, 137, 138, 139, 140], "seed": 43, "seek": [0, 30, 140], "seen": [4, 61, 65, 99, 100, 138], "seer": 76, "segment": 76, "select": [3, 4, 9, 12, 13, 14, 19, 20, 21, 23, 24, 25, 26, 27, 28, 35, 41, 43, 56, 57, 59, 73, 74, 76, 117, 118, 124, 125, 126, 127, 129, 134, 136, 138], "selector": 76, "self": 131, "semicolon": 4, "send": [2, 4, 41, 42, 52, 64, 76, 102, 119, 133], "sens": [41, 54], "sensibli": 37, "sensit": [37, 76], "sensor": 76, "sent": [13, 41, 64, 96, 107, 119], "sentenc": [3, 4], "separ": [0, 1, 3, 33, 35, 41, 48, 51, 54, 63, 68, 69, 76, 81, 95, 98, 115, 119, 132], "sequenc": [3, 76, 81], "sequenti": [3, 35], "serf": 76, "seri": [3, 4, 34, 76, 77, 111], "serial": 76, "serie1": 46, "serivc": 129, "serv": [3, 20, 32, 49, 54, 133], "server": [9, 11, 12, 16, 18, 21, 23, 25, 27, 29, 33, 34, 36, 37, 38, 39, 49, 52, 54, 55, 56, 59, 66, 68, 70, 71, 72, 76, 78, 83, 87, 95, 98, 104, 107, 111, 113, 116, 119, 120, 121, 127, 129, 130, 132, 134, 136], "server_nam": [20, 35, 40, 125], "server_state_dir": 35, "serverless": [76, 131], "servernam": 134, "servic": [1, 11, 12, 13, 14, 17, 18, 20, 22, 29, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 48, 53, 54, 66, 68, 72, 74, 76, 80, 83, 95, 97, 98, 99, 102, 105, 108, 109, 112, 113, 114, 116, 119, 121, 122, 123, 124, 129, 131, 132, 133, 135, 137, 140], "session": [11, 33, 68, 76, 130], "sessionmanag": 117, "set": [1, 3, 4, 7, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 26, 27, 29, 30, 31, 34, 36, 37, 38, 39, 42, 47, 48, 50, 51, 53, 54, 55, 57, 58, 61, 62, 63, 66, 68, 69, 70, 74, 76, 81, 82, 83, 84, 85, 91, 92, 95, 98, 100, 104, 105, 106, 107, 111, 113, 115, 116, 118, 121, 123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 134, 139], "set_network": 74, "setp": 50, "setuid": 130, "setup": [3, 7, 8, 15, 25, 27, 34, 41, 43, 46, 54, 58, 66, 67, 70, 76, 98, 109, 113, 116, 119, 122, 124, 126, 138], "setup_system": 122, "sever": [1, 11, 25, 29, 31, 41, 73, 81, 95, 98, 100, 102, 105, 112, 124, 138], "sf": [11, 20, 35, 40, 125], "sftp": [37, 76], "sfv": 129, "sg3_util": 76, "sgdisk": 8, "sh": [20, 22, 27, 30, 35, 40, 41, 46, 56, 67, 73, 78, 81, 113, 114, 119, 121, 122, 126, 129, 131], "sha": 37, "sha256": [10, 11, 65, 113, 122], "sha256sum": 65, "sha512": [56, 65], "sha512sum": [56, 65], "shall": 4, "shapelib": 76, "share": [0, 13, 20, 25, 30, 35, 36, 38, 40, 41, 48, 51, 64, 67, 76, 84, 94, 95, 98, 101, 104, 106, 107, 112, 113, 119, 122, 124, 125, 126, 129, 130, 131, 132, 133, 136, 137, 138, 140], "sharealik": [81, 108, 109], "shareddr": 135, "shasum": 56, "sheer": 37, "shelf": 1, "shell": [11, 20, 22, 36, 41, 55, 70, 76, 81, 93, 102, 109, 122], "shift": 8, "shiftwidth": 19, "shim": 43, "ship": [1, 37, 54, 95, 140], "shmemhugepag": 50, "short": [3, 4, 29, 64, 99, 122], "shortcut": [8, 40], "shorten": 39, "shost": 119, "shot": 43, "should": [3, 4, 8, 10, 11, 12, 14, 16, 20, 21, 24, 26, 30, 34, 35, 36, 38, 39, 41, 48, 50, 51, 53, 54, 60, 65, 70, 71, 73, 74, 84, 85, 95, 98, 99, 100, 101, 104, 105, 113, 115, 116, 119, 124, 125, 126, 127, 129, 130, 131, 132, 136, 139, 140], "show": [3, 4, 7, 8, 9, 10, 11, 14, 19, 21, 25, 26, 27, 29, 30, 34, 35, 36, 44, 46, 48, 50, 51, 55, 60, 61, 64, 66, 67, 70, 71, 73, 74, 76, 84, 88, 98, 102, 115, 117, 118, 122, 123, 124, 125, 126, 127, 129, 130, 131, 136, 137, 138, 140], "shown": [7, 8, 10, 11, 15, 20, 23, 25, 35, 41, 47, 48, 49, 56, 61, 62, 65, 67, 69, 70, 73, 112, 116, 117, 119, 121, 123, 124, 127, 133, 134, 136, 138], "shrink": 126, "shuffl": [43, 113], "shufflehandl": 113, "shut": [7, 10, 11, 26, 61, 126], "shutdown": [22, 26, 35, 127], "side": [4, 10, 13, 15, 20, 23, 29, 33, 40, 41, 62, 73, 74, 76], "sidebar": 13, "sig": [30, 48, 65, 115, 129, 137], "sig_unenforc": [43, 47, 48, 129, 137], "sign": [3, 10, 11, 13, 35, 37, 47, 65, 76, 87, 122], "signal": [74, 98], "signatur": [14, 25, 26, 35, 37, 42, 47, 48, 98, 129, 137], "signaturedoesnotmatch": 14, "signific": [4, 36, 87], "significantli": [47, 48, 53], "silent": [129, 130], "simd": [16, 76, 111], "similar": [0, 4, 7, 8, 11, 14, 16, 27, 39, 41, 50, 52, 53, 59, 60, 76, 81, 110, 113, 118, 122, 123, 124, 132, 133, 137], "similarli": 1, "simpl": [3, 12, 30, 37, 39, 41, 46, 56, 64, 67, 73, 74, 76, 78, 95, 112, 113, 118, 119, 124, 129, 135], "simpler": [4, 68], "simplescreenrecord": 76, "simplest": [8, 95, 122], "simpli": [1, 14, 17, 19, 20, 35, 37, 38, 40, 41, 53, 76, 94, 126, 131], "simplic": [73, 76, 119, 131], "simplifi": [1, 8, 26, 55, 76, 119], "simul": 76, "simultan": [76, 123], "sinc": [11, 12, 15, 39, 41, 73, 95, 98, 113, 119, 132], "sinfo": 119, "singl": [3, 4, 8, 13, 39, 41, 48, 69, 76, 81, 95, 111, 113, 117, 122, 131, 137], "singular": 140, "site": [27, 39, 76, 113, 138], "situat": [0, 1, 140], "six": 76, "size": [7, 8, 9, 12, 15, 18, 19, 20, 21, 22, 24, 26, 27, 28, 35, 41, 42, 50, 51, 52, 54, 59, 65, 73, 98, 102, 104, 105, 111, 113, 126, 127], "sjjmfninwqg": 20, "skeleton": 131, "skill": [1, 2, 112], "skim": 4, "skip": [7, 12, 35, 36, 52, 85, 87, 88, 90, 92, 98, 111, 113], "sku": 11, "sky": 76, "slang": 76, "slave": [69, 113], "sleep": [20, 53], "slice": [73, 132, 133], "slightli": [31, 53, 119], "slot": [7, 8], "slow": [36, 76, 118, 132], "slower": 98, "slurm": 35, "slurmctld": 119, "slurmd": 119, "small": [33, 36, 39, 46, 54, 56, 65, 76, 125], "smaller": [35, 98, 111], "smallest": [39, 122], "smarctl": 76, "smart": 139, "smartcard": 76, "smartd": 76, "smartmontool": 76, "smartphon": 76, "smb": [76, 134, 135], "smbclient": 135, "smbpasswd": 135, "sme": 74, "smemstat": 76, "smime": 65, "smoother": 124, "smoothli": 29, "smp": [20, 22, 43], "smtp": 76, "snack": 4, "snap": 14, "snaphot": 14, "snappi": 76, "snapshot": [11, 76, 140], "snapshot_id": 14, "snapshotid": 14, "snapshottaskdetail": 14, "snippet": 101, "snmp": 76, "so": [4, 7, 11, 13, 20, 28, 30, 31, 34, 35, 36, 38, 39, 41, 47, 48, 51, 53, 54, 67, 68, 73, 85, 94, 95, 98, 110, 112, 115, 116, 119, 123, 124, 125, 126, 127, 129, 130, 132, 139], "socat": 76, "sock": [71, 95, 122], "socket": [1, 22, 33, 41, 70, 73, 76, 95, 104, 122], "socket_path": [41, 104], "socketsperboard": 119, "socks_proxi": [71, 122], "soft": [63, 76], "softflowd": 76, "softwar": [1, 3, 8, 9, 11, 20, 21, 23, 25, 31, 33, 39, 40, 41, 44, 46, 47, 48, 49, 51, 52, 53, 54, 55, 62, 64, 75, 76, 81, 95, 97, 113, 115, 116, 122, 124, 125, 130, 132, 137, 140], "solaar": 76, "sole": 13, "solut": [0, 1, 11, 26, 41, 54, 64, 75, 76, 99, 101, 115, 116, 129, 131, 132], "solv": 0, "some": [0, 1, 3, 4, 7, 8, 9, 11, 17, 22, 27, 36, 37, 38, 39, 41, 44, 46, 48, 51, 53, 54, 63, 68, 71, 76, 95, 98, 115, 119, 120, 122, 124, 126, 127, 128, 129, 131, 132, 133], "someon": [4, 124], "someth": [14, 98, 119, 125], "sometim": [0, 1, 4, 98], "sonam": 76, "soname1": 76, "soname10": 76, "soname14": 76, "soname16": 76, "soname2": 76, "soname20": 76, "soname24": 76, "soname3": 76, "soon": [1, 36, 37, 114], "sort": [43, 76, 88, 98, 120, 133], "sound": [53, 76], "soundfont": 76, "sourc": [0, 3, 7, 11, 13, 20, 23, 25, 27, 31, 32, 33, 35, 36, 37, 38, 39, 41, 43, 44, 47, 51, 53, 55, 67, 71, 73, 76, 91, 109, 115, 116, 121, 122, 124, 129, 130, 131, 132], "source0": [30, 46], "source1": [30, 46], "source2": 46, "source99": 30, "source_with_dkm": 48, "sourcecod": 118, "sox": 76, "space": [7, 8, 19, 20, 27, 28, 37, 39, 41, 42, 60, 61, 68, 76, 82, 98, 111, 125, 126, 127, 131], "spacebar": 8, "spanish": 76, "sparingli": 3, "spark": 76, "spawn": 95, "spdlog": 76, "spdx": 30, "speak": 4, "speaker": 4, "spec": [36, 46], "special": [3, 26, 41, 47, 48, 118, 122, 123], "specif": [0, 3, 4, 11, 20, 21, 22, 30, 32, 35, 38, 39, 41, 43, 46, 48, 51, 53, 54, 55, 71, 73, 76, 81, 83, 84, 85, 87, 90, 92, 95, 98, 99, 109, 115, 118, 122, 129, 132, 133, 137, 138], "specifi": [7, 8, 11, 14, 20, 21, 27, 35, 41, 46, 52, 56, 64, 73, 76, 78, 81, 87, 98, 100, 119, 122, 130, 134, 135, 137], "spectacl": 76, "speed": [36, 39, 46, 54, 76, 98, 118, 121, 125], "speedstep": 53, "speex": 76, "speexdsp": 76, "spell": 76, "sphinx": [3, 4, 76], "spi2": 76, "spice": [22, 76], "spin": 46, "spirv": 76, "spl": 140, "splash": 116, "split": 31, "splitext": 131, "spm": 76, "spool": [41, 102, 104], "spool_dir": [41, 104], "spool_max_s": 104, "spool_process_tim": [41, 104], "sprintf": 41, "spyder": 76, "sql": [11, 76], "sqlite": [55, 76], "squar": 3, "squashf": 127, "squid": 76, "sr0": 61, "src": [33, 35, 48, 62, 95, 98, 100, 115, 140], "srpm": [46, 62], "srun": 119, "srv": [8, 20], "ss": 29, "ssb": 115, "ssd": 76, "ssdsckkf36": 126, "sse": 111, "sse4_1": 16, "sse4_2": 16, "ssh": [1, 10, 11, 12, 13, 20, 37, 42, 54, 55, 76, 81, 95, 99, 108, 109, 117, 129], "ssh2": 101, "ssh_config": 119, "ssh_known_host": 119, "ssh_rsa_kei": 119, "sshd": [70, 99, 101, 119], "sshd_config": [20, 70, 95, 119], "sshuttl": 76, "ssid": 74, "ssl": [51, 76, 95, 98, 104], "sslv3": 37, "ssocr": 76, "ssse3": [16, 111], "sta": 115, "stabil": [41, 44], "stabl": [34, 76, 98, 117], "stacer": 76, "stack": [0, 36, 54, 58, 76, 122, 131, 133], "stadnard": 76, "stage": [7, 8, 36, 49, 98, 127], "stai": 1, "stan": 76, "standalon": [17, 32], "standard": [1, 2, 3, 4, 20, 30, 36, 37, 76, 95, 102, 116, 122], "standarderror": 73, "standardinput": 73, "stanza": 81, "star": 131, "start": [0, 1, 3, 4, 7, 8, 9, 10, 11, 13, 17, 19, 20, 22, 23, 25, 26, 27, 30, 33, 35, 36, 39, 40, 45, 46, 48, 52, 53, 55, 56, 60, 63, 67, 68, 70, 74, 75, 81, 83, 87, 95, 96, 97, 100, 103, 109, 110, 112, 113, 115, 116, 117, 119, 121, 122, 124, 125, 126, 127, 129, 131, 135, 136, 137, 140], "start_qemu": [22, 30, 35, 56, 67, 78], "starttim": 11, "startup": [20, 21, 67, 73, 76, 95, 99, 100, 101, 104], "state": [7, 10, 15, 21, 30, 34, 35, 36, 50, 51, 52, 66, 68, 76, 81, 98, 109, 112, 119, 122], "statedir": [51, 52, 59, 98], "stategi": 104, "stateless": [0, 1, 42, 44, 80, 113, 116, 122, 124, 132], "statement": [4, 10], "static": [8, 20, 42, 60, 74, 76, 106, 107, 110, 118, 124], "station": 76, "statist": [41, 76, 87], "statu": [8, 9, 10, 11, 14, 16, 33, 35, 48, 51, 53, 66, 67, 68, 69, 70, 72, 74, 76, 119, 124, 132, 133, 135, 140], "statusmessag": 14, "stdin": [41, 51, 102, 131], "stdio": [41, 118, 119], "stdlib": [41, 118], "stdout": 41, "stellarium": 76, "step": [0, 2, 3, 4, 10, 13, 14, 15, 18, 20, 22, 23, 25, 26, 27, 28, 29, 30, 33, 34, 35, 40, 41, 42, 46, 47, 48, 52, 57, 61, 65, 67, 70, 71, 73, 75, 87, 95, 112, 113, 119, 122, 127, 129, 132, 136, 137, 138], "stick": 4, "still": [35, 36, 71, 73, 76, 82, 99, 101, 112, 119, 120, 126, 134], "stock": 35, "stoken": 76, "stop": [20, 28, 29, 30, 52, 73, 74, 81, 83, 95, 103, 116, 122, 129, 137], "storag": [8, 10, 11, 12, 13, 14, 15, 16, 21, 24, 25, 26, 28, 33, 36, 41, 52, 61, 76, 111, 113, 116, 121, 122, 134, 140], "store": [0, 1, 11, 20, 35, 37, 41, 52, 66, 68, 74, 76, 84, 88, 98, 99, 104, 105, 117, 122, 124, 125, 131, 132, 133], "str": 131, "strace": 76, "straightforward": [41, 124], "strategi": [1, 36, 41, 104], "stream": [0, 16, 76, 94, 98, 111], "streamer": 76, "streamlin": 30, "strength": 74, "strerror": 41, "stress": 76, "strict": [1, 88], "stride": 118, "string": [11, 39, 41, 52, 60, 81, 92, 100, 101, 102, 104, 133], "strong": 3, "stronger": 122, "strongli": [35, 116, 119, 138], "struct": [41, 105], "structur": [2, 4, 35, 76, 81, 88, 90, 95, 109, 124, 131, 132, 133, 136], "stub": [20, 67, 76], "stuck": 122, "studi": 11, "studio": 76, "stuff": 34, "stuffi": 4, "style": [2, 3, 4, 54, 76, 137], "stylesheet": [76, 113], "su": [19, 51, 76], "sub": [31, 41, 81], "subcommand": 40, "subdirectori": [39, 44], "subfold": [30, 46], "subject": 4, "submenu": [7, 20], "submit": [0, 1, 2, 15, 46, 76, 138], "subnet": [20, 74, 100], "suboptim": 1, "subprocess": 98, "subscript": 11, "subsequ": [3, 108, 125], "subset": [12, 101], "subsidiari": [1, 21, 22, 25, 26, 27, 32, 36, 37, 53, 77, 111, 118, 129, 131, 138], "substitut": [20, 22, 40, 73], "substr": 101, "subsystem": [37, 53, 70, 76], "subtract": 98, "subunit": 76, "subvers": 76, "succe": 98, "succeed": [11, 15], "success": [8, 11, 15, 16, 26, 30, 34, 39, 41, 47, 48, 51, 52, 65, 67, 69, 85, 86, 87, 88, 89, 90, 91, 92, 98, 102, 103, 105, 108, 109, 119, 122, 124, 129, 136, 137], "successful": 98, "successfulli": [7, 11, 14, 23, 25, 30, 34, 39, 41, 48, 51, 52, 60, 72, 73, 74, 112, 113, 114, 116, 118, 122, 124, 129, 136, 137, 138], "successor": 68, "sudo": [8, 9, 10, 11, 12, 14, 16, 19, 20, 22, 25, 26, 27, 29, 30, 33, 34, 35, 36, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 50, 52, 53, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 81, 95, 109, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140], "sudoedit": [38, 71, 119, 126], "sudoer": [41, 81, 109, 119], "suffic": 95, "suffici": [24, 28, 54, 95, 122], "suffix": [56, 98], "suggest": [2, 41, 55, 76, 112, 119, 124, 133, 137], "suit": [0, 46, 54, 55, 73, 76], "suitabl": [1, 35, 56, 78, 140], "sum": [65, 112], "summari": [4, 30, 46, 76], "super": 76, "superengi9": 133, "supermicro": 77, "supersed": 82, "supertuxkart": 76, "supplement": [3, 16, 82, 111], "supplementari": 3, "suppli": [1, 41, 73, 84, 87, 90, 92, 119], "support": [1, 3, 4, 7, 8, 12, 14, 16, 19, 20, 22, 25, 26, 28, 32, 36, 40, 41, 42, 43, 46, 48, 52, 53, 55, 56, 63, 67, 68, 69, 73, 75, 76, 81, 98, 100, 108, 109, 111, 115, 116, 119, 120, 122, 127, 129, 130, 137, 140], "support_url": [51, 59], "supported_chip": 115, "suppos": 35, "sure": [3, 4, 7, 10, 11, 14, 19, 20, 26, 30, 34, 35, 39, 41, 46, 48, 53, 56, 60, 68, 70, 73, 74, 78, 101, 112, 113, 115, 116, 122, 125, 127, 129, 132, 137, 140], "suricata": 76, "surround": 4, "suspect": 140, "suspici": 37, "sustain": [54, 129], "sut": 34, "sv": 129, "svc": 122, "svg": [3, 76], "svt": 76, "swai": 76, "swap": [3, 9, 19, 20, 35, 59, 61, 76, 122, 126, 127], "swapfil": [7, 8], "swapoff": 122, "swappi": 82, "swarm": 52, "switch": [12, 19, 20, 21, 35, 46, 69, 76, 95, 116, 129], "swupd": [0, 1, 7, 10, 11, 12, 14, 20, 22, 25, 26, 27, 29, 30, 31, 33, 34, 35, 37, 38, 41, 42, 44, 46, 47, 48, 49, 51, 52, 53, 54, 58, 59, 61, 62, 64, 65, 67, 68, 70, 72, 73, 76, 85, 87, 94, 95, 110, 113, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 129, 130, 131, 132, 133, 135, 136, 137, 140], "swupd_arg": 51, "swupd_root": [35, 40, 65, 98], "sxiv": 76, "sy": [20, 43, 50, 53, 63, 67, 82, 118], "symbol": [20, 33, 35, 40, 99, 125, 130], "symlink": [35, 39, 64, 98, 129, 130], "synapt": 76, "sync": 9, "synchron": [11, 35, 72, 76, 119], "syncth": 76, "syndic": 76, "synergi": 76, "syntax": [3, 8, 12, 14, 19, 20, 35, 48, 67, 69, 76, 88, 95, 98, 116, 133], "synthes": 76, "sysadmin": [11, 35, 54, 58, 72, 76, 112], "sysconfig": 129, "sysctl": [20, 63, 82, 122], "syslinux": [1, 76], "syslog": [54, 73, 132], "syslog_identifi": 101, "sysprof": 76, "sysstat": 76, "system": [0, 1, 4, 9, 10, 11, 12, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 41, 42, 43, 44, 46, 47, 48, 49, 50, 52, 53, 55, 58, 60, 62, 66, 67, 68, 70, 71, 74, 76, 79, 81, 82, 83, 84, 87, 94, 96, 97, 98, 99, 100, 101, 102, 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 124, 125, 126, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 140], "system_": 122, "system_nam": 41, "systemctl": [20, 25, 27, 29, 33, 34, 35, 38, 39, 40, 43, 52, 53, 64, 66, 68, 69, 70, 72, 73, 74, 95, 96, 110, 114, 116, 119, 121, 122, 124, 125, 129, 132, 133, 135, 140], "systemd": [1, 12, 20, 29, 36, 39, 41, 42, 43, 45, 48, 52, 53, 54, 63, 64, 69, 70, 72, 74, 76, 83, 93, 96, 97, 98, 99, 101, 110, 114, 116, 121, 122, 129, 132, 133, 137], "szl75lqi1yawlj5xg": 12, "t": [3, 4, 7, 10, 11, 13, 15, 20, 26, 30, 35, 36, 41, 43, 52, 54, 67, 73, 81, 83, 95, 98, 100, 113, 119, 122, 126, 127, 129, 130], "t0": 52, "t10k": 136, "t2": 10, "t540p": 77, "t_ref": 105, "tab": [7, 8, 11, 13, 19, 24, 25, 26, 27, 28, 55, 73, 124, 125, 127], "tabl": [0, 4, 11, 34, 41, 61, 76, 81, 87, 99, 124, 138], "tablet": 22, "tabsiz": 19, "tabstop": 19, "tag": [3, 10, 11, 12, 14, 20, 35, 46, 51, 52, 76], "tag_nam": 46, "taglib": 76, "tail": 126, "taint": [122, 131], "take": [0, 1, 4, 9, 10, 11, 18, 31, 35, 39, 46, 53, 54, 61, 67, 69, 71, 73, 74, 76, 84, 87, 88, 89, 91, 92, 118, 124, 125, 131, 136, 138], "taken": [7, 8, 37, 41, 95, 99], "talk": [4, 20, 35, 40], "talloc": 76, "tallow": [1, 37, 64, 68], "tallow6": [99, 100], "tar": [13, 20, 30, 46, 47, 48, 52, 56, 67, 76, 78, 115, 124, 130, 138, 140], "tarbal": [30, 52], "target": [2, 7, 19, 30, 46, 49, 51, 54, 56, 67, 73, 76, 80, 81, 82, 87, 98, 112, 116, 118, 128, 129, 132, 140], "target_clon": 118, "targetmedia": [12, 19, 20, 35, 61], "task": [1, 10, 14, 29, 41, 54, 58, 76, 109, 132, 138], "taskbar": 134, "tasktrack": 113, "tbb": 76, "tcc": 76, "tcl": 76, "tcp": [22, 55, 68, 76], "tcpwrapper": 37, "tdb": 76, "team": [0, 1, 7, 8, 30, 35, 36, 37, 41, 64, 69], "technic": [2, 4, 36], "techniqu": [36, 37], "technologi": [21, 22, 25, 26, 27, 53, 76, 115, 118, 122, 129], "tee": [20, 35, 40, 41, 45, 47, 50, 53, 63, 67, 73, 74, 95, 113, 114, 115, 119, 121, 122, 125, 126, 129, 130, 140], "telem": 80, "telem_record": 105, "telem_ref": [41, 105], "telemctl": [41, 80], "telemetr": [1, 7, 8, 33, 42, 54, 64, 76, 102, 103, 106, 107], "telemetri": [1, 12, 19, 20, 35, 60, 80], "telemetryui": 41, "telempostd": [41, 80, 103, 104], "telemprobd": [41, 80, 102, 103, 104, 105], "telepathi": 76, "tell": [4, 20, 35, 51, 52, 54, 64, 73, 86, 87, 88, 95, 119], "temperatur": [4, 53, 76], "templat": [11, 14, 35, 38, 46, 54, 70, 76, 87, 88, 95], "temporari": [8, 30, 46, 63, 76], "temporarili": [20, 50, 53, 68, 129, 130], "tenanc": 13, "tenant": 122, "tencent": 108, "tend": [1, 46, 115], "tensor": [55, 76], "tensorflow": [17, 51, 55, 120], "tensorflow_ad": 51, "term": [3, 4, 26, 39, 54, 76, 99, 129, 140], "termin": [9, 10, 11, 14, 16, 19, 20, 22, 26, 27, 35, 41, 45, 46, 53, 55, 56, 59, 61, 66, 72, 76, 87, 108, 117, 122, 126, 127, 129, 130, 131, 133, 137], "tertiari": 76, "tesseract": 76, "test": [1, 2, 4, 12, 16, 29, 35, 39, 41, 46, 47, 48, 49, 54, 55, 60, 68, 76, 77, 116, 118, 119, 124, 131, 136, 138, 140], "test_telem": 41, "testdisk": 76, "tester": 76, "testi": 136, "testsuit": 76, "testx": 136, "tevent": 76, "tex": 76, "texinfo": 76, "texliv": 76, "texmak": 76, "text": [1, 8, 10, 11, 12, 19, 23, 35, 46, 55, 66, 69, 70, 72, 76, 84, 85, 104, 108, 113, 124, 138], "tf": [51, 131], "tftp_root_dir": 20, "tgt": 76, "than": [3, 4, 9, 14, 35, 39, 41, 47, 48, 51, 53, 56, 87, 98, 100, 104, 111, 112, 115, 116, 119, 127, 130, 131], "thank": 124, "the_silver_search": 76, "thei": [1, 3, 4, 7, 10, 11, 15, 30, 35, 36, 37, 39, 40, 41, 45, 48, 54, 56, 68, 71, 73, 88, 94, 95, 98, 100, 118, 122, 131, 135, 138, 139], "them": [1, 3, 4, 7, 8, 11, 20, 23, 26, 30, 34, 35, 38, 39, 41, 44, 46, 48, 56, 67, 68, 71, 76, 82, 95, 98, 100, 101, 104, 108, 113, 115, 119, 122, 131, 136, 138, 140], "theme": [67, 76], "themselv": [68, 140], "theori": 48, "therefor": [41, 112, 126, 130], "thermal": 76, "thermal_conf": 53, "thermal_daemon": 76, "thermald": 53, "thermalmonitor": 53, "thi": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 81, 84, 85, 86, 87, 88, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "thing": [1, 11, 18, 99, 110, 124], "think": 54, "thinkpad": 77, "thinkserv": 77, "third": [1, 3, 19, 37, 43, 76, 115], "thoroughli": 54, "those": [1, 11, 27, 31, 35, 44, 47, 48, 54, 67, 94, 95, 98, 112, 113, 114, 118, 122, 133, 138, 140], "though": [7, 71, 73, 131], "thought": 64, "thousand": [31, 113], "thread": [22, 30, 76], "threadspercor": 119, "threat": [1, 76, 125], "three": [3, 4, 11, 41, 51, 60, 64, 73, 74, 76, 101, 112], "threshold": [41, 53, 99, 101], "thrift": 76, "through": [0, 2, 3, 18, 20, 22, 33, 35, 36, 37, 38, 41, 47, 48, 50, 54, 74, 75, 76, 95, 96, 98, 99, 110, 114, 116, 117, 122, 127, 130, 132, 137, 139], "throughout": [37, 138], "throughput": 76, "thu": [27, 29, 88, 98, 113, 118, 124, 126, 132], "thumb": [19, 125, 126, 127], "thunar": 76, "thunderbird": 76, "ti": [40, 85, 114, 121], "ticket": 22, "tid": 104, "tidhead": 104, "tie": 39, "tier": 10, "tiff": 76, "tigervnc": [73, 76], "tight": 130, "tile": 76, "time": [0, 1, 8, 11, 12, 14, 20, 29, 33, 34, 35, 36, 37, 38, 40, 42, 44, 46, 47, 53, 57, 68, 70, 71, 73, 76, 95, 98, 99, 100, 101, 103, 104, 105, 109, 113, 115, 118, 119, 122, 126, 127, 131, 132, 133, 136, 139], "timedatectl": [72, 119], "timelimit": 119, "timeout": [20, 43, 46, 57, 100, 122, 126, 127, 131], "timer": [39, 53, 80, 83, 96, 98], "timestamp": [125, 129], "timesyncd": 72, "timezon": [72, 76], "tip": [3, 4, 119, 137], "titl": [3, 4, 35, 43, 88, 126], "tk": 76, "tl": [1, 76], "tlp": 76, "tlsvnc": 73, "tm": [41, 83], "tm_create_record": [41, 105], "tm_free_record": [41, 105], "tm_handl": 41, "tm_is_opted_in": 105, "tm_send_record": [41, 105], "tm_set_config_fil": 105, "tm_set_payload": [41, 105], "tmp": [20, 130, 131, 137], "tmux": 76, "toctre": 3, "todo": 76, "togeth": [35, 39, 132], "token": [34, 43, 122, 139], "tokyocabinet": 76, "toler": [54, 122], "toml": 89, "tone": 4, "too": [1, 38], "tool": [0, 1, 3, 8, 11, 12, 13, 21, 22, 25, 27, 29, 30, 31, 33, 35, 36, 39, 40, 41, 53, 54, 55, 61, 62, 64, 66, 67, 68, 73, 75, 76, 84, 85, 87, 94, 98, 111, 118, 119, 122, 124, 126, 131, 136, 137], "toolchain": [35, 49, 76], "toolkit": [76, 120, 131], "top": [3, 7, 10, 17, 22, 26, 27, 28, 29, 30, 32, 39, 40, 46, 74, 76, 87, 98, 122, 131, 138], "topic": [3, 4, 112], "topologi": [20, 76], "total": [50, 52, 61, 101, 112], "totem": 76, "touch": [20, 41, 95, 116, 126, 132], "toward": [4, 36, 112], "tpm": 76, "tpm2": [43, 76], "tr": 76, "trace": [8, 76], "traceback": 51, "tracerout": 76, "track": [35, 39, 41, 46, 48, 49, 76, 90, 98, 99, 100], "tracker": [76, 140], "trade": 36, "trademark": [1, 3, 4, 21, 22, 25, 26, 27, 32, 36, 37, 53, 77, 111, 115, 118, 129, 131, 138], "tradeoff": 53, "tradit": [73, 123], "traffic": [0, 20, 21, 55, 67, 68, 76, 122, 132], "trail": 3, "train": [1, 136], "trainer": 76, "traini": 136, "trainx": 136, "tran": 9, "transcod": 76, "transfer": [69, 76], "transform": 76, "transient": 60, "transit": 35, "translat": 76, "transmithashpolici": 69, "transpar": [36, 37, 54, 116], "transparent_hugepag": 50, "transport": 76, "travel": 76, "travers": 76, "treat": [3, 54, 81, 83], "tree": [0, 3, 35, 40, 46, 76, 88, 98, 115, 129, 131, 137, 140], "tri": [1, 29, 41], "trigger": [48, 49, 52, 76, 80, 98, 99, 129, 137, 139], "trim": 62, "trivial": 140, "troubleshoot": [53, 76, 112, 119], "true": [10, 12, 19, 20, 35, 40, 41, 45, 51, 52, 72, 73, 81, 88, 98, 104, 119, 122, 131, 132, 139], "truli": 73, "trurl": 76, "trust": [1, 44, 47, 48, 65, 68, 76, 88, 115, 119], "trustworthi": [65, 84], "try": [4, 26, 29, 30, 35, 36, 51, 64, 71, 74, 87, 98, 99, 115, 119, 122, 125, 129, 133, 137], "ts140": 77, "tsc": [20, 43], "tsn": 76, "tss": 76, "tty0": 43, "tty1": 129, "ttys0": 43, "tu4uabtrdtftixhx2rimssguofdisvll6w5ttzbgmhdoei": 12, "tue": 62, "tui": [19, 76], "tune": [36, 83], "tunnel": [46, 76], "turbo": 76, "turboboost": 53, "turkish": 76, "turn": [24, 76, 94], "tutori": [0, 2, 3, 10, 11, 15, 34, 39, 43, 58, 79, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "tux": 76, "tweak": [36, 46, 83, 119], "twice": [4, 136], "two": [0, 3, 4, 8, 19, 20, 30, 35, 39, 40, 41, 49, 56, 60, 61, 67, 73, 76, 78, 82, 87, 94, 98, 101, 108, 109, 112, 115, 118, 119, 129, 132, 136, 137, 140], "txpiuqc6fuh8zlguzupwj4": 119, "txpower": 74, "txt": [41, 131], "type": [3, 7, 8, 9, 10, 11, 12, 13, 14, 19, 20, 21, 24, 25, 26, 27, 28, 35, 36, 41, 43, 48, 51, 54, 60, 61, 66, 73, 74, 76, 79, 83, 98, 99, 100, 112, 113, 119, 124, 126, 127, 129, 130, 132, 133, 139], "typeset": 76, "typic": [0, 3, 4, 7, 27, 29, 33, 36, 44, 46, 53, 71, 76, 116, 119], "typo": 2, "tzdata": 76, "u": [1, 7, 9, 10, 11, 12, 14, 17, 19, 20, 35, 46, 64, 73, 95, 98, 109, 112, 122, 126, 129, 135, 140], "ubiquit": 76, "ubuntu": [22, 48, 73, 76, 126], "ubyt": 136, "ucd": [80, 81], "ucod": 43, "ud5": 77, "udevadm": 139, "udisk": 9, "udisks2": 76, "udp": [68, 82], "udp_rmem_min": 82, "udp_wmem_min": 82, "uefi": [1, 7, 8, 22, 24, 25, 28, 43, 47, 48, 53, 76, 126], "uefi_bio": 22, "ugam76u8bdr6yjc": 10, "uget": 76, "uhd": 111, "uhttpmock": 76, "ui": [41, 51, 55, 136], "uint32_t": [41, 105], "uki": 43, "ule": 52, "ulimit": 63, "ultim": 54, "umask": 81, "umount": [9, 59, 126, 127], "unabl": [0, 23, 29, 30, 38, 44, 52, 98], "unalloc": [7, 126, 127], "unam": [26, 46, 47, 48, 129, 137, 140], "unattend": 19, "unauthor": 124, "unavail": 29, "unbind": 67, "unbound": 67, "unbundl": 76, "uncheck": [7, 25, 28], "unclear": 4, "uncom": [73, 95], "uncompress": [13, 14, 22, 67], "uncordon": 34, "uncorrupt": [7, 8], "undefin": 41, "under": [3, 6, 7, 8, 11, 12, 13, 14, 19, 21, 24, 26, 27, 28, 36, 38, 40, 47, 48, 53, 55, 73, 76, 81, 88, 95, 98, 101, 113, 115, 119, 127, 129, 130, 136, 137, 139], "underli": [35, 41, 51, 69, 81, 122], "underlin": 3, "underneath": [35, 47, 48], "underscor": [7, 8], "understand": [1, 3, 4, 30, 34, 52, 53, 54, 55, 63, 85, 94, 98, 116, 122, 130], "understood": [34, 82, 109], "undionli": 20, "undrain": 123, "unecrypt": 131, "unexpect": 98, "unhandl": 41, "unicod": 76, "unifi": [1, 37, 76, 84], "uninform": 4, "uninstal": 76, "uninterrupt": 129, "uniqu": [1, 3, 4, 11, 13, 35, 38, 41, 51, 54, 73, 84, 95, 98, 116], "unison": 76, "unistd": 119, "unit": [3, 7, 29, 54, 63, 64, 70, 73, 76, 81, 83, 95, 96, 97, 110, 122, 126, 129, 130, 132, 133, 140], "univers": [2, 76, 139], "unix": [1, 41, 76, 122, 129], "unix2": [53, 76], "unknown": [12, 39, 101, 119, 122], "unless": [4, 19, 35, 68, 73, 98, 123], "unlik": 39, "unlink": 129, "unmaintain": 115, "unmanag": [66, 95], "unmask": [29, 81], "unmount": [9, 59, 127], "unmung": 119, "unnecessari": [4, 37], "unneed": 37, "unpack": [40, 76], "unparallel": 4, "unport": [81, 108, 109], "unprivileg": [30, 46, 114], "unset": [29, 98], "unsign": 47, "unstructur": 41, "unsupport": 1, "untain": 122, "untar": 98, "until": [1, 8, 12, 30, 41, 69, 81, 98, 123, 125, 126, 129, 131, 138], "untouch": 1, "untrack": 52, "untrust": 122, "unusu": 76, "unwant": 1, "unxz": [30, 56], "unzip": [23, 76], "up": [1, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 23, 24, 27, 29, 30, 34, 36, 39, 51, 54, 56, 57, 61, 64, 69, 70, 72, 74, 75, 76, 81, 84, 98, 100, 113, 115, 116, 123, 124, 126, 127, 128, 129, 131, 132, 134], "upcom": 1, "updat": [2, 3, 11, 12, 14, 19, 20, 26, 29, 31, 34, 36, 38, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 59, 62, 71, 74, 76, 80, 81, 87, 91, 92, 94, 95, 113, 115, 116, 119, 120, 121, 122, 124, 126, 127, 130, 132, 133, 135, 136, 137, 140], "update_config": 74, "update_efi_var": 126, "upgrad": [1, 35, 47, 48, 76, 123, 129, 137, 140], "upload": [13, 40], "upon": [0, 7, 8, 36, 55, 67, 73, 76, 93, 111, 118], "upow": [64, 76], "upper": [13, 15, 25, 51, 63, 76, 81], "upstream": [0, 1, 20, 30, 36, 37, 38, 39, 40, 42, 44, 46, 47, 48, 49, 54, 58, 85, 87, 88, 90, 98, 101, 115, 120], "upstream_bundles_url": 35, "upstreamvers": 35, "uptim": 119, "urandom": 119, "urgent": 1, "url": [3, 7, 8, 11, 12, 20, 29, 30, 35, 39, 40, 46, 47, 48, 51, 52, 71, 76, 85, 87, 90, 91, 98, 104, 109, 125, 131, 135, 139], "urllib": 131, "urllib3": [39, 131], "urlpars": 131, "urlretriev": 131, "urn": 11, "us": [2, 3, 7, 8, 10, 11, 13, 15, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 62, 63, 64, 65, 68, 69, 70, 71, 72, 75, 76, 78, 81, 82, 84, 85, 86, 87, 88, 90, 91, 92, 95, 98, 100, 101, 102, 103, 104, 105, 106, 107, 109, 111, 112, 113, 114, 115, 116, 117, 119, 121, 123, 125, 128, 129, 131, 132, 134, 135, 136, 137, 138, 139, 140], "usabl": [76, 129, 139], "usag": [3, 35, 37, 41, 74, 76, 84, 116, 131], "usb": [7, 8, 16, 18, 22, 59, 75, 125, 126, 127, 139], "usbredir": 76, "use_bootstrap_contain": 71, "usedn": 119, "usepam": 95, "user": [0, 1, 2, 3, 4, 10, 11, 12, 13, 15, 19, 20, 21, 25, 26, 27, 29, 30, 35, 36, 37, 40, 41, 42, 46, 47, 48, 53, 54, 60, 62, 66, 68, 70, 71, 76, 83, 84, 85, 92, 93, 94, 96, 98, 99, 101, 108, 109, 110, 111, 113, 114, 115, 117, 119, 120, 122, 124, 125, 129, 131, 132, 133, 135, 138, 140], "useradd": 58, "userbucket": 14, "userdata": 109, "userid": [25, 58, 124], "usermod": [25, 53, 58], "usernam": [10, 11, 12, 13, 20, 27, 30, 37, 46, 73, 81, 119, 131, 137, 138], "userspac": [51, 76, 112], "usr": [0, 11, 20, 25, 26, 30, 33, 34, 35, 36, 38, 39, 40, 41, 43, 45, 47, 48, 51, 59, 62, 64, 67, 70, 73, 84, 94, 95, 96, 97, 98, 99, 100, 101, 104, 106, 107, 108, 109, 110, 113, 115, 119, 122, 124, 125, 129, 130, 131, 132, 133, 136, 137, 140], "usr1": 99, "usr2": 132, "ust": 76, "usual": [33, 53, 71, 76, 98, 104, 110, 115, 119], "utc": [7, 8, 76, 119], "utf": [12, 19, 20, 35, 76, 113], "utf8": 60, "utf8_unicode_ci": 124, "utf8proc": 76, "util": [4, 8, 11, 30, 33, 35, 39, 41, 51, 53, 55, 58, 60, 61, 68, 69, 76, 82, 83, 93, 105, 118, 127, 129, 130, 140], "utilslib": 30, "utilti": 76, "uuid": [43, 66, 104, 122, 126], "uwsgi": 76, "uxplai": 76, "v": [0, 4, 18, 22, 26, 27, 30, 32, 46, 48, 51, 52, 56, 76, 78, 84, 85, 98, 102, 106, 107, 109, 115, 119, 129, 133, 140], "v1": [30, 34, 52, 122], "v1alpha1": 34, "v1beta1": 34, "v2": [4, 41], "v3": [67, 77], "v35_64": 115, "v4": [16, 46, 77], "v4l": 76, "va": 76, "vala": 76, "valgrind": 76, "valid": [7, 8, 25, 26, 30, 39, 41, 42, 43, 48, 49, 53, 54, 56, 76, 84, 85, 87, 88, 89, 98, 99, 101, 104, 108, 111, 119, 123, 130, 135, 139], "valkei": 76, "valu": [0, 1, 7, 8, 20, 24, 25, 27, 35, 36, 38, 41, 46, 51, 53, 54, 56, 57, 63, 66, 67, 69, 70, 73, 76, 81, 82, 83, 87, 89, 95, 98, 101, 104, 113, 118, 119, 122, 124, 126, 127, 132, 133, 136, 139], "valuabl": [1, 54], "vaniti": 76, "var": [20, 35, 38, 40, 52, 54, 59, 84, 95, 98, 122, 124, 125, 129, 138], "vari": [7, 8, 9, 53, 83], "variabl": [3, 4, 11, 20, 30, 33, 36, 41, 43, 46, 48, 62, 66, 67, 70, 74, 81, 89, 118, 122, 124, 126, 130, 131, 140], "variant": [3, 46, 47, 48, 129, 137, 140], "variat": [17, 35, 115], "varieti": [36, 122, 138], "variou": [0, 35, 64, 76, 81, 85, 87, 89, 99, 122], "vasprintf": 41, "vbox": 26, "vboxguest": 26, "vboxsvga": 26, "vboxvideo": 26, "vbx_gas_6": 26, "vcd": 76, "vda": 61, "vda1": 61, "vda2": 61, "vda3": 61, "vdagent": 76, "vdi": 26, "ve": [24, 34, 114, 116, 124], "vec": 118, "vector": [3, 36, 37, 76], "vendor": [9, 11, 47, 48, 54, 67, 115, 131, 132], "verbos": [46, 83, 84, 98, 125], "veri": [1, 29, 35, 39, 54, 67], "verif": [35, 37, 39, 47, 48, 56, 65, 84, 98, 122, 129, 137], "verifi": [2, 4, 11, 14, 19, 21, 26, 28, 33, 34, 35, 38, 40, 41, 42, 46, 48, 51, 52, 61, 64, 65, 66, 67, 68, 70, 73, 76, 84, 98, 111, 114, 116, 118, 121, 122, 124, 125, 130, 132, 133, 135, 138], "versa": 73, "versatil": 76, "version": [0, 1, 3, 9, 10, 11, 12, 14, 16, 19, 20, 21, 22, 24, 26, 27, 28, 30, 34, 37, 40, 41, 45, 47, 48, 52, 55, 56, 59, 61, 65, 66, 71, 76, 78, 80, 81, 85, 87, 88, 90, 94, 95, 98, 102, 105, 106, 107, 109, 113, 115, 116, 119, 120, 121, 122, 123, 124, 125, 127, 129, 130, 133, 135, 137, 138, 140], "version_id": [51, 59], "versions_path": 35, "versionstamp": 40, "versionurl": [35, 40, 98], "vertic": 7, "vfat": [1, 7, 8, 19, 20, 35, 61, 109, 126, 127], "vfio": 67, "vga": 22, "vhd": [21, 56, 78], "vi": [19, 76, 95], "via": [12, 20, 35, 39, 41, 51, 53, 55, 70, 74, 76, 87, 116, 117, 122, 134], "vice": 73, "video": [76, 129], "view": [3, 4, 7, 10, 13, 24, 28, 30, 35, 36, 41, 46, 50, 53, 58, 73, 76, 117, 119, 124, 129], "viewabl": 41, "viewer": [22, 76], "vifm": 76, "vim": [19, 20, 76, 98], "vinagr": 76, "virglrender": 76, "virt": [18, 22, 39, 55, 76, 114, 121], "virtio": 22, "virtual": [0, 13, 14, 21, 23, 27, 28, 32, 35, 36, 39, 42, 55, 56, 69, 76, 78, 116, 119, 122, 124, 129, 137], "virtualbox": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "virtualmachin": 11, "virus": 76, "visibl": [33, 126], "vision": [55, 76, 131], "visit": [1, 7, 8, 10, 11, 15, 24, 28, 30, 54, 62, 71, 76, 124, 126, 136, 138], "visual": [3, 41, 53, 76], "visudo": 119, "vlc": [20, 76], "vm": [12, 18, 22, 30, 35, 36, 39, 54, 56, 76, 78, 82, 109, 119, 121, 137], "vm1": 25, "vmdk": [56, 78], "vmn": 22, "vmovdqu": 118, "vmss": 11, "vmware": [18, 56, 76, 78, 120], "vmx": [27, 137], "vnc": [42, 70, 76], "vncauth": 73, "vncpasswd": 73, "vncserver": 73, "vncviewer": 73, "vnn": 115, "voic": 76, "void": [105, 118], "voip": 76, "volatil": [76, 110], "voltag": [53, 76], "volum": [25, 36, 52, 76, 127, 140], "volunt": 76, "voxel": 76, "vpaddd": 118, "vpddecod": 30, "vpn": [46, 76], "vsprintf": 41, "vswitch": 76, "vt": [21, 22, 25, 26, 27, 129], "vte": 76, "vulkan": 76, "vulner": [37, 54], "vvv": 119, "vzt": 76, "w": [63, 98, 119], "w5ff": 52, "wa": [0, 1, 4, 8, 13, 14, 15, 19, 22, 27, 29, 34, 35, 38, 40, 41, 45, 51, 61, 64, 65, 66, 68, 73, 76, 87, 94, 98, 109, 119, 125, 126, 127, 129, 130, 131, 136, 137], "wacom": 76, "waffl": 76, "wai": [2, 3, 4, 22, 30, 36, 41, 53, 54, 65, 71, 76, 94, 95, 98, 109, 112, 118, 119, 124, 126, 131, 138], "wait": [12, 14, 15, 34, 36, 37, 39, 41, 81, 98, 131, 140], "wan": 20, "wan_interfac": 20, "want": [0, 4, 7, 8, 9, 10, 11, 12, 14, 19, 20, 26, 27, 28, 30, 35, 40, 41, 43, 55, 58, 60, 61, 73, 100, 113, 116, 117, 122, 125, 126, 127, 129, 131], "wantedbi": [73, 132], "warehous": 11, "warn": [4, 7, 8, 10, 11, 23, 39, 52, 53, 56, 61, 73, 98, 116, 122, 125, 140], "wast": [29, 53], "watch": [39, 99, 100], "watcher": 49, "wave": 76, "wavpack": 76, "wayland": [1, 76, 117, 129], "waylanden": 129, "waypip": 76, "wdev": 74, "we": [0, 1, 2, 3, 4, 7, 8, 10, 11, 12, 14, 15, 20, 26, 27, 28, 29, 30, 31, 35, 41, 47, 48, 49, 50, 51, 55, 56, 61, 64, 65, 70, 73, 74, 112, 113, 114, 116, 117, 118, 120, 123, 124, 125, 126, 127, 129, 131, 133, 137, 138, 140], "weak": 99, "weaken": 4, "weather": 76, "web": [0, 1, 3, 11, 12, 13, 14, 18, 38, 41, 49, 54, 55, 76, 87, 120, 131, 132, 133, 136, 139], "web_root_dir": 20, "webapp": 11, "webauth": 139, "webcam": 76, "webkitgtk": 76, "webproxi": 76, "webserv": 54, "websit": [3, 10, 11, 12, 15, 17, 21, 30, 115, 124, 129, 130, 136, 138, 139], "webster": 2, "wed": 119, "weechat": 76, "week": [0, 1], "weekli": 14, "weight": [36, 76], "welcom": [3, 11, 20, 116, 138], "well": [0, 1, 3, 11, 14, 17, 19, 35, 36, 37, 39, 40, 41, 46, 54, 68, 85, 95, 98, 100, 105, 108, 129], "were": [1, 4, 30, 34, 35, 39, 40, 48, 52, 73, 95, 98, 99, 129, 137], "west": [10, 14], "westmer": 36, "weston": 76, "westu": 11, "wget": [51, 76, 125, 129, 130, 140], "wget_ad": 51, "what": [3, 4, 10, 11, 39, 41, 48, 54, 64, 83, 95, 98, 104, 110, 115, 119, 120, 127, 131, 132], "whatev": 40, "whatprovid": 62, "wheel": 74, "when": [1, 3, 4, 7, 8, 9, 10, 11, 14, 18, 19, 20, 22, 23, 25, 26, 27, 29, 32, 33, 35, 36, 37, 39, 40, 41, 43, 47, 48, 53, 54, 61, 64, 65, 67, 68, 71, 72, 73, 76, 81, 87, 92, 94, 95, 96, 97, 98, 100, 101, 105, 106, 107, 109, 110, 112, 113, 117, 118, 119, 122, 123, 124, 129, 130, 132, 137, 138, 139, 140], "whenev": [0, 4, 33, 36, 87], "where": [1, 3, 4, 8, 9, 11, 15, 19, 20, 26, 27, 30, 33, 35, 39, 41, 45, 48, 52, 54, 56, 61, 67, 73, 76, 87, 91, 98, 113, 118, 129, 130, 131, 137], "wherea": [1, 35, 95], "wherev": 95, "whether": [7, 8, 39, 41, 53, 54, 81, 83, 95, 98, 114, 122], "which": [0, 3, 4, 7, 8, 11, 18, 19, 20, 21, 22, 26, 27, 30, 31, 34, 35, 36, 37, 38, 39, 41, 44, 46, 47, 48, 49, 50, 51, 53, 54, 58, 60, 62, 64, 67, 68, 70, 71, 73, 74, 76, 81, 84, 85, 95, 98, 104, 110, 111, 112, 113, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 129, 130, 131, 132, 133, 134, 135, 137, 140], "while": [0, 1, 8, 9, 31, 37, 39, 41, 46, 51, 53, 54, 58, 74, 76, 98, 101, 112, 122, 123, 129, 133, 140], "white": 39, "whitelist": [39, 64, 95, 98, 99, 100], "whitespac": [3, 98], "who": [4, 35, 39, 40, 73, 94, 111, 112, 132, 138, 140], "whole": [36, 54, 136], "whom": 4, "why": [3, 64, 76, 129, 130, 132], "wi": [42, 95], "wide": [36, 37, 76], "widget": [4, 76], "width": [19, 87], "wifi": [8, 74, 76, 77, 115], "wiki": [3, 4, 30, 48, 115, 127], "wikipedia": [3, 136], "wildcard": [69, 82], "window": [1, 8, 9, 10, 11, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 41, 43, 45, 51, 59, 61, 73, 76, 104, 126, 128, 135], "wine": 76, "winzip": 21, "wip": 76, "wire": [4, 7, 8, 25, 66], "wireguard": 46, "wireless": [1, 8, 66, 76, 115], "wireshark": 76, "wisdom": 118, "wish": [4, 7, 8, 21, 26, 30, 34, 35, 41, 45, 95, 99, 111, 133, 140], "within": [3, 11, 15, 22, 35, 37, 40, 41, 76, 100, 117, 124, 127, 131, 132, 136], "without": [1, 3, 4, 7, 11, 20, 29, 30, 33, 34, 38, 39, 40, 41, 51, 53, 57, 70, 74, 76, 82, 94, 95, 98, 119, 122, 124, 129, 140], "wizard": [21, 25, 27], "wlp1s0": 74, "wlroot": 76, "woff2": 76, "won": [1, 126, 129], "word": [3, 27, 36, 41, 53, 54, 98, 113, 115], "wordi": 3, "wordpress": [17, 120, 124], "wordpressus": [124, 138], "work": [0, 1, 3, 5, 6, 12, 19, 20, 22, 27, 28, 34, 37, 41, 46, 48, 52, 54, 55, 59, 62, 65, 67, 71, 73, 75, 76, 85, 90, 98, 100, 112, 115, 116, 119, 122, 124, 126, 129, 131, 132, 140], "workaround": 127, "worker": [34, 87, 132], "worker1": 119, "worker2": 119, "worker3": 119, "worker4": 119, "workflow": [35, 41, 46, 75, 76, 94], "workload": [53, 54, 76, 116, 122], "workspac": [30, 35, 40, 46, 85, 86, 87, 88, 131], "workstat": [18, 28, 42, 56, 58, 75, 78, 120], "world": [41, 138], "world_rank": 119, "world_siz": 119, "worri": [29, 94], "worth": 115, "would": [1, 4, 11, 26, 34, 35, 54, 73, 82, 98, 119], "wp": [124, 138], "wp_": 138, "wpa": [74, 76], "wpa2": 74, "wpa_cli": 74, "wpa_passphras": 74, "wpa_suppli": 74, "wpa_supplic": 76, "wpad": 29, "wrap": [8, 98], "wrapper": 76, "write": [2, 3, 36, 38, 41, 68, 76, 81, 90, 98, 131], "written": [2, 3, 38, 76, 81, 88, 136, 138], "wrong": 115, "wsgi": 76, "wslu": 76, "wth": 12, "www": [0, 20, 29, 35, 40, 46, 51, 53, 59, 82, 87, 124, 125, 129, 138, 139], "wxwidget": 76, "wysiwym": 76, "x": [1, 3, 8, 11, 16, 20, 24, 26, 27, 28, 30, 35, 40, 43, 46, 70, 73, 76, 77, 84, 98, 104, 118, 129, 130, 136, 137], "x1": 77, "x11": [76, 95, 117, 129], "x11displayoffset": 70, "x11forward": [70, 95], "x11uselocalhost": 70, "x11vnc": 76, "x197": 122, "x299": 77, "x3": 122, "x509": [84, 122], "x64": 43, "x86": [53, 60, 76, 111, 126], "x86_64": [14, 22, 25, 27, 41, 46, 52, 62, 67, 117, 129, 130], "xapian": 76, "xarg": [51, 76], "xattr": 98, "xauth": 73, "xauthor": 73, "xbootldr": 43, "xcb": 76, "xconfig": 46, "xdg": [76, 117], "xdmcp": [73, 76], "xdot": 76, "xe": 140, "xeon": [77, 83, 111], "xf": [7, 8, 43, 76], "xf86": 76, "xfce": [1, 76], "xfce4": 76, "xfconf": 76, "xfree86": [129, 130], "xfsprog": 76, "xjf": 20, "xkbcomp": 76, "xkeyboard": 76, "xlib": 76, "xml": [53, 76, 113, 131], "xmlb": 76, "xmlsec1": 76, "xmpp": 76, "xnvc": 73, "xorg": [76, 129], "xorgproto": 76, "xorriso": 76, "xp": [76, 77], "xpdf": 76, "xpra": 76, "xqhj": 52, "xr": 11, "xrandr": 76, "xrdp": 76, "xscreensav": 76, "xsl": [76, 113], "xss": 76, "xstartup": 73, "xtabl": 76, "xterm": [76, 98], "xtightvncview": 73, "xtran": 76, "xvf": [46, 47, 48, 115, 130, 140], "xvnc": 73, "xwayland": 76, "xx": [47, 48, 74, 129, 137, 140], "xxxx": [111, 137], "xyz": 1, "xz": [20, 22, 23, 26, 28, 30, 35, 46, 52, 56, 65, 76, 78], "xzvf": [124, 138], "y": [3, 11, 73, 98, 118, 124], "yajl": 76, "yakuak": 76, "yaml": [7, 8, 12, 14, 19, 35, 76, 81, 131], "yann": 136, "yarn": 113, "yasm": 76, "ye": [0, 1, 7, 8, 10, 11, 20, 25, 34, 43, 48, 70, 73, 81, 95, 98, 113, 115, 119, 135], "year": 1, "yelp": 76, "yet": [1, 34, 35, 36, 37, 40, 51, 102, 115], "yield": 88, "yml": 131, "ymm0": 118, "you": [1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 37, 39, 40, 41, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 95, 98, 99, 100, 101, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 131, 132, 133, 134, 136, 137, 139, 140], "your": [1, 2, 3, 4, 7, 9, 13, 15, 16, 19, 20, 23, 24, 25, 26, 27, 29, 30, 34, 37, 39, 40, 43, 44, 46, 47, 49, 53, 55, 56, 58, 61, 62, 64, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 87, 88, 95, 98, 99, 100, 101, 112, 114, 116, 117, 118, 119, 121, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140], "your_websit": 138, "yq": 76, "yubico": 139, "yubikei": 120, "yum": [31, 35, 39, 58, 85], "yum_conf": 35, "yy": [47, 48, 129, 137, 140], "z": [8, 76, 98, 101, 122], "z170x": 77, "zabbix": 76, "zathura": 76, "zdb": 140, "zed": 140, "zeniti": 76, "zero": [35, 46, 81, 85, 86, 87, 88, 89, 90, 91, 92, 98, 102, 103, 105, 106, 107, 108, 109], "zf": 140, "zfcopipu": 113, "zgenhostid": 140, "zh": 76, "zhack": 140, "zinject": 140, "zip": [21, 56, 62, 76, 78], "zjbd5lavtma8rmles1apq7yuizq3ltmmrb7kqzcqjg0qkfmoiivixacacfe1stlmf4vig4bg": 119, "zlib": 76, "zmq": 76, "znc": 76, "zone": [11, 68, 72], "zpool": 140, "zsh": 76, "zstd": [62, 76], "zstreamdump": 140, "ztest": 140, "zvol_wait": 140, "zx2c4": 46, "zxing": 76, "zzzz": [47, 48, 129, 137, 140], "\u4e0b\u4e00\u6b65": 15, "\u4e3b\u673a": 15, "\u516c\u7f51ip": 15, "\u521b\u5efa": 15, "\u521b\u5efa\u4e00\u4e2a": 15, "\u5220\u9664": 15, "\u57fa\u7840\u7f51\u7edc": 15, "\u63d0\u4ea4": 15, "\u66f4\u591a\u64cd\u4f5c": 15, "\u7533\u8bf7": 15, "\u7cfb\u7edf": 15, "\u7ed1\u5b9a\u516c\u7f51ipv4": 15, "\u7ee7\u7eed\u7533\u8bf7\u516c\u7f51ip": 15, "\u7f51\u5361": 15, "\u7f51\u7edc\u4e0ecdn": 15, "\u8ba1\u7b97": 15}, "titles": ["FAQ", "About", "Contribute", "Structure and formatting", "Writing guide", "<no title>", "<no title>", "Install Clear Linux* OS from the live desktop", "Install Clear Linux* OS from the live server", "Create a bootable USB drive using Etcher*", "Clear Linux* OS on Amazon Web Services*", "Clear Linux* OS on Microsoft* Azure*", "Clear Linux* OS on DigitalOcean*", "Clear Linux* OS on Google Cloud Platform*", "Import Clear Linux Image and Launch Instance on AWS", "Clear Linux* OS on QingCloud*", "Check Processor Compatibility", "Clear Linux* OS container images", "Get started", "Install using clr-installer and a configuration file", "Install Clear Linux OS Over the Network with iPXE", "Clear Linux* OS on Microsoft Hyper-V*", "Clear Linux* OS on KVM", "Clear Linux* OS on Parallels* Desktop for Mac*", "Clear Linux* OS on Proxmox* Virtual Environment", "Clear Linux* OS using virt-manager", "Clear Linux* OS on VirtualBox*", "Clear Linux* OS on VMware* Workstation Player", "Clear Linux* OS on VMware* ESXi", "Autoproxy", "autospec", "Bundles", "Kernels", "Debug system", "Kubernetes* migration", "mixer", "Performance", "OS Security", "Stateless", "swupd", "swupd 3rd-party", "Telemetrics", "Guides", "Change Kernel Boot", "Firmware", "Capture Kernel Boot Messages in the Journal", "Kernel development", "Add kernel modules manually", "Add kernel modules with DKMS", "Architect the life-cycle of Clear Linux* OS", "Configure Huge Pages", "Modify a Clear Linux OS-based container image", "Build a new Clear Linux OS-based container image", "CPU Power and Performance", "Deploy at Scale", "Developer Workstation", "Download, verify, and decompress a Clear Linux* OS image", "Enable systemd-boot Menu", "Create and enable a new user space", "Fix a broken installation", "Modify hostname", "Increase Virtual Disk Size of an Image", "Query package info from upstream repository", "Resource limits", "Restart system services after an OS update", "Validate signatures", "Assign a static IP address", "Use DPDK to send packets between platforms", "Firewall", "Combine multiple interfaces with network bonding", "Enable and configure SSH service", "Proxy Configuration", "Set system time", "Remote-desktop to a host using VNC", "Configure Wi-Fi", "Clear Linux* Project Documentation", "Available bundles", "Compatible Hardware", "Clear Linux* OS image types", "Reference", "Man pages", "cloud-config", "clr-power-tweaks.conf", "clr_power", "clrtrust", "mixer", "mixer.add-rpms", "mixer.build", "mixer.bundle", "mixer.config", "mixer.init", "mixer.repo", "mixer.versions", "os-core", "OS Format", "stateless", "swupd-update.service", "swupd-update.timer", "swupd", "tallow", "tallow.conf", "tallow.patterns", "telem-record-gen", "telemctl", "telemetrics.conf", "telemetry", "telempostd", "telemprobd", "ucd-data-fetch", "ucd", "update-triggers.target", "Recommended minimum system requirements", "Tutorial difficulty ratings", "Apache* Hadoop*", "Migrate Clear Containers to Kata Containers*", "Broadcom* Drivers", "Docker*", "Flatpak*", "Function Multi-Versioning", "HPC Cluster", "Tutorials", "Kata Containers*", "Kubernetes*", "Kubernetes* Best Practices", "LAMP Web Server", "Mirror Upstream Clear Linux OS Update Server", "Dual-boot Clear Linux* OS with Any GRUB-based Linux* Distro", "Dual-boot Clear Linux* OS and Windows* 10 OS", "Multi-boot Clear Linux* OS with other operating systems", "NVIDIA* Drivers", "NVIDIA* CUDA Toolkit", "OpenFaaS*", "PHP and PHP-FPM", "Redis*", "Samba* as a client", "Samba Server", "TensorFlow* machine learning", "VMware* Workstation Pro", "WordPress* Server", "YubiKey* Support", "OpenZFS*"], "titleterms": {"": [1, 28], "0": 11, "1": [7, 8, 16, 19, 30, 34, 35, 39, 51, 56, 61, 73, 77, 78, 119, 126, 127, 133], "10": 127, "15": 34, "17": 34, "18": 34, "19": 34, "2": [11, 16, 19, 30, 35, 39, 51, 56, 61, 73, 78, 119, 126, 127, 133], "3": [30, 35, 39, 51, 73], "3rd": [40, 98], "4": [30, 35, 51], "5": [30, 35], "6": 35, "7": 35, "A": [36, 67, 94, 95], "Be": 4, "For": 8, "In": 3, "No": 129, "One": 126, "The": [37, 41], "about": 1, "accept": 73, "access": [22, 74, 119, 135], "account": 11, "action": [88, 89, 91, 110], "activ": [4, 41], "ad": 30, "add": [0, 8, 12, 14, 15, 20, 40, 47, 48, 51, 52, 58, 84, 86, 98, 122, 127], "addit": [7, 8, 26, 38, 44, 116, 129, 130], "address": [1, 66, 74], "administr": [1, 95, 103], "adopt": 54, "advanc": [7, 8, 9, 35, 126, 127], "after": [64, 127], "aggress": 36, "agil": 54, "alias": [47, 48], "all": [62, 119], "allow": 64, "alreadi": [47, 48], "also": [32, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 126], "altern": [45, 127, 129], "amazon": 10, "ami": [10, 14], "an": [14, 15, 16, 30, 35, 47, 48, 51, 54, 61, 64, 73, 74, 96, 116, 119], "ani": 126, "anoth": [0, 127], "apach": [113, 124], "api": 41, "app": [40, 73, 117], "appendix": 67, "appli": 15, "applic": [17, 51, 54, 67, 71], "approach": [0, 36], "ar": [0, 1], "architect": 49, "architectur": [41, 93, 95], "archiv": 120, "area": 38, "around": 1, "assign": [7, 8, 66, 74], "associ": 74, "attack": 37, "audienc": 1, "authent": 73, "autom": 37, "automat": [8, 39, 73, 122], "autoproxi": 29, "autospec": [30, 71], "autoupd": 98, "avail": [0, 47, 48, 76], "avoid": 4, "aw": 14, "aws_cli": 14, "azur": 11, "b": 67, "b43": 115, "b43legaci": 115, "backend": 41, "background": [33, 34, 51, 122, 131, 132, 140], "backup": 54, "bare": [19, 32, 54, 118], "base": [17, 51, 52, 74, 93, 126, 138], "basic": [10, 35, 64, 116], "befor": [8, 138], "begin": 138, "benchmark": 36, "best": 123, "between": 67, "binari": 62, "bind": 67, "blank": [27, 129], "block": 3, "bond": 69, "boost": 53, "boot": [7, 8, 27, 28, 36, 43, 45, 46, 47, 48, 57, 59, 126, 127, 128, 129, 140], "bootabl": [9, 19], "bootcmd": 81, "brcmfmac": 115, "brcmsmac": 115, "brief": 4, "bright": 129, "broadcom": 115, "broken": 59, "bucket": 14, "bug": [82, 83, 84, 99, 101], "build": [12, 30, 35, 36, 46, 47, 48, 51, 52, 67, 87], "builder": 35, "built": [12, 14], "bullet": 3, "bump": 35, "bundl": [7, 8, 31, 35, 39, 40, 51, 52, 58, 76, 88, 98, 116, 124, 133, 140], "burn": 9, "c": [53, 105], "ca": 84, "cadenc": 1, "can": [0, 95, 119], "candid": 118, "capit": 4, "captur": 45, "caution": 3, "cgit": 51, "chain": 126, "chang": [43, 46, 51, 70, 124], "check": [16, 47, 48, 63, 98, 130], "choos": [7, 8, 122], "chrome": 0, "clean": 98, "clear": [0, 1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 42, 46, 49, 51, 52, 56, 73, 75, 78, 93, 94, 95, 114, 118, 125, 126, 127, 128, 133], "cli": [9, 11, 14, 74, 133], "client": [35, 40, 41, 73, 80, 105, 106, 134], "clock": 53, "clone": [46, 125], "cloud": [13, 18, 54, 81], "clr": [14, 19, 20, 80, 82], "clr_power": 83, "clrtrust": [80, 84], "cluster": [116, 119, 122], "cni": 122, "code": [0, 3, 8, 41, 46, 136], "codebas": 37, "collect": 41, "colon": 4, "combin": 69, "comma": 4, "command": [8, 62, 74, 117, 133], "compat": [16, 32, 77, 130], "compil": [0, 36, 37, 140], "complet": [1, 138], "complex": 112, "compon": [1, 73, 130], "concept": 55, "conclus": 64, "conf": [35, 48, 82, 100, 104, 119], "config": [16, 80, 81, 89], "configur": [7, 8, 14, 19, 20, 21, 28, 35, 38, 41, 46, 47, 48, 50, 53, 54, 61, 62, 70, 71, 73, 74, 88, 89, 91, 95, 104, 111, 113, 114, 116, 118, 119, 122, 124, 129, 132], "connect": [10, 12, 14, 15, 73, 134], "consequ": 95, "consider": 54, "consol": [15, 51], "contain": [17, 18, 39, 51, 52, 54, 114, 116, 121, 122], "containerd": 122, "content": [4, 49, 65, 87, 125], "contract": 4, "contribut": 2, "control": [30, 119, 123, 129], "copi": [0, 46, 119], "copyright": [81, 108, 109], "core": [51, 55, 93], "correct": 39, "cpu": [36, 44, 53], "crash": 129, "creat": [1, 9, 11, 12, 14, 15, 21, 24, 25, 26, 27, 28, 30, 35, 40, 41, 54, 58, 102, 116, 119, 138], "cri": 122, "cuda": 130, "current": [43, 58, 62], "custom": [1, 12, 14, 46, 51, 102, 114, 122], "cve": 37, "cycl": 49, "daemon": 113, "data": [41, 108, 124], "databas": 124, "datasourc": 109, "dealloc": 11, "deb": 0, "debug": [33, 130], "decompress": 56, "default": [0, 7, 8, 38, 43, 64, 68, 70, 114, 124], "defin": 30, "definit": 35, "delet": [8, 15], "delta": 39, "deploi": [1, 12, 18, 20, 35, 54, 131], "deriv": [0, 1], "descript": [11, 29, 30, 35, 39, 43, 47, 48, 49, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 114, 117, 118, 121, 123, 132, 133, 139], "design": 37, "desktop": [1, 7, 23, 59, 73, 74], "destruct": [7, 8], "detail": 128, "detect": 118, "determin": 61, "develop": [30, 46, 55, 131], "devic": 115, "dhcp": 20, "diagnos": 98, "differ": [0, 1, 36], "difficulti": 112, "digitalocean": 12, "direct": 35, "directli": 30, "directori": [40, 124, 138], "disabl": [39, 41, 129], "disallow": 64, "disk": [7, 8, 21, 61, 127], "displai": 129, "distribut": [0, 54], "distro": [0, 126], "distrust": 84, "dkm": [48, 129, 137, 140], "dn": [20, 122], "dnf": 62, "dnsmaq": 20, "docker": [71, 116, 122, 133], "document": [3, 75], "doe": [0, 1], "download": [14, 19, 21, 22, 23, 24, 25, 26, 28, 56, 129, 130, 138, 140], "dpdk": 67, "drive": [9, 80, 135], "driver": [0, 53, 67, 115, 129], "dual": [126, 127], "each": 119, "eas": 1, "effect": 37, "eject": 9, "enabl": [22, 27, 39, 41, 45, 57, 58, 70, 114, 132, 139], "encrypt": [7, 8, 73], "end": 4, "enforc": 36, "english": 4, "enhanc": 53, "envar": 81, "environ": [24, 30, 46, 67, 96, 97, 110], "eras": 8, "establish": 73, "esxi": 28, "etc": 0, "etcher": 9, "exampl": [3, 19, 30, 35, 39, 41, 47, 48, 51, 62, 64, 67, 82, 84, 101, 113, 118, 119, 131, 133, 136], "execut": 35, "exist": [1, 16, 30, 48], "exit": [85, 86, 87, 88, 89, 90, 91, 92, 98, 106, 107, 108, 109], "experi": 112, "extens": 132, "extract": 26, "failur": 112, "faq": 0, "fetch": 108, "ffmpeg": 0, "fft": 118, "fftw": 118, "fi": 74, "file": [0, 19, 20, 30, 35, 38, 39, 61, 62, 82, 83, 84, 85, 93, 95, 98, 101, 104, 106, 107, 114, 119, 135], "filesystem": 61, "find": 39, "finish": [7, 8], "firefox": 139, "firewal": [0, 68], "firewalld": 68, "firmwar": [44, 115], "first": 51, "fix": 59, "flag": 36, "flatpak": 117, "fmv": 118, "format": [3, 35, 82, 94, 101], "forward": 70, "fpm": [95, 132], "framework": 46, "frequenc": 53, "fresh": 19, "friendli": 4, "from": [0, 7, 8, 14, 35, 62, 73, 116], "fstab": 0, "fullfil": 39, "function": [20, 118, 131], "gcc": 130, "gcp": 13, "gdm": 73, "gen": [41, 102], "gener": [0, 30, 71, 118], "get": [18, 43], "git": 71, "github": 2, "gnome": [117, 129], "gone": 129, "googl": [0, 13], "governor": [36, 53], "grammar": 4, "graphic": [22, 74], "group": [11, 58, 81], "grub": 126, "guest": 26, "gui": [22, 74, 138], "guid": [4, 42, 95], "guidelin": 2, "ha": 129, "hadoop": 113, "hard": 127, "harden": 124, "hardwar": 77, "hashdump": 98, "have": 0, "head": [3, 4], "hello": 119, "hold": 40, "host": [15, 20, 73, 118, 122, 125], "hostnam": [7, 8, 60, 81, 119], "how": [0, 1, 29, 30, 35, 39, 41, 64], "hpc": 119, "httpd": [51, 124], "hub": 116, "huge": 50, "hugepag": 67, "hyper": 21, "hypervisor": 27, "i": [0, 1, 41, 47, 48, 66, 95, 122], "iam": 14, "icc": 0, "id": 41, "identifi": [66, 115], "idl": 53, "imag": [3, 7, 9, 12, 14, 16, 17, 19, 21, 22, 23, 24, 35, 51, 52, 54, 56, 59, 61, 65, 73, 78, 116, 133], "impact": 112, "imper": 4, "implement": [33, 49], "import": 14, "improv": 0, "includ": [44, 46], "increas": 61, "independ": [56, 78], "info": [62, 98], "inform": [38, 62], "infrastructur": 54, "ing": 4, "init": 90, "initi": [23, 90, 122], "inlin": 3, "inspect": 30, "instal": [0, 7, 8, 11, 14, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 39, 40, 43, 46, 47, 48, 58, 59, 67, 73, 95, 98, 111, 113, 116, 117, 118, 121, 124, 125, 126, 127, 129, 130, 132, 133, 137, 140], "instanc": [10, 12, 14, 54, 114], "instanti": 27, "instruct": 3, "instrument": 41, "integr": [7, 8, 56, 116], "intel": [0, 93, 95], "interfac": [8, 22, 66, 69, 74, 95, 105, 122], "ip": [15, 66, 74], "ipset": 68, "iptabl": 68, "ipx": 20, "isn": 1, "iso": [23, 25, 26, 28], "issu": [122, 129, 140], "its": 58, "job": 119, "journal": 45, "jupyt": 136, "kata": [39, 114, 116, 121, 122], "keep": 125, "kei": [15, 113, 119], "kernel": [7, 8, 32, 36, 42, 43, 45, 46, 47, 48, 67, 137, 140], "keyboard": [7, 8], "known": [129, 140], "kubernet": [34, 71, 122, 123], "kvm": 22, "l3fwd": 67, "lamp": 124, "languag": 8, "last": 61, "latest": [24, 28, 36, 37], "launch": [7, 8, 10, 14, 22, 25, 73], "layer": 51, "ldconfig": 95, "learn": 136, "length": 3, "less": 119, "level": [36, 38, 112], "librari": 36, "libtelemetri": 41, "life": 49, "like": 0, "limit": [40, 63], "line": [3, 8, 74, 117], "link": [3, 4], "linux": [0, 1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 37, 42, 46, 49, 51, 52, 53, 54, 56, 73, 75, 78, 93, 94, 95, 118, 125, 126, 127, 128, 133, 139], "list": [3, 43, 61, 62, 76, 84, 98], "live": [7, 8, 16, 19, 24, 26, 59], "load": [44, 47, 48, 140], "local": [35, 41, 86], "localhost": 73, "locat": [10, 134], "log": [11, 54, 122], "login": [70, 73, 138], "long": 4, "look": 61, "loop": 118, "low": 36, "lsblk": 61, "lvm": 8, "m": 11, "mac": 23, "machin": [11, 18, 22, 25, 26, 30, 41, 54, 67, 136], "maco": 56, "main": 8, "maintain": 35, "mainten": 42, "make": [1, 4, 19], "man": 80, "manag": [0, 7, 8, 25, 40, 52, 53, 54, 66, 74, 92, 95, 124, 138], "mani": 71, "manifest": 39, "manipul": 89, "manual": [47, 73, 114, 122], "mapreduc": 113, "mariadb": 124, "mark": 4, "markup": 3, "master": 122, "meaning": 54, "mechan": 53, "media": [7, 8], "menu": [4, 7, 8, 57], "messag": 45, "metal": [19, 32, 54, 118], "method": [61, 73, 126, 127], "methodologi": 54, "micro": 80, "microcod": 44, "microsoft": [0, 11, 21], "migrat": [34, 114], "minim": 37, "minimum": [7, 8, 111], "mirror": [8, 98, 125], "misc": 73, "mismatch": 39, "mix": [35, 54, 86, 92], "mixer": [35, 40, 80, 85, 86, 87, 88, 89, 90, 91, 92], "mock": 71, "model": 115, "modern": 36, "modifi": [1, 7, 8, 35, 46, 51, 60], "modul": [47, 48, 137, 140], "monitor": 64, "more": 40, "mount": [26, 59], "mozilla": 139, "mpi": 119, "multi": [51, 73, 118, 128], "multipl": [36, 69], "mung": 119, "n": 64, "name": [4, 100], "nat": 20, "nativ": 54, "nautilu": 134, "navig": [3, 7, 8], "need": 0, "network": [7, 8, 20, 42, 69, 74, 95, 122], "networkd": 66, "networkmanag": 66, "new": [1, 3, 8, 21, 23, 25, 26, 28, 30, 52, 58], "newli": 28, "next": [11, 58, 124, 133, 140], "nginx": [20, 35, 40, 95], "nic": 67, "node": [119, 122, 123], "nomin": 4, "non": 16, "note": [3, 81, 108, 109], "notebook": 136, "notic": 3, "noun": 4, "nouveau": 129, "number": 3, "nvidia": [129, 130], "o": [0, 1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 37, 46, 49, 51, 52, 56, 58, 64, 73, 78, 85, 87, 93, 94, 95, 96, 98, 110, 118, 122, 125, 126, 127, 128, 133], "obtain": 48, "often": 0, "oh": 129, "onli": [32, 62, 73], "onto": [9, 19], "open": 1, "openfaa": 131, "openstack": 109, "openzf": 140, "oper": [36, 128], "optim": 36, "option": [7, 8, 15, 16, 22, 37, 41, 47, 48, 64, 73, 81, 83, 84, 85, 86, 87, 89, 90, 91, 92, 98, 99, 100, 102, 103, 104, 106, 107, 108, 109, 116], "orchestr": 54, "organ": 3, "other": [0, 74, 128], "out": [47, 48, 119], "output": 119, "over": [20, 71], "overrid": [38, 63], "overus": 4, "overview": [21, 27, 28, 36, 41, 44, 46, 47, 48, 51, 53, 54, 59, 60, 62, 64, 65, 67, 70], "own": 54, "p": 53, "pack": 39, "packag": [0, 30, 46, 62, 81, 122], "package_upgrad": 81, "packet": 67, "page": [3, 50, 80], "parallel": [4, 23], "paramet": [36, 46], "parti": [40, 98], "partit": [7, 8, 59, 61, 127], "pass": 67, "passphras": 8, "password": 119, "patch": [30, 118], "path": 129, "pattern": 101, "pdsh": 119, "per": 63, "perform": [36, 53, 88, 89, 91, 96], "period": 97, "php": [95, 124, 132], "phpmyadmin": 124, "phrase": 4, "physic": 67, "pick": 54, "piec": 87, "pktgen": 67, "plane": 123, "platform": [13, 36, 56, 67, 78], "player": 27, "pod": 122, "point": 74, "port": 70, "post": 110, "power": [28, 53, 80, 82], "practic": 123, "pre": [12, 14, 18, 30], "preliminari": [7, 8, 126], "prerequisit": [9, 10, 11, 12, 13, 14, 15, 19, 20, 21, 23, 24, 25, 26, 30, 34, 35, 39, 40, 41, 45, 47, 48, 49, 51, 52, 59, 62, 67, 70, 71, 113, 114, 116, 117, 119, 121, 122, 123, 125, 126, 127, 129, 130, 131, 132, 134, 135, 136, 137, 139, 140], "present": 4, "previou": 19, "privileg": 14, "pro": 137, "probe": 107, "procedur": 128, "processor": 16, "product": 4, "program": [66, 98, 105, 119], "project": [1, 75, 118], "promox": 24, "provid": [30, 110], "proxi": [7, 8, 71, 122], "proxmox": 24, "public": 15, "pull": [46, 116], "punctuat": 4, "qemu": 22, "qingcloud": 15, "qualiti": 73, "queri": 62, "quick": 39, "quotat": 4, "rate": 112, "rather": 1, "realvnc": 73, "recommend": [8, 111], "reconfigur": 28, "record": [41, 102], "redi": 133, "refer": [2, 19, 30, 35, 39, 41, 79, 122], "refresh": 30, "relat": [7, 8, 10, 11, 12, 13, 14, 17, 21, 27, 30, 31, 34, 35, 36, 39, 40, 46, 47, 48, 51, 55, 116, 122, 136, 139], "releas": [1, 49, 62, 140], "remedi": 37, "remot": 73, "remov": [15, 35, 52, 84, 98], "repair": 98, "replic": 19, "repo": 91, "repositori": [62, 91], "request": [46, 47, 48], "requir": [0, 7, 8, 111], "reset": 38, "resiz": 61, "resourc": [11, 63, 74, 129, 130], "restart": [41, 64], "restructur": 36, "return": [102, 103, 105, 119], "root": [7, 8, 59, 70, 84], "rpm": [0, 30, 62, 86, 91], "rule": 139, "ruleset": 68, "run": [41, 67, 113, 114, 116, 119, 121, 133, 136], "runcmd": 81, "runtim": [17, 36, 51, 122], "s3": 14, "safe": [7, 8], "samba": [134, 135], "save": [8, 41, 51, 53], "scale": [53, 54], "scan": 37, "scannabl": 4, "scenario": 41, "schedul": 97, "schema": [7, 8], "screen": 129, "script": [16, 73, 119], "search": [39, 55, 98], "second": 51, "secur": [1, 37, 124], "see": [0, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110], "select": [7, 8, 10, 15], "send": 67, "separ": 38, "sequenc": 36, "serial": 4, "server": [1, 8, 19, 20, 24, 26, 28, 35, 40, 41, 73, 122, 124, 125, 133, 135, 138], "servic": [10, 63, 64, 70, 73, 81, 96, 103, 104, 106, 107], "session": 73, "set": [8, 25, 28, 35, 40, 41, 43, 46, 60, 67, 71, 72, 73, 119, 122, 135, 136, 138, 140], "setup": [13, 20, 30, 35, 55, 125], "sftp": 70, "sh": 16, "share": [134, 135], "show": [62, 119], "shrink": 127, "signal": 99, "signatur": 65, "simpl": [4, 35], "singl": 51, "size": 61, "skip": 8, "slow": 129, "slurm": 119, "snapshot": 14, "softwar": [0, 4, 7, 30, 36, 37, 38, 58, 68, 85, 98, 110, 117, 129], "some": 40, "someth": 129, "sourc": [1, 30, 46, 48, 62], "space": [3, 58], "spec": 30, "specif": [36, 56, 62, 78], "specifi": [47, 48, 62], "ssh": [15, 22, 70, 71, 73, 113, 119], "ssh_authorized_kei": 81, "sshd": 95, "stage": 51, "start": [15, 18, 21, 24, 41, 51, 73, 133], "state": 53, "stateless": [38, 54, 95], "static": [41, 66], "statu": [43, 85, 86, 87, 88, 89, 90, 91, 92, 98, 106, 107, 108, 109], "step": [7, 8, 11, 56, 58, 124, 126, 133, 140], "stop": [10, 11, 41, 114], "strategi": 54, "string": 98, "strong": 4, "structur": 3, "studio": 0, "subcommand": [85, 87, 88, 89, 91, 92, 98], "submit": [30, 47, 48], "success": 138, "summari": 94, "support": [27, 139], "surfac": 37, "swap": [7, 8], "swarm": 116, "swupd": [8, 39, 40, 55, 80, 96, 97, 98], "sync": 125, "synopsi": [81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110], "syntax": 104, "system": [7, 8, 14, 16, 33, 35, 36, 37, 38, 39, 40, 54, 59, 63, 64, 72, 73, 95, 111, 122, 127, 128], "systemd": [57, 66, 73, 95, 126, 127, 140], "t": 1, "tabl": [7, 8, 35, 56, 73, 77, 78], "tallow": [80, 99, 100, 101], "target": [1, 8, 35, 59, 110], "telem": [41, 102], "telemctl": 103, "telemetr": [41, 80, 104, 105], "telemetri": [0, 7, 8, 41, 54, 64, 102, 103, 104, 105, 106, 107], "telempostd": 106, "telemprobd": 107, "templat": 131, "tens": 4, "tensorflow": 136, "termin": 73, "test": [8, 30, 125], "text": [3, 4, 74], "tftp": 20, "than": 1, "thermal": 53, "think": 1, "third": 51, "three": 126, "through": [67, 73], "time": [7, 41, 72, 112, 129], "timer": 97, "timezon": 8, "tool": [14, 46, 80, 103, 140], "toolchain": 36, "toolkit": 130, "topic": [7, 8, 10, 11, 12, 13, 14, 17, 21, 27, 30, 31, 34, 35, 36, 39, 40, 46, 47, 48, 51, 55, 116, 122, 136, 139], "traffic": 73, "tree": [47, 48], "trigger": 110, "troubleshoot": [7, 8, 26, 29, 44, 68, 115, 121, 122, 129, 137, 140], "trust": [37, 84], "tui": 74, "tunnel": 73, "turbo": 53, "tutori": [112, 120], "tweak": [80, 82], "type": [17, 56, 78, 81], "u2f": 139, "ucd": [108, 109], "udev": 139, "uefi": 27, "under": 0, "uninstal": [122, 129, 130], "unmount": 26, "up": [25, 35, 40, 41, 46, 67, 73, 119, 122, 125, 135, 136, 138, 140], "updat": [0, 1, 7, 8, 10, 30, 35, 37, 39, 54, 58, 64, 65, 85, 96, 97, 98, 110, 123, 125, 129], "upgrad": 34, "upload": [12, 14, 24, 28], "upstream": [35, 62, 92, 125], "us": [0, 1, 4, 9, 12, 14, 16, 19, 25, 41, 61, 66, 67, 73, 74, 118, 122, 124, 126, 127, 130, 133], "usag": [33, 54, 62], "usb": [9, 19], "user": [7, 8, 14, 22, 38, 58, 63, 73, 74, 81, 95, 112], "userspac": 140, "usual": 0, "util": 36, "v": [1, 21], "valid": 65, "valu": [102, 103, 105], "variabl": 35, "variant": 36, "varioiu": 87, "variou": [88, 91], "vector": 118, "verb": 4, "verifi": [7, 8, 20, 37, 39, 56, 59, 119], "version": [4, 35, 36, 39, 46, 51, 54, 58, 62, 92, 118], "via": [2, 73], "view": [60, 84], "viewer": 73, "virt": 25, "virtual": [11, 15, 18, 22, 24, 25, 26, 30, 54, 61, 67], "virtualbox": 26, "visual": 0, "vm": [11, 13, 21, 23, 24, 25, 26, 27, 28, 32, 61], "vmware": [27, 28, 137], "vnc": 73, "voic": 4, "wait_for_network": 81, "warn": 3, "web": [10, 20, 35, 40, 124, 125, 138], "what": [0, 1, 122], "wheel": 58, "where": [0, 95, 127], "which": [1, 66], "white": 3, "who": 1, "why": [0, 1], "wi": 74, "wide": [63, 95], "window": [56, 127, 134], "wireless": 74, "without": 48, "wl": 115, "word": 4, "wordcount": 113, "wordpress": 138, "work": [29, 30, 35, 39, 64], "workaround": 129, "worker": [119, 123], "workflow": [49, 109], "workspac": 90, "workstat": [27, 55, 137], "world": 119, "wpa_supplic": 74, "write": [4, 8], "write_fil": 81, "wrong": 129, "x": 34, "x11": 70, "yaml": [20, 61], "you": [0, 127, 138], "your": [8, 10, 11, 12, 14, 35, 41, 54, 60, 73, 113, 115, 122, 125, 127], "yubikei": 139, "zf": 0, "zone": 7}}) \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 000000000..12a3f0d54 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,2 @@ + +https://clearlinux.github.io/clear-linux-documentationen/latest/FAQ/index.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/about.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/collaboration/collaboration.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/collaboration/structure-formatting.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/collaboration/writing-guide.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/disclaimers.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/documentation_license.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/bare-metal-install-desktop.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/bare-metal-install-server.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/bootable-usb.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/cloud-install/aws-web.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/cloud-install/azure.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/cloud-install/digitalocean.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/cloud-install/gce.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/cloud-install/import-clr-aws.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/cloud-install/qingcloud.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/compatibility-check.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/containers/container-images.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/index.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/install-configfile.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/ipxe-install.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/virtual-machine-install/hyper-v.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/virtual-machine-install/kvm.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/virtual-machine-install/parallels.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/virtual-machine-install/proxmox.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/virtual-machine-install/virt-manager.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/virtual-machine-install/virtualbox-cl-installer.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/virtual-machine-install/vmw-player.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/get-started/virtual-machine-install/vmware-esxi-install-cl.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/autoproxy.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/autospec.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/bundles.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/compatible-kernels.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/debug.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/k8s-migration.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/mixer.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/performance.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/security.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/stateless.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/swupd.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/swupd-3rd-party.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/clear/telemetrics.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/index.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/kernel/change-kernel-boot.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/kernel/firmware.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/kernel/kernel-boot-msg.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/kernel/kernel-development.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/kernel/kernel-modules.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/kernel/kernel-modules-dkms.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/architect-lifecycle.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/configure-hugepages.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/container-image-modify.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/container-image-new.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/cpu-performance.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/deploy-at-scale.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/developer-workstation.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/download-verify-decompress.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/enable-systemd-boot-menu.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/enable-user-space.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/fix-broken-install.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/hostname.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/increase-virtual-disk-size.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/query-upstream.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/resource-limits.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/restart.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/maintenance/validate-signatures.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/network/assign-static-ip.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/network/dpdk.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/network/firewall.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/network/network-bonding.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/network/openssh-server.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/network/proxy.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/network/time.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/network/vnc.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/guides/network/wifi.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/index.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/bundles/bundles.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/compatible-hardware.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/image-types.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/index.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/man-pages.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/cloud-config.5.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/clr-power-tweaks.conf.5.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/clr_power.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/clrtrust.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/mixer.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/mixer.add-rpms.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/mixer.build.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/mixer.bundle.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/mixer.config.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/mixer.init.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/mixer.repo.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/mixer.versions.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/os-core.7.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/os-format.7.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/stateless.7.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/swupd-update.service.4.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/swupd-update.timer.4.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/swupd.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/tallow.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/tallow.conf.5.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/tallow.patterns.5.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/telem-record-gen.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/telemctl.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/telemetrics.conf.5.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/telemetry.3.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/telempostd.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/telemprobd.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/ucd-data-fetch.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/ucd.1.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/manpages/update-triggers.target.4.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/system-requirements.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/reference/tutorial-ratings.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/apache-hadoop.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/archive/kata_migration.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/broadcom.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/docker.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/flatpak.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/fmv.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/hpc.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/index.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/kata.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/kubernetes.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/kubernetes-bp.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/lamp-server.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/mirror-upstream-server.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/multi-boot/dual-boot-linux.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/multi-boot/dual-boot-win.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/multi-boot/multi-boot.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/nvidia.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/nvidia-cuda.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/openfaas.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/php.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/redis.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/smb-desktop.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/smb-server.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/tensorflow-machine-learning.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/vmware-workstation.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/wordpress.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/yubikey-u2f.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/tutorials/zfs.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/genindex.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/genindex-all.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/genindex-Symbols.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/genindex-E.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/genindex-H.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/genindex-R.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/genindex-V.htmlhttps://clearlinux.github.io/clear-linux-documentationen/latest/search.html \ No newline at end of file diff --git a/tutorials/apache-hadoop.html b/tutorials/apache-hadoop.html new file mode 100644 index 000000000..f8c0c233a --- /dev/null +++ b/tutorials/apache-hadoop.html @@ -0,0 +1,1449 @@ + + + + + + + + + + Apache* Hadoop* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Apache* Hadoop*

+

This tutorial explains the process of installing, configuring, and +running Apache Hadoop on Clear Linux* OS.

+ +
+

Description

+

For this tutorial, you will install Hadoop in a single machine +running both the master and slave daemons.

+

The Apache Hadoop software library is a framework for distributed processing +of large data sets across clusters of computers using simple programming +models. It is designed to scale up from single servers to thousands of +machines, with each machine offering local computation and storage.

+
+
+

Prerequisites

+ +
+
+

Install Apache Hadoop

+

Apache Hadoop is included in the big-data-basic bundle. To install +the framework, enter the following command:

+
sudo swupd bundle-add big-data-basic
+
+
+
+
+

Configure Apache Hadoop

+
    +
  1. To create the configuration directory, enter the following command:

    +
    sudo mkdir /etc/hadoop
    +
    +
    +
  2. +
  3. Copy the defaults from /usr/share/defaults/hadoop to +/etc/hadoop with the following command:

    +
    $ sudo cp /usr/share/defaults/hadoop/* /etc/hadoop
    +
    +
    +
    +

    Note

    +

    Since Clear Linux OS is a stateless system, never modify the +files under the /usr/share/defaults directory. The software +updater will overwrite those files.

    +
    +

    Once all the configuration files are in /etc/hadoop, edit them to +fit your needs. The NameNode server is the master server that manages the +namespace of the files’ system and regulates the clients’ access to files. +The first file to be edited, /etc/hadoop/core-site.xml, informs the +Hadoop daemon where NameNode is running. In this tutorial, NameNode runs +in the localhost.

    +
  4. +
  5. Open the /etc/hadoop/core-site.xml file using any editor and modify +the file as follows:

    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    +<configuration>
    +<property>
    +<name>fs.default.name</name>
    +<value>hdfs://localhost:9000</value>
    +</property>
    +</configuration>
    +
    +
    +
  6. +
  7. Edit the /etc/hadoop/hdfs-site.xml file. This file configures the +HDFS daemons. This configuration +includes the list of permitted and excluded data nodes and the size of +those blocks. For this example, set the number of block replication to 1 +from the default of 3 as follows:

    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    +<configuration>
    +<property>
    +<name>dfs.replication</name>
    +<value>1</value>
    +</property>
    +<property>
    +<name>dfs.permission</name>
    +<value>false</value>
    +</property>
    +</configuration>
    +
    +
    +
  8. +
  9. Edit the /etc/hadoop/mapred-site.xml file. This file configures +all daemons related to MapReduce: JobTracker and TaskTrackers. With +MapReduce, Hadoop can process big amounts of data in multiple systems. In +our example, we set YARN as our +runtime framework for executing MapReduce jobs as follows:

    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    +<configuration>
    +<property>
    +<name>mapreduce.framework.name</name>
    +<value>yarn</value>
    +</property>
    +</configuration>
    +
    +
    +
  10. +
  11. Edit the /etc/hadoop/yarn-site.xml file. This file configures all +daemons related to YARN: ResourceManager and NodeManager. In our +example, we implement the mapreduce_shuffle service, which is the +default as follows:

    +
    <?xml version="1.0"?>
    +<configuration>
    +<property>
    +<name>yarn.nodemanager.aux-services</name>
    +<value>mapreduce_shuffle</value>
    +</property>
    +<property>
    +<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    +<value>org.apache.hadoop.mapred.ShuffleHandler</value>
    +</property>
    +</configuration>
    +
    +
    +
  12. +
+
+
+

Configure your SSH key

+
    +
  1. Create a SSH key. If you already have one, skip this step.

    +
    sudo ssh-keygen -t rsa
    +
    +
    +
  2. +
  3. Copy the key to your authorized keys.

    +
    sudo cat /root/.ssh/id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys
    +
    +
    +
  4. +
  5. Log into the localhost. If no password prompt appears, you are ready to +run the Hadoop daemons.

    +
    sudo ssh localhost
    +
    +
    +
  6. +
+
+
+

Run the Hadoop daemons

+

With all the configuration files properly edited, you are ready to start the +daemons.

+

When you format the NameNode server, it formats the metadata related to +data nodes. Thus, all the information on the data nodes is lost and the nodes +can be reused for new data.

+
    +
  1. Format the NameNode server with the following command:

    +
    sudo hdfs namenode -format
    +
    +
    +
  2. +
  3. Start the DFS in NameNode and DataNodes with the following command:

    +
    sudo start-dfs.sh
    +
    +
    +

    The console output should be similar to:

    +
    Starting namenodes on [localhost]
    +The authenticity of host 'localhost (::1)' can't be established.
    +ECDSA key fingerprint is
    +SHA256:97e+7TnomsS9W7GjFPjzY75HGBp+f1y6sA+ZFcOPIPU.
    +Are you sure you want to continue connecting (yes/no)?
    +
    +
    +
  4. +
  5. Enter yes to continue.

  6. +
  7. Start the YARN daemons ResourceManager and NodeManager with the +following command:

    +
    sudo start-yarn.sh
    +
    +
    +
  8. +
  9. Ensure everything is running as expected with the following command:

    +
    sudo jps
    +
    +
    +

    The console output should be similar to:

    +
    22674 DataNode
    +26228 Jps
    +22533 NameNode
    +23046 ResourceManager
    +22854 SecondaryNameNode
    +23150 NodeManager
    +
    +
    +
  10. +
+
+
+

Run the MapReduce wordcount example

+
    +
  1. Create the input directory.

    +
    sudo hdfs dfs -mkdir -p /user/root/input
    +
    +
    +
  2. +
  3. Copy a file from the local file system to the HDFS.

    +
    sudo hdfs dfs -copyFromLocal local-file /user/root/input
    +
    +
    +
  4. +
  5. Run the wordcount example.

    +
    sudo hadoop jar /usr/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar wordcount input output
    +
    +
    +
  6. +
  7. Read the output file “part-r-00000”. This file contains the number of times +each word appears in the file.

    +
    sudo hdfs dfs -cat /user/root/output/part-r-00000
    +
    +
    +
  8. +
+

Congratulations!

+

You have successfully installed and setup a single node Hadoop cluster. +Additionally, you ran a simple wordcount example.

+

Your single node Hadoop cluster is up and running!

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/archive/kata_migration.html b/tutorials/archive/kata_migration.html new file mode 100644 index 000000000..f170499ec --- /dev/null +++ b/tutorials/archive/kata_migration.html @@ -0,0 +1,1295 @@ + + + + + + + + + + Migrate Clear Containers to Kata Containers* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Migrate Clear Containers to Kata Containers*

+

This tutorial explains how to migrate from Clear Containers to Kata Containers.

+ +
+

Description

+

Clear Containers and Kata Containers can co-exist in the same system. +Both can be installed through the containers-virt bundle. However, +we recommend that you migrate to Kata Containers because Clear Containers is no +longer maintained and will soon be deprecated on Clear Linux* OS.

+
+
+

Prerequisites

+
    +
  • Clear Containers is on a Docker* system.

  • +
  • Kata Containers is installed. See Kata Containers*.

  • +
+
+
+

Stop Clear Containers instances

+

As an unprivileged user, stop all running instances of Clear Containers:

+
for container in $(sudo docker ps -q); do sudo docker stop $container; done
+
+
+
+
+

Manually migrate customized configuration files

+

If you have made changes to your Clear Containers configuration, review +those changes and decide whether to manually apply those changes to your +Kata Containers configuration.

+

Make any required changes before continuing this process.

+
+

Note

+

You do not need to manually remove any Clear Containers packages.

+
+
+
+

Enable Kata Containers as default

+
    +
  1. Configure Docker to use the Kata Containers runtime by default.

    +
    sudo mkdir -p /etc/systemd/system/docker.service.d/
    +cat <<EOF | sudo tee /etc/systemd/system/docker.service.d/51-runtime.conf
    +[Service]
    +Environment="DOCKER_DEFAULT_RUNTIME=--default-runtime kata-runtime"
    +EOF
    +
    +
    +
  2. +
  3. Restart the Docker systemd services.

    +
    sudo systemctl daemon-reload
    +sudo systemctl restart docker
    +
    +
    +
  4. +
  5. Verify Docker is using Kata Containers.

    +
    sudo docker info | grep -i 'default runtime'
    +Default Runtime: kata-runtime
    +
    +
    +
  6. +
+
+
+

Run Kata Containers

+

Use the following command:

+
sudo docker run -ti busybox sh
+
+
+

Congratulations!

+

You’ve successfully migrated from Clear Containers to Kata Containers.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/broadcom.html b/tutorials/broadcom.html new file mode 100644 index 000000000..051d98c2d --- /dev/null +++ b/tutorials/broadcom.html @@ -0,0 +1,1425 @@ + + + + + + + + + + Broadcom* Drivers — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Broadcom* Drivers

+

Broadcom manufactures wireless network interfaces, including devices that +support WiFi and Bluetooth® technology.

+

Broadcom wireless devices on Linux* have a lot of different combinations of +possible required software depending on the exact model of your device. These +combinations of software can overlap and conflict, creating an additional +challenge to get working.

+

As with most hardware devices, two components are needed for complete +functionality: a device driver and device firmware. These instructions show +how to identify Broadcom wireless hardware and configure a Clear Linux OS system with +the correct drivers and firmware for functionality.

+
+

Important

+

The Linux community has documented solutions and caveats for using specific +Broadcom devices on Linux over time. It is worth doing research on your +particular device model to see what others have already encountered.

+
+ +
+

Identify your device model

+

Broadcom device models start with BCM in the name and are identified by the +PCI vendor ID 14e4. To identify the exact model of Broadcom device you have +installed:

+
    +
  1. Run the commands below:

    +
    lspci -vnn -d 14e4:
    +
    +
    +
  2. +
+

Once the device model has been identified, you can cross-reference which +drivers support it.

+
+
+

Drivers

+
+

brcmfmac and brcmsmac

+

brcmfmac and brcmsmac, historically known as brcm80211, are open-source +drivers for some newer Broadcom devices. These drivers are available in the +upstream Linux kernel, are enabled in the Clear Linux OS kernels, and will be +automatically loaded if a compatible device is detected.

+
    +
  1. See if your device is listed on the support matrix of this driver: +https://wireless.wiki.kernel.org/en/users/Drivers/brcm80211#supported_chips

    +

    It is important to note that not all functionality is developed for these +drivers yet. If you are looking for specific functionality, be sure to +review the “To be done” list.

    +
  2. +
  3. The firmware for cards supported by the brcmfmac and brcmsmac drivers +are usually made available. Continue reading the Firmware section of +this document.

  4. +
+
+
+

b43 and b43legacy

+

b43 and b43legacy are community reverse-engineered open-source drivers for +some newer and older Broadcom devices. These drivers are available in the +upstream Linux kernel, are enabled in the Clear Linux OS kernels, and will be +automatically loaded if a compatible device is detected.

+
    +
  1. See if your device is listed on the support matrix of this driver: +https://wireless.wiki.kernel.org/en/users/Drivers/b43#list_of_hardware

  2. +
  3. The firmware for cards supported by the b43 and b43legacy drivers +usually needs to be sourced and installed manually. Continue reading the +Firmware section of this document.

  4. +
+
+
+

broadcom-wl

+

broadcom-wl, also known as broadcom-sta or wl, is the proprietary closed +source driver from Broadcom and tends to work only for older devices. It is +also unmaintained and needs to be patched to work with newer kernels (>=4.7). +As such, it is not part of the Linux kernel, cannot be distributed by Clear Linux OS, +and has to be built as an out-of-tree kernel module.

+
+

Note

+

It is recommended to use the LTS kernel if you +have to use this driver.

+
+
    +
  1. See if your device is supported and download the Linux* STA 64-bit +driver from +Broadcom’s download website +or another trusted source.

  2. +
  3. Extract the downloaded archive into a separate folder. For example:

    +
    mkdir ./broadcom-wl/
    +tar xvf ./hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz -C broadcom-wl/
    +cd ./broadcom-wl/
    +
    +
    +
  4. +
  5. Create a patches folder in the source tree and copy any necessary patches +to it. You will have to research which specific set of patches are required +for the running kernel version. The gentoo repository for broadcom-sta +is a good place to start looking for up-to-date patches.

    +
    mkdir ./patches/
    +
    +
    +
  6. +
  7. Install the DKMS bundle for your +kernel. DKMS provides the framework to automatically rebuild the wl driver +against new kernels versions from Clear Linux OS updates.

  8. +
  9. In the extracted driver directory, create a dkms.conf file based +the contents below to provide DKMS information about how to build and +install the kernel module. This example uses version 6.30.223.271.

    +
    cat <<'EOF' >> dkms.conf
    +PACKAGE_NAME=broadcom-wl
    +PACKAGE_VERSION=6.30.223.271
    +MAKE="make KBASE=/lib/modules/${kernelver}"
    +CLEAN="make KBASE=/lib/modules/${kernelver} clean"
    +BUILT_MODULE_NAME=wl
    +DEST_MODULE_LOCATION=/kernel/drivers/net/wireless
    +AUTOINSTALL=yes
    +EOF
    +
    +
    +
  10. +
  11. Add the filename of any patches previously added to the patches +folder to the dkms.conf file so that DKMS applies them to the +driver source before building. Below are example patch names to show the +format used in dkms.conf.

    +
    echo "PATCH[0]="first.patch" >> dkms.conf
    +echo "PATCH[1]="second.patch" >> dkms.conf
    +echo "PATCH[2]="third.patch" >> dkms.conf
    +
    +
    +
  12. +
  13. Copy the directory to the dkms tree. This example uses version +6.30.223.271.

    +
    sudo cp -Rv . /usr/src/broadcom-wl-6.30.223.271
    +
    +
    +
  14. +
  15. Run the dkms commands to add the broadcom-wl module to the dkms +tree, build it, and install it. This example uses version 6.30.223.271.

    +
    sudo dkms add -m broadcom-wl -v 6.30.223.271
    +sudo dkms install -m broadcom-wl -v 6.30.223.271
    +
    +
    +
  16. +
  17. Blacklist all other variations of Broadcom drivers from loading to prevent +conflicts and problems.

    +
    sudo mkdir -p /etc/modprobe.d/
    +
    +sudo tee /etc/modprobe.d/broadcom.conf > /dev/null <<'EOF'
    +blacklist b43
    +blacklist b43legacy
    +blacklist ssb
    +blacklist bcm43xx
    +blacklist brcm80211
    +blacklist brcmfmac
    +blacklist brcmsmac
    +blacklist bcma
    +EOF
    +
    +
    +
  18. +
  19. Reboot the system and check that the module is loaded and working. If not, +try manually updating dependencies and loading the module.

    +
    depmod -a
    +modprobe wl
    +
    +
    +
  20. +
+
+
+
+

Firmware

+

In addition to device drivers, devices require firmware that gets loaded onto +the device directly.

+

Firmware for Broadcom devices are not fully open-source and not always +licensed for redistribution. Clear Linux OS kernel bundles include the +linux-firmware bundle which contains the firmware +binaries that are able to be redistributed. If your device’s firmware is part +of the linux-firmware repository, nothing else is needed. This is usually +the case for devices supported by the brcmfmac and brcmsmac drivers.

+

In other cases, firmware may need to be obtained or extracted manually from a +trusted source because it is not licensed for distribution. This is usually +the case for devices supported by the b43 and b43legacy drivers. Obtaining +these firmware is out of scope for this document, however there is information +about solutions to this problem available on the Linux wireless wiki.

+

On Clear Linux OS systems, firmware should be placed in /etc/firmware. See the +Firmware documentation for more information on loading custom +firmware.

+
+
+

Troubleshooting

+
    +
  • See which drivers are currently loaded with the lsmod and +modinfo commands.

  • +
  • If your device is not showing up or having intermittent issues, ensure the +card is not blocked by the kernel with the rfkill command.

  • +
  • Try blacklisting all the other variations of drivers not intended to be +used. In some cases, the wrong device driver will be loaded causing +problems.

  • +
  • If an external firmware image is required, it may be trying to load from a +different path than expected. Check the output of sudo dmesg | +grep -i firmware for firmware loading issues.

  • +
+

The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by Intel Corporation is under license.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/docker.html b/tutorials/docker.html new file mode 100644 index 000000000..1f80cdd90 --- /dev/null +++ b/tutorials/docker.html @@ -0,0 +1,1414 @@ + + + + + + + + + + Docker* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Docker*

+

Clear Linux* OS supports multiple containerization platforms, including a Docker +solution. Clear Linux OS has many unique features including a minimal default +installation, which makes it compelling to use as a host for container +workloads, management, and orchestration.

+

This tutorial covers:

+ +
+

Note

+

This tutorial focuses on the installation of the Docker ecosystem. +If you want to use Clear Linux OS as a Docker container image, refer to the +official Clear Linux OS container image +published on Docker* Hub +and our guide to Build a new Clear Linux OS-based container image.

+
+
+

Prerequisites

+

This tutorial assumes you have installed Clear Linux OS on your host system. +For detailed instructions on installing Clear Linux OS on a bare metal system, follow +the bare metal installation instructions.

+

Before you install any new packages, update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+

Additionally, you should have:

+
    +
  • A basic understanding of Linux* and Docker.

  • +
  • Clear Linux OS environment that has transparent network access to the Internet. +If you are behind a HTTP proxy server, in a corporate setting for example, +please refer to the Docker proxy instructions .

  • +
+
+
+

Install the containers-basic bundle

+

Software in Clear Linux OS is offered in the form of Available bundles to provide a +complete function. The containers-basic provides all the required software +packages to run Docker images as containers.

+
    +
  1. First, install the containers-basic bundle by running this +swupd command:

    +
    sudo swupd bundle-add containers-basic
    +
    +
    +
  2. +
  3. Start the Docker daemon through systemd manager by running this command:

    +
    sudo systemctl start docker
    +
    +
    +

    If you want Docker to start automatically on boot, enable the +systemd service by running this command:

    +
    sudo systemctl enable docker
    +
    +
    +
  4. +
  5. Finally, verify docker has been installed by running this +command and checking the version output for both client and server:

    +
    sudo docker version
    +
    +
    +
  6. +
+

Congratulations! At this point, you have a working installation of Docker +on Clear Linux OS. You are ready to start using container images on your system.

+
+
+

Integration with Kata Containers* (optional)

+

Kata Containers, is an open source project aiming to increase security +of containers by using a hardware-backed virtual machine container runtime +rather than software namespace containers that are provided by the standard +Docker runc runtime.

+

Clear Linux OS provides easy integration of the kata-runtime with Docker. +More information on installing and using the kata-runtime may be found at Kata Containers*.

+
+

Note

+

The remaining sections of this tutorial are standard to Docker setup +and configuration. If you are familiar with Docker basics, you do not +need to continue reading. The following sections are provided here for +sake of completeness.

+
+
+
+

Additional Docker configuration

+

Perform additional Docker daemon configuration via a configuration file +typically located at /etc/docker/daemon.json. Clear Linux OS features a +Stateless system so the configuration file daemon.json does +NOT exist by default.

+
    +
  1. Create the daemon.json by running this command:

    +
    sudo touch /etc/docker/daemon.json
    +
    +
    +
    +

    Note

    +

    Refer to the Docker documentation on daemon configuration for the +full list of available configuration options and examples.

    +
    +
  2. +
  3. For production systems, we follow Docker’s recommendation to use the +OverlayFS storage driver overlay2, shown below:

    +
    {
    +   "storage-driver": "overlay2"
    +}
    +
    +
    +
    +

    Note

    +

    A testing version is found in Docker Device Mapper storage driver. +If using this storage driver, a warning message may appear: “usage of +loopback devices is strongly discouraged for production use”.

    +
    +
  4. +
  5. Save and close daemon.json.

  6. +
  7. Once you’ve made any required changes, be sure to restart the +Docker daemon through systemd manager by running this command:

    +
    sudo systemctl restart docker
    +
    +
    +
  8. +
+
+
+

Pulling and running an image from Docker Hub*

+

Docker Hub is a publicly available container image repository which +comes pre-configured with Docker. In the example below we will pull and run +an the official Docker image for nginx*, an open source reverse proxy server.

+
    +
  1. First, pull a container image from Docker Hub using the +docker pull command. Download the latest nginx* Docker +container image by running this command:

    +
    sudo docker pull nginx
    +
    +
    +
  2. +
  3. Create and launch a new container using the docker run +command. Launch a nginx container by running this command:

    +
    sudo docker run --name test-nginx -d -p 8080:80 nginx
    +
    +
    +
    +

    Note

    +

    Below is an explanation of switches used in the command above. For +detailed docker run switches and syntax, refer to the +Docker Documentation .

    +
      +
    • The –name switch lets you provide a friendly name to +target the container for future operations

    • +
    • The -d switch launches the container in the background

    • +
    • The -p switch allows the container’s HTTP port (80) to be +accessible from the Clear Linux OS host on port 8080

    • +
    +
    +
  4. +
  5. You can access the Welcome to Nginx! splash page running in the container +by browsing to http://127.0.0.1:8080 or by running this curl +command from your Clear Linux OS machine:

    +
    curl 127.0.0.1:8080
    +
    +
    +
  6. +
  7. Finally, stop and delete the nginx container by running the +docker stop and docker rm commands.

    +
    sudo docker stop test-nginx
    +sudo docker rm test-nginx
    +
    +
    +
  8. +
+

Congratulations! At this point, you have successfully pulled a nginx +container image from Docker Hub and have run an example container.

+
+
+

Creating a Docker swarm cluster

+

Clusters of Docker hosts are referred to as swarms.

+

The process in this tutorial can be repeated to install Docker on multiple +Clear Linux OS hosts with the intent to form a Docker swarm cluster.

+

The Docker documentation on swarm key concepts and +Docker documentation on creating a swarm can be referenced +for further instructions on setting up a swarm.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/flatpak.html b/tutorials/flatpak.html new file mode 100644 index 000000000..3f965198b --- /dev/null +++ b/tutorials/flatpak.html @@ -0,0 +1,1338 @@ + + + + + + + + + + Flatpak* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Flatpak*

+

This tutorial shows how to install a Flatpak app on Clear Linux OS using GNOME* Software +and the command line.

+ +
+

Description

+

Flatpak is a framework for building and distributing desktop apps on +Linux*. Flatpak allows you to build a single app and install it on different +distributions of Linux. Flatpak apps are available through Flathub or the +Clear Linux Store.

+
+
+

Prerequisites

+
    +
  • Clear Linux OS installed on host system

    +

    Refer to Get started for installation instructions.

    +
  • +
  • desktop-autostart bundle installed

    +

    Flatpak is included via desktop, which is included in the +desktop-autostart bundle. The Flathub repository is pre-configured when +the desktop-autostart bundle is installed.

    +

    Install the desktop-autostart bundle with the following command:

    +
    sudo swupd bundle-add desktop-autostart
    +
    +
    +
  • +
+
+
+

Install a Flatpak app with GNOME Software

+

Clear Linux OS desktop comes with GNOME Software installed. Flatpak apps can be +installed from within GNOME Software.

+
    +
  1. Launch GNOME Software from your desktop.

  2. +
  3. Search for the Flatpak app that you want to install, as shown in Figure 1.

    +
    +Searching for Filezilla app in GNOME Software +
    +

    Figure 1: Searching for Filezilla* app in GNOME Software

    +
    +
    +
  4. +
  5. When you find the app you want to install, click it to view application +details.

  6. +
  7. On the app detail page, click the Install button, as shown in +Figure 2.

    +
    +Filezilla Flatpak detail page in GNOME Software +
    +

    Figure 2: Filezilla Flatpak detail page in GNOME Software

    +
    +
    +
  8. +
  9. After installation is complete, the new application will be in your +GNOME applications list, as shown in Figure 3.

    +
    +Newly installed Filezilla application +
    +

    Figure 3: Newly installed Filezilla application

    +
    +
    +
  10. +
  11. Click the application icon to launch the application.

  12. +
+
+
+

Install a Flatpak with the command line

+

Both Flathub and the Clear Linux Store provide the command line instructions +for installing a Flatpak. Figure 4 shows the command line instructions to +install Filezilla* from the Clear Linux Store:

+
+Command line instructions to install Filezilla from the Clear Linux Store +
+

Figure 4: Command line instructions to install Filezilla from the Clear Linux Store

+
+
+

In this example, we install Filezilla.

+
    +
  1. Open a terminal and enter the install command for the desired app:

    +
    flatpak install flathub org.filezillaproject.Filezilla
    +
    +
    +

    You may be prompted to select which repository to use:

    +
    Looking for matches…
    +Remote ‘flathub’ found in multiple installations:
    +
    +   1) system
    +   2) user
    +
    +Which do you want to use (0 to abort)? [0-2]: 2
    +
    +org.filezillaproject.Filezilla permissions:
    +    ipc      network              ssh-auth             wayland      x11
    +    dri      file access [1]      dbus access [2]
    +
    +    [1] host, xdg-run/dconf, ~/.config/dconf:ro
    +    [2] ca.desrt.dconf, org.freedesktop.Notifications, org.freedesktop.PowerManagement,
    +        org.gnome.SessionManager
    +
    +
    +        ID                                       Arch      Branch    Remote    Download
    + 1. [] org.filezillaproject.Filezilla           x86_64    stable    flathub   11.5 MB / 11.5 MB
    + 2. [] org.filezillaproject.Filezilla.Locale    x86_64    stable    flathub    4.6 kB / 3.8 MB
    +
    +Installation complete.
    +
    +
    +
  2. +
  3. After installation, run the application with the following command:

    +
    flatpak run org.filezillaproject.Filezilla
    +
    +
    +
  4. +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/fmv.html b/tutorials/fmv.html new file mode 100644 index 000000000..dde3f6ce6 --- /dev/null +++ b/tutorials/fmv.html @@ -0,0 +1,1471 @@ + + + + + + + + + + Function Multi-Versioning — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Function Multi-Versioning

+

In this tutorial, we will use FMV on +general code and on FFT library code (FFTW). +Upon completing the tutorial, you will be able to use this technology on your +code and use the libraries to deploy architecture-based optimizations to your +application code.

+ +
+

Description

+

CPU architectures often gain interesting new instructions as they evolve but +application developers find it difficult to take advantage of those +instructions. The reluctance to lose backward-compatibility is one of the +main roadblocks slowing developers from using advancements in newer computing +architectures. FMV, which first appeared in GCC 4.8, is a way to have +multiple implementations of a function, each using different +architecture-specialized instruction-set extensions. GCC 6 introduces +changes to FMV to make it even easier to bring architecture-based +optimizations to the application code.

+
+
+

Install and configure a Clear Linux OS host on bare metal

+

First, follow our guide to Install Clear Linux* OS from the live desktop. Once the bare +metal installation and initial configuration are complete, add the +desktop-dev bundle to the system. desktop-dev contains +the necessary development tools like GCC and Perl*.

+
    +
  1. To install the bundles, run the following command in the $HOME +directory:

  2. +
+
+
sudo swupd bundle-add desktop-dev
+
+
+
+
+
+

Detect loop vectorization candidates

+

Now, we need to detect the loop vectorization candidates to be cloned for +multiple platforms with FMV. As an example, we will use the following +simple C code:

+
 1 #include <stdio.h>
+ 2 #include <stdlib.h>
+ 3 #include <sys/time.h>
+ 4 #define MAX 1000000
+ 5
+ 6 int a[256], b[256], c[256];
+ 7
+ 8 void foo(){
+ 9     int i,x;
+10     for (x=0; x<MAX; x++){
+11         for (i=0; i<256; i++){
+12             a[i] = b[i] + c[i];
+13         }
+14     }
+15 }
+16
+17
+18 int main(){
+19     foo();
+20     return 0;
+21 }
+
+
+

Save the example code as example.c in the current directory and +build with the following flags:

+
gcc -O3  -fopt-info-vec  example.c -o example
+
+
+

The build generates the following output:

+
example.c:11:9: note: loop vectorized
+example.c:11:9: note: loop vectorized
+
+
+

The output shows that line 11 is a good candidate for vectorization:

+
for (i=0; i<256; i++){
+    a[i] = b[i] + c[i];
+
+
+
+
+

Generate the FMV patch

+
    +
  1. To generate the FMV patch with the make-fmv-patch project, we +must clone the project and generate a log file with the loop vectorized +information:

    +
    git clone https://github.com/clearlinux/make-fmv-patch.git
    +gcc -O3  -fopt-info-vec  example.c -o example &> log
    +
    +
    +
  2. +
  3. To generate the patch files, execute:

    +
    perl ./make-fmv-patch/make-fmv-patch.pl log .
    +
    +
    +
  4. +
  5. The make-fmv-patch.pl script takes two arguments: <buildlog> +and <sourcecode>. Replace <buildlog> and <sourcecode> with the +proper values and execute:

    +
    perl make-fmv-patch.pl <buildlog> <sourcecode>
    +
    +
    +

    The command generates the following example.c.patch patch:

    +
    --- ./example.c 2017-09-27 16:05:42.279505430 +0000
    ++++ ./example.c~    2017-09-27 16:19:11.691544026 +0000
    +@@ -5,6 +5,7 @@
    +
    + int a[256], b[256], c[256];
    +
    ++__attribute__((target_clones("avx2","arch=atom","default")))
    + void foo(){
    +     int i,x;
    +     for (x=0; x<MAX; x++){
    +
    +
    +

    We recommend you use the make-fmv-patch script to add the attribute +generating the target clones on the function foo. Thus, we can have the +following code:

    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <sys/time.h>
    +#define MAX 1000000
    +
    +int a[256], b[256], c[256];
    +
    +__attribute__((target_clones("avx2","arch=atom","default")))
    +void foo(){
    +    int i,x;
    +    for (x=0; x<MAX; x++){
    +        for (i=0; i<256; i++){
    +            a[i] = b[i] + c[i];
    +        }
    +    }
    +}
    +
    +
    +int main(){
    +    foo();
    +    return 0;
    +}
    +
    +
    +
  6. +
  7. Changing the value of the $avx2 variable, we can change the target +clones when adding the patches or in the make-fmv-patch.pl script:

    +
    my $avx2 = '__attribute__((target_clones("avx2","arch=atom","default")))'."\n";
    +
    +
    +
  8. +
  9. Compile the code again with FMV and add the option to analyze the +objdump log:

    +
    gcc -O3 example.c -o example -g
    +objdump -S example | less
    +
    +
    +

    You can see the multiple clones of the foo function:

    +
    foo
    +foo.avx2.0
    +foo.arch_atom.1
    +
    +
    +
  10. +
  11. The cloned functions use AVX2 registers and vectorized instructions. To +verify, enter the following commands:

    +
    vpaddd (%r8,%rax,1),%ymm0,%ymm0
    +vmovdqu %ymm0,(%rcx,%rax,1)
    +
    +
    +
  12. +
+
+
+

FFT project example using FFTW

+

To follow the same approach with a package like FFTW, use the +-fopt-info-vec flag to get a build log file similar to:

+
~/make-fmv-patch/make-fmv-patch.pl results/build.log fftw-3.3.6-pl2/
+
+patching fftw-3.3.6-pl2/libbench2/verify-lib.c @ lines (36 114 151 162 173 195 215 284)
+patching fftw-3.3.6-pl2/tools/fftw-wisdom.c @ lines (150)
+patching fftw-3.3.6-pl2/libbench2/speed.c @ lines (26)
+patching fftw-3.3.6-pl2/tests/bench.c @ lines (27)
+patching fftw-3.3.6-pl2/libbench2/util.c @ lines (181)
+patching fftw-3.3.6-pl2/libbench2/problem.c @ lines (229)
+patching fftw-3.3.6-pl2/tests/fftw-bench.c @ lines (101 147 162 249)
+patching fftw-3.3.6-pl2/libbench2/mp.c @ lines (79 190 215)
+patching fftw-3.3.6-pl2/libbench2/caset.c @ lines (5)
+patching fftw-3.3.6-pl2/libbench2/verify-r2r.c @ lines (44 187 197 207 316 333 723)
+
+
+

For example, the fftw-3.3.6-pl2/tools/fftw-wisdom.c.patch file +generates the following patches:

+
 1    --- fftw-3.3.6-pl2/libbench2/verify-lib.c   2017-01-27 21:08:13.000000000 +0000
+ 2    +++ fftw-3.3.6-pl2/libbench2/verify-lib.c~  2017-09-27 17:49:21.913802006 +0000
+ 3    @@ -33,6 +33,7 @@
+ 4
+ 5     double dmax(double x, double y) { return (x > y) ? x : y; }
+ 6
+ 7    +__attribute__((target_clones("avx2","arch=atom","default")))
+ 8     static double aerror(C *a, C *b, int n)
+ 9     {
+10         if (n > 0) {
+11    @@ -111,6 +112,7 @@
+12    }
+13
+14    /* make array hermitian */
+15    +__attribute__((target_clones("avx2","arch=atom","default")))
+16    void mkhermitian(C *A, int rank, const bench_iodim *dim, int stride)
+17    {
+18         if (rank == 0)
+19    @@ -148,6 +150,7 @@
+20    }
+21
+22    /* C = A + B */
+23    +__attribute__((target_clones("avx2","arch=atom","default")))
+24    void aadd(C *c, C *a, C *b, int n)
+25    {
+26         int i;
+27    @@ -159,6 +162,7 @@
+28    }
+29
+30    /* C = A - B */
+31    +__attribute__((target_clones("avx2","arch=atom","default")))
+32    void asub(C *c, C *a, C *b, int n)
+33    {
+34         int i;
+35    @@ -170,6 +174,7 @@
+36    }
+37
+38    /* B = rotate left A (complex) */
+39    +__attribute__((target_clones("avx2","arch=atom","default")))
+40    void arol(C *b, C *a, int n, int nb, int na)
+41    {
+42         int i, ib, ia;
+43    @@ -192,6 +197,7 @@
+44         }
+45    }
+
+
+

With these patches, we can select where to apply the FMV technology, which +makes it even easier to bring architecture-based optimizations to +application code.

+

Congratulations!

+

You have successfully installed an FMV development environment on Clear Linux OS. +Furthermore, you used cutting edge compiler technology to improve the +performance of your application based on Intel® architecture and +profiling of the specific execution of your application.

+

Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/hpc.html b/tutorials/hpc.html new file mode 100644 index 000000000..fe577e6ce --- /dev/null +++ b/tutorials/hpc.html @@ -0,0 +1,1874 @@ + + + + + + + + + + HPC Cluster — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

HPC Cluster

+

This tutorial demonstrates how to set a simple HPC cluster using Slurm, MUNGE, and +pdsh. For this tutorial, this cluster consists of a controller node +and four worker nodes, as shown in Figure 1. For the sake of simplicity, +each node resides on a separate host and their hostnames are hpc-controller, +hpc-worker1, hpc-worker2, hpc-worker3, and hpc-worker4.

+
+Simple HPC cluster +
+

Figure 1: Simple HPC cluster

+
+
+

The configuration is intentionally kept simple, notably avoiding setting +up cgroups and accounting. These and many more additional configuration +options can be added later.

+
+

Note

+

This tutorial assumes you start with a new installation of Clear Linux OS for all +nodes.

+
+
+

Prerequisites

+
    +
  • Knowledge and experience with HPC

  • +
  • Familiarity with Slurm, MUNGE, and pdsh

  • +
  • All nodes have synchronized clocks (typically by NTP)

  • +
+
+
+

Set up controller node

+

In this step, install the cluster tools, configure and enable the MUNGE service, +and enable the Slurm controller service.

+
    +
  1. Install Clear Linux OS on the controller node, add a user with adminstrator +privilege, and set its hostname to hpc-controller.

  2. +
  3. Boot it up and log in.

  4. +
  5. Update Clear Linux OS to the latest version.

    +
    sudo swupd update
    +
    +
    +
  6. +
  7. Set the date and time to synchronize with an NTP server.

    +
    sudo timedatectl set-ntp true
    +
    +
    +
  8. +
  9. Install the cluster-tools bundle.

    +
    sudo swupd bundle-add cluster-tools
    +
    +
    +
  10. +
  11. Create a MUNGE key and start the MUNGE service.

    +
      +
    1. Create the MUNGE key.

      +
      sudo mkdir /etc/munge
      +dd if=/dev/urandom bs=1 count=1024 | sudo tee -a /etc/munge/munge.key
      +
      +
      +
    2. +
    3. Set the ownership to munge and set the correct access permissions.

      +
      sudo chown munge: /etc/munge/munge.key
      +sudo chmod 400 /etc/munge/munge.key
      +
      +
      +
    4. +
    5. Start the MUNGE service and set it to start automatically on boot.

      +
      sudo systemctl enable munge --now
      +
      +
      +
    6. +
    +
  12. +
  13. Test MUNGE.

    +
      +
    1. Create a MUNGE credential.

      +
      munge -n
      +
      +
      +

      Example output:

      +
      MUNGE:AwQFAAC8QZHhL/+Fqhalhi+ZJBD5LavtMa8RMles1aPq7yuIZq3LtMmrB7KQZcQjG0qkFmoIIvixaCACFe1stLmF4VIg4Bg/7tilxteXHS940cuZ/TxpIuqC6fUH8zLgUZUPwJ4=:
      +
      +
      +
    2. +
    3. Validate a MUNGE credential.

      +
      munge -n | unmunge | grep STATUS
      +
      +
      +

      Example output:

      +
      STATUS:           Success (0)
      +
      +
      +
    4. +
    +
  14. +
  15. Start the Slurm controller service and enable it to start automatically +on boot.

    +
    sudo systemctl enable slurmctld --now
    +
    +
    +
  16. +
+
+
+

Set up worker nodes

+

For each worker node, perform these steps:

+
    +
  1. Install Clear Linux OS on the worker node, add a user with adminstrator privilege, +and set its hostname to hpc-worker plus its number, i.e. hpc-worker1, +hpc-worker2, etc.

    +

    Ensure the username is the same as the one on the controller node. This +is needed to simplify password-less-SSH-access setup, which is needed for +pdsh, in the next section.

    +
  2. +
  3. Boot it up and log in.

  4. +
  5. Update Clear Linux OS to the latest version.

    +
    sudo swupd update
    +
    +
    +
  6. +
  7. Set the date and time to synchronize with an NTP server.

    +
    sudo timedatectl set-ntp true
    +
    +
    +
  8. +
  9. Install the cluster-tools bundle.

    +
    sudo swupd bundle-add cluster-tools
    +
    +
    +
  10. +
+
+
+

Set up password-less SSH access and pdsh on all nodes

+

To efficiently manage a cluster, it is useful to have a tool +that allows issuing the same command to multiple nodes at once. +And that tool is pdsh, which is included +with the cluster-tools bundle. pdsh is built with Slurm support, so it can +access hosts as defined in the Slurm partitions. pdsh relies on password-less +SSH access in order for it to work properly. There are two ways to set up +pasword-less SSH authentication: key-based or host-based. In this case, +the latter approach will be used. The controller authenticates a user and +all worker nodes will trust that authentication and not ask the user to +enter a password again.

+
    +
  1. Configure the controller node.

    +
      +
    1. Log into the controller node.

    2. +
    3. Configure the SSH service for host-based authentication.

      +
      sudo tee -a /etc/ssh/ssh_config << EOF
      +HostbasedAuthentication yes
      +EnableSSHKeysign yes
      +EOF
      +
      +
      +
    4. +
    5. Restart the SSH service.

      +
      sudo systemctl restart sshd
      +
      +
      +
    6. +
    +
  2. +
  3. Configure each worker node.

    +
      +
    1. Configure SSH service for host-based authentication.

      +
      sudo tee -a /etc/ssh/sshd_config << EOF
      +HostbasedAuthentication yes
      +IgnoreRhosts no
      +UseDNS yes
      +EOF
      +
      +
      +
    2. +
    3. Create the /etc/hosts.equiv file and add the controller’s +FQDN. This tells the worker +node to accept connection from the controller.

      +

      For example:

      +
      hpc-controller.my-domain.com
      +
      +
      +
    4. +
    5. Set its permission to root access only.

      +
      sudo chmod 600 /etc/hosts.equiv
      +
      +
      +
    6. +
    7. Add the controller’s FQDN to /root/.shosts. This allows +host-based authentication for the root account so that +actions requiring sudo privileges can be performed.

      +
      sudo cp -v /etc/hosts.equiv /root/.shosts
      +
      +
      +
    8. +
    9. Using the controller’s FQDN in /etc/hosts.equiv, scan for its +RSA public key and copy it to /etc/ssh/ssh_known_hosts. +Verify the scanned RSA public key matches the controller’s +/etc/ssh/ssh_rsa_key.pub file.

      +
      sudo ssh-keyscan -t rsa -f /etc/hosts.equiv > ~/ssh_known_hosts
      +sudo cp -v ~/ssh_known_hosts /etc/ssh
      +rm ~/ssh_known_hosts
      +
      +
      +
    10. +
    11. Restart the SSH service.

      +
      sudo systemctl restart sshd
      +
      +
      +
    12. +
    +
  4. +
  5. On the controller node, SSH into each worker node without having to enter +a password. At the first-time connection to each host, you’ll be asked to +add the unknown host to the $HOME/.ssh/known_hosts file. Accept +the request. This is will make future SSH connections to each host be +non-interactive.

    +
    ssh <worker-node>
    +
    +
    +
    +

    Note

    +

    Setting up host-based authentication on +CSP environments such as Microsoft Azure +and Amazon AWS may require some tweaking on the worker nodes’ SSH +configurations due to the CSP’s virtual network setup. In general, +cloud VMs have a public and private DNS name. When SSH’ing from the +controller to a worker node, the SSH client may send the controller’s +private DNS name, usually something with “internal” in the name, +as the chost instead of its public FQDN as expected in worker node’s +/etc/hosts.equiv, /root/.shosts, and +/etc/ssh/ssh_known_hosts files. If the above configurations +do not work, meaning you’re asked to enter a password when +SSH’ing from the controller to a worker node, on a cloud VM, here are +some suggestions for debugging the problem:

    +
      +
    1. On the controller, try to identify the chost data sent by the SSH +client using ssh -vvv <worker-node>. Look for chost +in the debug log. If the chost value is different than the controller’s +FQDN listed in worker node’s /etc/hosts.equiv, +/root/.shosts, and /etc/ssh/ssh_known_hosts files, +then that is likely the cause of the problem. In some cases, chost +data may not be shown. If so, it’s safe to assume that the SSH client +is using the controller’s private DNS name as the chost. Proceed to +steps 2 and 3 below to fix the problem.

    2. +
    3. Get the controller’s private DNS name either by the above step or by +getting it from your system administrator.

    4. +
    5. On the worker node, make these changes:

      +
        +
      1. Change the controller’s FQDN in /etc/hosts.equiv, +/root/.shosts, and /etc/ssh/ssh_known_hosts +to its private DNS name.

      2. +
      3. Restart the SSH service on the worker node.

      4. +
      5. Retest the connection from the controller node to the worker node. +If that still doesn’t work, try the SSH directive +HostbasedUsesNameFromPacketOnly yes which tell the SSH service +to accept the supplied host name as is and not try to resolve it. +Also, set the directive UseDNS to no to disable host name lookup.

      6. +
      +
    6. +
    +
    +
  6. +
  7. Verify you can issue a simple command over SSH without typing a password.

    +
      +
    1. Issue the hostname command.

      +
      ssh <worker-node> hostname
      +
      +
      +
    2. +
    3. Issue the hostname command with sudo.

      +
      ssh <worker-node> sudo hostname
      +
      +
      +
    4. +
    +

    In both cases, you should get a response with the worker node’s hostname. +If the sudo version requires additional permission, grant the user +NOPASSWD privilege. For example:

    +
      +
    1. Edit the sudoer file.

      +
      sudo visudo
      +
      +
      +
    2. +
    3. Add the following:

      +
      <user> ALL=(ALL) NOPASSWD: ALL
      +
      +
      +
    4. +
    +
  8. +
+
+
+

Create slurm.conf configuration file

+

On the controller, create a new slurm.conf configuration file +that contains general settings, each node’s hardware resource information, +grouping of nodes into different partitions, and scheduling settings for +each partition. This file will be copied to all worker nodes in the cluster.

+
    +
  1. Create a base slurm.conf configuration file.

    +
    sudo mkdir -p /etc/slurm
    +sudo cp -v /usr/share/defaults/slurm/slurm.conf /etc/slurm
    +
    +
    +
  2. +
  3. Add the controller information.

    +
      +
    1. sudoedit the slurm.conf file. Set the ControlMachine +value to the controller’s resolvable hostname.

      +

      For example:

      +
      ControlMachine=hpc-controller
      +
      +
      +
      +

      Note

      +

      Assuming the controller’s FQDN is resolvable, specifying the +controller’s IP address with the ControlAddr key is optional. +However, it maybe helpful to add it.

      +
      +
    2. +
    3. Save and exit.

    4. +
    +
  4. +
  5. Add the worker nodes information.

    +
      +
    1. Create a file containing a list of the worker nodes.

      +
      cat > worker-nodes-list << EOF
      +hpc-worker1
      +hpc-worker2
      +hpc-worker3
      +hpc-worker4
      +EOF
      +
      +
      +
    2. +
    3. Using pdsh, get the hardware configuration of each node.

      +
      pdsh -w ^worker-nodes-list slurmd -C
      +
      +
      +

      Example output:

      +
      hpc-worker4: NodeName=hpc-worker4 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=1915
      +hpc-worker4: UpTime=0-01:23:28
      +hpc-worker3: NodeName=hpc-worker3 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=1663
      +hpc-worker3: UpTime=0-01:33:41
      +hpc-worker2: NodeName=hpc-worker2 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=721
      +hpc-worker2: UpTime=0-01:34:56
      +hpc-worker1: NodeName=hpc-worker1 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=721
      +hpc-worker1: UpTime=0-01:39:21
      +
      +
      +
    4. +
    5. sudoedit the slurm.conf file. Append each worker node +information, but without the UpTime, under the COMPUTE NODES section.

      +
      +

      Tip

      +

      It is strongly recommended to set the RealMemory value for each +worker node slightly below, say 90%, what was reported by +slurmd -C +in case some memory gets use by some processes, which would +cause Slurm to make a node not available due to its memory +resource falling below the stated value in the configuration file.

      +
      +

      Here’s an example with four worker nodes:

      +
      #
      +# COMPUTE NODES (mode detailed values reported by "slurmd -C" on each node)
      +NodeName=hpc-worker1 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=648
      +NodeName=hpc-worker2 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=648
      +NodeName=hpc-worker3 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=1497
      +NodeName=hpc-worker4 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=1723
      +
      +
      +
    6. +
    7. Create partitions.

      +

      A Slurm partition is basically the grouping of worker nodes. +Give each partition a name and decide which worker node(s) belong to +it.

      +

      For example:

      +
      PartitionName=workers Nodes=hpc-worker1, hpc-worker2, hpc-worker3, hpc-worker4 Default=YES MaxTime=INFINITE State=UP
      +PartitionName=debug Nodes=hpc-worker1, hpc-worker3 MaxTime=INFINITE State=UP
      +
      +
      +
    8. +
    9. Save and exit.

    10. +
    11. Set the ownership of the slurm.conf file to slurm.

      +
      sudo chown slurm: /etc/slurm/slurm.conf
      +
      +
      +
    12. +
    +
  6. +
  7. On the controller node, restart the Slurm controller service.

    +
    sudo systemctl restart slurmctld
    +
    +
    +
  8. +
  9. Verify the Slurm controller service restarted without any issues before +proceeding.

    +
    sudo systemctl status slurmctld
    +
    +
    +
  10. +
+
+
+

Copy MUNGE key and slurm.conf to all worker nodes

+

On the controller node, using pdsh, in conjunction with the list of +defined nodes in the slurm.conf, copy it and the MUNGE key to +all worker nodes.

+
    +
  1. On the controller node, copy the MUNGE key to all worker nodes and start the +MUNGE service.

    +
      +
    1. Create the /etc/munge/ directory on each node.

      +
      sudo pdsh -P workers mkdir /etc/munge
      +
      +
      +
    2. +
    3. Copy the MUNGE key over.

      +
      sudo pdcp -P workers /etc/munge/munge.key /etc/munge
      +
      +
      +
    4. +
    5. Set the ownership of the munge.key file to munge.

      +
      sudo pdsh -P workers chown munge: /etc/munge/munge.key
      +
      +
      +
    6. +
    +
    +
      +
    1. Start the MUNGE service and set it to start automatically on boot.

    2. +
    +
    +
    sudo pdsh -P workers systemctl enable munge --now
    +
    +
    +
    +
      +
    1. Verify the MUNGE service is running.

      +
      sudo pdsh -P workers "systemctl status munge | grep Active"
      +
      +
      +

      Example output:

      +
      hpc-worker3:      Active: active (running) since Wed 2020-04-15 19:47:58 UTC; 55s ago
      +hpc-worker4:      Active: active (running) since Wed 2020-04-15 19:47:58 UTC; 55s ago
      +hpc-worker2:      Active: active (running) since Wed 2020-04-15 19:47:59 UTC; 54s ago
      +hpc-worker1:      Active: active (running) since Wed 2020-04-15 19:47:59 UTC; 54s ago
      +
      +
      +
    2. +
    +
    +
  2. +
  3. On the controller node, copy the slurm.conf file to all +worker nodes and start the slurmd service on them.

    +
      +
    1. Create the /etc/slurm/ directory on each worker node.

      +
      sudo pdsh -P workers mkdir /etc/slurm
      +
      +
      +
    2. +
    3. Copy the slurm.conf file over.

      +
      sudo pdcp -P workers /etc/slurm/slurm.conf /etc/slurm
      +
      +
      +
    4. +
    5. Set the ownership of the slurm.conf file to slurm.

      +
      sudo pdsh -P workers chown slurm: /etc/slurm/slurm.conf
      +
      +
      +
    6. +
    7. Start the Slurm service and set it automatically start on boot.

      +
      sudo pdsh -P workers systemctl enable slurmd --now
      +
      +
      +
    8. +
    9. Verify the slurmd service is running.

      +
      sudo pdsh -P workers systemctl status slurmd | grep Active
      +
      +
      +

      Example output:

      +
      hpc-worker3:      Active: active (running) since Wed 2020-04-15 19:39:22 UTC; 1min 17s ago
      +hpc-worker4:      Active: active (running) since Wed 2020-04-15 19:39:22 UTC; 1min 17s ago
      +hpc-worker2:      Active: active (running) since Wed 2020-04-15 19:39:23 UTC; 1min 17s ago
      +hpc-worker1:      Active: active (running) since Wed 2020-04-15 19:39:23 UTC; 1min 17s ago
      +
      +
      +
    10. +
    +
  4. +
+
+
+

Verify controller can run jobs on all nodes

+
    +
  1. Check the state of the worker nodes.

    +
    sinfo
    +
    +
    +

    Example output:

    +
    PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
    +workers*     up   infinite      4   idle hpc-worker[1-4]
    +debug        up   infinite      2   idle hpc-worker[1,3]
    +
    +
    +
    +

    Tip

    +

    If the nodes are in a “down” state, put them in the “idle” state.

    +

    For example:

    +
    sudo scontrol update nodename=hpc-worker[1-4] state=idle reason=""
    +
    +
    +

    Additional Slurm troubleshooting tips.

    +
    +
  2. +
  3. And finally, verify Slurm can run jobs on all 4 worker nodes by issuing +a simple hostname command.

    +
    srun -N4 -p workers hostname
    +
    +
    +

    Example output:

    +
    hpc-worker4
    +hpc-worker3
    +hpc-worker1
    +hpc-worker2
    +
    +
    +
  4. +
+
+
+

Create and run example scripts

+
+

Example 1: Return the hostname of each worker and output to show-hostnames.out

+
    +
  1. On the controller node, create the Slurm show-hostnames.sh script.

    +
    cat > show-hostnames.sh << EOF
    +#!/bin/bash
    +#
    +#SBATCH --job-name=show-hostnames
    +#SBATCH --output=show-hostnames.out
    +#
    +#SBATCH --ntasks=4
    +#SBATCH --time=10:00
    +#SBATCH --mem-per-cpu=100
    +#SBATCH --ntasks-per-node=1
    +
    +srun hostname
    +EOF
    +
    +
    +
  2. +
  3. Execute the script.

    +
    sbatch show-hostnames.sh
    +
    +
    +

    The result will appear on the first node of the partition used. As no +partition was explicitly specified, it would be the default partition.

    +
  4. +
  5. View the result.

    +
    pdsh -w hpc-worker1 "cat show-hostnames.out"
    +
    +
    +

    Example output:

    +
    hpc-worker1: hpc-worker3
    +hpc-worker1: hpc-worker4
    +hpc-worker1: hpc-worker1
    +hpc-worker1: hpc-worker2
    +
    +
    +
  6. +
+
+
+

Example 2: An MPI “Hello, World!” program

+
    +
  1. On the controller node, create the mpi-helloworld.c program.

    +
     cat > mpi-helloworld.c << EOF
    + #include <stdio.h>
    + #include <unistd.h>
    + #include <mpi.h>
    +
    + int main(int argc, char** argv)
    + {
    +   // Init the MPI environment
    +   MPI_Init(NULL, NULL);
    +
    +   // Get the number of processes
    +   int world_size;
    +   MPI_Comm_size(MPI_COMM_WORLD, &world_size);
    +
    +   // Get the rank of the process
    +   int world_rank;
    +   MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    +
    +   // Get the name of the processor
    +   char processor_name[MPI_MAX_PROCESSOR_NAME];
    +   int name_len;
    +   MPI_Get_processor_name(processor_name, &name_len);
    +
    +   // Print a hello world message
    +   printf("Hello, World! from from processor %s, rank %d out of %d processors\n", processor_name, world_rank, world_size);
    +
    +   // Finalize the MPI environment
    +   MPI_Finalize();
    +}
    +EOF
    +
    +
    +
  2. +
  3. Add the c-basic and devpkg-openmpi bundles, which are needed to compile +it.

    +
    sudo swupd bundle-add c-basic devpkg-openmpi
    +
    +
    +
  4. +
  5. Compile it.

    +
    mpicc -o mpi-helloworld mpi-helloworld.c
    +
    +
    +
  6. +
  7. Copy the binary to all worker nodes.

    +
    pdcp -P workers ./mpi-helloworld $HOME
    +
    +
    +
  8. +
  9. Create a Slurm batch script to run it.

    +
    cat > mpi-helloworld.sh << EOF
    +#!/bin/sh
    +#SBATCH -o mpi-helloworld.out
    +#SBATCH --nodes=4
    +#SBATCH --ntasks-per-node=1
    +
    +srun ./mpi-helloworld
    +EOF
    +
    +
    +
  10. +
  11. Run the batch script.

    +
    sbatch mpi-helloworld.sh
    +
    +
    +
  12. +
  13. View the results on first worker node in the partition.

    +
    pdsh -w hpc-worker1 "cat mpi-helloworld.out"
    +
    +
    +

    Example output:

    +
    Hello, World! from from processor hpc-worker3, rank 2 out of 4 processors
    +Hello, World! from from processor hpc-worker4, rank 3 out of 4 processors
    +Hello, World! from from processor hpc-worker1, rank 0 out of 4 processors
    +Hello, World! from from processor hpc-worker2, rank 1 out of 4 processors
    +
    +
    +
  14. +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/index.html b/tutorials/index.html new file mode 100644 index 000000000..1d3172f10 --- /dev/null +++ b/tutorials/index.html @@ -0,0 +1,1271 @@ + + + + + + + + + + Tutorials — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+ +
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/kata.html b/tutorials/kata.html new file mode 100644 index 000000000..5755512d7 --- /dev/null +++ b/tutorials/kata.html @@ -0,0 +1,1331 @@ + + + + + + + + + + Kata Containers* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+
+
+

Kata Containers*

+

This tutorial describes how to install, configure, and run Kata Containers +on Clear Linux* OS.

+ +
+

Description

+

Kata Containers is an open source project developing a lightweight +implementation of VMs that offer the speed of +containers and the security of VMs.

+
+
+

Prerequisites

+

This tutorial assumes you have installed Clear Linux OS on your host system. +For detailed instructions on installing Clear Linux OS on a bare metal system, follow +the bare metal installation tutorial.

+

If you have Clear Containers installed on your Clear Linux OS system, then follow the +migrate Clear Containers to Kata Containers tutorial.

+

Update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+
+
+

Install Kata Containers

+

Kata Containers is included in the containers-virt bundle. +To install the framework:

+
    +
  1. Install the containers-virt bundle:

    +
    sudo swupd bundle-add containers-virt
    +
    +
    +
  2. +
  3. Reload and restart the Docker* systemd service.

    +
    sudo systemctl daemon-reload
    +sudo systemctl restart docker
    +
    +
    +
  4. +
+
+
+

Run Kata Containers

+

To use kata as the runtime for an individual container, add +--runtime=kata-runtime to the docker run command. For +example:

+
sudo docker run --runtime=kata-runtime -ti busybox sh
+
+
+

To use kata as the default runtime for all Docker containers:

+
    +
  1. Set the default runtime for the Docker daemon:

    +
    +

    Note

    +

    The method below uses a systemd drop-in configuration to add a +command-line (CLI) parameter to the Docker daemon for setting the +default-runtime. Alternatively, the default runtime can be set in the +Docker daemon configuration file. +The Docker daemon will not start if the default-runtime configuration +in set multiple locations.

    +
    +
    sudo mkdir -p /etc/systemd/system/docker.service.d/
    +
    +cat <<EOF | sudo tee /etc/systemd/system/docker.service.d/50-runtime.conf
    +[Service]
    +Environment="DOCKER_DEFAULT_RUNTIME=--default-runtime kata-runtime"
    +EOF
    +
    +
    +
  2. +
  3. Reload and restart the Docker* systemd service.

    +
    sudo systemctl daemon-reload
    +sudo systemctl restart docker
    +
    +
    +
  4. +
  5. Verify the default runtime reported by docker is kata-runtime.

    +
    sudo docker info | grep "Default Runtime"
    +   Default Runtime: kata-runtime
    +
    +
    +
  6. +
+
+

Troubleshooting

+
    +
  • If you are behind a HTTP proxy server, in a corporate setting for +example, please refer to the Docker proxy instructions.

  • +
  • To change the Docker storage driver, see +Additional Docker configuration.

  • +
  • To check the version of Clear Linux OS on your system, enter: sudo swupd +info.

  • +
  • Clear Linux OS versions before 27000 require manually configure Docker* to use Kata +Containers as shown in this tutorial.

  • +
  • Clear Linux OS versions between 27000 and 31930 had a mechanism to automatically set +kata as the default runtime for docker. To disable this mechanism run the +commands below:

    +
    sudo systemctl mask docker-set-runtime.service
    +sudo rm /etc/systemd/system/docker.service.d/50-runtime.conf
    +sudo systemctl daemon-reload
    +sudo systemctl restart docker.service
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/kubernetes-bp.html b/tutorials/kubernetes-bp.html new file mode 100644 index 000000000..ed1744bb7 --- /dev/null +++ b/tutorials/kubernetes-bp.html @@ -0,0 +1,1299 @@ + + + + + + + + + + Kubernetes* Best Practices — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Kubernetes* Best Practices

+

This tutorial shows you how to manage your Kubernetes cluster while using +swupd to update Clear Linux* OS.

+ +
+

Description

+

In our Kubernetes* tutorial, we explain how to set up a Kubernetes +cluster on Clear Linux OS using kubeadm. Kubeadm documentation often builds on the +assumption that the distribution uses a traditional package manager, such as +RPM/DEB.

+

However, Clear Linux OS uses swupd to update the OS, which in this case updates +all of the kubernetes node and client binaries simultaneously, as part of +the cloud-native-basic bundle (e.g., kubectl, kubeadm, kubelet). Running +sudo swupd update requires special care to ensure the OS +incorporates the latest Kubernetes upgrades.

+

This tutorial also describes the best practices for managing cluster upgrades +with kubeadm on a Clear Linux OS-based cluster.

+
+
+

Prerequisites

+
    +
  • Complete the Kubernetes* tutorial

  • +
  • Install the bundle cloud-native-basic

  • +
+
+

Note

+

Other Linux* distros shown in the Kubernetes upgrade documentation use the +apt-get update, apt-mark hold kubeadm, and similar commands. These +commands are not valid on Clear Linux OS.

+
+
+
+

Update the control plane

+
    +
  1. Read the kubernetes documentation before you begin.

  2. +
  3. On your master node, run the command:

    +
    sudo swupd update
    +
    +
    +
    +

    Note

    +

    If the minor version of Kubernetes changes, Clear Linux OS shows a message-of-the- +day, or motd. When the motd appears, you must postpone a kubelet +restart on master and nodes until the control plane is properly updated. +swupd update does not restart services automatically unless +explicitly configured to do so.

    +
    +
  4. +
  5. Now follow these instructions from the kubernetes documentation.

    + +
  6. +
+
+
+

Update worker nodes

+
    +
  1. On each worker node, run the command:

    +
    sudo swupd update
    +
    +
    +
  2. +
  3. Now follow these instructions from the kubernetes documentation:

    + +
  4. +
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/kubernetes.html b/tutorials/kubernetes.html new file mode 100644 index 000000000..5fcd987f6 --- /dev/null +++ b/tutorials/kubernetes.html @@ -0,0 +1,1867 @@ + + + + + + + + + + Kubernetes* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Kubernetes*

+

This tutorial describes how to install, configure, and start the Kubernetes +container orchestration system on Clear Linux* OS.

+

A Kubernetes cluster can be setup on Clear Linux OS using the Clear Linux OS cloud-native-setup +scripts to automate the process or can be setup through a manual step-by-step +process. This tutorial covers both scenarios.

+ +
+

Background

+

Clear Linux OS has builtin integrations to make setting up Kubernetes using a variety of +container runtimes.

+

For more background information see:

+ +
+
+

Prerequisites

+

This tutorial assumes you have already installed Clear Linux OS. For detailed +instructions on installing Clear Linux OS on a bare metal system, follow the bare +metal installation tutorial.

+
    +
  1. Review and make sure the requirements for kubeadm +are satisfied for the host system.

  2. +
  3. Before you continue, update your Clear Linux OS installation with the following +command:

    +
    sudo swupd update
    +
    +
    +

    Learn about the benefits of having an up-to-date system for cloud +orchestration on the swupd page.

    +
  4. +
  5. Kubernetes, a set of supported CRI +runtimes, CNI and cloud-native-setup +scripts are included in the cloud-native-basic bundle. Install the +cloud-native-basic bundle to get these components:

    +
    sudo swupd bundle-add cloud-native-basic
    +
    +
    +
  6. +
+
+
+

Set up Kubernetes automatically

+

Clear Linux OS provides cloud-native-setup scripts to automate system setup and +Kubernetes cluster initialization which allows you to get a cluster up and +running quickly.

+
+

Note

+

By default, the scripts will update Clear Linux OS to the latest version, set up the +system as a Kubernetes master-node with canal for container networking +and crio for container runtime, and taint the master node to allow +workloads to run on it. Kata is installed as an optional alternative +runtime. The script can be configured to use other CNI’s and CRI’s by +following the directions on the README.

+

See What is a Container Network Interface (CNI)? and What is a +Container Runtime Interface (CRI)? for more information.

+
+
+

Important

+

If network proxy settings are required for Internet connectivity, configure +them now because the scripts will propagate proxy configuration based on +the running configuration. It is especially important to set the +no_proxy variable appropriately for Kubernetes.

+

The script will also modify the /etc/environment and +/etc/profile.d/proxy.sh files, if they exist, with the proxy +environment variables in the running shell when the script is executed.

+

See the Setting proxy servers for Kubernetes section for details.

+
+
    +
  1. Run the system-setup.sh script to configure the Clear Linux OS system +settings.

    +
    sudo /usr/share/clr-k8s-examples/setup_system.sh
    +
    +
    +
  2. +
  3. Stop docker and containerd to avoid conflicting CRIs being detected. The +scripts use CRIO for the CRI.

    +
    sudo systemctl stop docker
    +sudo systemctl stop containerd
    +
    +
    +
  4. +
  5. Install git as it’s a dependency of the create_stack.sh.

    +
    sudo swupd bundle-add git
    +
    +
    +
  6. +
  7. Run the create_stack.sh script to initialize the Kubernetes node +and setup a container network plugin.

    +
    sudo /usr/share/clr-k8s-examples/create_stack.sh minimal
    +
    +
    +
  8. +
  9. Follow the output on the screen and continue onto the section on using +your cluster.

  10. +
+
+

Uninstalling

+
    +
  1. If you need to delete the Kubernetes cluster or want to start from scratch +run the reset_stack.sh script.

    +
    +

    Warning

    +

    This will stop components in the stack including Kubernetes, all CNI and +CRIs and will delete all containers and networks.

    +
    +
    sudo /usr/share/clr-k8s-examples/reset_stack.sh
    +
    +
    +
  2. +
+
+
+
+

Set up Kubernetes manually

+
+

Configure host system

+

This tutorial uses the basic default Kubernetes configuration to get started. +You can customize your Kubernetes configuration according to your specific +deployment and security needs.

+

The Kubernetes administration tool, kubeadm, performs some +“preflight checks” when initializing and starting a cluster. The steps +below are necessary to ensure those preflight checks pass successfully.

+
    +
  1. Enable IP forwarding:

    +
      +
    • Create the file /etc/sysctl.d/60-k8s.conf to set the +net.ipv4.ip_forward parameter

      +
      sudo mkdir -p /etc/sysctl.d/
      +
      +sudo tee /etc/sysctl.d/99-kubernetes-cri.conf > /dev/null <<EOF
      +net.bridge.bridge-nf-call-iptables  = 1
      +net.ipv4.ip_forward                 = 1
      +net.bridge.bridge-nf-call-ip6tables = 1
      +EOF
      +
      +
      +
    • +
    • Apply the change:

      +
      sudo sysctl --system
      +
      +
      +
    • +
    +
  2. +
  3. Disable swap:

    +
    sudo systemctl mask $(sed -n -e 's#^/var/\([0-9a-z]*\).*#var-\1.swap#p' /proc/swaps) 2>/dev/null
    +sudo swapoff -a
    +
    +
    +
    +

    Note

    +

    Kubernetes is designed to work without swap. Performance degradation of other workloads can occur +with swap disabled on systems with constrained memory resources.

    +
    +
  4. +
  5. Add the the system’s hostname to the /etc/hosts file. Kubernetes +will read this file to locate the master host.

    +
    echo "127.0.0.1 localhost `hostname`" | sudo tee --append /etc/hosts
    +
    +
    +
  6. +
  7. Enable the kubelet agent service to start at boot automatically:

    +
    sudo systemctl enable kubelet.service
    +
    +
    +
  8. +
+
+

Important

+

If network proxy settings are required for Internet connectivity, configure +them now because the scripts will propagate proxy configuration based on +the running configuration. It is especially important to set the +no_proxy variable for Kubernetes. See the Setting proxy servers +for Kubernetes section for details.

+
+
+
+
+

Initialize the master node

+

In Kubernetes, a master node is part of the Kubernetes Control Plane.

+

Initializing a new Kubernetes cluster involves crafting a kubeadm +init command. Adding parameters to this command can control the fundamental +operating components of the cluster. This means it is important to understand +and choose network and runtime options before running a kubeadm +init command.

+
+

Choose a pod network add-on

+

See What is a Container Network Interface (CNI)? for information on what +pod network add-ons and CNIs.

+

It is important to decide which CNI will be used early because some pod +network add-ons require configuration during cluster initialization. Check +whether or not your add-on requires special flags when you initialize the +master control plane.

+

If your chosen network add-on requires appending to the kubeadm +init command, make note of it before continuing. For example, if you choose +the flannel pod network add-on, then in later steps you must add the +following to the kubeadm init command:

+
--pod-network-cidr 10.244.0.0/16
+
+
+
+

Important

+

The version of CNI plugins installed needs to be compatible with the +version of Kubernetes that is installed otherwise the cluster may fail. +Check the Kubernetes version with kubeadm version -o short and +refer to the documentation of the CNI plugins to obtain a compatible +version.

+
+
+
+

Choose a container runtime

+

See What is a Container Runtime Interface (CRI)? for more information on +what a CRI is.

+

Clear Linux OS supports Kubernetes with the various runtimes +below with or without Kata Containers:

+ +

The container runtime that you choose will dictate the steps necessary to +initialize the master cluster with kubeadm init.

+
+

CRI+O

+

For information on CRI+O as a Kubernetes CRI, see What is +CRI+O?. To use CRI+O as the Kubernetes CRI:

+
    +
  1. Start the CRI-O service and enable it to run at boot automatically:

    +
    sudo systemctl enable --now crio.service
    +
    +
    +

    When the crio service starts for the first time, it will create a +configuration file for crio at /etc/crio/crio.conf.

    +
  2. +
  3. Run the kubeadm command to initialize the master node with the +--cri-socket parameter:

    +
    +

    Important

    +

    You may need to add additional parameters to the command below, +depending the pod network addon in use.

    +

    In this example, the --pod-network-cidr 10.244.0.0/16 +parameter is to use flannel as the pod networking. See Choose a pod +network add-on for more information.

    +
    +
    sudo kubeadm init \
    +--cri-socket=unix:///run/crio/crio.sock \
    +--pod-network-cidr 10.244.0.0/16
    +
    +
    +
  4. +
  5. (Optional) By default, CRI+O will use runc as the default +runtime. CRI+O can optionally provide Kata Containers as a runtime. See +the Add the Kata runtime to Kubernetes section for details.

    +

    With CRI+O, the Kata Containers can be set as the runtime with a +per-pod RuntimeClass annotation.

    +
    +

    Note

    +

    If you are using CRI-O + Kata Containers as the runtime and choose the +flannel for pod networking (see Choose a pod network add-on), the +/etc/crio/crio.conf file needs to include the value below. On +Clear Linux OS this is done automatically.

    +
    [crio.runtime]
    +manage_network_ns_lifecycle = true
    +
    +
    +
    +
  6. +
  7. Once the cluster initialization is complete, continue reading about how to +Use your cluster.

  8. +
+
+
+

containerd

+

For information on containerd as as Kubernetes CRI, see What is +containerd?. To use containerd as the Kubernetes CRI:

+
    +
  1. Start the containerd service and enable it to run at boot automatically:

    +
    sudo systemctl enable --now containerd.service
    +
    +
    +
  2. +
  3. Configure kubelet to use containerd. and reload the service.

    +
    sudo mkdir -p  /etc/systemd/system/kubelet.service.d/
    +
    +cat << EOF | sudo tee  /etc/systemd/system/kubelet.service.d/0-containerd.conf
    +[Service]
    +Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock"
    +EOF
    +
    +
    +
  4. +
  5. Configure kubelet to use systemd as the cgroup driver. and reload the +service.

    +
    sudo mkdir -p /etc/systemd/system/kubelet.service.d/
    +
    +cat << EOF | sudo tee  /etc/systemd/system/kubelet.service.d/10-cgroup-driver.conf
    +[Service]
    +Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=systemd"
    +EOF
    +
    +
    +
  6. +
  7. Reload the systemd manager configuration.

    +
    sudo systemctl daemon-reload
    +
    +
    +
  8. +
  9. Run the kubeadm command to initialize the master node with the +--cri-socket parameter:

    +
    +

    Important

    +

    You may need to add additional parameters to the command below, +depending the pod network addon in use.

    +

    In this example, the --pod-network-cidr 10.244.0.0/16 +parameter is to use flannel as the pod networking. See Choose a pod +network add-on for more information.

    +
    +
    sudo kubeadm init \
    +--cri-socket=/run/containerd/containerd.sock
    +--pod-network-cidr 10.244.0.0/16
    +
    +
    +
  10. +
  11. (Optional) By default, containerd will use runc as the default +runtime. containerd can optionally provide Kata Containers as a runtime. +See the Add the Kata runtime to Kubernetes section for details.

    +

    With containerd, the Kata Containers can be set as the runtime with a +per-pod RuntimeClass annotation.

    +
  12. +
  13. Once the cluster initialization is complete, continue reading about how to +Use your cluster.

  14. +
+
+
+

Docker

+

For information on Docker, see What is Docker?. To use Docker as the +Kubernetes container runtime:

+
    +
  1. Make sure Docker is installed:

    +
    sudo swupd bundle-add containers-basic
    +
    +
    +
  2. +
  3. Start the Docker service and enable it to start automatically at boot:

    +
    sudo systemctl enable --now docker.service
    +
    +
    +
  4. +
  5. Configure kubelet to use the Clear Linux OS directory for cni-plugins and reload the +service.

    +
    sudo mkdir -p  /etc/systemd/system/kubelet.service.d/
    +
    +cat << EOF | sudo tee  /etc/systemd/system/kubelet.service.d/0-cni.conf
    +[Service]
    +Environment="KUBELET_EXTRA_ARGS=--cni-bin-dir=/usr/libexec/cni"
    +EOF
    +
    +
    +
    sudo systemctl daemon-reload
    +
    +
    +
  6. +
  7. Run the kubeadm command to initialize the master node:

    +
    +

    Important

    +

    You may need to add additional parameters to the command below, +depending the pod network addon in use.

    +

    In this example, the --pod-network-cidr 10.244.0.0/16 +parameter is to use flannel as the pod networking. See Choose a pod +network add-on for more information.

    +
    +
    sudo kubeadm init \
    +--pod-network-cidr 10.244.0.0/16
    +
    +
    +
  8. +
  9. Once the cluster initialization is complete, continue reading about how to +Use your cluster.

  10. +
+
+
+

Add the Kata runtime to Kubernetes

+

For information on Kata as a container runtime, see What is Kata Containers*?. +Using Kata Containers is optional.

+

You can use kata-deploy to install all the necessary parts of Kata +Containers after you have a Kubernetes cluster running with one of the CRI’s +using the default runc runtime. Follow the steps in the Kubernetes quick start +section of the kata-containers GitHub README +to install Kata.

+
+
+
+
+

Use your cluster

+

Once your master control plane is successfully initialized, follow the +instructions presented about how to use your cluster and its IP, token, +and hash values are displayed. It is important that you record this +information because it is required to join additional nodes to the cluster.

+

A successful initialization looks like this:

+
Your Kubernetes control-plane has initialized successfully!
+
+To start using your cluster, you need to run the following as a regular user:
+
+mkdir -p $HOME/.kube
+sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
+sudo chown $(id -u):$(id -g) $HOME/.kube/config
+
+...
+
+You can now join any number of machines by running the following on each node
+as root:
+
+kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
+
+
+

With the first node of the cluster setup, you can continue expanding the +cluster with additional nodes and start deploying containerized applications. +For further information on using Kubernetes, see Related topics.

+
+

Note

+

By default, the master node does not run any pods for security reasons. To +setup a single-node cluster and allow the master node to also run pods, the +master node will need to be untained. See the Kubernetes documentation on +control plane node isolation.

+
+
+
+

Troubleshooting

+
+

Package configuration customization

+

Clear Linux OS is a stateless system that looks for user-defined package configuration +files in the /etc/<package-name> directory to be used as default. If +user-defined files are not found, Clear Linux OS uses the distribution-provided +configuration files for each package.

+

If you customize any of the default package configuration files, you must +store the customized files in the /etc/ directory. If you edit any of +the distribution-provided default files, your changes will be lost in the next +system update as the default files will be overwritten with the updated files.

+

Learn more about Stateless in Clear Linux OS.

+
+
+

Logs

+
    +
  • Check the kubelet service logs sudo journalctl -u kubelet

  • +
+
+
+

Setting proxy servers for Kubernetes

+

If you receive any of the messages below, check outbound Internet access. You +may be behind a proxy server.

+
+
    +
  • Images cannot be pulled.

  • +
  • Connection refused error.

  • +
  • Connection timed-out or Access Refused errors.

  • +
  • The warnings when kubeadm init is run.

    +
    [WARNING HTTPProxy]: Connection to "https://<HOST-IP>" uses proxy "<PROXY-SERVER>". If that is not intended, adjust your proxy settings
    +[WARNING HTTPProxyCIDR]: connection to "10.96.0.0/12" uses proxy "<PROXY-SERVER>". This may lead to malfunctional cluster setup. Make sure that Pod and Services IP ranges specified correctly as exceptions in proxy configuration
    +[WARNING HTTPProxyCIDR]: connection to "10.244.0.0/16" uses proxy "<PROXY-SERVER>". This may lead to malfunctional cluster setup. Make sure that Pod and Services IP ranges specified correctly as exceptions in proxy configuration
    +
    +
    +
  • +
+
+

If you use an outbound proxy server, you must configure proxy settings +appropriately for all components in the stack including kubectl and +container runtime services.

+

Configure the proxy settings, using the standard HTTP_PROXY, +HTTPS_PROXY, and NO_PROXY environment variables. The NO_PROXY values are +especially important for Kubernetes to ensure private IP traffic does not try +to go out the proxy.

+
    +
  1. Set your environment proxy variables. Ensure that your local IP address is +explicitly included in the environment variable NO_PROXY. Setting +localhost is not sufficient!

    +
    export http_proxy=http://proxy.example.com:80
    +export https_proxy=http://proxy.example.com:443
    +export no_proxy=.svc,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,`hostname`,localhost
    +
    +
    +
    +

    Important

    +

    kubeadm commands specifically use these shell variables for proxy +configuration. Ensure they are set your running terminal before running +kubeadm commands.

    +
    +
  2. +
  3. Run the following command to add systemd drop-in configurations for each +service to include proxy settings:

    +
    services=(kubelet docker crio containerd)
    +for s in "${services[@]}"; do
    +sudo mkdir -p "/etc/systemd/system/${s}.service.d/"
    +cat << EOF | sudo tee "/etc/systemd/system/${s}.service.d/proxy.conf"
    +[Service]
    +Environment="HTTP_PROXY=${http_proxy}"
    +Environment="HTTPS_PROXY=${https_proxy}"
    +Environment="SOCKS_PROXY=${socks_proxy}"
    +Environment="NO_PROXY=${no_proxy}"
    +EOF
    +done
    +
    +
    +
  4. +
  5. Reload the systemd manager configuration.

    +
    sudo systemctl daemon-reload
    +
    +
    +
  6. +
+

If you had a previously failed initialization due to a proxy issue, restart +the process with the kubeadm reset command.

+
+
+

DNS issues

+
    +
  • <HOSTNAME> not found in <IP> message.

    +
    +

    Your DNS server may not be appropriately configured. Try adding an entry +to the /etc/hosts file with your host’s IP and Name.

    +

    Use the commands hostname and hostname -I to +retrieve them.

    +

    For example:

    +
    10.200.50.20 myhost
    +
    +
    +
    +
  • +
  • coredns pods are stuck in container creating state and logs show entries +similar to one of the following:

    +
      Warning  FailedCreatePodSandBox  5m7s                 kubelet, kata3     Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get network JSON for pod sandbox k8s_coredns-<ID>>-5gpj2_kube-system_<UUID>): cannot convert version ["" "0.1.0" "0.2.0"] to 0.4.0
    +
    +In this case the :file:`/etc/cni/net.d/10-flannel.conf` or another CNI file
    +is using an incompatible version. Delete the file and restart the stack.
    +
    +
    +
    Warning  FailedCreatePodSandBox  117s (x197 over 45m)  kubelet, kata3     (combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_coredns-<ID>>-npsm5_kube-system_<UUID>: error getting ClusterInformation: Get https://[10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/default: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")
    +
    +
    +

    In this case, there may be multiple CNI configuration files in the +/etc/cni/net.d folder. Delete all the files in this directory and +restart the stack.

    +
    Warning  FailedScheduling  55s (x3 over 2m12s)  default-scheduler  0/1
    +nodes are available: 1 node(s) had taints that the pod didn't tolerate.
    +
    +
    +

    In this case, there may be multiple CNI configuration files in the +/etc/cni/net.d folder. Delete all the files in this directory, apply +a CNI plugin, and restart the stack.

    +
  • +
+
+
+
+

Reference

+
+

What is Kubernetes?

+

Kubernetes (K8s) is an open source system for automating deployment, scaling, +and management of containerized applications. It groups containers that make +up an application into logical units for easy management and discovery.

+

Kubernetes supports using a variety of container runtimes.

+
+
+

What is a Container Network Interface (CNI)?

+

In Kubernetes, a pod is a group of one +or more containers and is the smallest deployable unit of computing in a +Kubernetes cluster. Pods have shared storage/network internally but +communication between pods requires additional configuration. If you want your +pods to be able to communicate with each other you must choose and install a +pod network add-on.

+

Some pod network add-ons enable advanced functionality with physical networks +or cloud provider networks.

+
+
+

What is a Container Runtime Interface (CRI)?

+

Container runtimes are the underlying fabric that pod workloads execute inside +of. Different container runtimes offer different balances between features, +performance, and security.

+

Kubernetes allows integration various container runtimes via a container +runtime interface (CRI).

+
+

What is CRI+O?

+

CRI+O is a lightweight alternative to using Docker as +the runtime for kubernetes. It allows Kubernetes to use any OCI-compliant +runtime as the container runtime for running pods, such as runc and +Kata Containers as the container runtimes.

+

CRI+O allows setting a different runtime per-pod.

+
+
+

What is containerd?

+

containerd is the runtime that the Docker engine +is built on top of.

+

Kubernetes can use containerd directly instead of going through the Docker +engine for increased robustness and performance. See the blog post on +kubernetes containerd integration +for more details.

+

containerd allows setting a different runtime per-pod.

+
+
+

What is Docker?

+

Docker is an engine for running software packaged +as functionally complete units, called containers, using the same operating +system kernel.

+

The default built-in runtime provided by Kubernetes is using the system Docker +installation via Dockershim and as a result is one of the simplest to use. One +limitation of using Dockershim is that all pods on the Kubernetes node will +inherit and use the default runtime that Docker is set to use. To be able to +specify a container runtime per-Kerbernetes service, use CRI+O or containerd.

+
+
+
+

What is Kata Containers*?

+

Kata Containers is an alternative OCI compatible runtime that secures +container workloads in a lightweight virtual machine. It provides stronger +workloads isolation using hardware virtualization technology as a second layer +of defense for untrusted workloads or multi-tenant scenarios.

+

The Kata Containers (kata-runtime) adheres to OCI guidelines and works seamlessly with Kubernetes through Docker, +containerd, or CRI+O.

+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/lamp-server.html b/tutorials/lamp-server.html new file mode 100644 index 000000000..0a70a141b --- /dev/null +++ b/tutorials/lamp-server.html @@ -0,0 +1,1652 @@ + + + + + + + + + + LAMP Web Server — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

LAMP Web Server

+

This tutorial provides instructions on how to set up a +LAMP web server on Clear Linux* OS and how +to use phpMyAdmin* to manage an associated database. Note that this +tutorial installs MariaDB*, which is a drop-in replacement for MySQL*.

+

In order to create a web server using Clear Linux OS as the host OS, your host system +must be running Clear Linux OS. This tutorial assumes you have installed Clear Linux OS on your +host system. For detailed instructions on installing Clear Linux OS on a bare metal +system, visit Install Clear Linux* OS from the live desktop.

+

This tutorial covers:

+ +
+

Install Apache

+

Apache is an open source HTTP web server application that can run on several +operating systems, including Clear Linux OS. Go to the Apache HTTP Server Project +for more information.

+
+

Install the httpd bundle

+

The httpd bundle contains the packages needed to install the +Apache software bundle on Clear Linux OS.

+
+

Note

+

Before you install new packages, update the Clear Linux OS with the following +console command:

+
sudo swupd update
+
+
+
+
    +
  1. To install the bundle, enter the following command:

    +
    sudo swupd bundle-add httpd
    +
    +
    +
  2. +
  3. Start the Apache service and set it start automatically on boot, +enter the following commands:

    +
    sudo systemctl enable --now httpd.service
    +
    +
    +
  4. +
  5. To verify that the Apache server application is running, open a web +browser and navigate to: http://localhost.

    +

    If the service is running, a confirmation message will appear, similar to the +message shown in figure 1.

    +
    +This web server is operational from host. +
    +

    Figure 1: Confirmation that the Apache service is running.

    +
    +
    +
    +

    Note

    +

    The index.html file is located in the /var/www/html directory +of your host system. You will copy this file into a new location after you +modify the configuration in the next step.

    +
    +
  6. +
+
+
+
+

Change the default configuration and data directory

+

Clear Linux OS is designed to be a Stateless operating system which means that you +must create an optional configuration file to override the default values. +The default location of the Apache configuration file, httpd.conf, +is located in the /usr/share/defaults/httpd directory. Clear Linux OS can +override this directory as part of the stateless paradigm. This default +.conf file includes the following directives that allow for additional +locations of configuration definitions:

+
# Virtual hosts
+IncludeOptional /usr/share/defaults/httpd/conf.d/*.conf
+IncludeOptional /usr/share/defaults/httpd/conf.modules.d/*.conf
+IncludeOptional /etc/httpd/conf.d/*.conf
+IncludeOptional /etc/httpd/conf.modules.d/*.conf
+
+
+

In this section you will define your own httpd.conf file to override the +default values, and define a custom DocumentRoot for your web server.

+
    +
  1. Create the directory structure for /etc/httpd/conf.d.

    +
    sudo mkdir -p /etc/httpd/conf.d
    +
    +
    +
  2. +
  3. Create and open the httpd.conf file in your new /etc/httpd/conf.d +directory.

    +
    sudo nano /etc/httpd/conf.d/httpd.conf
    +
    +
    +
  4. +
  5. Add the DocumentRoot variable to httpd.conf. Copy the content +listed below into the new /etc/httpd/conf.d/httpd.conf file.

    +
    #
    +# Set a new location for DocumentRoot
    +#
    +DocumentRoot "/var/www/tutorial"
    +
    +#
    +# Relax access to content within /var/www/tutorial for this example
    +#
    +<Directory "/var/www/tutorial">
    +  AllowOverride none
    +  Require all granted
    +</Directory>
    +
    +
    +
  6. +
  7. Create a new DocumentRoot directory structure and copy the +index.html file from /var/www/html directory to +/var/www/tutorial.

    +
    sudo mkdir –p /var/www/tutorial
    +cd /var/www/tutorial
    +sudo cp /var/www/html/index.html .
    +
    +
    +
  8. +
  9. To ensure a successful setup, edit the new index.html file with an +obvious change.

    +
    sudo nano index.html
    +
    +
    +

    For example, we changed the default message

    +

    “It works!”

    +

    to

    +

    “It works from its new location!”

    +
  10. +
  11. Restart httpd.service.

    +
    sudo systemctl restart httpd.service
    +
    +
    +
  12. +
  13. Go to http://localhost to view the new screen. You should see your updated +default message from step 5.

  14. +
  15. Change the configuration back to the default /var/www/html +location. To do this, edit the /etc/httpd/conf.d/httpd.conf file +again and replace any instance of /var/www/tutorial with /var/www/html.

    +
    sudo nano /etc/httpd/conf.d/httpd.conf
    +
    +
    +
  16. +
  17. Restart httpd.service.

    +
    sudo systemctl restart httpd.service
    +
    +
    +
  18. +
  19. Go to http://localhost and verify that you can see the default screen +again.

  20. +
  21. Optionally, remove the /var/www/tutorial directory you previously created.

    +
    sudo rm /var/www/tutorial/index.html
    +sudo rmdir /var/www/tutorial
    +
    +
    +
  22. +
+
+
+

Install PHP

+

An Apache installation allows you to display static web pages. Enabling PHP +allows you to generate and display dynamic web pages. To add this +functionality to your web server, install PHP on your system.

+
    +
  1. To get the php components, enter the following command:

    +
    sudo swupd bundle-add php-basic
    +
    +
    +
  2. +
  3. To enable PHP and set it to start automatically on boot, enter the +following commands:

    +
    sudo systemctl enable --now php-fpm.service
    +sudo systemctl restart httpd.service
    +
    +
    +

    After restarting the Apache service, test your PHP installation.

    +
  4. +
  5. Create and open a file named phpinfo.php in the /var/www/html/ +directory using a text editor.

    +
    sudo nano /var/www/html/phpinfo.php
    +
    +
    +
  6. +
  7. Add the following line to the file:

    +
    <?PHP phpinfo() ?>
    +
    +
    +
  8. +
  9. Go to http://localhost/phpinfo.php.

  10. +
  11. Verify that the PHP information screen appears, similar to figure 2:

    +
    +PHP information screen +
    +

    Figure 2: The PHP information screen.

    +
    +
    +
  12. +
+

If the PHP information screen is displayed, you have successfully installed +the PHP components and are now ready to add your database application to +complete your LAMP server implementation.

+
+
+

Install MariaDB

+

Install MariaDB to store content. MariaDB is a drop-in replacement for MySQL +and is available in the database-basic Clear Linux OS bundle.

+
    +
  1. To install the database-basic bundle, enter the following command:

    +
    sudo swupd bundle-add mariadb
    +
    +
    +
  2. +
  3. To start MariaDB after it is installed and set it to start automatically on +boot, enter the following commands:

    +
    sudo systemctl enable --now mariadb
    +
    +
    +
  4. +
  5. To check the status of MariaDB, enter the following command:

    +
    sudo systemctl status mariadb
    +
    +
    +

    Press Ctrl + c or q to exit.

    +
  6. +
+
+

Security hardening

+

With the MariaDB service running, we can perform some basic security +hardening.

+
    +
  1. To add a basic layer of security, enter the following command:

    +
    sudo mysql_secure_installation
    +
    +
    +
  2. +
  3. Respond to the questions that appear in the script below.

    +
    +

    Note

    +

    Our suggested responses follow each question.

    +
    +
    Enter current password for root (enter for none):
    +
    +
    +

    In order to secure MariaDB, we need the current password for the root +user. For a newly installed MariaDB without a set root password, the +password is blank. Thus, press enter to continue.

    +
    OK, successfully used password, moving on...
    +
    +Set root password? [Y/n]
    +
    +
    +

    Set the root password to prevent unauthorized MariaDB root user logins. +To set a root password, type ‘y’.

    +
    New password:
    +
    +
    +

    Type the desired password for the root user.

    +
    Re-enter new password:
    +
    +
    +

    Re-type the desired password for the root user.

    +
    Password updated successfully!
    +Reloading privilege tables..
    +... Success!
    +
    +Remove anonymous users? [Y/n]
    +
    +
    +

    By default, a MariaDB installation includes an anonymous user that allows +anyone to log in to MariaDB without a user account. This anonymous user +is intended only for testing and for a smoother installation. To remove +the anonymous user and make your database more secure, type ‘y’.

    +
    ... Success!
    +Disallow root login remotely? [Y/n]
    +
    +
    +

    Normally, root should only be allowed to connect from the ‘localhost’. This +ensures that someone cannot guess the root password from the network. To +block any remote root login, type ‘y’.

    +
    ... Success!
    +Remove test database and access to it? [Y/n]
    +
    +
    +

    By default, MariaDB includes a database named ‘test’ which anyone can access. +This database is also intended only for testing and should be removed. To +remove the test database, type ‘y’.

    +
    - Dropping test database...
    +... Success!
    +- Removing privileges on test database...
    +... Success!
    +Reload privilege tables now? [Y/n]
    +
    +
    +

    Reloading the privilege tables ensures all changes made so far take +effect immediately. To reload the privilege tables, type ‘y’.

    +
    ... Success!
    +
    +Cleaning up...
    +
    +
    +

    All done! If you’ve completed all of the above steps, your MariaDB +installation should now be secure.

    +

    Thanks for using MariaDB!

    +
  4. +
+

The MariaDB installation is complete, and we can now install phpMyAdmin to +manage the databases.

+
+
+
+

Install phpMyAdmin

+

The web-based tool phpMyAdmin is a straightforward way to manage MySQL or +MariaDB databases. Visit the phpMyAdmin website for the complete +discussion regarding phpMyAdmin, its documentation, the latest downloads, +and other useful information.

+

In this tutorial, we use the latest English version of phpMyAdmin.

+
    +
  1. Download the phpMyAdmin-<version>-english.tar.gz file to your +~/Downloads directory. Here, <version> refers to the current +version available at https://www.phpmyadmin.net/downloads.

    +
    +

    Note

    +

    This example downloads and uses version 4.6.4.

    +
    +
  2. +
  3. Once the file has been successfully downloaded and verified, decompress +the file and directories into the Apache web server document root +directory. Use the following commands:

    +
    cd /var/www/html
    +sudo tar –xzvf ~/Downloads/phpMyAdmin-4.6.4-english.tar.gz
    +
    +
    +
  4. +
  5. To keep things simple, rename the newly created +phpMyAdmin-4.6.4-english directory to phpMyAdmin with the +following command:

    +
    sudo mv phpMyAdmin-4.6.4-english phpMyAdmin
    +
    +
    +
  6. +
+
+
+

Use phpMyAdmin to manage a database

+

You can use the phpMyAdmin web-based tool to manage your databases. Follow the +steps below for setting up a database called “WordPress”.

+
    +
  1. Verify that a successful installation of all LAMP server components by +going to http://localhost/phpMyAdmin. See figure 3.

  2. +
  3. Log in with your root userid and the password you set up when you ran the +mysql_secure_installation command. Enter your +credentials and select Go to log in:

    +
    +phpMyAdmin login page +
    +

    Figure 3: The phpMyAdmin login page.

    +
    +
    +
  4. +
  5. Verify a successful login by confirming that the main phpMyAdmin page +displays, as shown in figure 4:

    +
    +phpMyAdmin dashboard +
    +

    Figure 4: The phpMyAdmin dashboard.

    +
    +
    +
  6. +
  7. Set up a database by selecting the Databases tab, as shown in +figure 5.

  8. +
  9. Enter WordPress in the text field below the Create database +label.

  10. +
  11. Select the utf8_unicode_ci option from the +Collation drop-down menu beside the text field.

  12. +
  13. Click Create.

    +
    +Databases tab +
    +

    Figure 5: The Databases tab.

    +
    +
    +
  14. +
  15. Set up user permissions by selecting the WordPress database +located in the left panel. See figure 6.

  16. +
  17. Select the Privileges tab. Figure 6 shows its contents.

    +
    +Privileges tab +
    +

    Figure 6: The Privileges tab.

    +
    +
    +
  18. +
  19. Click Add user account located at the bottom of the +Privileges tab. The Add user account page appears, as shown +in figure 7.

    +
    +User accounts tab +
    +

    Figure 7: The User accounts tab.

    +
    +
    +
  20. +
  21. Enter the following information in the corresponding fields that appear +in figure 7 above:

    +
      +
    • User name: wordpressuser

    • +
    • Password: wp-example

    • +
    • Re-type: wp-example

    • +
    +
  22. +
  23. In the Database for user account section, select +Grant all privileges on database “WordPress”.

  24. +
  25. At the bottom of the page, click Go.

  26. +
+

If successful, you should see the screen shown in figure 8:

+
+User added successfully +
+

Figure 8: The user wordpressuser is successfully added.

+
+
+

Congratulations!

+

You have now created a fully functional LAMP server along with a +WordPress*-ready database using Clear Linux OS.

+
+
+

Next steps

+

Next, add the WordPress components needed to host a WordPress website with WordPress* Server.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/mirror-upstream-server.html b/tutorials/mirror-upstream-server.html new file mode 100644 index 000000000..fee916248 --- /dev/null +++ b/tutorials/mirror-upstream-server.html @@ -0,0 +1,1435 @@ + + + + + + + + + + Mirror Upstream Clear Linux OS Update Server — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Mirror Upstream Clear Linux OS Update Server

+

For organizations that want to use the Clear Linux OS upstream updates, but want the +benefits of a local mirror, this tutorial shows how to set up one and +configure your Clear Linux OS clients to use it.

+ +
+

Prerequisites

+
    +
  • The recommended disk space for the mirror server should have at least 100GB +of disk space as each complete update content is approximately 45GB.

  • +
+
+
+

Install up Clear Linux OS server to host updates

+
    +
  1. Follow the Install Clear Linux* OS from the live server guide to install Clear Linux OS server. +Add a user with Administrator privilege.

  2. +
  3. After installation is complete, boot it up.

  4. +
  5. Add the wget bundle. This will be used to clone the upstream Clear Linux OS server.

    +
    sudo swupd bundle-add wget
    +
    +
    +
  6. +
+
+
+

Clone the Clear Linux OS update content

+

Clear Linux OS periodically releases a “minversion”, which is a complete update. +Then, subsequent releases are small updates until the next minversion.

+

Download a minversion to start your mirror.

+
    +
  1. Determine a proper minversion by looking at a Manifest.MoM file +for a particular release of Clear Linux OS.

    +

    For example, if you look at +https://cdn.download.clearlinux.org/update/33010/Manifest.MoM, +you will see that the minversion is 32900. So clone this version as the +starting point.

    +
    MANIFEST        30
    +version:        33010
    +previous:       33000
    +minversion:     32900
    +filecount:      1131
    +timestamp:      1588358889
    +contentsize:    0
    +
    +
    +
  2. +
  3. Make a directory to store the cache.

    +
    mkdir ~/mirror-download-clearlinux-org && cd $_
    +
    +
    +
  4. +
  5. Recursively download the update/0 folder.

    +
    wget --no-verbose \
    +--no-parent --recursive \
    +--no-host-directories -erobots=off \
    +--reject "index.html" https://cdn.download.clearlinux.org/update/0/
    +
    +
    +
  6. +
  7. Recursively download the update/version folder.

    +
    wget --no-verbose \
    +--no-parent --recursive \
    +--no-host-directories -erobots=off \
    +--reject "index.html" https://cdn.download.clearlinux.org/update/version/
    +
    +
    +
  8. +
  9. Now, recursively download the determined minversion, which for this example +is 32900.

    +
    wget --no-verbose \
    +--no-parent --recursive \
    +--no-host-directories -erobots=off \
    +--reject "index.html" https://cdn.download.clearlinux.org/update/32900/
    +
    +
    +
    +

    Note

    +

    A minversion is pretty big, which is approximately 45GB. Depending on your +proximity to the upstream server and your connection speed to the Internet, +it may take up to a couple of days or more to complete the download. So +be patient.

    +
    +
  10. +
  11. Download later versions, up to the latest, if you like.

  12. +
+
+
+

Setup a web server to host the mirrored content

+

By design, the Clear Linux OS swupd client communicates with the update server using +HTTPS for security reasons. However, it can use HTTP by adding the +--allow-insecure-http flag, if needed. Setting an HTTPS is a lot +more involved. For this tutorial, we’ll just use an HTTP server for +demonstration purpose.

+
    +
  1. Install the nginx bundle.

    +
    sudo swupd bundle-add nginx
    +
    +
    +
  2. +
  3. Configure the web server.

    +
      +
    1. Create a symbolic link to the mirrored update content directory.

      +
      sudo mkdir -p /var/www && cd $_
      +sudo ln -sf $HOME/mirror-download-clearlinux-org mirror-download-clearlinux-org
      +
      +
      +
    2. +
    3. Set up nginx configuration files.

      +
      sudo mkdir -p /etc/nginx/conf.d
      +sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf
      +
      +
      +
    4. +
    5. Grant $USER permission to run the web server.

      +
      sudo tee -a /etc/nginx/nginx.conf << EOF
      +user $USER;
      +EOF
      +
      +
      +
    6. +
    7. Configure the web server.

      +
      sudo tee -a /etc/nginx/conf.d/mirror-download-clearlinux-org.conf << EOF
      +server {
      +  listen 80;
      +  listen [::]:80;
      +  server_name localhost;
      +  location / {
      +    root /var/www/mirror-download-clearlinux-org;
      +    autoindex on;
      +  }
      +}
      +EOF
      +
      +
      +
    8. +
    9. Set nginx to start automatically on boot and then start it.

      +
      sudo systemctl enable nginx --now
      +
      +
      +
    10. +
    +
  4. +
+
+
+

Test your mirror

+

Now, try out your mirror by installing Clear Linux OS and adding bundles from it.

+
    +
  1. Download either the live desktop or live server installer ISO of the +same version as the mirrored version, which is 32900 for this tutorial. +Go to https://cdn.download.clearlinux.org/releases/<release-version>/clear.

  2. +
  3. Burn the ISO to a thumb drive. See Create a bootable USB drive using Etcher*.

  4. +
  5. Boot it up and start the installer. Depending on which version of +Clear Linux OS you want to install, follow one of these guides:

    + +

    In the Advanced options tab of the installer, select +Swupd Mirror. See Figure 1.

    +
    +Advanced options > Swupd Mirror +
    +

    Figure 1: Advanced options > Swupd Mirror

    +
    +
    +

    In the Mirror URL field, set it to the IP address of your mirror. It should be something like this: http://<IP address of mirror server>/update. +And check the option Allow installation over insecure connections (http://). See Figure 2.

    +
    +Advanced options > Mirror URL setting +
    +

    Figure 2: Advanced options > Mirror URL setting

    +
    +
    +
  6. +
  7. After installation completes, boot up, and log in.

  8. +
  9. Verify that the swupd client is pointing to your mirror.

    +
    sudo swupd info
    +
    +
    +

    Example output:

    +
    Warning: This is an insecure connection
    +The --allow-insecure-http flag was used, be aware that this poses a threat the system
    +
    +Distribution:      Clear Linux OS
    +Installed version: 32900
    +Version URL:       https://192.168.1.100/update
    +Content URL:       https://192.168.1.100/update
    +
    +
    +
  10. +
  11. Try listing available bundles on your mirror.

    +
    sudo swupd bundle-list -a
    +
    +
    +
  12. +
  13. Add a bundle.

    +
    sudo swupd bundle-add <bundle-name>
    +
    +
    +
  14. +
+
+
+

Keep your mirror in sync with upstream

+

Be sure to keep your mirror in sync with upstream so that your clients have the +latest and greatest software and security updates. You can do that continuing +to clone the newer upstream releases.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/multi-boot/dual-boot-linux.html b/tutorials/multi-boot/dual-boot-linux.html new file mode 100644 index 000000000..1ade13930 --- /dev/null +++ b/tutorials/multi-boot/dual-boot-linux.html @@ -0,0 +1,1590 @@ + + + + + + + + + + Dual-boot Clear Linux* OS with Any GRUB-based Linux* Distro — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Dual-boot Clear Linux* OS with Any GRUB-based Linux* Distro

+

In this tutorial, we show how to install Clear Linux OS alongside any GRUB-based +Linux* distro. To do so, we resize the existing Linux root partition to +make room to install Clear Linux OS. Then we show 3 methods to dual-boot Clear Linux OS +with an existing Linux distro.

+

Although we use Ubuntu* 19.04 Desktop as the example here, +these instructions also work for other distros such as Mint*, Kubuntu*, +Fedora*, CentOS*, among others.

+ +
+

Prerequisites

+
    +
  • Ubuntu 19.04 Desktop is already installed.

  • +
  • There is no unallocated space available, but there is free space +on the Ubuntu root partition.

  • +
  • Follow the Preliminary steps that follow below.

  • +
+
+
+

Preliminary steps

+
    +
  1. Visit our Downloads page.

  2. +
  3. Download the file clear-<release number>-live-desktop.iso, +also called the Clear Linux OS Desktop.

    +
    +

    Note

    +

    <release-number> is the latest Clear Linux OS auto-numbered release.

    +
    +
  4. +
  5. Follow your OS instructions to +create a bootable usb drive.

  6. +
+
+
+

Install Clear Linux OS with Advanced Installation

+
    +
  1. Shut down the Ubuntu OS before proceeding.

  2. +
  3. Boot up the Clear Linux OS live desktop image, and click the penguin +icon, at left, to launch the installer.

  4. +
  5. Complete the Required Options until you reach +Select Installation Media. See Figure 1.

    +
    +Required options +
    +

    Figure 1: Required options

    +
    +
    +
  6. +
  7. Click Select Installation Media.

  8. +
  9. Select the “Advanced Installation” option. See Figure 2.

    +
    +Advanced Installation +
    +

    Figure 2: Advanced Installation

    +
    +
    +
  10. +
  11. Click Partition Media to start the GParted tool.

  12. +
  13. Shrink the Ubuntu root partition to free up some space for Clear Linux OS.

    +
      +
    1. Select the Ubuntu root partition (in this example: /dev/sda2). +Right-click it and select “Resize/Move”. See Figure 3.

      +
      +Ubuntu root partition +
      +

      Figure 3: Ubuntu root partition

      +
      +
      +
    2. +
    3. In the New size (MiB) field, reduce the size of the root +partition, leaving at least 22GB free. This allows enough space to +create a swap partition (250MB) and root partition (approx. 21GB) for +Clear Linux OS.

      +
      +

      Note

      +

      The resulting free space appears in the “Free space following +(MiB)”. Click the “Resize/Move” button. See Figure 4.

      +
      +
      +Resize Ubuntu root +
      +

      Figure 4: Resize Ubuntu root

      +
      +
      +
    4. +
    5. Click the green checkmark button to proceed. See Figure 5.

      +
      +New unallocated space +
      +

      Figure 5: New unallocated space

      +
      +
      +
    6. +
    +
  14. +
  15. Share the existing EFI system partition by designating as such.

    +
      +
    1. Right-click the EFI System Partition (e.g., /dev/sda1) +and select Name Partition.

    2. +
    3. Set the name to “CLR_BOOT”. See Figure 6 and Figure 7.

      +
      +Name CLR_BOOT partition +
      +

      Figure 6: Name CLR_BOOT partition

      +
      +
      +
      +Resulting CLR_BOOT main screen +
      +

      Figure 7: Resulting CLR_BOOT main screen

      +
      +
      +
    4. +
    +
  16. +
  17. Create a swap partition for Clear Linux OS.

    +
      +
    1. Right-click the “unallocated” partition and select New +to add a new partition.

    2. +
    3. Enter “250” in the New Size (MiB) field to create a +250MB swap space.

    4. +
    5. Enter “CLR_SWAP” in the Partition name field and select +“linux-swap” as the “File system” type.

    6. +
    7. Click the “Add” button. See Figure 8.

      +
      +Create CLR_SWAP partition +
      +

      Figure 8: Create CLR_SWAP partition

      +
      +
      +
    8. +
    +
  18. +
  19. Create Clear Linux OS root partition.

    +
      +
    1. Right-click “unallocated” partition again and select New +to add a new partition.

    2. +
    3. Create a partition that is at least 21GB, enter “CLR_ROOT” in the +Partition name field, and select a File system +type of your choice.

    4. +
    5. Click the “Add” button. See Figure 9.

      +
      +Create CLR_ROOT partition +
      +

      Figure 9: Create CLR_ROOT partition

      +
      +
      +
    6. +
    +
  20. +
  21. Click the green checkmark button to create the newly-defined partitions. +See Figure 10.

    +
    +Partitions to be created +
    +

    Figure 10: Partitions to be created

    +
    +
    +
  22. +
  23. Close the GParted window, and the Clear Linux OS installer will reappear with +the newly-defined partitions to use. See Figure 11.

    +
    +|CL| installer partitions defined +
    +

    Figure 11: Clear Linux OS installer partitions defined

    +
    +
    +
  24. +
  25. Complete the remaining steps of Required Options to +to install Clear Linux OS. Complete any Advanced Options as desired.

  26. +
+
+
+

Boot Clear Linux OS Using One of Three Methods

+

Although we installed Clear Linux OS last, Ubuntu is still the default boot OS. +There are three methods to boot Clear Linux OS:

+
    +
  1. Make systemd-boot, the boot loader that Clear Linux OS uses, the default +boot loader to boot Clear Linux OS and also chain-boot GRUB; therefore, boot +Ubuntu. See boot-clr-method-1.

  2. +
  3. Use GRUB to chain-boot systemd-boot, therefore boot Clear Linux OS. +See boot-clr-method-2.

  4. +
  5. Use your BIOS “Boot Menu” to select and boot Clear Linux OS. +Refer to your system’s manual on how to bring up the “Boot Menu”.

  6. +
+
+

Method 1: Use systemd-boot to Boot Clear Linux OS and also Chain-boot GRUB

+

systemd-boot is the bootloader used by Clear Linux OS. Because Clear Linux OS was installed +after a GRUB-based distro, GRUB is still the default bootloader. +In this method, we make systemd-boot the default bootloader instead and +also provide a path to chain-boot GRUB.

+
    +
  1. Boot up the Clear Linux OS installer image.

  2. +
  3. Open a terminal window.

  4. +
  5. Identify the EFI system partition, Ubuntu root partition, and Clear Linux OS root +partition.

    +
    sudo fdisk -l
    +
    +
    +

    Example output:

    +
    clrlinux@clr-live~ $ sudo fdisk -l
    +...
    +
    +Disk /dev/sda: 335.4 GiB, 360080695296 bytes, 703282608 sectors
    +Disk model: INTEL SSDSCKKF36
    +Units: sectors of 1 * 512 = 512 bytes
    +Sector size (logical/physical): 512 bytes / 512 bytes
    +I/O size (minimum/optimal): 512 bytes / 1048576 bytes
    +Disklabel type: gpt
    +Disk identifier: D5CB69E9-2C27-4A16-9552-3CD6BFA5DA77
    +
    +Device         Start       End   Sectors   Size Type
    +/dev/sda1       2048   1050623   1048576   512M EFI System
    +/dev/sda2    1050624 498481151 497430528 237.2G Linux filesystem
    +/dev/sda3  498481152 498993151    512000   250M Linux swap
    +/dev/sda4  498993152 703281151 204288000  97.4G Linux root (x86-64)
    +...
    +
    +
    +

    The above example output contains these partitions:

    +
      +
    • /dev/sda1 is the EFI system partition originally created by Ubuntu +and shared with Clear Linux OS

    • +
    • /dev/sda2 is the Ubuntu root partition

    • +
    • /dev/sda3 is the swap partition for Clear Linux OS

    • +
    • /dev/sda4 is the Clear Linux OS root partition

    • +
    +

    The remaining steps will work with these partitions.

    +
  6. +
  7. Mount these partitions.

    +
    sudo mkdir /mnt/clearlinux
    +sudo mount /dev/sda4 /mnt/clearlinux/
    +sudo mount /dev/sda1 /mnt/clearlinux/boot
    +
    +
    +
  8. +
  9. Make systemd-boot the default bootloader.

    +
    sudo bootctl install --esp-path=/mnt/clearlinux/boot
    +
    +
    +
  10. +
  11. Add a timeout to systemd-boot so that it will present the menu of +bootable OSes and give you time to select the one you want to boot.

    +
    sudo clr-boot-manager set-timeout 20 --path=/mnt/clearlinux
    +
    +
    +
  12. +
  13. Add a system-boot boot entry for GRUB.

    +
    sudo tee -a /mnt/clearlinux/boot/loader/entries/grub.conf << EOF
    +title GRUB menu
    +efi /EFI/ubuntu/grubx64.efi
    +EOF
    +
    +
    +
  14. +
  15. Umount all partitions.

    +
    sudo umount /mnt/clearlinux/boot /mnt/clearlinux
    +
    +
    +
  16. +
  17. Reboot.

    +
    sudo reboot
    +
    +
    +
  18. +
  19. Remove the Clear Linux OS installer USB thumb drive.

  20. +
  21. You should be presented with the systemd-boot menu. +See Figure 12.

    +
    +systemd-boot menu showing GRUB +
    +

    Figure 12: systemd-boot menu showing GRUB

    +
    +
    +
  22. +
+
+
+

Method 2: Use GRUB to Boot Clear Linux OS

+

In this method, we keep GRUB as the default bootloader, but configure it +to chain-boot systemd-boot, thus allowing us to boot Clear Linux OS. Again, we’re using +Ubuntu as our working example.

+
    +
  1. Boot up Ubuntu.

  2. +
  3. Open a terminal window.

  4. +
  5. Set a timeout value for the GRUB menu so it will be visible at boot time and +allow you select one which OS to boot.

    +
      +
    1. sudoedit /etc/default/grub

      +
      sudoedit /etc/default/grub
      +
      +
      +
    2. +
    3. Set the GRUB_TIMEOUT variable to a desired value.

    4. +
    +
  6. +
  7. Create a menu entry for systemd-boot bootloader.

    +
      +
    1. Identify the UUID for EFI system partition that systemd-boot resides on. +The example below shows the UUID for the EFI system on /dev/sda1 is +“A5A0-337D”.

      +
      sudo blkid
      +
      +
      +

      Example output:

      +
      /dev/sda1: UUID="A5A0-337D" TYPE="vfat" PARTLABEL="CLR_BOOT" PARTUUID="ee664fec-1ade-40d0-9ce4-c08805003c8d"
      +/dev/sda2: UUID="219969c5-1106-4e9f-b6f5-8188d7d94b8b" TYPE="ext4" PARTUUID="00bdf0dc-264d-493c-bf23-a85105011175"
      +/dev/sda3: UUID="65221b07-33cb-40b7-9812-ea484c7606c9" TYPE="swap" PARTLABEL="CLR_SWAP" PARTUUID="5a7926b4-bd11-4bad-b932-cc31c0a75d27"
      +/dev/sda4: UUID="0bedd545-58a7-4f34-b22a-c50bb4a1c2f5" TYPE="ext4" PARTLABEL="CLR_ROOT" PARTUUID="2d60cd03-5739-4cd5-adcc-51a107cde388"
      +
      +
      +
    2. +
    3. sudoedit /etc/grub.d/40_custom and add a menu entry +for Clear Linux OS using UUID from the previous step (for example):

      +
       1#!/bin/sh
      + 2exec tail -n +3 $0
      + 3# This file provides an easy way to add custom menu entries. Simply type the
      + 4# menu entries you want to add after this comment. Be careful not to change
      + 5# the 'exec tail' line above.
      + 6
      + 7menuentry 'Clear Linux OS' {
      + 8   search --fs-uuid --no-floppy --set=root A5A0-337D
      + 9   chainloader (${root})/EFI/org.clearlinux/bootloaderx64.efi
      +10}
      +
      +
      +
    4. +
    5. Update GRUB.

      +
      sudo update-grub
      +
      +
      +
    6. +
    +
  8. +
  9. Reboot.

  10. +
  11. At the GRUB boot menu, select Clear Linux OS to boot Clear Linux OS.

  12. +
  13. Log in.

  14. +
  15. Open a terminal window.

  16. +
  17. By default, any future calls to clr-boot-manager, such as +after a kernel update by swupd or setting the timeout +value for systemd-boot, will modify the UEFI boot order +which will result in making systemd-boot the first boot +entry and you won’t be able to boot Ubuntu any longer. And in order +to boot Ubuntu first, you must change the UEFI boot order back. +To prevent clr-boot-manager from touching the UEFI boot +order, which is especially important in a dual-boot setup, +follow these steps:

    +
    sudo mkdir -p /etc/kernel
    +sudo tee -a /etc/kernel/update_efi_vars << EOF
    +false
    +EOF
    +
    +
    +
  18. +
+
+

Tip

+

The default installation of Clear Linux OS does not set a timeout value for +systemd-boot. Thus, you will not see the systemd-boot menu and the +default kernel will boot right away. +To set a timeout value (for example: 25 seconds), enter:

+
sudo clr-boot-manager set-timeout 25
+
+
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/multi-boot/dual-boot-win.html b/tutorials/multi-boot/dual-boot-win.html new file mode 100644 index 000000000..c1f5fd195 --- /dev/null +++ b/tutorials/multi-boot/dual-boot-win.html @@ -0,0 +1,1571 @@ + + + + + + + + + + Dual-boot Clear Linux* OS and Windows* 10 OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Dual-boot Clear Linux* OS and Windows* 10 OS

+

This guide shows how to install Clear Linux* OS adjacent to an existing Windows* +10 OS. To add Clear Linux OS to an existing Windows installation, follow a method below.

+

In this tutorial you’ll Install Clear Linux* OS from the live desktop as +an additional partition. Alternatively, you may also +Install Clear Linux* OS from the live server.

+ +
+

Method 1: Shrink Windows partition and install Clear Linux OS

+

For this method, we shrink the Windows 10 OS partition to make space for Clear Linux OS.

+
    +
  1. Boot up the Windows 10 OS.

  2. +
  3. Launch the Disk Management utility found under +Create and format hard disk partitions.

  4. +
  5. Right-click the primary Windows partition and select Shrink Volume….

    +
    +Disk Management > Shrink Volume +
    +

    Figure 1: Disk Management > Shrink Volume.

    +
    +
    +
  6. +
  7. Shrink the size of the partition by at least the following amount:

    +
      +
    • For Desktop version, allow at least 21GB.

    • +
    • For Server version, allow at least 4GB.

    • +
    +
  8. +
  9. We shrink C by about 21GB, as shown in Figure 2.

    +
    +Shrink C +
    +

    Figure 2: Shrink C.

    +
    +
    +
  10. +
  11. Shutdown the Windows 10 OS.

  12. +
  13. Follow one of these guides to install Clear Linux OS:

    + +
      +
    1. In the Required options tab, choose Select +Installation Media.

    2. +
    3. Within that menu, select Safe Installation.

    4. +
    5. Go through remaining steps to complete the installation.

    6. +
    7. Reboot.

    8. +
    +
  14. +
  15. During the BIOS POST stage, press F10, or the proper F-key for your +system, to launch the Boot Menu.

    +
    +Boot menu +
    +

    Figure 3: Boot menu

    +
    +
    +
  16. +
  17. In the Boot Menu, use the arrow to select the +OS bootloader as boot device (highlighted).

    +

    Some BIOSes do not support listing multiple partitions. In this case, +it will only show one bootable partition.

    +
    +

    Tip

    +

    If you don’t want to use the BIOS boot menu each time to select an OS, +follow Advanced: Use systemd-boot to boot Windows 10 OS and +|CL|.

    +
    +
  18. +
+
+
+

Method 2: Add another hard disk to your system where you installed Windows

+
    +
  1. Shutdown your system.

  2. +
  3. Open your system and attach another hard drive.

  4. +
  5. Power up your system.

  6. +
  7. Follow one of these guides to install Clear Linux OS:

    + +
      +
    1. In the Required options tab, choose Select +Installation Media.

    2. +
    3. Within that menu, select Destructive Installation, and +select the new hard drive from the device list.

      +
      +

      Warning

      +

      Make sure you don’t select the drive with your Windows 10 OS.

      +
      +
    4. +
    +
    +
      +
    1. Go through remaining steps to complete the installation.

    2. +
    3. Reboot.

    4. +
    +
    +
  8. +
  9. During the BIOS POST stage, press F10, or the proper F-key for your +system, to launch the Boot Menu.

    +
    +Boot menu +
    +

    Figure 4: Boot menu

    +
    +
    +
  10. +
  11. In the Boot Menu, use the arrow to select the +Linux bootloader as boot device.

    +

    Some BIOSes do not support listing multiple partitions. In this case, +it will only show one bootable partition.

    +
  12. +
+
+

Tip

+

If you don’t want to use the BIOS boot menu each time to select an OS, +follow the next section.

+
+
+
+

Advanced: Use systemd-boot to boot Windows 10 OS and Clear Linux OS

+

If you prefer not to use your BIOS to load the Boot Menu and select an OS to boot, you can make systemd-boot the default bootloader and add Windows 10 OS to the boot list. This option is also a workaround for BIOSes that don’t support booting more than one partition.

+
    +
  1. Boot up a Clear Linux OS live image from a USB thumb drive.

  2. +
  3. Open a terminal window and enter:

    +
    lsblk -po NAME,SIZE,TYPE,FSTYPE,PARTLABEL
    +
    +
    +

    Example output:

    +
    clrlinux@clr-live~ $ lsblk -po NAME,SIZE,TYPE,FSTYPE,PARTLABEL
    +NAME          SIZE TYPE FSTYPE   PARTLABEL
    +/dev/loop0    2.3G loop squashfs
    +/dev/sda    335.4G disk
    +├─/dev/sda1   450M part ntfs     Basic data partition
    +├─/dev/sda2   100M part vfat     EFI system partition
    +├─/dev/sda3    16M part          Microsoft reserved partition
    +├─/dev/sda4   286G part ntfs     Basic data partition
    +├─/dev/sda5   143M part vfat     EFI
    +├─/dev/sda6   244M part swap     linux-swap
    +└─/dev/sda7  48.5G part ext4     /
    +sdb             7G disk iso9660
    +├─/dev/sdb1   2.7G part iso9660
    +└─/dev/sdb2   100M part vfat
    +
    +
    +

    The example output shows:

    +
      +
    • /dev/sda2 is the EFI system partition created by Windows 10 OS

    • +
    • /dev/sda4 is the primary Windows partition

    • +
    • /dev/sda5 is the EFI system partition created by Clear Linux OS

    • +
    • /dev/sda7 is the Clear Linux OS root partition

    • +
    +
  4. +
+
+
+

Note

+

To help narrow down a partition even more, you add the PARTTYPE +option to lsblk and cross-reference against the +partition type GUIDs wiki.

+
+
+
    +
  1. Create mount points.

    +
    sudo mkdir /mnt/windows-efi
    +
    +sudo mkdir /mnt/clearlinux
    +
    +
    +
  2. +
  3. Mount the EFI system partition for Windows 10 OS.

    +
    sudo mount /dev/sda2 /mnt/windows-efi
    +
    +
    +
  4. +
  5. Mount the Clear Linux OS root partition and its EFI system partition.

    +
    sudo mount /dev/sda7 /mnt/clearlinux
    +
    +sudo mount /dev/sda5 /mnt/clearlinux/boot
    +
    +
    +
  6. +
  7. Copy Windows 10 OS bootloader, and other data needed to boot it, to the +Clear Linux OS EFI system partition.

    +
    sudo cp -r /mnt/windows-efi/EFI/Microsoft/ /mnt/clearlinux/boot/EFI/
    +
    +
    +
  8. +
  9. Make systemd-boot the default bootloader and add Windows 10 +OS Boot Manager.

    +
    sudo bootctl install --esp-path=/mnt/clearlinux/boot
    +
    +
    +
  10. +
  11. Add a timeout value to the systemd-boot. This allows enough +time for you to select your preferred OS from the menu.

    +
    sudo clr-boot-manager set-timeout 20 --path=/mnt/clearlinux
    +
    +
    +
  12. +
  13. Umount all partitions.

    +
    sudo umount /mnt/windows-efi /mnt/clearlinux/boot /mnt/clearlinux
    +
    +
    +
  14. +
  15. Reboot

    +
    sudo reboot
    +
    +
    +
  16. +
  17. Remove the Clear Linux OS installer USB thumb drive.

  18. +
  19. You should be presented with the systemd-boot menu, as shown +below.

    +
    +systemd-boot menu +
    +

    Figure 5: systemd-boot menu

    +
    +
    +
  20. +
+
+
+

Alternative: Install Windows 10 OS After Clear Linux OS

+

The following alternative guide shows how to install Windows 10 OS adjacent +to an existing Clear Linux OS installation.

+
+
+

Prerequisites

+
    +
  • Clear Linux OS is already installed.

  • +
  • There is unallocated disk space available. If the entire disk has been +allocated to Clear Linux OS, then shrink the root partition to make space for +Windows 10 OS.

  • +
+
+

Install Windows 10 OS

+
    +
  1. Start the Windows installer and follow the prompts.

  2. +
  3. At the What type of installation do you want? screen, choose +Custom: Install Windows only (advanced). See Figure 6.

    +
    +Windows - Choose installation type +
    +

    Figure 6: Windows - Choose installation type

    +
    +
    +
  4. +
  5. Select Unallocated Space and create a new partition of +the desired size. For this example, we will use the entire unallocated +space. See Figure 7.

    +
    +Windows - Create new partition +
    +

    Figure 7: Windows - Create new partition

    +
    +
    +
    +

    Note

    +

    Normally, Windows creates its own 100MB EFI partition if none exists. +In our case, where an EFI partition was created by Clear Linux OS, Windows will +use the previously-created partition.

    +
    +
  6. +
  7. Select the newly-created partition and follow the remaining prompts to +complete the Windows installation. See Figure 8.

    +
    +Windows - Install on newly-created partition +
    +

    Figure 8: Windows - Install on newly-created partition

    +
    +
    +
  8. +
  9. Finish the Windows out-of-box-experience process.

  10. +
  11. Restore systemd-boot - the bootloader Clear Linux OS uses - and add Windows to +its boot menu.

    +

    At this point, you cannot boot Clear Linux OS because Windows became the default +bootloader after it was installed. Follow these steps to restore +systemd-boot.

    +
      +
    1. Boot up a Clear Linux OS live image from a USB thumb drive.

    2. +
    3. Open a terminal window.

    4. +
    5. Find the location of the EFI partition. In this example, it is +/dev/sda1.

      +
      lsblk -po NAME,SIZE,TYPE,FSTYPE,PARTLABEL
      +
      +
      +

      Example output:

      +
      clrlinux@clr-live~ $ lsblk -po NAME,SIZE,TYPE,FSTYPE,PARTLABEL
      +NAME          SIZE TYPE FSTYPE   PARTLABEL
      +/dev/loop0    2.3G loop squashfs
      +/dev/sda      100G disk
      +├─/dev/sda1   150M part vfat     CLR_BOOT
      +├─/dev/sda2   250M part swap     CLR_SWAP
      +├─/dev/sda3     8G part ext4     CLR_ROOT
      +├─/dev/sda4    16M part          Microsoft reserved partition
      +├─/dev/sda5  91.6G part ntfs     Basic data partition
      +sdb             7G disk iso9660
      +├─/dev/sdb1   2.7G part iso9660
      +└─/dev/sdb2   100M part vfat
      +
      +
      +
      +

      Note

      +

      To help narrow down a partition even more, you add the +PARTTYPE option to lsblk and +cross-reference against the partition type GUIDs wiki.

      +
      +
    6. +
    7. Make a mount point for Clear Linux OS.

      +
      sudo mkdir /mnt/clearlinux
      +
      +
      +
    8. +
    9. Mount the root and EFI partitions.

      +
      sudo mount /dev/sda3 /mnt/clearlinux
      +sudo mount /dev/sda1 /mnt/clearlinux/boot
      +
      +
      +
    10. +
    11. Re-install systemd-boot to make it the default bootloader.

      +
      sudo bootctl install --esp-path=/mnt/clearlinux/boot
      +
      +
      +
    12. +
    13. Add a timeout (for example: 25 seconds) to systemd-boot so that it +will present the menu of bootable OSes and give you time to select +the one you want to boot.

      +
      sudo clr-boot-manager set-timeout 25 --path=/mnt/clearlinux
      +sudo clr-boot-manager update --path=/mnt/clearlinux
      +
      +
      +
    14. +
    15. Unmount the root and EFI partitions.

      +
      sudo umount /mnt/clearlinux/boot
      +sudo umount /mnt/clearlinux
      +
      +
      +
    16. +
    +
  12. +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/multi-boot/multi-boot.html b/tutorials/multi-boot/multi-boot.html new file mode 100644 index 000000000..c74e5a8cc --- /dev/null +++ b/tutorials/multi-boot/multi-boot.html @@ -0,0 +1,1234 @@ + + + + + + + + + + Multi-boot Clear Linux* OS with other operating systems — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Multi-boot Clear Linux* OS with other operating systems

+
+
The Clear Linux* Project offers the ability to dual-boot Clear Linux OS with Windows* 10 OS.
+
More dual-boot and multi-boot use cases will be introduced in the future.
+
+
+

Warning

+

Always back up critical data before installing an additional OS on a target system. Some data loss may occur.

+
+
+

Detailed procedures

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/nvidia-cuda.html b/tutorials/nvidia-cuda.html new file mode 100644 index 000000000..7c9a3bef8 --- /dev/null +++ b/tutorials/nvidia-cuda.html @@ -0,0 +1,1450 @@ + + + + + + + + + + NVIDIA* CUDA Toolkit — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

NVIDIA* CUDA Toolkit

+

NVIDIA is a manufacturer of graphics processing units (GPU), also known as +graphics cards.

+

CUDA is a parallel computing platform and application programming interface +model created by NVIDIA. It allows software developers and software engineers +to use a CUDA-enabled graphics processing unit

+

These instructions show how to install the CUDA Toolkit on Clear Linux OS after the +proprietary NVIDIA drivers have been installed.

+
+

Note

+

Software installed outside of swupd is not updated with Clear Linux OS +updates and must be updated and maintained manually.

+
+ +
+

Prerequisites

+ +
+
+

Compatibility

+
+

Check compatibility of NVIDIA components

+

To install the appropriate NVIDIA CUDA Toolkit version, it is important to +understand the compute capability and compatible driver versions of your +NVIDIA hardware.

+

Information about NVIDIA compute capability, driver, and toolkit compatibility +can be found at: https://developer.nvidia.com/cuda-gpus and +https://docs.nvidia.com/deploy/cuda-compatibility/

+
+
+

Check GCC compatibility

+
+

Note

+

This is only required for the development or compilation of CUDA +applications. It is not required to run pre-built applications that have a +dependency on CUDA.

+
+

From the NVIDIA documentation:

+
+

The CUDA development environment relies on tight integration with the host +development environment, including the host compiler and C runtime +libraries, and is therefore only supported on distribution versions that +have been qualified for this CUDA Toolkit release.

+
+

Refer to the NVIDIA documentation on CUDA system requirements +for the latest kernel and compiler compatibility.

+

For example, CUDA 10.2 on a system with the latest Linux kernel requires GCC8, +which is older than the default GCC version for Clear Linux OS.

+

Install the compatible version of GCC, if required:

+
    +
  1. Install the bundle with the appropriate GCC version.

    +
    sudo swupd bundle-add c-extras-gcc8
    +
    +
    +
  2. +
  3. Create the directory /usr/local/cuda/bin:

    +
    sudo mkdir -p /usr/local/cuda/bin
    +
    +
    +
  4. +
  5. Add symlinks to the older GCC version in the +/usr/local/cuda/bin directory. This will cause the older version of +GCC to be used when /usr/local/cuda/bin is in the $PATH environment +variable.

    +
    sudo ln -s /usr/bin/gcc-8 /usr/local/cuda/bin/gcc
    +sudo ln -s /usr/bin/g++-8 /usr/local/cuda/bin/g++
    +
    +
    +
  6. +
+
+
+
+

Downloading and Installation

+
+

Download the NVIDIA CUDA Toolkit

+
    +
  1. Go to the NVIDIA CUDA downloads website to get the latest CUDA Toolkit. +If an older version of the CUDA Toolkit is required, go to the CUDA +Toolkit Archive.

    +

    Choose the following settings and click Download.

    +
      +
    • Operating System: Linux

    • +
    • Architecture: x86_64

    • +
    • Distribution: any

    • +
    • Version: any

    • +
    • Installer Type: runfile(local)

    • +
    +
  2. +
  3. Open a terminal and navigate to where the +cuda_<VERSION>_linux.run file was saved. In this +example, it was saved in the Downloads folder.

    +
    cd ~/Downloads/
    +
    +
    +
  4. +
  5. Make the cuda_<VERSION>_linux.run file executable:

    +
    chmod +x cuda_<VERSION>_linux.run
    +
    +
    +
  6. +
+
+
+

Install the NVIDIA CUDA Toolkit

+

The NVIDIA CUDA installer will be directed to install files under +/opt/cuda as much as possible to keep its contents isolated from the +rest of the Clear Linux OS files under /usr.

+

The CUDA installer automatically creates a symbolic link that allows the CUDA +Toolkit to be accessed from /usr/local/cuda regardless of where it was +installed.

+
    +
  1. Configure the dynamic linker to look for and cache shared libraries under +/opt/cuda/lib64 where the NVIDIA installer will place libraries.

    +
    sudo mkdir -p /etc/ld.so.conf.d
    +echo "include /etc/ld.so.conf.d/*.conf" |  sudo tee --append /etc/ld.so.conf
    +
    +
    +

    The CUDA installer will automatically create a file +/etc/ld.so.conf.d/cuda-<VERSION>.conf

    +
  2. +
  3. Navigate into the directory where the NVIDIA installer was downloaded:

    +
    cd ~/Downloads/
    +
    +
    +
  4. +
  5. Run the installer with the advanced options below:

    +
    sudo ./cuda_<VERSION>_linux.run \
    +--toolkit \
    +--installpath=/opt/cuda \
    +--no-man-page \
    +--override \
    +--silent
    +
    +
    +
  6. +
  7. Validate the CUDA Toolkit was installed by checking the NVIDIA CUDA +compiler version:

    +
    /opt/cuda/bin/nvcc --version
    +
    +
    +
  8. +
+

The CUDA Toolkit is now installed and can be used to compile and run CUDA +applications.

+
+
+
+

Using the NVIDIA CUDA Toolkit

+
    +
  1. Verify that the NVIDIA device characters files /dev/nvidia* exist and have +the correct (0666) file permissions. The character devices should be +automatically created on system with the NVIDIA driver loaded through X +server, but will not be on systems that do not automatically load the +NVIDIA driver.

    +
    ls -l /dev/nvidia*
    +
    +
    +
  2. +
  3. If your system does not have the NVIDIA character devices created +automatically, run the script from NVIDIA documentation +with root privileges.

    +

    Alternatively a setuid utility, nvidia-modprobe, can be compiled +and installed to automatically create the device character files on-demand.

    +
    wget https://download.nvidia.com/XFree86/nvidia-modprobe/nvidia-modprobe-<VERSION>.tar.bz2
    +tar -xvf nvidia-modprobe-<VERSION>.tar.bz2
    +cd nvidia-modprobe-<VERSION>/
    +make
    +sudo make install PREFIX=/usr/local/cuda/
    +
    +
    +
  4. +
  5. When the CUDA toolkit is needed, export PATH variables pointing to the CUDA +directories. This will temporarily add CUDA files to the PATH and use the +specified linked version of GCC for the terminal session.

    +
    export PATH=/usr/local/cuda/bin:$PATH
    +export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
    +
    +
    +
  6. +
+

Source code for CUDA sample located at +/usr/local/cuda/NVIDIA_CUDA-<VERSION>_Samples. See the CUDA +documentation on compiling samples +to learn more.

+
+
+

Uninstalling

+

The NVIDIA drivers and associated software can be uninstalled and nouveau +driver restored by:

+
    +
  1. Run the sudo /usr/local/cuda/bin/cuda-uninstaller.

  2. +
  3. Follow the prompts on the screen and reboot the system.

  4. +
+
+
+

Debugging

+
    +
  • The NVIDIA CUDA installer places logs under +/tmp/cuda-installer.log.

  • +
+
+
+

Additional resources

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/nvidia.html b/tutorials/nvidia.html new file mode 100644 index 000000000..6c20f338f --- /dev/null +++ b/tutorials/nvidia.html @@ -0,0 +1,1723 @@ + + + + + + + + + + NVIDIA* Drivers — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

NVIDIA* Drivers

+

NVIDIA manufactures graphics processing units (GPU), also known as +graphics cards.

+

NVIDIA devices on Linux* have two popular device driver options: the +opensource drivers from the nouveau project or the proprietary drivers +published by NVIDIA. The nouveau drivers are built into the Clear Linux* OS +kernel and are loaded automatically at system boot if a compatible card +is detected.

+

These instructions show how to use the proprietary NVIDIA drivers, which +require a manual installation.

+
+

Warning

+

Software installed outside of swupd is not updated +with Clear Linux OS updates and must be updated and maintained manually.

+

For example, the file /usr/lib/libGL.so conflicts with the file +provided by the mesa package in Clear Linux OS and the file NVIDIA provides. If a +Clear Linux OS update or repair overwrites these files, a reinstallation of the +NVIDIA driver might be required.

+
+ +
+

Prerequisites

+
    +
  • A Clear Linux OS system with a desktop installed

  • +
  • An NVIDIA device installed

  • +
+
+

Known issues

+

Systems with multiple graphics devices, including integrated graphics (iGPU), +are known to be problematic.

+
+

Note

+

NVIDIA Optimus*

+

Some systems come with a hybrid graphics configuration for a balanced power +and performance profile. This configuration is commonly found on +laptops. NVIDIA Optimus technology, is designed to +allow switching seamlessly between a NVIDIA device and another graphics +devices sharing the same display.

+

Getting NVIDIA Optimus on Linux working well with both graphics devices +adds an additional level of complexity with platform specific steps and may +require additional software. Installation for systems with NVIDIA Optimus +with both graphics devices operating is not covered by the scope of this +documentation. As a simple workaround, some systems can disable one of the +graphics devices or NVIDIA Optimus in the system firmware.

+
+
+

Note

+

The Long Term Support (LTS) kernel variant is +more likely to be compatible with proprietary NVIDIA drivers.

+
+

See the Troubleshooting section for more known issues and solutions.

+
+
+
+

Installation

+
+

Configure workarounds

+

Some workarounds are required for the NVIDIA proprietary drivers to be usable +and sustainable on Clear Linux OS.

+
    +
  1. Remove the kernel command-line parameter intel_iommu=igfx_off or disable +input–output memory management unit (IOMMU), also known as Intel® +Virtualization Technology (Intel® VT) for Directed I/O (Intel® VT-d), in your system EFI/BIOS. +See this GitHub report and the NVIDIA +documentation on DMA issues +for more information.

    +

    The intel_iommu-igfx_off kernel parameter can be removed with the +commands below:

    +
    sudo mkdir -p /etc/kernel/cmdline-removal.d/
    +echo "intel_iommu=igfx_off" | sudo tee /etc/kernel/cmdline-removal.d/intel-iommu.conf
    +
    +
    +
  2. +
  3. Create a custom systemd unit that overwrites the libGL library +after every Clear Linux OS update with a pointer to the NVIDIA provided copy instead +of the version provided by Clear Linux OS. These libraries conflict causing the +NVIDIA driver to break when Clear Linux OS updates mesa. See the NVIDIA documentation +on installed components +for more information.

    +
      +
    1. Create a systemd service unit to overwrite the Clear Linux OS provided +libGL.so.1 files with a symlink to the NVIDIA copies.

      +
      sudo tee /etc/systemd/system/fix-nvidia-libGL-trigger.service > /dev/null <<'EOF'
      +[Unit]
      +Description=Fixes libGL symlinks for the NVIDIA proprietary driver
      +BindsTo=update-triggers.target
      +
      +[Service]
      +Type=oneshot
      +ExecStart=/usr/bin/ln -sfv /opt/nvidia/lib/libGL.so.1 /usr/lib/libGL.so.1
      +ExecStart=/usr/bin/ln -sfv /opt/nvidia/lib32/libGL.so.1 /usr/lib32/libGL.so.1
      +EOF
      +
      +
      +
    2. +
    3. Reload the systemd manager configuration to pickup the new serivce.

      +
      sudo systemctl daemon-reload
      +
      +
      +
    4. +
    5. Add the service as a dependency to the Clear Linux OS updates trigger causing the +service to run after every update.

      +
      sudo systemctl add-wants update-triggers.target fix-nvidia-libGL-trigger.service
      +
      +
      +
    6. +
    +
  4. +
+
+
+

Install DKMS

+

The Dynamic Kernel Module System (DKMS) allows +the NVIDIA kernel modules to be automatically integrated when kernel updates +occur in Clear Linux OS. Install the appropriate DKMS bundle using the instructions +below:

+
+

Note

+

The Long Term Support (LTS) kernel variant is more likely to remain +compatible between updates with NVIDIA drivers.

+
+

The kernel-native-dkms bundle provides the DKMS program and Linux +kernel headers, which are placed under /usr/lib/modules/$(uname +-r)/build/include/ and are required to compile kernel modules.

+

The kernel-native-dkms bundle also:

+
    +
  • Adds a systemd update trigger +(/usr/lib/systemd/system/dkms-new-kernel.service) to automatically +run DKMS to rebuild modules after a kernel upgrade occurs with swupd +update.

  • +
  • Disables kernel module signature verification by appending a kernel +command-line parameter (module.sig_unenforce) from the +/usr/share/kernel/cmdline.d/clr-ignore-mod-sig.conf file.

  • +
  • Adds a notification to the Message of the Day (MOTD) indicating kernel +module signature verification is disabled.

  • +
+
+

Warning

+

We recommend that you always review the swupd update output +to make sure kernel modules were successfully rebuilt against the new +kernel. This is especially important for systems where a successful boot +relies on a kernel module.

+
+

Install the kernel-native-dkms or kernel-lts-dkms +bundle.

+
    +
  1. Determine which kernel variant is running on Clear Linux OS. Only the native +and lts kernels are enabled to build and load out-of-tree kernel modules +with DKMS.

    +
    $ uname -r
    +5.XX.YY-ZZZZ.native
    +
    +
    +

    Ensure .native or .lts is in the kernel name.

    +
  2. +
  3. Install the DKMS bundle corresponding to the installed kernel. Use +kernel-native-dkms for the native kernel or +kernel-lts-dkms for the lts kernel.

    +
    sudo swupd bundle-add kernel-native-dkms
    +
    +
    +

    or

    +
    sudo swupd bundle-add kernel-lts-dkms
    +
    +
    +
  4. +
  5. Update the Clear Linux OS bootloader and reboot, and +ensure that you can start the new kernel.

    +
    sudo clr-boot-manager update
    +reboot
    +
    +
    +
  6. +
+
+
+

Download the NVIDIA drivers

+
    +
  1. Identify the NVIDIA GPU model that is installed.

    +
    sudo lshw -C display
    +
    +
    +
  2. +
  3. Go to the NVIDIA Driver Downloads website . Search for and download the +appropriate driver based on the NVIDIA GPU model you have with Linux +64-bit selected as the Operating System.

    +
    wget https://download.nvidia.com/XFree86/Linux-x86_64/<VERSION>/NVIDIA-Linux-x86_64-<VERSION>.run
    +
    +
    +

    If you already know the appropriate driver version for your device, you can +also obtain a download link directly from one of the links below:

    + +
  4. +
+
+
+

Disable the nouveau driver

+

The proprietary NVIDIA driver is incompatible with the nouveau driver and +must be disabled before installation can continue.

+
    +
  1. Disable the nouveau driver by creating a blacklist file under +/etc/modprobe.d and reboot.

    +
    sudo mkdir /etc/modprobe.d
    +
    +printf "blacklist nouveau \noptions nouveau modeset=0 \n" | sudo tee --append /etc/modprobe.d/disable-nouveau.conf
    +
    +
    +
  2. +
  3. Reboot the system and log back in. It is normal for the graphical +environment not to start without the NVIDIA driver loaded.

  4. +
+
+
+

Configure alternative software paths

+

The NVIDIA installer is directed to install files under +/opt/nvidia as much as possible to keep its contents isolated from the +rest of the Clear Linux OS system files under /usr. The dynamic linker and X +server must be configured to use the content under +/opt/nvidia.

+
    +
  1. Configure the dynamic linker to look for and to cache shared libraries under +/opt/nvidia/lib and /opt/nvidia/lib32 in addition to the +default paths.

    +
    echo "include /etc/ld.so.conf.d/*.conf" |  sudo tee --append /etc/ld.so.conf
    +
    +sudo mkdir /etc/ld.so.conf.d
    +printf "/opt/nvidia/lib \n/opt/nvidia/lib32 \n" | sudo tee --append /etc/ld.so.conf.d/nvidia.conf
    +
    +
    +
  2. +
  3. Reload the dynamic linker run-time bindings and library cache.

    +
    sudo ldconfig
    +
    +
    +
  4. +
  5. Create a Xorg configuration file to search for modules under +/opt/nvidia in addition to the default path.

    +
    sudo mkdir -p /etc/X11/xorg.conf.d/
    +
    +sudo tee /etc/X11/xorg.conf.d/nvidia-files-opt.conf > /dev/null <<'EOF'
    +Section "Files"
    +        ModulePath      "/usr/lib64/xorg/modules"
    +        ModulePath      "/opt/nvidia/lib64/xorg/modules"
    +EndSection
    +EOF
    +
    +
    +
  6. +
+
+
+

Install the NVIDIA drivers

+
    +
  1. A terminal not running on /dev/tty1 is useful to view uninterrupted +installation progress. Switch to a secondary virtual terminal by pushing +CTRL + ALT + F2 or remotely login over SSH.

  2. +
  3. Navigate to the directory where the NVIDIA installer was downloaded. In +this example, it was saved in the Downloads folder.

    +
    cd ~/Downloads/
    +
    +
    +
  4. +
  5. Run the installer with the advanced options below.

    +
    sudo sh NVIDIA-Linux-x86_64-<VERSION>.run \
    +--utility-prefix=/opt/nvidia \
    +--opengl-prefix=/opt/nvidia \
    +--compat32-prefix=/opt/nvidia \
    +--compat32-libdir=lib32 \
    +--x-prefix=/opt/nvidia \
    +--x-module-path=/opt/nvidia/lib64/xorg/modules \
    +--x-library-path=/opt/nvidia/lib64 \
    +--x-sysconfig-path=/etc/X11/xorg.conf.d \
    +--documentation-prefix=/opt/nvidia \
    +--application-profile-path=/etc/nvidia/nvidia-application-profiles-rc.d \
    +--no-precompiled-interface \
    +--no-nvidia-modprobe \
    +--no-distro-scripts \
    +--force-libglx-indirect \
    +--glvnd-egl-config-path=/etc/glvnd/egl_vendor.d \
    +--egl-external-platform-config-path=/etc/egl/egl_external_platform.d  \
    +--dkms \
    +--silent
    +
    +
    +
  6. +
  7. The graphical interface may automatically start after the NVIDIA driver +is loaded. Return to the working terminal and log back in if necessary.

  8. +
  9. Confirm that the NVIDIA kernel modules are loaded.

    +
    lsmod | grep ^nvidia
    +
    +
    +
  10. +
  11. Optional: Create a link for the nvidia-settings desktop entry to +~/.local/share/applications so that it appears in the launcher for easy access.

    +
    ln -sv /opt/nvidia/share/applications/nvidia-settings.desktop $HOME/.local/share/applications
    +
    +
    +
  12. +
+
+
+
+

Updating

+

The proprietary NVIDIA drivers are installed manually outside of +swupd and must be updated manually when needed.

+

Updating the NVIDIA drivers follows the same steps as initial installation, +however the desktop environment must first be stopped so that the drivers are +not in use.

+
    +
  1. Follow the steps in the Download the NVIDIA drivers section +to get the latest NVIDIA drivers.

  2. +
  3. Temporarily set the default boot target to the multi-user, which is +a non-graphical runtime.

    +
    sudo systemctl set-default multi-user.target
    +
    +
    +
  4. +
  5. Reboot the system and log back in. It is normal for the graphical +environment not to start.

  6. +
  7. Follow the steps in the Install the NVIDIA Drivers section to update +the NVIDIA drivers. This installation will overwrite the previous NVIDIA +drivers and files.

  8. +
  9. Set the default boot target back to the graphical target.

    +
    sudo systemctl set-default graphical.target
    +
    +
    +
  10. +
  11. Reboot the system and log back in.

  12. +
  13. Trigger a flatpak update to download the runtime corresponding +with the new NVIDIA drivers for the flatpak apps that require it.

    +
    +

    Important

    +

    Some flatpak applications won’t start after updating the NVIDIA drivers +until the flatpak runtime is updated with the corresponding driver +version.

    +
    +
    flatpak update
    +
    +
    +
  14. +
+
+
+

Uninstallation

+

The NVIDIA drivers and associated software can be uninstalled and nouveau +driver restored with the instructions in this section.

+
    +
  1. Remove the files created for workarounds.

    +
    sudo rm /etc/kernel/cmdline-removal.d/intel-iommu.conf
    +sudo rm /etc/systemd/system/fix-nvidia-libGL-trigger.service
    +sudo rm /etc/systemd/system/update-triggers.target.wants/fix-nvidia-libGL-trigger.service
    +sudo systemctl daemon-reload
    +
    +
    +
  2. +
  3. Remove the modprobe.d file that prevents nouveau from loading.

    +
    sudo rm /etc/modprobe.d/disable-nouveau.conf
    +
    +
    +
  4. +
  5. Remove the nvidia.conf file so that dynamic linker does not +look for cached libraries under /opt/nvidia/lib and /opt/nvidia/lib32.

    +
    sudo rm /etc/ld.so.conf.d/nvidia.conf
    +sudo ldconfig
    +
    +
    +

    Optionally, restore ld.so.conf to default if no other configuration files under /etc/ld.so.conf.d +needs to be included.

    +
    sudo sed -i '/^include \/etc\/ld\.so\.conf\.d\/\*\.conf$/d' /etc/ld.so.conf
    +
    +
    +
  6. +
  7. Remove the xorg.conf.d file that adds a search path for X modules.

    +
    sudo rm /etc/X11/xorg.conf.d/nvidia-files-opt.conf
    +
    +
    +
  8. +
  9. Remove the nvidia-settings desktop entry file if it was linked to +~/.local/share/applications.

    +
    unlink -v $HOME/.local/share/applications/nvidia-settings.desktop
    +
    +
    +
  10. +
  11. Run the nvidia-uninstall command.

    +
    sudo /opt/nvidia/bin/nvidia-uninstall
    +
    +
    +
  12. +
  13. Follow the prompts on the screen and reboot the system.

  14. +
+
+
+

Troubleshooting

+
    +
  • The NVIDIA driver places installer and uninstaller logs under +/var/log/nvidia-install and /var/log/nvidia-uninstall.

  • +
  • NVIDIA-Linux-x86_64-<VERSION>.run --advanced-options shows many +parameters to control installation behavior.

  • +
  • NVIDIA-Linux-x86_64-<VERSION>.run --extract-only extracts +installation files into a directory named +NVIDIA-Linux-x86_64-<VERSION>.

  • +
  • The X server logs under /var/log/X* contain useful +information about display and driver loading. Check all the files and +timestamps when troubleshooting.

  • +
  • The DKMS build logs under /var/lib/dkms/nvidia* contain information +about kernel module builds which can be useful if the NVIDIA driver breaks +between kernel upgrades.

  • +
+
+

No display or blank screen

+

Check to see if the display has come up on another graphics device, including +the integrated graphics device.

+

You might get a black screen or the login screen might not come up after +installing the NVIDIA drivers until an Xorg configuration has been defined for +your monitors.

+
+
+

“Oh no! Something has gone wrong” GNOME* crash

+
+NVIDIA driver GNOME crash on Clear Linux OS +
+

NVIDIA driver GNOME crash dialogue on Clear Linux OS.

+
+
+

There have been reports of GNOME crashing with an “Oh no! Something has gone +wrong” error message with NVIDIA drivers installed while other graphics +devices are enabled.

+

Try disabling other graphics devices, including integrated graphics, in your +system’s EFI/BIOS.

+
+
+

Slow boot times

+

There have been reports of slow boot times with NVIDIA drivers installed. +Normally, when GDM detects NVIDIA proprietary drivers, it will disable Wayland +and enable X11. Should GDM fail to disbale Wayland, it may results in slow boot +times, according to this GitHub reprot.

+

To manually disable Wayland:

+
sudo tee /etc/gdm/custom.conf > /dev/null <<'EOF'
+[daemon]
+WaylandEnable=false
+EOF
+
+
+
+
+

Brightness control

+

If you can’t control the screen brightness with the NVIDIA driver installed, +try one of the solutions below:

+
    +
  • Add a kernel parameter acpi_osi= which disables the ACPI Operating System +Identification function. Some system firmware may manipulate brightness +control keys based on the reported operating system. Disabling the +identification mechanism can cause the system firmware to expose brightness +controls that are recognizable in Linux.

    +
    sudo mkdir -p /etc/kernel/cmdline.d
    +echo "acpi_osi=" | sudo tee /etc/kernel/cmdline.d/acpi-backlight.conf
    +sudo clr-boot-manager update
    +
    +
    +
  • +
  • Add a kernel parameter for the nvidia driver: +NVreg_EnableBacklightHandler=1. This handler overrides the ACPI-based one +provided by the video.ko kernel module. This option is available with NVIDIA +driver version 387.22 and above.

    +
    sudo mkdir -p /etc/kernel/cmdline.d
    +echo "nvidia.NVreg_EnableBacklightHandler=1" | sudo tee /etc/kernel/cmdline.d/nvidia-backlight.conf
    +sudo clr-boot-manager update
    +
    +
    +
  • +
  • Add the EnableBrightnessControl=1 options to the Device +section of your xorg config. Below is an example:

    +
    sudo mkdir -p /etc/X11/xorg.conf.d/
    +
    +sudo tee /etc/X11/xorg.conf.d/nvidia-brightness.conf > /dev/null <<'EOF'
    +Section "Device"
    +    Identifier     "Device0"
    +    Driver         "nvidia"
    +    Option         "RegistryDwords" "EnableBrightnessControl=1"
    +EndSection
    +EOF
    +
    +
    +
  • +
+
+
+

Additional resources

+ +

Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/openfaas.html b/tutorials/openfaas.html new file mode 100644 index 000000000..8676d55c7 --- /dev/null +++ b/tutorials/openfaas.html @@ -0,0 +1,1558 @@ + + + + + + + + + + OpenFaaS* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

OpenFaaS*

+

This tutorial shows how to set up OpenFaaS running on top of a Kubernetes* +cluster on Clear Linux OS, obtain Clear Linux OS based OpenFaaS templates, and develop an example +function.

+ +
+

Background

+

Functions as a Service (FaaS) is a framework for building serverless functions +that are ephemeral, automatically scalable, and focused pieces of code running +within containers to allow developers to focus on application code rather than +infrastructure nuances.

+

Many cloud service providers have ready-to-use FaaS offerings which offer a +high degree of convenience for developers and granular billing based on +per-second usage.

+

If you want an on-premise or self-hosted serverless capability to avoid vendor +lock-in or simply want more development, OpenFaaS is currently the most +popular solution in the space based on the number of Github stars on the +project.

+
+
+

Prerequisites

+

For simplicity, this tutorial assumes you have a Kubernetes single node +cluster with only master node running Clear Linux OS.

+
    +
  • For detailed instructions on how to install Clear Linux OS, see the getting +started section.

  • +
  • For a detailed guide on how to set up Kubernetes, see the documentation on +Kubernetes.

  • +
+
+

Note

+

Please note that in this example the master node was tainted +to be able to be scheduled, which means containers are able to be deployed +to the master node.

+
kubectl taint nodes --all node-role.kubernetes.io/master-
+
+
+
+
+
+

Deploy OpenFaaS

+
    +
  1. Install the official command line tool for using OpenFaas, faas-cli, by +installing the faas-cli bundle.

    +
    sudo swupd bundle-add faas-cli
    +
    +
    +
  2. +
  3. Download the faas-netes, the +OpenFaaS provider templates that enable Kubernetes for OpenFaaS.

    +
    git clone https://github.com/openfaas/faas-netes.git
    +
    +
    +
  4. +
  5. Set variables for the OpenFaaS admin user and password.

    +
    +

    Warning

    +

    For simplicity, this tutorial uses a basic authentication with an +unecrypted username and password. For production environments, see the +OpenFaaS documentation on Deploying OpenFaas in Production.

    +
    +
    export FAAS_USER=admin
    +export FAAS_PASSWD=clearlinux
    +
    +
    +
  6. +
  7. Deploy the OpenFaaS stack on Kubernetes using kubectl.

    +
    kubectl apply -f faas-netes/namespaces.yml
    +
    +
    +
    kubectl -n openfaas create secret generic basic-auth \
    +--from-literal=basic-auth-user=$FAAS_USER \
    +--from-literal=basic-auth-password="$FAAS_PASSWD"
    +
    +
    +
    kubectl apply -f faas-netes/yaml/
    +
    +
    +

    Wait for the OpenFaaS pods and services to get ready. This involves +downloading container images from the Internet and may take some time +depending on your Internet connection. You can enter the commands below to +have the terminal wait until services are ready to use.

    +
    kubectl wait --for=condition=available --timeout=600s deployment/gateway -n openfaas
    +kubectl wait --for=condition=available --timeout=600s deployment/faas-idler -n openfaas
    +
    +
    +
  8. +
  9. Login to the OpenFaaS instance. 31112 is the default port.

    +
      +
    • You can login over the command-line:

      +
      export OPENFAAS_URL=http://127.0.0.1:31112
      +echo -n $FAAS_PASSWD | faas-cli login --password-stdin
      +
      +
      +
    • +
    • You can also login to the OpenFaaS web interface by navigating to +http://${master_node_IP}:31112

    • +
    +
    +OpenFaaS web interface login page +
    +

    Figure 1: OpenFaaS web interface login page

    +
    +
    +
  10. +
+
+
+

OpenFaaS templates

+

OpenFaaS templates, though not necessary, abstract configurations for +running functions in common programming languages. Templates allows developers +to better focus on writing the code for their function.

+

OpenFaaS has dozens of templates in the official store. There are also Clear Linux OS-based templates +available for download.

+
    +
  1. You can list all the official templates in the store using +faas-cli.

    +
    faas-cli template store list
    +
    +NAME                     SOURCE             DESCRIPTION
    +csharp                   openfaas           Classic C# template
    +dockerfile               openfaas           Classic Dockerfile template
    +go                       openfaas           Classic Golang template
    +java8                    openfaas           Classic Java 8 template
    +node                     openfaas           Classic NodeJS 8 template
    +php7                     openfaas           Classic PHP 7 template
    +python                   openfaas           Classic Python 2.7 template
    +python3                  openfaas           Classic Python 3.6 template
    +...
    +
    +
    +
  2. +
  3. Create and enter a workspace.

    +
    mkdir ~/faas-example
    +cd ~/faas-example
    +
    +
    +
  4. +
  5. Download the Clear Linux OS-based OpenFaaS templates which are stored in the +https://github.com/clearlinux/dockerfiles repository and copy them into your +working directory.

    +
    git clone https://github.com/clearlinux/dockerfiles.git
    +cp -r dockerfiles/FaaS/OpenFaaS/template/ .
    +
    +
    +
  6. +
  7. After the Clear Linux OS based templates have been retrieved, they will show up in +the same repository and available to use locally.

    +
    faas-cli new --list
    +
    +Languages available as templates:
    +- dockerfile-clearlinux
    +- python3-clearlinux
    +
    +
    +
  8. +
+

OpenFaaS is ready to use at this point. See the OpenFaaS documentation to learn more about deploying functions.

+
+
+

Example: Develop a function

+

In this example, we’ll imagine a FaaS solution where: a user provides a URL to +a pictures, which invokes a function to do image classification and outputs +the result.

+

We will use the OpenVINO™ toolkit - Deep Learning Deployment Toolkit (DLDT) to do the image +inference. As inference development is not the focus of this example, we will +just use the built-in sample “classification_sample_async” +for this function.

+

We’ll use the python3-clearlinux template as a base and customize it by:

+
    +
  • Adding additional Clear Linux OS bundles (bundles.txt)

  • +
  • Adding additional required python packages (requirements.txt)

  • +
  • Adding a script to download and convert DLDT models (helper_script.sh)

  • +
  • Finally, we’ll develop the python function to be run (handler.py)

  • +
+

More ways to customize the Clear Linux OS based OpenFaaS templates can be found in the +README on GitHub.

+
    +
  1. Enter the previously created working directory.

    +
    cd ~/faas-example
    +
    +
    +
  2. +
  3. Create a new function skeleton

    +
    faas-cli new --lang python3-clearlinux classification-sample --prefix="<your docker name>"
    +
    +
    +

    This will create the directory structure below:

    +
    tree .
    + ├── classification-sample
    + │   ├── bundles.txt
    + │   ├── handler.py
    + │   ├── helper_script.sh
    + │   ├── __init__.py
    + │   └── requirements.txt
    + ├── classification-sample.yml
    +
    +
    +
  4. +
  5. Add the required Clear Linux OS bundles to the bundles.txt file.

    +
    echo "computer-vision-openvino" >> classification-sample/bundles.txt
    +
    +
    +
  6. +
  7. Add the required python packages to the requirements.txt file.

    +
    echo "glob3" >> classification-sample/requirements.txt
    +echo "urllib3" >> classification-sample/requirements.txt
    +echo "networkx==2.3" >> classification-sample/requirements.txt
    +
    +
    +
  8. +
  9. OpenCV has a model downloader and other automation tools +to help downloading models and converting them into different formats. +Customize the OpenFaaS template to use the model-downloader in the +helper_script.sh file. The helper_script.sh file script +gets executed during the build process.

    +
    +
    helper_script.sh
    +
    cat classification-sample/helper_script.sh
    +#!/bin/bash
    +
    +# Download and convert models
    +export MODEL_DIR="/models"
    +export MO_PATH="/usr/share/openvino/model-optimizer/mo.py"
    +export MODEL_NAME="resnet-50-int8-tf-0001"
    +
    +# Download and convert models
    +model-downloader --name $MODEL_NAME -o $MODEL_DIR
    +model-converter --name $MODEL_NAME -d $MODEL_DIR -o $MODEL_DIR --mo $MO_PATH
    +
    +
    +
    +
  10. +
  11. With the requirements added to the template. Write a python in the +handler.py file. This function will parse the input picture URL, +find the model path, and call “classification_sample_async” to do image +classification.

    +
    +
    handler.py
    +
    #!/usr/bin/python3
    +
    +import os
    +import glob
    +import urllib.request
    +from urllib.parse import urlparse
    +from os.path import splitext
    +
    +ALLOWED_IMAGE_TYPE = [".bmp", ".BMP"]
    +
    +def get_ext(url):
    +    parsed = urlparse(url)
    +    _, ext = splitext(parsed.path)
    +    return ext
    +
    +def get_image_from_url(url):
    +    """get image and save to local path"""
    +
    +    ext = get_ext(url)
    +
    +    local_file_path = "/tmp/image" + ext
    +    urllib.request.urlretrieve(url, local_file_path)
    +    return local_file_path
    +
    +def find_model_path():
    +    """ return model xml path """
    +
    +    model_dir = os.getenv('MODEL_DIR', '/models')
    +    model_name = os.getenv('MODEL_NAME', 'resnet-50-int8-tf-0001') + ".xml"
    +    precision = os.getenv('MODEL_PRECISION', 'FP32')
    +
    +    pattern = model_dir + '/**/' + precision + '/' + model_name
    +    paths = glob.glob(pattern, recursive=True)
    +
    +    if not len(paths):
    +        print("No " + model_name + " found")
    +        return None
    +
    +    return paths[0]
    +
    +def do_classification(image, model_path):
    +    """ Use dldt sample classification_sample_async """
    +
    +    cmd = "classification_sample_async -i " + image + " -m " + model_path
    +    return os.system(cmd)
    +
    +def handle(req):
    +    """handle a request to the function
    +    Args:
    +        req (str): request body
    +    """
    +    if not len(req):
    +        print("Request body is missing.")
    +        return
    +
    +    model_path = find_model_path()
    +    if model_path is None:
    +        return
    +
    +    if get_ext(req) not in ALLOWED_IMAGE_TYPE:
    +        print("Only " + ALLOWED_IMAGE_TYPE + " images are allowed.")
    +        return
    +
    +    file_path = get_image_from_url(req)
    +    do_classification(file_path, model_path)
    +
    +
    +
    +
  12. +
  13. Build and deploy the function to the OpenFaaS instance.

    +
    faas-cli build --build-arg http_proxy=$http_proxy --build-arg https_proxy=$https_proxy -f classification-sample.yml
    +faas-cli deploy --env=http_proxy=$http_proxy --env=https_proxy=$https_proxy -f classification-sample.yml
    +
    +
    +
  14. +
  15. Finally, test the function by going to the OpenFaaS web interface at +http://${master_node_IP}:31112 and Invoking the classification-sample +function with a URL to any BMP image. The result should show the what the +image has been identified as and probability.

    +
    +OpenFaaS web interface invoke function +
    +

    Figure 2: OpenFaaS web interface invoke function

    +
    +
    +
    +OpenFaaS web interface function output +
    +

    Figure 3: OpenFaaS web interface invoke function

    +
    +
    +
  16. +
+

Intel, OpenVINO, and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/php.html b/tutorials/php.html new file mode 100644 index 000000000..96a66d82c --- /dev/null +++ b/tutorials/php.html @@ -0,0 +1,1433 @@ + + + + + + + + + + PHP and PHP-FPM — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

PHP and PHP-FPM

+

This tutorial describes how to configure and use PHP +and PHP-FPM on Clear Linux* OS.

+ +
+

Description

+

The PHP language is an Open Source general-purpose scripting language that is popular +with web-developers who leverage its ability to create dynamically generated +web pages. PHP-FPM is a PHP FastCGI implementation that controls process +management, workers, and logging for PHP. The two applications work together, +but each one has its own configuration.

+

This tutorial specifically addresses PHP and PHP-FPM, however, it provides a +general guide for working with applications in the Clear Linux OS Stateless +environment.

+
+
+

Background

+

By default, PHP looks for configuration settings in the php.ini file, +which resides in the usr/share/defaults/php/ path. Because Clear Linux OS is a +Stateless operating system, you must create an optional configuration +file to override the default values. Every time swupd updates the +system, it overwrites changes to the /usr/share/defaults file +structure. To save your configuration options through updates, you must create +a PHP configuration file in a location that will not be overwritten. The +recommended location is within the /etc file structure, which is why this +tutorial creates a /etc/php.d directory.

+

The PHP-FPM configuration file is separate from the php.ini file used +by PHP, however it has a similar default path restriction. Clear Linux OS installs the +default php-fpm.conf file in /usr/share/defaults/php. This +file with its default values is overwritten during each software update. +However, PHP-FPM requires that the configuration file exist in that location, +and, by design, does not read configuration options from a different path. +This tutorial describes a solution to changing PHP-FPM configuration options +in Clear Linux OS, by manually overriding the php-fpm.service unit in systemd to pass +an explicit location to a custom php-fpm.conf file.

+
+
+

Prerequisites

+
    +
  • Install Clear Linux OS on your host system.

  • +
  • Use swupd to install the php-basic bundle:

    +
    sudo swupd bundle-add php-basic
    +
    +
    +
  • +
+
+

Note

+

PHP does not require a web server for operation. If you need a web +server, refer to LAMP Web Server for instructions on setting +up a LAMP server, or use +swupd to install nginx or similar.

+
+
+
+

Configure PHP

+
+

Important

+

This section does not describe configuration for the PHP-FPM service, which is +described later in this guide.

+
+

This section creates a /etc/php.d directory for all PHP configuration +files to work around the default path restriction.

+
    +
  1. Create a php.ini file:

    +
    sudo mkdir -p /etc/php.d
    +sudo touch /etc/php.d/my-php.ini
    +
    +
    +

    This file can be edited with any of your specific configuration +requirements, and will not be overwritten when swupd performs +an update. The PHP configuration file documentation contains details +about what you can set in this file.

    +
  2. +
  3. Verify the location of the PHP configuration files:

    +
    php --ini
    +
    +
    +

    You should see output like this:

    +
    Configuration File (php.ini) Path: /usr/share/defaults/php/
    +Loaded Configuration File:         /usr/share/defaults/php/php.ini
    +Scan for additional .ini files in: /etc/php.d
    +Additional .ini files parsed:
    +
    +
    +

    This output indicates that PHP will read the php.ini file from +/usr/share/defaults/php and will then load any further +configuration from .ini files in /etc/php.d/. The +my-php.ini file in /etc/php.d contains your configuration +details, and allows the defaults to be read from +/usr/share/defaults/php/. Note that the my-php.ini file +has not been parsed, because the file has no content at this +point and is disregarded.

    +
  4. +
+
+
+

Install PHP extensions

+

PHP extensions are compiled libraries designed to enable specific functions in +your PHP code. Clear Linux OS provides PHP extensions in the php-extras bundle.

+
    +
  1. Install the bundle with swupd:

    +
    sudo swupd bundle-add php-extras
    +
    +
    +
  2. +
  3. Find the list of extensions included in the php-extras bundle on the +Clear Linux OS Store.

  4. +
+
+
+

Enable PHP extensions

+

To enable an installed extension, you must add it to the php.ini file +for the composer.

+
    +
  1. Create the my-php.ini file using the directive to load the +php-imagick extension:

    +
    sudo echo "extension=imagick.so" >> /etc/php.d/my-php.ini
    +
    +
    +
  2. +
  3. Restart the php-fpm service for PHP to pick up the modification to the +/etc/php.d/my-php.ini file:

    +
    sudo systemctl restart php-fpm
    +
    +
    +
  4. +
  5. Verify that the imagick extension has been loaded by searching through the +runtime list of loaded PHP Modules:

    +
    php -m | grep imagick
    +
    +
    +
  6. +
+
+

Note

+

To enable an extension, you must install it, add it to the +my-php.ini file, and restart the php-fpm service. However, +some extensions may have configuration options, which will be documented by +the extension maintainer. Add the options you need to the +/etc/php.d/my-php.ini file as described in the extension’s +documentation. Be sure to restart php-fpm after changing the file.

+
+
+
+

Configure PHP-FPM

+

The PHP-FPM configuration file is separate from the php.ini file used +by PHP, however, it has a similar default path restriction. Follow the steps +below to configure PHP-FPM.

+
    +
  1. Copy the /usr/share/defaults/php/php-fpm.conf file to the +/etc/php.d file:

    +
    sudo cp /usr/share/defaults/php/php-fpm.conf /etc/php.d/php-fpm.conf
    +
    +
    +
  2. +
  3. Make changes to the php-fpm.conf file as needed. The +FPM documentation has details on the configuration options available +to PHP-FPM.

  4. +
  5. Edit the systemd service unit file:

    +
    sudo systemctl edit --full php-fpm.service
    +
    +
    +

    This opens the php-fpm.service file for systemd in your editor.

    +
  6. +
  7. Change the ExecStart configuration to add the +--fpm-config option to point to the custom location:

    +
    [Unit]
    +Description=The PHP FastCGI Process Manager
    +After=syslog.target network.target
    +
    +[Service]
    +Type=notify
    +PIDFile=/run/php-fpm.pid
    +ExecStart=/usr/sbin/php-fpm --nodaemonize --fpm-config /etc/php.d/php-fpm.conf
    +ExecReload=/bin/kill -USR2 $MAINPID
    +PrivateTmp=true
    +
    +[Install]
    +WantedBy=multi-user.target
    +
    +
    +
  8. +
  9. Restart the service:

    +
    sudo systemctl restart php-fpm.service
    +
    +
    +
  10. +
  11. Verify that the new path has been picked up:

    +
    sudo systemctl status php-fpm.service
    +
    +
    +

    You should see the new path in the output:

    +
    ● php-fpm.service - The PHP FastCGI Process Manager
    +Loaded: loaded (/etc/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
    +Active: active (running) since Thu 2019-10-17 13:19:34 PDT; 8min ago
    +Main PID: 14452 (php-fpm)
    +Status: "Processes active: 0, idle: 0, Requests: 0, slow: 0, Traffic: 0req/sec"
    + Tasks: 1
    +Memory: 11.1M
    +CGroup: /system.slice/php-fpm.service
    +        └─14452 php-fpm: master process (/etc/php.d/php-fpm.conf)
    +
    +
    +
  12. +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/redis.html b/tutorials/redis.html new file mode 100644 index 000000000..9028ff74d --- /dev/null +++ b/tutorials/redis.html @@ -0,0 +1,1399 @@ + + + + + + + + + + Redis* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Redis*

+

In this tutorial, you’ll install Redis +and launch a Redis-server on Clear Linux* OS. We invite you to pull our +Clear Linux Redis instance on Docker Hub* for application or +infrastructure development.

+ +
+

Description

+

Redis is an in-memory key:value store designed for quick lookups, accessible +over a network. While the redis data structure store can serve +as a NoSQL database for a web application, it’s also easy to integrate into an +existing stack. For example, you could use the Redis caching layer for +real-time responses on a leaderboard in a gaming app. Redis offers many client +libraries with language-specific bindings for Python*, Perl*, Ruby, and more.

+
+
+

Install the Redis bundle

+
    +
  1. Log in as a user with administrative privilege.

  2. +
  3. Open a terminal.

  4. +
  5. Update your Clear Linux OS to the latest version.

    +
    sudo swupd update
    +
    +
    +
  6. +
  7. Install the redis-native bundle.

    +
    sudo swupd bundle-add redis-native
    +
    +
    +
  8. +
+
+
+

Start the Redis-server

+

A systemd service unit is available to control the Redis-server. +By default, Redis runs on port 6379.

+
    +
  1. Start the service and set it to start automatically on boot.

    +
    sudo systemctl enable --now redis
    +
    +
    +
  2. +
  3. Confirm the service is running.

    +
    sudo systemctl status redis
    +
    +
    +
  4. +
  5. Verify that the Redis-server sends a reply.

    +
    redis-cli ping
    +
    +
    +

    Expected output:

    +
    PONG
    +
    +
    +
  6. +
+
+

Note

+

If you wish to customize settings for Redis, copy the +default /usr/share/defaults/etc/redis.conf file into the +/etc/ directory, make changes as needed, and restart the service.

+
sudo cp -v /usr/share/defaults/etc/redis.conf /etc/
+
+
+
+

The Redis-server is now ready to use on Clear Linux OS. Try some of the examples shown +below.

+
+
+

Example 1: Use the redis-cli and commands

+

One advantage of Redis over other NoSQL databases is that developers can +easily access data structures like lists, sets, sorted sets, strings, and +hashes using collection operations commands similar to those found in many +programming languages. These exercises are inspired by try redis io.

+

After your Redis-server is running, try some basic commands.

+
    +
  1. Start redis-cli. It provides syntax suggestions as you type.

    +
    redis-cli
    +
    +
    +
  2. +
  3. SET a key to hold a string value. In the set, create connections +and increment.

    +
    SET server:name "clearlinux"
    +
    +
    +
    MGET server:name
    +
    +
    +
    +

    Note

    +

    If the key does not exist or hold a key value, nil is returned.

    +
    +
    SET connections 100
    +
    +
    +
    INCR connections
    +
    +
    +
    INCR connections
    +
    +
    +
    DEL connections
    +
    +
    +
  4. +
  5. Create a friends list and insert new values at the end of the list.

    +
    RPUSH friends "Deb"
    +
    +
    +
    RPUSH friends "David"
    +
    +
    +
    RPUSH friends "Mary"
    +
    +
    +
  6. +
  7. Modify the friends list, using a common slice method with a 0-index.

    +
    LRANGE friends 0 1
    +
    +
    +
    LLEN friends
    +
    +
    +
    LPOP friends
    +
    +
    +
    RPOP friends
    +
    +
    +
    LLEN friends
    +
    +
    +
  8. +
  9. Consider using a hash, which maps string fields and string values, and +offers multiple lookup methods.

    +

    Enter many user key:values with HMSET. Then try HGET and HGETALL.

    +
    HMSET user:1000 name "Robert Noyce" password "SuperEngi9eer" email "robert.noyce@intel.com"
    +
    +
    +
    HGET user:1000 name
    +
    +
    +
    HGET user:1000 email
    +
    +
    +
    HGETALL user:1000
    +
    +
    +
  10. +
+
+
+

Example 2: Run the Clear Linux OS Redis Docker* image

+

We also provide a Clear Linux Redis instance, which is +updated continuously and maintained by Clear Linux OS development.

+
sudo swupd bundle-add containers-basic
+
+
+
sudo systemctl start docker
+
+
+
sudo -E docker pull clearlinux/redis
+
+
+
+
+

Next Steps

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/smb-desktop.html b/tutorials/smb-desktop.html new file mode 100644 index 000000000..a9c1a71ae --- /dev/null +++ b/tutorials/smb-desktop.html @@ -0,0 +1,1289 @@ + + + + + + + + + + Samba* as a client — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Samba* as a client

+

This tutorial explains how to access an existing shared drive on +Windows* via Server Message Block (SMB) / Common Internet File System (CIFS) +from the Clear Linux OS GNOME* desktop. A CIFS filesystem is generally used to access +shared storage locations, or share files.

+ +
+

Prerequisites

+ +
+
+

Connect to Windows shared location with Nautilus

+
    +
  1. From the desktop, select Files from the application menu.

    +
    +

    Note

    +

    GNOME Files is also known as Nautilus.

    +
    +
  2. +
  3. In Files, select Other Locations.

    +
    +Files, Other Locations +
    +

    Figure 1: Files, Other Locations

    +
    +
    +
  4. +
  5. In the lower taskbar, beside Connect to Server, +enter the file-sharing address using the Windows sharing schema:

    +
    smb://servername/Share
    +
    +
    +
    +Connect to Server +
    +

    Figure 2: Connect to Server

    +
    +
    +
  6. +
  7. Optional: If there are issues with DNS, you can use an IP address in +place of the servername above. You must still specify the share.

  8. +
  9. Optional: On the Windows machine, in a CLI, retrieve the IP address by +entering the command:

    +
    ifconfig
    +
    +
    +
    +

    Note

    +

    If using the IP address, assure that it is accessible and secure.

    +
    +
  10. +
  11. Select Connect.

    +

    The server requests authentication, as shown in Figure 3.

    +
    +Authentication +
    +

    Figure 3: Authentication

    +
    +
    +
  12. +
  13. Log in with the same Windows system credentials for which you granted +access to the share.

  14. +
  15. Select the appropriate checkbox to save your credentials. Consider +carefully the security risks as a result of your selection.

  16. +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/smb-server.html b/tutorials/smb-server.html new file mode 100644 index 000000000..8c4dfe283 --- /dev/null +++ b/tutorials/smb-server.html @@ -0,0 +1,1355 @@ + + + + + + + + + + Samba Server — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

Samba Server

+

This tutorial describes how to enable simple file sharing on a system +running Clear Linux* OS and how to access the share from clients on other operating +systems.

+ +
+

Prerequisites

+ +
+
+

Set up file sharing

+
    +
  1. Add the samba bundle, which includes the Samba binaries.

    +
    sudo swupd bundle-add samba
    +
    +
    +
  2. +
  3. Create the /etc/samba directory.

    +
    sudo mkdir /etc/samba
    +
    +
    +
  4. +
  5. Create a configuration file named /etc/samba/smb.conf. In this +simple example, [SharedDrive] enables a folder share located in +/home/clear/mysharedrive granting users samba-user-1 and +samba-user-2 access.

    +

    If valid users is not specified, then anyone with a user account +on the machine and with their Samba password already set can access the +folder. However, the account is only able to access files and folders for +which they have appropriate permissions.

    +

    For more advanced sharing, refer to the Samba guide.

    +
    [Global]
    +map to guest = Bad User
    +
    +[SharedDrive]
    +path=/home/clear/myshareddrive
    +read only = no
    +guest ok = no
    +browsable = yes
    +valid users = samba-user-1 samba-user-2
    +
    +
    +
  6. +
  7. Start the Samba service and set it to start automatically on boot.

    +
    sudo systemctl enable --now smb
    +
    +
    +
  8. +
  9. Verify the service started properly.

    +
    sudo systemctl status smb
    +
    +
    +
  10. +
  11. Use smbpasswd to add the initial password for the user +account to access the share. Be aware that Samba maintains its own list of +passwords for user accounts. The Samba password list can be different from +the password used to log in.

    +

    For example:

    +
    sudo smbpasswd -a samba-user-1
    +
    +
    +
  12. +
+
+
+

Access the shared drive

+

Depending on your operating system, connect to the shared drive using one +of the methods belows:

+
    +
  • On Clear Linux OS:

    +
      +
    1. Add the samba bundle.

      +
      sudo swupd bundle-add samba
      +
      +
      +
    2. +
    3. List available shares.

      +
      smbclient -L //<ip-address-of-smb-server>
      +
      +
      +
    4. +
    5. Connect to a shared drive.

      +
      smbclient //<ip-address-of-smb-server>/<shared-drive> -U <user>
      +
      +
      +
    6. +
    +
  • +
  • On Windows:

    +
      +
    1. Open File Explorer.

    2. +
    3. Enter \<ip-address-of-samba-server><shared-drive> in the +URL field. See Figure 1.

      +
      +Windows > File Explorer > Connect to Samba share +
      +

      Figure 1: Windows > File Explorer > Connect to Samba share

      +
      +
      +
    4. +
    +
  • +
  • On macOS:

    +
      +
    1. Open the Finder.

    2. +
    3. Press Command + K to open the dialog box for +connecting to a server.

    4. +
    5. Enter smb://<ip-address-of-samba-server>/<shared-drive>. +in the URL field. See Figure 2.

      +
      +macOS > Finder > Connect to Samba share +
      +

      Figure 2: macOS > Finder > Connect to Samba share

      +
      +
      +
    6. +
    +
  • +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/tensorflow-machine-learning.html b/tutorials/tensorflow-machine-learning.html new file mode 100644 index 000000000..985b64087 --- /dev/null +++ b/tutorials/tensorflow-machine-learning.html @@ -0,0 +1,1422 @@ + + + + + + + + + + TensorFlow* machine learning — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

TensorFlow* machine learning

+

This tutorial demonstrates the installation and execution of a TensorFlow* +machine learning example on Clear Linux* OS. It uses a Jupyter* Notebook and MNIST +data for handwriting recognition.

+

The initial steps show how to set up a Jupyter kernel and run a Notebook +on a bare-metal Clear Linux OS system.

+ +
+

Prerequisites

+

This tutorial assumes you have installed Clear Linux OS on your host system. For +detailed instructions on installing Clear Linux OS on a bare metal system, follow the +bare metal installation tutorial.

+

Before you install any new packages, update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+

After your system is updated, add the following bundles to your system:

+
    +
  • machine-learning-web-ui: This bundle contains the Jupyter application.

  • +
  • machine-learning-basic: This bundle contains TensorFlow +and other useful tools.

  • +
+

To install the bundles, run the following commands in your $HOME +directory:

+
sudo swupd bundle-add machine-learning-web-ui
+
+sudo swupd bundle-add machine-learning-basic
+
+
+
+
+

Set up a Jupyter Notebook

+

With all required packages and libraries installed, set up the file structure +for the Jupyter Notebook.

+
    +
  1. In the $HOME directory, create a directory for the Jupyter +Notebooks named Notebooks.

    +
    mkdir Notebooks
    +
    +
    +
  2. +
  3. Within Notebooks, create a directory named Handwriting.

    +
    mkdir Notebooks/Handwriting
    +
    +
    +
  4. +
  5. Change to the new directory.

    +
    cd Notebooks/Handwriting
    +
    +
    +
  6. +
  7. Copy the MNIST_example.ipynb file into the Handwriting +directory.

    +
    +

    Note

    +

    After installing the machine-learning basic bundle, you can find the example code under +/usr/share/doc/tensorflow/MNIST_example.ipynb.

    +
    +
  8. +
+

The example code downloads and decompresses the MNIST data directly into the +./mnist directory. Alternatively, download the four files directly +from the Yann LeCun’s MNIST Database website and save them into a +mnist directory within the Handwriting directory.

+

The files needed are:

+ +
+
+

Run the Jupyter machine learning example code

+

With Clear Linux OS, Jupyter, and TensorFlow installed and configured, you can +run the example code.

+
    +
  1. Go to the ($HOME)/Notebooks directory and start Jupyter with the +following commands:

    +
    cd ~/Notebooks
    +
    +jupyter notebook
    +
    +
    +

    The Jupyter server starts and opens a web browser showing the Jupyter file +manager with a list of files in the current directory, as shown in +Figure 1.

    +
    +Jupyter file manager +
    +

    Figure 1: The Jupyter file manager shows the list of available files.

    +
    +
    +
  2. +
  3. Click on the Handwriting directory. The MNIST_example.ipynb +file created earlier should be listed there, as shown in Figure 2.

    +
    +Example file within the Jupyter file manager +
    +

    Figure 2: The example file within the Jupyter file manager.

    +
    +
    +
  4. +
  5. To run the handwriting example, click on the MNIST_example.ipynb +file to load the notebook, as shown in Figure 3.

    +
    +The loaded MNIST_example notebook +
    +

    Figure 3: The loaded MNIST_example notebook within the Jupyter file +manager.

    +
    +
    +
  6. +
  7. Click the run-cell button to execute the code in the current cell and +move to the next.

  8. +
  9. Select the In [2] cell and click the run-cell button to load +the MNIST data. The successful output is shown on Figure 4.

    +
    +Successful import of MNIST data +
    +

    Figure 4: Output after successfully importing the MNIST data.

    +
    +
    +

    After the MNIST data is successfully downloaded and extracted into the +mnist directory within the ($HOME)/Notebooks/Handwriting +directory, four .gz files are present and the four data sets are created: +trainX, trainY, testX and testY.

    +
  10. +
  11. To inspect the imported data, the function in In [3] first +instructs Jupyter to reshape the data into an array of 28 x 28 images and to +plot the area in a 28 x 28 grid. Click the run-cell button twice to show +the first two digits in the trainX dataset. An example is shown in +Figure 5.

    +
    +Function to reshape data. +
    +

    Figure 5: A function reshapes the data and displays the first two +digits in the trainX dataset.

    +
    +
    +
  12. +
  13. The In [4] cell defines the neural network. It provides the +inputs, defines the hidden layers, runs the training model, and sets up +the output layer, as shown in Figure 6. Click the run-cell button four +times to perform these operations.

    +
    +Defining, building and training the neural network model +
    +

    Figure 6: Defining, building, and training the neural network model.

    +
    +
    +
  14. +
  15. To test the accuracy of the prediction that the system makes, select the +In [8] cell and click the run-cell button. In this example, +the number 6 was predicted with a 99% accuracy, as shown in Figure 7.

    +
    +Prediction example +
    +

    Figure 7: The system predicts a number providing the accuracy of the +prediction.

    +
    +
    +
    +

    Note

    +

    To retest the accuracy of a random data point’s prediction, run the +cell In [8] again. It will take another random data point +and predict its value.

    +
    +
  16. +
  17. To check the accuracy for the whole dataset, select the In [10] +cell and click the run-cell button. Our example’s accuracy is +calculated as 97.17%, as shown in Figure 8.

    +
    +System's accuracy +
    +

    Figure 8: The system’s accuracy for the entire data set.

    +
    +
    +
  18. +
+

For more in-depth information on the model used and the mathematics it entails, +visit the TensorFlow tutorials +TensorFlow MNIST beginners demo and TensorFlow MNIST pros demo.

+

Congratulations!

+

You have successfully installed a Jupyter kernel on Clear Linux OS. In addition, you +trained a neural network to successfully predict the values contained in a +data set of hand-written number images.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/vmware-workstation.html b/tutorials/vmware-workstation.html new file mode 100644 index 000000000..48ee1e509 --- /dev/null +++ b/tutorials/vmware-workstation.html @@ -0,0 +1,1386 @@ + + + + + + + + + + VMware* Workstation Pro — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

VMware* Workstation Pro

+

VMware Workstation Pro allows you to run multiple operating systems as +VMs on a single host. It is a more advanced version +of VMware Workstation Player.

+

This tutorial shows how to do a manual installation of VMware Workstation +Pro on a Clear Linux* OS host using the console plus the VMware Workstation Pro GUI.

+

VMware Workstation Pro on Linux installs two major components:

+
    +
  1. VMware hypervisor software

  2. +
  3. VMware kernel modules

  4. +
+
+

Note

+

Clear Linux OS is not an officially supported host OS for VMware Workstation Pro. This +tutorial follows the generic Linux installation instructions with details +specific to a manual installation on Clear Linux OS.

+
+
+

Prerequisites

+

Enable virtualization in the BIOS before installing VMware Workstation Pro.

+
+
+

Install VMware Workstation Pro

+

Use the console installer to install the VMware Workstation Pro hypervisor +software:

+
    +
  1. Download +VMware Workstation Pro for Linux.

    +
    +

    Note

    +

    The downloaded file is named with a .bundle file extension but +this is not a Clear Linux OS bundle!

    +
    +
  2. +
  3. In a terminal, cd to the directory where the .bundle installation +file was saved.

    +
    cd ~/Downloads/
    +
    +
    +
  4. +
  5. Make the .bundle installation file executable. Replace +[VMware-Workstation-xxxx-xxxx.architecture] with the actual file name.

    +
    chmod +x ./[VMware-Workstation-xxxx-xxxx.architecture].bundle
    +
    +
    +
  6. +
  7. Start the installation.

    +
    sudo ./VMware-Workstation-[xxxx-xxxx].architecture.bundle
    +
    +
    +
    Extracting VMware Installer...done.
    +
    +
    +
  8. +
  9. When prompted to specify the system service scripts directory, use the common +suggestion:

    +
    System service scripts directory (commonly /etc/init.d).: /etc/init.d
    +
    +
    +

    You will see output similar to the following:

    +
    Installing VMware VMX 15.5.0
    +    Configuring...No rc*.d style init script directories were given to the installer.
    +You must manually add the necessary links to ensure that the vmware    ]  49%
    +service at /etc/init.d/vmware is automatically started and stopped on
    +Installing VMware Workstation 15.5.0
    +    Configuring...
    +[######################################################################] 100%
    +Installation was successful.
    +
    +
    +
    +

    Note

    +

    During installation you will get an error about “No rc*.d style init +script directories” being given. This can safely be ignored as Clear Linux OS uses +systemd.

    +
    +
  10. +
+
+
+

Install VMware kernel modules

+

After installing VMware Workstation Pro, additional VMware kernel modules must +be compiled and installed. Before installing the VMware kernel modules, install +DKMS, which will provide the necessary tools to add the VMware kernel modules.

+
+

Install DKMS

+

The kernel-native-dkms bundle provides the DKMS program and Linux +kernel headers, which are placed under /usr/lib/modules/$(uname +-r)/build/include/ and are required to compile kernel modules.

+

The kernel-native-dkms bundle also:

+
    +
  • Adds a systemd update trigger +(/usr/lib/systemd/system/dkms-new-kernel.service) to automatically +run DKMS to rebuild modules after a kernel upgrade occurs with swupd +update.

  • +
  • Disables kernel module signature verification by appending a kernel +command-line parameter (module.sig_unenforce) from the +/usr/share/kernel/cmdline.d/clr-ignore-mod-sig.conf file.

  • +
  • Adds a notification to the Message of the Day (MOTD) indicating kernel +module signature verification is disabled.

  • +
+
+

Warning

+

We recommend that you always review the swupd update output +to make sure kernel modules were successfully rebuilt against the new +kernel. This is especially important for systems where a successful boot +relies on a kernel module.

+
+

Install the kernel-native-dkms or kernel-lts-dkms +bundle.

+
    +
  1. Determine which kernel variant is running on Clear Linux OS. Only the native +and lts kernels are enabled to build and load out-of-tree kernel modules +with DKMS.

    +
    $ uname -r
    +5.XX.YY-ZZZZ.native
    +
    +
    +

    Ensure .native or .lts is in the kernel name.

    +
  2. +
  3. Install the DKMS bundle corresponding to the installed kernel. Use +kernel-native-dkms for the native kernel or +kernel-lts-dkms for the lts kernel.

    +
    sudo swupd bundle-add kernel-native-dkms
    +
    +
    +

    or

    +
    sudo swupd bundle-add kernel-lts-dkms
    +
    +
    +
  4. +
  5. Update the Clear Linux OS bootloader and reboot, and +ensure that you can start the new kernel.

    +
    sudo clr-boot-manager update
    +reboot
    +
    +
    +
  6. +
+
+
+

Install kernel modules

+

Launch the VMware Workstation Pro GUI to finish the installation and build the +needed kernel modules.

+
    +
  1. On the Clear Linux OS desktop, find the VMware Workstation Pro icon and click to launch.

  2. +
  3. Click through the installation customization screens as directed in the +VMware Kernel Module Updater.

  4. +
  5. On the last screen click Finish. VMware Workstation Pro will launch.

  6. +
  7. Create and configure a new VM!

  8. +
+
+
+
+

Troubleshooting

+

If problems occur during installation, the recommended first step is to identify +which major component the issues are occurring in (hypervisor or kernel modules). +This will help direct further troubleshooting.

+

Troubleshooting tips:

+
    +
  • If the issue is with compiling the kernel modules and you are running the native +kernel, try installing the LTS kernel instead.

  • +
  • If modules failed to install or load, check logs in /tmp/vmware-<username>/*.log

  • +
  • Try re-installing all VMware modules with the following command:

    +
    sudo vmware-modconfig --console --install-all
    +
    +
    +
  • +
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/wordpress.html b/tutorials/wordpress.html new file mode 100644 index 000000000..2b25fdcdf --- /dev/null +++ b/tutorials/wordpress.html @@ -0,0 +1,1382 @@ + + + + + + + + + + WordPress* Server — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

WordPress* Server

+

This tutorial shows you how to install the WordPress* components on your Clear Linux OS +LAMP server. At the end of +LAMP Web Server, you created a WordPress-ready database using +phpMyAdmin* and MariaDB*. Now that the LAMP server is up and running, you +can add the WordPress components needed to host a WordPress website on your system.

+
+

Before you begin

+

This tutorial assumes that you have successfully completed +Install Clear Linux* OS from the live desktop and you have LAMP Web Server.

+
+
+

Create a WordPress server

+

WordPress can be installed in a variety of ways. These instructions are +written for users who have followed our instructions for installing phpMyAdmin +when they set up a LAMP web server. Note that +all steps in this tutorial have been tested using a NUC6i5SYH Intel® NUC. +Visit the NUC6i5SYH product page for detailed information.

+

Numerous online articles are available to help you name your website and +acquire the necessary certificates. Those tasks are beyond the scope of this tutorial.

+

You can take several actions to harden your website from attacks. The security +of your website and the data it contains are complex and ever-evolving tasks. +Prioritize security if you plan to expose your website to the outside world. +This tutorial does not address security measures that you can take to harden +your site but we strongly encourage you to take action.

+
+

Note

+

Throughout this tutorial, we reference your website name as <your_website>.

+
+
+

Download WordPress and manage directories

+

For this tutorial, you will create a WordPress blog that can be accessed at: +http://<your_website>/blog.

+

To accomplish this setup, you must add WordPress components to the /var/www/html/blog +directory.

+

Follow these steps:

+
    +
  1. Navigate to the top level of the website’s root directory:

    +
    cd /var/www/html
    +
    +
    +
  2. +
  3. Download the latest version of WordPress:

    +
    sudo curl -O https://wordpress.org/latest.tar.gz
    +
    +
    +
  4. +
  5. Extract all files and directories from the downloaded file:

    +
    sudo tar –xzvf latest.tar.gz
    +
    +
    +
  6. +
  7. Rename the top-level WordPress directory to “blog”:

    +
    sudo mv wordpress blog
    +
    +
    +
  8. +
  9. Remove the downloaded tar file:

    +
    sudo rm latest.tar.gz
    +
    +
    +
  10. +
+
+
+

Set up WordPress with web-based GUI

+

Recall that you created a database and user when you installed phpMyAdmin when you +set up a Clear Linux OS based web server. Next, you must +connect WordPress to the database and install WordPress.

+

To continue with the setup, go to: http://<your_website>/blog/wp-admin/install.php. +The WordPress language option screen appears, as shown in figure 1.

+
    +
  1. Select English and click Continue.

    +
    +WordPress language selection +
    +

    Figure 1: WordPress language selection screen.

    +
    +
    +

    The WordPress installation continues until the Welcome screen appears, as shown in +figure 2:

    +
    +WordPress welcome screen +
    +

    Figure 2: WordPress Welcome screen.

    +
    +
    +
  2. +
  3. Click Let’s go!.

  4. +
  5. Enter database connection specifics in the screen that appears, as shown in figure 3 +below.

    +
      +
    • Database name: WordPress

    • +
    • Database username: wordpressuser

    • +
    • Database password: wp-example (asterisks will not appear in the text box)

    • +
    • Database host: localhost

    • +
    • Table prefix: wp_

    • +
    +
    +Database connection details +
    +

    Figure 3: Information necessary for WordPress to connect to the database.

    +
    +
    +
  6. +
  7. Click Submit to complete the setup.

    +

    Figure 4 shows the confirmation screen that verifies a successful setup. WordPress +is connected to the MariaDB database.

    +
    +Successful database connection. +
    +

    Figure 4: Successful WordPress connection.

    +
    +
    +
  8. +
  9. Click Run the install. +The installer runs until WordPress is fully installed on your system.

  10. +
+
+
+

Complete successful login

+

Once the installation is complete, you can name your blog and create a WordPress username +and password. See figure 5.

+
+WordPress user creation +
+

Figure 5: WordPress site information screen.

+
+
+
    +
  1. Enter all required information.

  2. +
  3. Click Install WordPress.

  4. +
  5. Verify that the initial login screen appears once the installation is complete. See figure 6:

    +
    +WordPress login +
    +

    Figure 6: The WordPress login screen.

    +
    +
    +
  6. +
  7. Enter your WordPress username and password.

  8. +
  9. Check Remember me to save your credentials.

  10. +
  11. Click Log in.

  12. +
+

Figure 7 shows the WordPress dashboard after a successful login:

+
+WordPress Dashboard +
+

Figure 7: The WordPress dashboard.

+
+
+

You are ready to go!

+

To check out your blog as it is seen by the outside world, enter: +http://<your_website>/blog on your browser. Figure 8 shows the result:

+
+WordPress blog +
+

Figure 8: Your WordPress blog.

+
+
+

Congratulations, your WordPress blog is up and running!

+

You have successfully installed WordPress on a host system.

+

Add new entries to your blog and share them with the world using Clear Linux OS!

+

Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/yubikey-u2f.html b/tutorials/yubikey-u2f.html new file mode 100644 index 000000000..3d5166257 --- /dev/null +++ b/tutorials/yubikey-u2f.html @@ -0,0 +1,1310 @@ + + + + + + + + + + YubiKey* Support — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

YubiKey* Support

+

This tutorial explains how to configure a YubiKey* for U2F authentication +through a web browser on a Clear Linux* OS system.

+ +
+

Description

+

YubiKey is a USB security token manufactured by Yubico. Depending on the +model, a YubiKey can support different authentication protocols including +One-Time Password (OTP), Smart card, FIDO2, and Universal 2nd Factor (U2F).

+

A list of websites that accept U2F authentication with the YubiKey +is available on the Yubico website. See the Yubico website to learn more about +the Yubikey: https://www.yubico.com/getstarted/

+
+
+

Prerequisites

+

This tutorial assumes you have:

+
    +
  1. Clear Linux OS installed and running.

  2. +
  3. Mozilla Firefox installed on Clear Linux OS.

  4. +
  5. A YubiKey.

  6. +
+
+
+

Enable Linux udev rules for YubiKey

+

udev is the Linux device manager that handles events when USB +devices are added and removed. Custom rules needs to be created to properly +identify the YubiKey and provide applications access.

+

These instructions are derived from: Yubico support article Using Your U2F +YubiKey with Linux

+
    +
  1. Create the udev rules folder under /etc.

    +
    sudo mkdir -p /etc/udev/rules.d/
    +
    +
    +
  2. +
  3. Download the u2f rules from the Yubico GitHub:

    +
    curl -O https://raw.githubusercontent.com/Yubico/libu2f-host/master/70-u2f.rules
    +
    +
    +
  4. +
  5. Move the downloaded 70-u2f.rules file into the /etc/udev +folder.

    +
    sudo mv 70-u2f.rules /etc/udev/rules.d/
    +
    +
    +
  6. +
  7. The udev rules should automatically be reloaded. However, they can be +manually reloaded or you can reboot the system.

    +
    sudo udevadm control --reload-rules && sudo udevadm trigger
    +
    +
    +
  8. +
  9. Plugin and validate the YubiKey appears as a USB device.

    +
    lsusb
    +
    +
    +
  10. +
+
+
+

Enable U2F in Mozilla Firefox

+

Firefox comes with U2F web authentication support disabled by default. U2F +needs to be enabled in the advanced settings.

+

These instructions are derived from: Yubico support article Enabling U2F +support in Mozilla Firefox

+
    +
  1. Launch Mozilla Firefox

  2. +
  3. In the URL bar, type about:config to access the advanced +settings.

    +
    about:config
    +
    +
    +
  4. +
  5. Click the I accept the risk! button to continue to the advanced settings

  6. +
  7. Search for the security.webauth.u2f and double-click it +so Value becomes true.

  8. +
+

Your YubiKey is now usable on Clear Linux OS with Mozilla Firefox with websites that +support U2F authentication.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/tutorials/zfs.html b/tutorials/zfs.html new file mode 100644 index 000000000..f0d827306 --- /dev/null +++ b/tutorials/zfs.html @@ -0,0 +1,1446 @@ + + + + + + + + + + OpenZFS* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ +
+
+
+
+ +
+

OpenZFS*

+

This tutorial shows how to set up OpenZFS* file system and volume manager on Clear Linux* OS, using a non-root device for zpools.

+ +
+

Background

+

The OpenZFS storage platform provides volume management, snapshot capabilities, and redundancy detection. Clear Linux OS does not ship with a binary ZFS kernel module (zfs.ko). Clear Linux OS users who wish to incorporate the zfs.ko kernel module must build and maintain this work themselves.

+
+

Caution

+

Use of the OpenZFS kernel module in connection with Clear Linux OS is neither recommended nor officially endorsed by the Clear Linux* Project. Users who follow this tutorial and build zfs.ko kernel module are encouraged to seek independent legal counsel regarding any plan to redistribute a software package containing zfs.ko and Clear Linux OS.

+
+
+
+

Known Issues

+

Using a long-term-support (LTS) kernel when running OpenZFS reduces the risk of incompatibilities with kernel updates. When new kernels or new versions of OpenZFS are released, users bear the responsibility to test those releases and ensure compatibility before deploying any updates.

+
+
+

Prerequisites

+ +
+

Install the DKMS kernel

+

Install the kernel-native-dkms or kernel-lts-dkms +bundle.

+
    +
  1. Determine which kernel variant is running on Clear Linux OS. Only the native +and lts kernels are enabled to build and load out-of-tree kernel modules +with DKMS.

    +
    $ uname -r
    +5.XX.YY-ZZZZ.native
    +
    +
    +

    Ensure .native or .lts is in the kernel name.

    +
  2. +
  3. Install the DKMS bundle corresponding to the installed kernel. Use +kernel-native-dkms for the native kernel or +kernel-lts-dkms for the lts kernel.

    +
    sudo swupd bundle-add kernel-native-dkms
    +
    +
    +

    or

    +
    sudo swupd bundle-add kernel-lts-dkms
    +
    +
    +
  4. +
  5. Update the Clear Linux OS bootloader and reboot, and +ensure that you can start the new kernel.

    +
    sudo clr-boot-manager update
    +reboot
    +
    +
    +
  6. +
+
+
+

Bundles

+

Before installing OpenZFS, install the bundles that contain the build dependencies.

+
sudo swupd bundle-add wget devpkg-openssl devpkg-util-linux
+
+
+
+
+
+

Install

+
+

Download OpenZFS release

+

In this section, we download release 2.0.0 directly from the OpenZFS repository (the latest available as of the latest revision of this page).

+

Download release 2.0.0

+
+
cd /usr/src
+sudo wget https://github.com/openzfs/zfs/releases/download/zfs-2.0.0/zfs-2.0.0.tar.gz
+sudo tar -xvf zfs-2.0.0.tar.gz
+
+
+
+
+
+

Compile the module

+

We will build the module using DKMS. This will enable us to keep the module up to date as new kernels are released in the future.

+

The ZFS distribution provides a script to build a suitable dkms.conf file.

+
+

Build dkms.conf and install it into the DKMS tree.

+
cd /usr/src/zfs-2.0.0
+sudo scripts/dkms.mkconf -n zfs -v 2.0.0 -f dkms.conf
+sudo dkms add -m zfs -v 2.0.0
+sudo dkms build -m zfs -v 2.0.0
+sudo dkms install -m zfs -v 2.0.0
+
+
+
+

Observe that this install the zfs kernel modules to:

+
+

/usr/lib/modules/<kernel-name>/extra/zfs

+
+
+
+

Compile userspace tools

+

Here we compile and install the zfs userspace tools (e.g., zpool, zfs, etc.).

+
+
cd /usr/src/zfs-2.0.0
+sudo ./configure
+sudo make
+sudo make install
+
+
+
+

The binaries are installed at the following directory. While not required, it’s recommended to add /usr/local/sbin to your path variable.

+
+
+ /usr/local/
+|--+ bin/
+   |--zvol_wait
+   |--zgenhostid
+   |--raidz_test
+|--+ etc/
+   |--+ zfs/
+      |--* zed.d/
+      |--+ zpool.d/
+      |--zfs-functions
+|--+ include/libzfs/ [contents omitted]
+|--+ lib/
+|--+ libexec/
+   |--+ zfs/
+      |-- zpool.d/
+      |-- zed.d
+|--+ share/zfs/ [contents omitted]
+|--+ sbin/
+   |--fsck.zfs
+   |--zpool
+   |--zdb
+   |--zed
+   |--zfs
+   |--zhack
+   |--zinject
+   |--zpool
+   |--ztest
+   |--zstreamdump
+|--+ src/
+   |--+ zfs-2.0.0/
+   |--+ spl-2.0.0/
+
+
+
+
+
+

Set up systemd

+

We now have these unit files available.

+
zfs-env-bootfs.service
+zfs-zed.service
+zfs-import-cache.service
+zfs-import-scan.service
+zfs-mount.service
+zfs-share.service
+zfs-volume-wait.service
+
+
+

OpenZFS requires that we explicitly install and enable the services desired.

+

To use ZFS automatic zpool import and filesystem mount services, enable them.

+
sudo systemctl enable zfs-import-cache
+sudo systemctl enable zfs-import.target
+sudo systemctl enable zfs-import-scan
+sudo systemctl enable zfs-mount
+sudo systemctl enable zfs.target
+
+
+
+
+

Load the kernel module at boot

+

OpenZFS kernel modules must be loaded before any OpenZFS filesystems are mounted. For convenience, load the kernel modules at boot.

+

Systemd uses the /etc/modules-load.d/ directory to load out-of-tree kernel modules. Make sure that the directory exists:

+
+
sudo mkdir -p /etc/modules-load.d
+
+
+
+

Create the configuration file:

+
+
echo "zfs" | sudo tee /etc/modules-load.d/01-zfs.conf
+
+
+
+

Reboot your system. zfs.ko should be loaded automatically (the module should appear in the outout of command lsmod).

+
+

Caution

+

When the Clear Linux OS kernel is upgraded, DKMS will attempt to rebuild the OpenZFS module for the new kernel.

+
    +
  • DKMS may not have rebuilt the module

  • +
  • DKMS may not have auto-installed the module

  • +
  • The new kernel might introduce breaking changes that prevent zfs +from compiling

  • +
+
+

To fix this situation, recompile zfs.ko with the new kernel code. OpenZFS might not compile at all with the new kernel.

+
+

Caution

+

Be sure not to put anything on an OpenZFS pool that will be needed to rebuild kernel modules. Ensure compatibility of OpenZFS with new Linux kernels when released.

+
+
+
+

Troubleshooting

+

If you suspect an issue with DKMS rebuilding your module, you can check two places for information. The dkms-new-kernel service will show status that may help in troubleshooting:

+
systemctl status dkms-new-kernel.service
+
+
+

The systemd journal may also have important information:

+
journalctl -xe
+
+
+
+

Caution

+

As of OpenZFS 2.0.0, the included file script/dkms.mkconf contains a minor incompability – it calls the command lsb_release, which is not available on Clear Linux by default. It is trivial to edit dkms.mkconf and remove the singular reference to lsb_release without any ill effects, and then execute the dkms commands above. However, keeping the file as provided is perfectly fine, but will result in :file:`dkms` warnings.

+
+
+
+
+

Next steps

+

You’re now ready to create zpools and datasets! For more information on using ZFS, see:

+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022 Intel Corporation. All Rights Reserved.. + Last updated on Aug 16, 2024. +

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/zh_CN/.buildinfo b/zh_CN/.buildinfo new file mode 100644 index 000000000..32bbdac87 --- /dev/null +++ b/zh_CN/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 0d81409071fb6be520219fdbab211709 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/zh_CN/FAQ/index.html b/zh_CN/FAQ/index.html new file mode 100644 index 000000000..70887b9a5 --- /dev/null +++ b/zh_CN/FAQ/index.html @@ -0,0 +1,1254 @@ + + + + + + + + + + + + + + FAQ — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

FAQ

+

Below is a list of commonly asked questions with answers sourced from the +Clear Linux* OS team and Clear Linux community forums.

+ +
+

General

+
+

Why did you make another distro?

+

The Clear Linux OS team felt that performance was left on the table with Linux software. +Clear Linux OS takes a holistic approach to improving performance across the stack. We +also wanted to take more modern approaches with OS updates and tooling.

+
+

+
+
+
+

Can other distros copy Clear Linux OS improvements?

+

Yes, we absolutely love open source reuse and upstreaming improvements.

+
+

+
+
+
+

How often do you update?

+

The Clear Linux OS team puts out multiple releases a week, often releasing 2 or more +times a day. This rolling release approach allows Clear Linux OS to remain agile to +upstream changes and security patches.

+
+

+
+
+
+

Is telemetry required?

+

The telemetry solution provided by Clear Linux OS is entirely optional and customizable. +It is disabled by default. If you do choose to enable telemetry, the data +helps the Clear Linux OS team proactively identify and resolve bugs. See the +遥测 guide for more information.

+
+

+
+
+
+

What is the default firewall?

+

Clear Linux OS packages iptables as a bundle, however, there are no default +firewall rules. All network traffic is allowed by default.

+
+

+
+
+
+

Where are the files that I usually see under /etc like fstab?

+

Clear Linux OS has a stateless design that maintains a separation between system files +and user files. Default values are stored under /usr/share/defaults/. +Files under /etc/ are not created unless you create one.

+

A blog post explaining how this is accomplished with /etc/fstab/ +specifically is available here: +https://clearlinux.org/news-blogs/where-etcfstab-clear-linux

+
+

+
+
+
+
+

Software packages

+
+

How is software installed and updated?

+

Clear Linux OS provides software in the form of bundle 文件 and +updates software with swupd.

+

Flatpak* is an application virtualization solution +that allows more software to be available to Clear Linux OS users by augmenting the +software Clear Linux OS packages natively with software available through Flatpak.

+

Our goal is to have software packaged natively and made available through +bundles whenever possible.

+
+

+
+
+
+

Does Clear Linux OS use RPMs like other distros?

+

Clear Linux OS provides software in the form of bundle 文件. The RPM +format is used as an intermediary step for packaging and determining software +dependencies at OS build time.

+

Individual RPMs can sometimes be manually installed on a Clear Linux OS system with the +right tools, but that is not the intended use case.

+
+

+
+
+
+

Can I install a software package from another OS on Clear Linux OS?

+

Software that is packaged in other formats for other Linux distributions is +not guaranteed to work on Clear Linux OS and may be impacted by Clear Linux OS updates.

+

If the software you’re seeking is open source, please submit a request to add +it to Clear Linux OS. Submit requests on GitHub* here: +https://github.com/clearlinux/distribution/issues

+
+

+
+
+
+
+

Software availability

+
+

What software is available on Clear Linux OS?

+

Available software can be found in the Software Store, through the GNOME* +Software application on the desktop, or by using swupd search.

+
+

+
+
+
+

Is Google* Chrome* available?

+

The Google Chrome web browser is not distributed as a bundle in Clear Linux OS due to +copyright and licensing complexities.

+

A discussion on manually installing and maintaining Google Chrome can be found +on GitHub: https://github.com/clearlinux/distribution/issues/422

+
+

+
+
+
+

Is Microsoft* Visual Studio Code* available?

+

Yes. Find the CLI command for installing VS Code and other Flatpak apps in +the software store. Installing Flatpak apps is also covered in our +tutorial.

+

The Clear Linux OS team is working on a natively packaged version of Visual Studio Code +for future release.

+

Join a community forum discussion about manually installing and maintaining +Visual Studio Code: https://community.clearlinux.org/t/need-native-support-for-vs-code-through-swupd/

+
+

+
+
+
+

Is FFmpeg available?

+

FFmpeg is a multimedia software suite, which is commonly used for +various media encoding/decoding, streaming, and playback.

+

Clear Linux OS does not distribute FFmpeg due to well-known licensing and legal +complexities (See https://www.ffmpeg.org/legal.html and +http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html).

+

Read more in the Clear Linux OS repository, including discussion of an alternative +hardware-based solution: +https://github.com/clearlinux/distribution/issues/429.

+

While Clear Linux OS cannot distribute FFmpeg, a manual solution to build and install +FFmpeg under /usr/local has been shared on the community forums: +https://community.clearlinux.org/t/how-to-h264-etc-support-for-firefox-including-ffmpeg-install.

+
+

+
+
+
+

Is ZFS* available?

+

ZFS is not available with Clear Linux OS because of copyright and licensing +complexities. BTRFS is an alternative filesystem that is available in Clear Linux OS +natively.

+

A user on GitHub notes that the ZFS kernel module can be compiled, built, and +installed manually: https://github.com/clearlinux/distribution/issues/631

+
+

+
+
+
+

Can you add a driver that I need?

+

If a kernel module is available as part of the Linux kernel source tree but +not enabled in the Clear Linux OS kernels, in many cases the Clear Linux OS team will enable it +upon request. Submit requests on GitHub here: +https://github.com/clearlinux/distribution/issues

+

The Clear Linux OS team does not typically add out-of-tree kernel modules as a matter of +practice because of the maintenance overhead. If the driver was unable to be +merged upstream, there is a good chance we may be unable to merge it for +similar reasons.

+

Kernel modules can be individually built and installed on Clear Linux OS. See the +kernel modules page for more information.

+
+

+
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/_images/00-sign-in.png b/zh_CN/_images/00-sign-in.png new file mode 100644 index 000000000..4b9840ee4 Binary files /dev/null and b/zh_CN/_images/00-sign-in.png differ diff --git a/zh_CN/_images/01-cloud-storage.png b/zh_CN/_images/01-cloud-storage.png new file mode 100644 index 000000000..0888723d3 Binary files /dev/null and b/zh_CN/_images/01-cloud-storage.png differ diff --git a/zh_CN/_images/02-storage-browser.png b/zh_CN/_images/02-storage-browser.png new file mode 100644 index 000000000..704f94b82 Binary files /dev/null and b/zh_CN/_images/02-storage-browser.png differ diff --git a/zh_CN/_images/03-create-bucket.png b/zh_CN/_images/03-create-bucket.png new file mode 100644 index 000000000..36a1da387 Binary files /dev/null and b/zh_CN/_images/03-create-bucket.png differ diff --git a/zh_CN/_images/04-bucket-created.png b/zh_CN/_images/04-bucket-created.png new file mode 100644 index 000000000..064719cb6 Binary files /dev/null and b/zh_CN/_images/04-bucket-created.png differ diff --git a/zh_CN/_images/10-image-upload.png b/zh_CN/_images/10-image-upload.png new file mode 100644 index 000000000..babaf2d10 Binary files /dev/null and b/zh_CN/_images/10-image-upload.png differ diff --git a/zh_CN/_images/11-bucket-uploaded.png b/zh_CN/_images/11-bucket-uploaded.png new file mode 100644 index 000000000..ce368e44b Binary files /dev/null and b/zh_CN/_images/11-bucket-uploaded.png differ diff --git a/zh_CN/_images/20-gce-image.png b/zh_CN/_images/20-gce-image.png new file mode 100644 index 000000000..7b8a2ccb4 Binary files /dev/null and b/zh_CN/_images/20-gce-image.png differ diff --git a/zh_CN/_images/20-image-library.png b/zh_CN/_images/20-image-library.png new file mode 100644 index 000000000..a70cceee6 Binary files /dev/null and b/zh_CN/_images/20-image-library.png differ diff --git a/zh_CN/_images/21-create-image.png b/zh_CN/_images/21-create-image.png new file mode 100644 index 000000000..4ef4d43bc Binary files /dev/null and b/zh_CN/_images/21-create-image.png differ diff --git a/zh_CN/_images/22-image-list.png b/zh_CN/_images/22-image-list.png new file mode 100644 index 000000000..4347e462e Binary files /dev/null and b/zh_CN/_images/22-image-list.png differ diff --git a/zh_CN/_images/30-create-vm.png b/zh_CN/_images/30-create-vm.png new file mode 100644 index 000000000..528a461ec Binary files /dev/null and b/zh_CN/_images/30-create-vm.png differ diff --git a/zh_CN/_images/30-vm-catalog.png b/zh_CN/_images/30-vm-catalog.png new file mode 100644 index 000000000..06071cf65 Binary files /dev/null and b/zh_CN/_images/30-vm-catalog.png differ diff --git a/zh_CN/_images/30-vm-instances.png b/zh_CN/_images/30-vm-instances.png new file mode 100644 index 000000000..3c38bd8d5 Binary files /dev/null and b/zh_CN/_images/30-vm-instances.png differ diff --git a/zh_CN/_images/30-vm-none.png b/zh_CN/_images/30-vm-none.png new file mode 100644 index 000000000..e043ef03f Binary files /dev/null and b/zh_CN/_images/30-vm-none.png differ diff --git a/zh_CN/_images/31-select-boot-disk.png b/zh_CN/_images/31-select-boot-disk.png new file mode 100644 index 000000000..b0b44cdfc Binary files /dev/null and b/zh_CN/_images/31-select-boot-disk.png differ diff --git a/zh_CN/_images/40-clear-vm-security.png b/zh_CN/_images/40-clear-vm-security.png new file mode 100644 index 000000000..8d45b4a4c Binary files /dev/null and b/zh_CN/_images/40-clear-vm-security.png differ diff --git a/zh_CN/_images/40-ssh-key.png b/zh_CN/_images/40-ssh-key.png new file mode 100644 index 000000000..e18a390c2 Binary files /dev/null and b/zh_CN/_images/40-ssh-key.png differ diff --git a/zh_CN/_images/41-vm-created.png b/zh_CN/_images/41-vm-created.png new file mode 100644 index 000000000..ec4f3a208 Binary files /dev/null and b/zh_CN/_images/41-vm-created.png differ diff --git a/zh_CN/_images/42-ssh-vm.png b/zh_CN/_images/42-ssh-vm.png new file mode 100644 index 000000000..92badb80d Binary files /dev/null and b/zh_CN/_images/42-ssh-vm.png differ diff --git a/zh_CN/_images/QingCloud-1.png b/zh_CN/_images/QingCloud-1.png new file mode 100644 index 000000000..3c3b3c1b0 Binary files /dev/null and b/zh_CN/_images/QingCloud-1.png differ diff --git a/zh_CN/_images/QingCloud-10.png b/zh_CN/_images/QingCloud-10.png new file mode 100644 index 000000000..799197437 Binary files /dev/null and b/zh_CN/_images/QingCloud-10.png differ diff --git a/zh_CN/_images/QingCloud-11.png b/zh_CN/_images/QingCloud-11.png new file mode 100644 index 000000000..a29370a3b Binary files /dev/null and b/zh_CN/_images/QingCloud-11.png differ diff --git a/zh_CN/_images/QingCloud-13.png b/zh_CN/_images/QingCloud-13.png new file mode 100644 index 000000000..8c0a9f878 Binary files /dev/null and b/zh_CN/_images/QingCloud-13.png differ diff --git a/zh_CN/_images/QingCloud-14.png b/zh_CN/_images/QingCloud-14.png new file mode 100644 index 000000000..61caa0a7a Binary files /dev/null and b/zh_CN/_images/QingCloud-14.png differ diff --git a/zh_CN/_images/QingCloud-15.png b/zh_CN/_images/QingCloud-15.png new file mode 100644 index 000000000..0152fca40 Binary files /dev/null and b/zh_CN/_images/QingCloud-15.png differ diff --git a/zh_CN/_images/QingCloud-16.png b/zh_CN/_images/QingCloud-16.png new file mode 100644 index 000000000..480409248 Binary files /dev/null and b/zh_CN/_images/QingCloud-16.png differ diff --git a/zh_CN/_images/QingCloud-17.png b/zh_CN/_images/QingCloud-17.png new file mode 100644 index 000000000..998271931 Binary files /dev/null and b/zh_CN/_images/QingCloud-17.png differ diff --git a/zh_CN/_images/QingCloud-18.png b/zh_CN/_images/QingCloud-18.png new file mode 100644 index 000000000..e8c47b820 Binary files /dev/null and b/zh_CN/_images/QingCloud-18.png differ diff --git a/zh_CN/_images/QingCloud-19.png b/zh_CN/_images/QingCloud-19.png new file mode 100644 index 000000000..ba6c26b9b Binary files /dev/null and b/zh_CN/_images/QingCloud-19.png differ diff --git a/zh_CN/_images/QingCloud-2.png b/zh_CN/_images/QingCloud-2.png new file mode 100644 index 000000000..ed9d5701b Binary files /dev/null and b/zh_CN/_images/QingCloud-2.png differ diff --git a/zh_CN/_images/QingCloud-20.png b/zh_CN/_images/QingCloud-20.png new file mode 100644 index 000000000..c71dae6d4 Binary files /dev/null and b/zh_CN/_images/QingCloud-20.png differ diff --git a/zh_CN/_images/QingCloud-21.png b/zh_CN/_images/QingCloud-21.png new file mode 100644 index 000000000..990e7cff7 Binary files /dev/null and b/zh_CN/_images/QingCloud-21.png differ diff --git a/zh_CN/_images/QingCloud-3.png b/zh_CN/_images/QingCloud-3.png new file mode 100644 index 000000000..bd326a6c6 Binary files /dev/null and b/zh_CN/_images/QingCloud-3.png differ diff --git a/zh_CN/_images/QingCloud-4.png b/zh_CN/_images/QingCloud-4.png new file mode 100644 index 000000000..35f480baf Binary files /dev/null and b/zh_CN/_images/QingCloud-4.png differ diff --git a/zh_CN/_images/QingCloud-6.png b/zh_CN/_images/QingCloud-6.png new file mode 100644 index 000000000..a800fe1e9 Binary files /dev/null and b/zh_CN/_images/QingCloud-6.png differ diff --git a/zh_CN/_images/QingCloud-7.png b/zh_CN/_images/QingCloud-7.png new file mode 100644 index 000000000..b1f3d8806 Binary files /dev/null and b/zh_CN/_images/QingCloud-7.png differ diff --git a/zh_CN/_images/QingCloud-8.png b/zh_CN/_images/QingCloud-8.png new file mode 100644 index 000000000..688ad825f Binary files /dev/null and b/zh_CN/_images/QingCloud-8.png differ diff --git a/zh_CN/_images/QingCloud-9.png b/zh_CN/_images/QingCloud-9.png new file mode 100644 index 000000000..f79ee9dd2 Binary files /dev/null and b/zh_CN/_images/QingCloud-9.png differ diff --git a/zh_CN/_images/architect-lifecycle-1.png b/zh_CN/_images/architect-lifecycle-1.png new file mode 100644 index 000000000..294d0f351 Binary files /dev/null and b/zh_CN/_images/architect-lifecycle-1.png differ diff --git a/zh_CN/_images/autoproxy_0.png b/zh_CN/_images/autoproxy_0.png new file mode 100644 index 000000000..7a02cd81f Binary files /dev/null and b/zh_CN/_images/autoproxy_0.png differ diff --git a/zh_CN/_images/aws-web-1.png b/zh_CN/_images/aws-web-1.png new file mode 100644 index 000000000..c4fad6852 Binary files /dev/null and b/zh_CN/_images/aws-web-1.png differ diff --git a/zh_CN/_images/aws-web-10.png b/zh_CN/_images/aws-web-10.png new file mode 100644 index 000000000..b4fbeb13f Binary files /dev/null and b/zh_CN/_images/aws-web-10.png differ diff --git a/zh_CN/_images/aws-web-11.png b/zh_CN/_images/aws-web-11.png new file mode 100644 index 000000000..2a6dcab0e Binary files /dev/null and b/zh_CN/_images/aws-web-11.png differ diff --git a/zh_CN/_images/aws-web-12.png b/zh_CN/_images/aws-web-12.png new file mode 100644 index 000000000..1091ea724 Binary files /dev/null and b/zh_CN/_images/aws-web-12.png differ diff --git a/zh_CN/_images/aws-web-13.png b/zh_CN/_images/aws-web-13.png new file mode 100644 index 000000000..507c8c125 Binary files /dev/null and b/zh_CN/_images/aws-web-13.png differ diff --git a/zh_CN/_images/aws-web-14.png b/zh_CN/_images/aws-web-14.png new file mode 100644 index 000000000..36e106610 Binary files /dev/null and b/zh_CN/_images/aws-web-14.png differ diff --git a/zh_CN/_images/aws-web-2.png b/zh_CN/_images/aws-web-2.png new file mode 100644 index 000000000..8bb6ffa08 Binary files /dev/null and b/zh_CN/_images/aws-web-2.png differ diff --git a/zh_CN/_images/aws-web-3.png b/zh_CN/_images/aws-web-3.png new file mode 100644 index 000000000..7beb5ad80 Binary files /dev/null and b/zh_CN/_images/aws-web-3.png differ diff --git a/zh_CN/_images/aws-web-4.png b/zh_CN/_images/aws-web-4.png new file mode 100644 index 000000000..cd143b51d Binary files /dev/null and b/zh_CN/_images/aws-web-4.png differ diff --git a/zh_CN/_images/aws-web-5.png b/zh_CN/_images/aws-web-5.png new file mode 100644 index 000000000..9c70a9031 Binary files /dev/null and b/zh_CN/_images/aws-web-5.png differ diff --git a/zh_CN/_images/aws-web-6.png b/zh_CN/_images/aws-web-6.png new file mode 100644 index 000000000..a5819f7a3 Binary files /dev/null and b/zh_CN/_images/aws-web-6.png differ diff --git a/zh_CN/_images/aws-web-7.png b/zh_CN/_images/aws-web-7.png new file mode 100644 index 000000000..dad60bd8c Binary files /dev/null and b/zh_CN/_images/aws-web-7.png differ diff --git a/zh_CN/_images/aws-web-8.png b/zh_CN/_images/aws-web-8.png new file mode 100644 index 000000000..9e927a438 Binary files /dev/null and b/zh_CN/_images/aws-web-8.png differ diff --git a/zh_CN/_images/aws-web-9.png b/zh_CN/_images/aws-web-9.png new file mode 100644 index 000000000..2c1f411ca Binary files /dev/null and b/zh_CN/_images/aws-web-9.png differ diff --git a/zh_CN/_images/azure-1.png b/zh_CN/_images/azure-1.png new file mode 100644 index 000000000..25c1800f8 Binary files /dev/null and b/zh_CN/_images/azure-1.png differ diff --git a/zh_CN/_images/azure-2.png b/zh_CN/_images/azure-2.png new file mode 100644 index 000000000..8364393c6 Binary files /dev/null and b/zh_CN/_images/azure-2.png differ diff --git a/zh_CN/_images/azure-3.png b/zh_CN/_images/azure-3.png new file mode 100644 index 000000000..dfb1c11ca Binary files /dev/null and b/zh_CN/_images/azure-3.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-01.png b/zh_CN/_images/bare-metal-install-desktop-01.png new file mode 100644 index 000000000..2e94163e5 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-01.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-02.png b/zh_CN/_images/bare-metal-install-desktop-02.png new file mode 100644 index 000000000..bce97b574 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-02.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-03.png b/zh_CN/_images/bare-metal-install-desktop-03.png new file mode 100644 index 000000000..a2650b35d Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-03.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-04.png b/zh_CN/_images/bare-metal-install-desktop-04.png new file mode 100644 index 000000000..0ae7d397c Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-04.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-05.png b/zh_CN/_images/bare-metal-install-desktop-05.png new file mode 100644 index 000000000..7efc721f9 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-05.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-06.png b/zh_CN/_images/bare-metal-install-desktop-06.png new file mode 100644 index 000000000..8a966ab70 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-06.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-07.png b/zh_CN/_images/bare-metal-install-desktop-07.png new file mode 100644 index 000000000..13a3d5f2c Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-07.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-08.png b/zh_CN/_images/bare-metal-install-desktop-08.png new file mode 100644 index 000000000..e35d29484 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-08.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-09.png b/zh_CN/_images/bare-metal-install-desktop-09.png new file mode 100644 index 000000000..8497270db Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-09.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-10.png b/zh_CN/_images/bare-metal-install-desktop-10.png new file mode 100644 index 000000000..db05151c7 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-10.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-11.png b/zh_CN/_images/bare-metal-install-desktop-11.png new file mode 100644 index 000000000..8fdfdcf0c Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-11.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-12.png b/zh_CN/_images/bare-metal-install-desktop-12.png new file mode 100644 index 000000000..98edfbb77 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-12.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-13.png b/zh_CN/_images/bare-metal-install-desktop-13.png new file mode 100644 index 000000000..99cc6763b Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-13.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-14.png b/zh_CN/_images/bare-metal-install-desktop-14.png new file mode 100644 index 000000000..f47bd7022 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-14.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-15.png b/zh_CN/_images/bare-metal-install-desktop-15.png new file mode 100644 index 000000000..d81b6dc3b Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-15.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-16.png b/zh_CN/_images/bare-metal-install-desktop-16.png new file mode 100644 index 000000000..9560bf249 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-16.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-17.png b/zh_CN/_images/bare-metal-install-desktop-17.png new file mode 100644 index 000000000..d51a0fa74 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-17.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-18.png b/zh_CN/_images/bare-metal-install-desktop-18.png new file mode 100644 index 000000000..d6ac2d52c Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-18.png differ diff --git a/zh_CN/_images/bare-metal-install-desktop-19.png b/zh_CN/_images/bare-metal-install-desktop-19.png new file mode 100644 index 000000000..a82cb2a60 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-desktop-19.png differ diff --git a/zh_CN/_images/bare-metal-install-server-01.png b/zh_CN/_images/bare-metal-install-server-01.png new file mode 100644 index 000000000..2e94163e5 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-01.png differ diff --git a/zh_CN/_images/bare-metal-install-server-02.png b/zh_CN/_images/bare-metal-install-server-02.png new file mode 100644 index 000000000..688f85d59 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-02.png differ diff --git a/zh_CN/_images/bare-metal-install-server-03.png b/zh_CN/_images/bare-metal-install-server-03.png new file mode 100644 index 000000000..b644a0a59 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-03.png differ diff --git a/zh_CN/_images/bare-metal-install-server-04.png b/zh_CN/_images/bare-metal-install-server-04.png new file mode 100644 index 000000000..73bb3f90c Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-04.png differ diff --git a/zh_CN/_images/bare-metal-install-server-05.png b/zh_CN/_images/bare-metal-install-server-05.png new file mode 100644 index 000000000..9be288eeb Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-05.png differ diff --git a/zh_CN/_images/bare-metal-install-server-06.png b/zh_CN/_images/bare-metal-install-server-06.png new file mode 100644 index 000000000..3e45ec660 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-06.png differ diff --git a/zh_CN/_images/bare-metal-install-server-07.png b/zh_CN/_images/bare-metal-install-server-07.png new file mode 100644 index 000000000..2ebac81ec Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-07.png differ diff --git a/zh_CN/_images/bare-metal-install-server-08.png b/zh_CN/_images/bare-metal-install-server-08.png new file mode 100644 index 000000000..7ec125b4f Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-08.png differ diff --git a/zh_CN/_images/bare-metal-install-server-09.png b/zh_CN/_images/bare-metal-install-server-09.png new file mode 100644 index 000000000..9ccd2c2bd Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-09.png differ diff --git a/zh_CN/_images/bare-metal-install-server-10.png b/zh_CN/_images/bare-metal-install-server-10.png new file mode 100644 index 000000000..9603f3ae5 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-10.png differ diff --git a/zh_CN/_images/bare-metal-install-server-11.png b/zh_CN/_images/bare-metal-install-server-11.png new file mode 100644 index 000000000..351bf7f15 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-11.png differ diff --git a/zh_CN/_images/bare-metal-install-server-12.png b/zh_CN/_images/bare-metal-install-server-12.png new file mode 100644 index 000000000..268260bea Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-12.png differ diff --git a/zh_CN/_images/bare-metal-install-server-13.png b/zh_CN/_images/bare-metal-install-server-13.png new file mode 100644 index 000000000..7de11593b Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-13.png differ diff --git a/zh_CN/_images/bare-metal-install-server-14.png b/zh_CN/_images/bare-metal-install-server-14.png new file mode 100644 index 000000000..2dd429f5e Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-14.png differ diff --git a/zh_CN/_images/bare-metal-install-server-15.png b/zh_CN/_images/bare-metal-install-server-15.png new file mode 100644 index 000000000..1913d9449 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-15.png differ diff --git a/zh_CN/_images/bare-metal-install-server-16.png b/zh_CN/_images/bare-metal-install-server-16.png new file mode 100644 index 000000000..72974308b Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-16.png differ diff --git a/zh_CN/_images/bare-metal-install-server-17.png b/zh_CN/_images/bare-metal-install-server-17.png new file mode 100644 index 000000000..315d7673b Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-17.png differ diff --git a/zh_CN/_images/bare-metal-install-server-18.png b/zh_CN/_images/bare-metal-install-server-18.png new file mode 100644 index 000000000..4a082720e Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-18.png differ diff --git a/zh_CN/_images/bare-metal-install-server-19.png b/zh_CN/_images/bare-metal-install-server-19.png new file mode 100644 index 000000000..79db68cb6 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-19.png differ diff --git a/zh_CN/_images/bare-metal-install-server-20.png b/zh_CN/_images/bare-metal-install-server-20.png new file mode 100644 index 000000000..4aed6b7c4 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-20.png differ diff --git a/zh_CN/_images/bare-metal-install-server-21.png b/zh_CN/_images/bare-metal-install-server-21.png new file mode 100644 index 000000000..11ed36606 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-21.png differ diff --git a/zh_CN/_images/bare-metal-install-server-22.png b/zh_CN/_images/bare-metal-install-server-22.png new file mode 100644 index 000000000..77cddd2ac Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-22.png differ diff --git a/zh_CN/_images/bare-metal-install-server-23.png b/zh_CN/_images/bare-metal-install-server-23.png new file mode 100644 index 000000000..7662d2609 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-23.png differ diff --git a/zh_CN/_images/bare-metal-install-server-24.png b/zh_CN/_images/bare-metal-install-server-24.png new file mode 100644 index 000000000..1f26f912d Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-24.png differ diff --git a/zh_CN/_images/bare-metal-install-server-25.png b/zh_CN/_images/bare-metal-install-server-25.png new file mode 100644 index 000000000..c1e425bc7 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-25.png differ diff --git a/zh_CN/_images/bare-metal-install-server-26.png b/zh_CN/_images/bare-metal-install-server-26.png new file mode 100644 index 000000000..6a584f883 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-26.png differ diff --git a/zh_CN/_images/bare-metal-install-server-27.png b/zh_CN/_images/bare-metal-install-server-27.png new file mode 100644 index 000000000..92023a3f9 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-27.png differ diff --git a/zh_CN/_images/bare-metal-install-server-28.png b/zh_CN/_images/bare-metal-install-server-28.png new file mode 100644 index 000000000..bd19aacf2 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-28.png differ diff --git a/zh_CN/_images/bare-metal-install-server-29.png b/zh_CN/_images/bare-metal-install-server-29.png new file mode 100644 index 000000000..7a4b9676d Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-29.png differ diff --git a/zh_CN/_images/bare-metal-install-server-30.png b/zh_CN/_images/bare-metal-install-server-30.png new file mode 100644 index 000000000..fdb1d556a Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-30.png differ diff --git a/zh_CN/_images/bare-metal-install-server-31.png b/zh_CN/_images/bare-metal-install-server-31.png new file mode 100644 index 000000000..7a0461916 Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-31.png differ diff --git a/zh_CN/_images/bare-metal-install-server-32.png b/zh_CN/_images/bare-metal-install-server-32.png new file mode 100644 index 000000000..863561c3e Binary files /dev/null and b/zh_CN/_images/bare-metal-install-server-32.png differ diff --git a/zh_CN/_images/bootable-usb-mac-01.png b/zh_CN/_images/bootable-usb-mac-01.png new file mode 100644 index 000000000..1fa8114c1 Binary files /dev/null and b/zh_CN/_images/bootable-usb-mac-01.png differ diff --git a/zh_CN/_images/bootable-usb-windows-02.png b/zh_CN/_images/bootable-usb-windows-02.png new file mode 100644 index 000000000..399ff4d1a Binary files /dev/null and b/zh_CN/_images/bootable-usb-windows-02.png differ diff --git a/zh_CN/_images/bootable-usb-windows-03.png b/zh_CN/_images/bootable-usb-windows-03.png new file mode 100644 index 000000000..a4345853b Binary files /dev/null and b/zh_CN/_images/bootable-usb-windows-03.png differ diff --git a/zh_CN/_images/bulk-provision-flow.png b/zh_CN/_images/bulk-provision-flow.png new file mode 100644 index 000000000..036982f7c Binary files /dev/null and b/zh_CN/_images/bulk-provision-flow.png differ diff --git a/zh_CN/_images/clear-lifecycle.png b/zh_CN/_images/clear-lifecycle.png new file mode 100644 index 000000000..a45449ea9 Binary files /dev/null and b/zh_CN/_images/clear-lifecycle.png differ diff --git a/zh_CN/_images/debug-diagram.png b/zh_CN/_images/debug-diagram.png new file mode 100644 index 000000000..d85a40451 Binary files /dev/null and b/zh_CN/_images/debug-diagram.png differ diff --git a/zh_CN/_images/dlrs-fig-1.png b/zh_CN/_images/dlrs-fig-1.png new file mode 100644 index 000000000..8054b120d Binary files /dev/null and b/zh_CN/_images/dlrs-fig-1.png differ diff --git a/zh_CN/_images/dlrs-fig-11.png b/zh_CN/_images/dlrs-fig-11.png new file mode 100644 index 000000000..8054b120d Binary files /dev/null and b/zh_CN/_images/dlrs-fig-11.png differ diff --git a/zh_CN/_images/dlrs-fig-2.png b/zh_CN/_images/dlrs-fig-2.png new file mode 100644 index 000000000..df7a72abe Binary files /dev/null and b/zh_CN/_images/dlrs-fig-2.png differ diff --git a/zh_CN/_images/dlrs-fig-21.png b/zh_CN/_images/dlrs-fig-21.png new file mode 100644 index 000000000..df7a72abe Binary files /dev/null and b/zh_CN/_images/dlrs-fig-21.png differ diff --git a/zh_CN/_images/dlrs-fig-3.png b/zh_CN/_images/dlrs-fig-3.png new file mode 100644 index 000000000..ce07bbc09 Binary files /dev/null and b/zh_CN/_images/dlrs-fig-3.png differ diff --git a/zh_CN/_images/dlrs-fig-31.png b/zh_CN/_images/dlrs-fig-31.png new file mode 100644 index 000000000..ce07bbc09 Binary files /dev/null and b/zh_CN/_images/dlrs-fig-31.png differ diff --git a/zh_CN/_images/dlrs-fig-4.png b/zh_CN/_images/dlrs-fig-4.png new file mode 100644 index 000000000..387cda2d8 Binary files /dev/null and b/zh_CN/_images/dlrs-fig-4.png differ diff --git a/zh_CN/_images/dlrs-fig-41.png b/zh_CN/_images/dlrs-fig-41.png new file mode 100644 index 000000000..387cda2d8 Binary files /dev/null and b/zh_CN/_images/dlrs-fig-41.png differ diff --git a/zh_CN/_images/dlrs-fig-5.png b/zh_CN/_images/dlrs-fig-5.png new file mode 100644 index 000000000..6c7923beb Binary files /dev/null and b/zh_CN/_images/dlrs-fig-5.png differ diff --git a/zh_CN/_images/dlrs-fig-51.png b/zh_CN/_images/dlrs-fig-51.png new file mode 100644 index 000000000..6c7923beb Binary files /dev/null and b/zh_CN/_images/dlrs-fig-51.png differ diff --git a/zh_CN/_images/download-verify-decompress-windows-fig-1.png b/zh_CN/_images/download-verify-decompress-windows-fig-1.png new file mode 100644 index 000000000..0b0ee7f60 Binary files /dev/null and b/zh_CN/_images/download-verify-decompress-windows-fig-1.png differ diff --git a/zh_CN/_images/flatpak-01.png b/zh_CN/_images/flatpak-01.png new file mode 100644 index 000000000..8cc7b7cdb Binary files /dev/null and b/zh_CN/_images/flatpak-01.png differ diff --git a/zh_CN/_images/flatpak-02.png b/zh_CN/_images/flatpak-02.png new file mode 100644 index 000000000..55f0f6f38 Binary files /dev/null and b/zh_CN/_images/flatpak-02.png differ diff --git a/zh_CN/_images/flatpak-03.png b/zh_CN/_images/flatpak-03.png new file mode 100644 index 000000000..ec4950c57 Binary files /dev/null and b/zh_CN/_images/flatpak-03.png differ diff --git a/zh_CN/_images/flatpak-04.png b/zh_CN/_images/flatpak-04.png new file mode 100644 index 000000000..af9137fac Binary files /dev/null and b/zh_CN/_images/flatpak-04.png differ diff --git a/zh_CN/_images/increase-virtual-disk-size-1.png b/zh_CN/_images/increase-virtual-disk-size-1.png new file mode 100644 index 000000000..a4692c9af Binary files /dev/null and b/zh_CN/_images/increase-virtual-disk-size-1.png differ diff --git a/zh_CN/_images/increase-virtual-disk-size-2.png b/zh_CN/_images/increase-virtual-disk-size-2.png new file mode 100644 index 000000000..90b1eb28d Binary files /dev/null and b/zh_CN/_images/increase-virtual-disk-size-2.png differ diff --git a/zh_CN/_images/machine-learning-1.png b/zh_CN/_images/machine-learning-1.png new file mode 100644 index 000000000..caddc8677 Binary files /dev/null and b/zh_CN/_images/machine-learning-1.png differ diff --git a/zh_CN/_images/machine-learning-2.png b/zh_CN/_images/machine-learning-2.png new file mode 100644 index 000000000..70ee944c4 Binary files /dev/null and b/zh_CN/_images/machine-learning-2.png differ diff --git a/zh_CN/_images/machine-learning-3.png b/zh_CN/_images/machine-learning-3.png new file mode 100644 index 000000000..b54503a55 Binary files /dev/null and b/zh_CN/_images/machine-learning-3.png differ diff --git a/zh_CN/_images/machine-learning-4.png b/zh_CN/_images/machine-learning-4.png new file mode 100644 index 000000000..7cfdbe5dd Binary files /dev/null and b/zh_CN/_images/machine-learning-4.png differ diff --git a/zh_CN/_images/machine-learning-5.png b/zh_CN/_images/machine-learning-5.png new file mode 100644 index 000000000..ae7e7d031 Binary files /dev/null and b/zh_CN/_images/machine-learning-5.png differ diff --git a/zh_CN/_images/machine-learning-6.png b/zh_CN/_images/machine-learning-6.png new file mode 100644 index 000000000..b074d787a Binary files /dev/null and b/zh_CN/_images/machine-learning-6.png differ diff --git a/zh_CN/_images/machine-learning-7.png b/zh_CN/_images/machine-learning-7.png new file mode 100644 index 000000000..0c6715faf Binary files /dev/null and b/zh_CN/_images/machine-learning-7.png differ diff --git a/zh_CN/_images/machine-learning-8.png b/zh_CN/_images/machine-learning-8.png new file mode 100644 index 000000000..add499998 Binary files /dev/null and b/zh_CN/_images/machine-learning-8.png differ diff --git a/zh_CN/_images/network-boot-flow.png b/zh_CN/_images/network-boot-flow.png new file mode 100644 index 000000000..7ad68c764 Binary files /dev/null and b/zh_CN/_images/network-boot-flow.png differ diff --git a/zh_CN/_images/network-boot-setup.png b/zh_CN/_images/network-boot-setup.png new file mode 100644 index 000000000..dc9239dbd Binary files /dev/null and b/zh_CN/_images/network-boot-setup.png differ diff --git a/zh_CN/_images/parallels-01.png b/zh_CN/_images/parallels-01.png new file mode 100644 index 000000000..9ba5dcc17 Binary files /dev/null and b/zh_CN/_images/parallels-01.png differ diff --git a/zh_CN/_images/parallels-02.png b/zh_CN/_images/parallels-02.png new file mode 100644 index 000000000..7764b351d Binary files /dev/null and b/zh_CN/_images/parallels-02.png differ diff --git a/zh_CN/_images/parallels-03.png b/zh_CN/_images/parallels-03.png new file mode 100644 index 000000000..67bb0d7fc Binary files /dev/null and b/zh_CN/_images/parallels-03.png differ diff --git a/zh_CN/_images/parallels-04.png b/zh_CN/_images/parallels-04.png new file mode 100644 index 000000000..672797d68 Binary files /dev/null and b/zh_CN/_images/parallels-04.png differ diff --git a/zh_CN/_images/parallels-05.png b/zh_CN/_images/parallels-05.png new file mode 100644 index 000000000..57bf13e6b Binary files /dev/null and b/zh_CN/_images/parallels-05.png differ diff --git a/zh_CN/_images/parallels-06.png b/zh_CN/_images/parallels-06.png new file mode 100644 index 000000000..32b7bf387 Binary files /dev/null and b/zh_CN/_images/parallels-06.png differ diff --git a/zh_CN/_images/parallels-07.png b/zh_CN/_images/parallels-07.png new file mode 100644 index 000000000..e110b66a9 Binary files /dev/null and b/zh_CN/_images/parallels-07.png differ diff --git a/zh_CN/_images/parallels-08.png b/zh_CN/_images/parallels-08.png new file mode 100644 index 000000000..668c72ddd Binary files /dev/null and b/zh_CN/_images/parallels-08.png differ diff --git a/zh_CN/_images/parallels-09.png b/zh_CN/_images/parallels-09.png new file mode 100644 index 000000000..8a1a2f54f Binary files /dev/null and b/zh_CN/_images/parallels-09.png differ diff --git a/zh_CN/_images/pktgen_lw3fd.png b/zh_CN/_images/pktgen_lw3fd.png new file mode 100644 index 000000000..d17318b1a Binary files /dev/null and b/zh_CN/_images/pktgen_lw3fd.png differ diff --git a/zh_CN/_images/pyshical_net.png b/zh_CN/_images/pyshical_net.png new file mode 100644 index 000000000..182ba6ce7 Binary files /dev/null and b/zh_CN/_images/pyshical_net.png differ diff --git a/zh_CN/_images/run-cell-button.png b/zh_CN/_images/run-cell-button.png new file mode 100644 index 000000000..b61de4cec Binary files /dev/null and b/zh_CN/_images/run-cell-button.png differ diff --git a/zh_CN/_images/smb-1.png b/zh_CN/_images/smb-1.png new file mode 100644 index 000000000..8b0b41961 Binary files /dev/null and b/zh_CN/_images/smb-1.png differ diff --git a/zh_CN/_images/smb-2.png b/zh_CN/_images/smb-2.png new file mode 100644 index 000000000..f7a852ffb Binary files /dev/null and b/zh_CN/_images/smb-2.png differ diff --git a/zh_CN/_images/smb-desktop-1.png b/zh_CN/_images/smb-desktop-1.png new file mode 100644 index 000000000..866a45ef2 Binary files /dev/null and b/zh_CN/_images/smb-desktop-1.png differ diff --git a/zh_CN/_images/smb-desktop-2.png b/zh_CN/_images/smb-desktop-2.png new file mode 100644 index 000000000..9ed4a61d3 Binary files /dev/null and b/zh_CN/_images/smb-desktop-2.png differ diff --git a/zh_CN/_images/smb-desktop-3.png b/zh_CN/_images/smb-desktop-3.png new file mode 100644 index 000000000..7688e4845 Binary files /dev/null and b/zh_CN/_images/smb-desktop-3.png differ diff --git a/zh_CN/_images/stateless-1.png b/zh_CN/_images/stateless-1.png new file mode 100644 index 000000000..550f37cee Binary files /dev/null and b/zh_CN/_images/stateless-1.png differ diff --git a/zh_CN/_images/stateless-2.png b/zh_CN/_images/stateless-2.png new file mode 100644 index 000000000..94e8af22f Binary files /dev/null and b/zh_CN/_images/stateless-2.png differ diff --git a/zh_CN/_images/telemetry-backend-1.png b/zh_CN/_images/telemetry-backend-1.png new file mode 100644 index 000000000..9cd8df75e Binary files /dev/null and b/zh_CN/_images/telemetry-backend-1.png differ diff --git a/zh_CN/_images/telemetry-e2e.png b/zh_CN/_images/telemetry-e2e.png new file mode 100644 index 000000000..75868291e Binary files /dev/null and b/zh_CN/_images/telemetry-e2e.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-01.png b/zh_CN/_images/virtualbox-cl-installer-01.png new file mode 100644 index 000000000..7722a8860 Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-01.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-02.png b/zh_CN/_images/virtualbox-cl-installer-02.png new file mode 100644 index 000000000..365f8545a Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-02.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-03.png b/zh_CN/_images/virtualbox-cl-installer-03.png new file mode 100644 index 000000000..496f270a6 Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-03.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-04.png b/zh_CN/_images/virtualbox-cl-installer-04.png new file mode 100644 index 000000000..31662623b Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-04.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-05.png b/zh_CN/_images/virtualbox-cl-installer-05.png new file mode 100644 index 000000000..c250776de Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-05.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-06.png b/zh_CN/_images/virtualbox-cl-installer-06.png new file mode 100644 index 000000000..9926af814 Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-06.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-07.png b/zh_CN/_images/virtualbox-cl-installer-07.png new file mode 100644 index 000000000..8f2c2b340 Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-07.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-08.png b/zh_CN/_images/virtualbox-cl-installer-08.png new file mode 100644 index 000000000..7b23c4548 Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-08.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-09.png b/zh_CN/_images/virtualbox-cl-installer-09.png new file mode 100644 index 000000000..f6feabfa8 Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-09.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-10.png b/zh_CN/_images/virtualbox-cl-installer-10.png new file mode 100644 index 000000000..0ffd96e8b Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-10.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-11.png b/zh_CN/_images/virtualbox-cl-installer-11.png new file mode 100644 index 000000000..b0ca6d359 Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-11.png differ diff --git a/zh_CN/_images/virtualbox-cl-installer-12.png b/zh_CN/_images/virtualbox-cl-installer-12.png new file mode 100644 index 000000000..ba6344def Binary files /dev/null and b/zh_CN/_images/virtualbox-cl-installer-12.png differ diff --git a/zh_CN/_images/vmw-player-01.png b/zh_CN/_images/vmw-player-01.png new file mode 100644 index 000000000..23ba879af Binary files /dev/null and b/zh_CN/_images/vmw-player-01.png differ diff --git a/zh_CN/_images/vmw-player-02.png b/zh_CN/_images/vmw-player-02.png new file mode 100644 index 000000000..89ad86e66 Binary files /dev/null and b/zh_CN/_images/vmw-player-02.png differ diff --git a/zh_CN/_images/vmw-player-03.png b/zh_CN/_images/vmw-player-03.png new file mode 100644 index 000000000..e037b30e7 Binary files /dev/null and b/zh_CN/_images/vmw-player-03.png differ diff --git a/zh_CN/_images/vmw-player-04.png b/zh_CN/_images/vmw-player-04.png new file mode 100644 index 000000000..ea4d9f69e Binary files /dev/null and b/zh_CN/_images/vmw-player-04.png differ diff --git a/zh_CN/_images/vmw-player-05.png b/zh_CN/_images/vmw-player-05.png new file mode 100644 index 000000000..271479734 Binary files /dev/null and b/zh_CN/_images/vmw-player-05.png differ diff --git a/zh_CN/_images/vmw-player-06.png b/zh_CN/_images/vmw-player-06.png new file mode 100644 index 000000000..d81573599 Binary files /dev/null and b/zh_CN/_images/vmw-player-06.png differ diff --git a/zh_CN/_images/vmw-player-07.png b/zh_CN/_images/vmw-player-07.png new file mode 100644 index 000000000..89686569f Binary files /dev/null and b/zh_CN/_images/vmw-player-07.png differ diff --git a/zh_CN/_images/vmw-player-08.png b/zh_CN/_images/vmw-player-08.png new file mode 100644 index 000000000..891e33667 Binary files /dev/null and b/zh_CN/_images/vmw-player-08.png differ diff --git a/zh_CN/_images/vmw-player-09.png b/zh_CN/_images/vmw-player-09.png new file mode 100644 index 000000000..1eba9c887 Binary files /dev/null and b/zh_CN/_images/vmw-player-09.png differ diff --git a/zh_CN/_images/vmw-player-10.png b/zh_CN/_images/vmw-player-10.png new file mode 100644 index 000000000..0644ac29d Binary files /dev/null and b/zh_CN/_images/vmw-player-10.png differ diff --git a/zh_CN/_images/vmw-player-11.png b/zh_CN/_images/vmw-player-11.png new file mode 100644 index 000000000..4f6687c7e Binary files /dev/null and b/zh_CN/_images/vmw-player-11.png differ diff --git a/zh_CN/_images/vmw-player-preconf-01.png b/zh_CN/_images/vmw-player-preconf-01.png new file mode 100644 index 000000000..69b6a24ed Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-01.png differ diff --git a/zh_CN/_images/vmw-player-preconf-02.png b/zh_CN/_images/vmw-player-preconf-02.png new file mode 100644 index 000000000..d24c06127 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-02.png differ diff --git a/zh_CN/_images/vmw-player-preconf-03.png b/zh_CN/_images/vmw-player-preconf-03.png new file mode 100644 index 000000000..2fbe4cea9 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-03.png differ diff --git a/zh_CN/_images/vmw-player-preconf-04.png b/zh_CN/_images/vmw-player-preconf-04.png new file mode 100644 index 000000000..6a01685f7 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-04.png differ diff --git a/zh_CN/_images/vmw-player-preconf-05.png b/zh_CN/_images/vmw-player-preconf-05.png new file mode 100644 index 000000000..22f40dfcb Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-05.png differ diff --git a/zh_CN/_images/vmw-player-preconf-06.png b/zh_CN/_images/vmw-player-preconf-06.png new file mode 100644 index 000000000..eeb4b36e7 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-06.png differ diff --git a/zh_CN/_images/vmw-player-preconf-07.png b/zh_CN/_images/vmw-player-preconf-07.png new file mode 100644 index 000000000..4f46b24e1 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-07.png differ diff --git a/zh_CN/_images/vmw-player-preconf-08.png b/zh_CN/_images/vmw-player-preconf-08.png new file mode 100644 index 000000000..d86378bb5 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-08.png differ diff --git a/zh_CN/_images/vmw-player-preconf-09.png b/zh_CN/_images/vmw-player-preconf-09.png new file mode 100644 index 000000000..416fb2065 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-09.png differ diff --git a/zh_CN/_images/vmw-player-preconf-10.png b/zh_CN/_images/vmw-player-preconf-10.png new file mode 100644 index 000000000..3efc71e41 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-10.png differ diff --git a/zh_CN/_images/vmw-player-preconf-11.png b/zh_CN/_images/vmw-player-preconf-11.png new file mode 100644 index 000000000..8cd9d0a97 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-11.png differ diff --git a/zh_CN/_images/vmw-player-preconf-12.png b/zh_CN/_images/vmw-player-preconf-12.png new file mode 100644 index 000000000..36f43d3e6 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-12.png differ diff --git a/zh_CN/_images/vmw-player-preconf-13.png b/zh_CN/_images/vmw-player-preconf-13.png new file mode 100644 index 000000000..30f77a888 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-13.png differ diff --git a/zh_CN/_images/vmw-player-preconf-14.png b/zh_CN/_images/vmw-player-preconf-14.png new file mode 100644 index 000000000..e115111e5 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-14.png differ diff --git a/zh_CN/_images/vmw-player-preconf-15.png b/zh_CN/_images/vmw-player-preconf-15.png new file mode 100644 index 000000000..7d2111fa5 Binary files /dev/null and b/zh_CN/_images/vmw-player-preconf-15.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-1.png b/zh_CN/_images/vmware-esxi-install-cl-1.png new file mode 100644 index 000000000..828ca8385 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-1.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-10.png b/zh_CN/_images/vmware-esxi-install-cl-10.png new file mode 100644 index 000000000..856881057 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-10.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-11.png b/zh_CN/_images/vmware-esxi-install-cl-11.png new file mode 100644 index 000000000..bb134ba25 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-11.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-12.png b/zh_CN/_images/vmware-esxi-install-cl-12.png new file mode 100644 index 000000000..ba26d552b Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-12.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-13.png b/zh_CN/_images/vmware-esxi-install-cl-13.png new file mode 100644 index 000000000..3f11505d8 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-13.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-14.png b/zh_CN/_images/vmware-esxi-install-cl-14.png new file mode 100644 index 000000000..59e07de13 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-14.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-15.png b/zh_CN/_images/vmware-esxi-install-cl-15.png new file mode 100644 index 000000000..9d654081c Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-15.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-16.png b/zh_CN/_images/vmware-esxi-install-cl-16.png new file mode 100644 index 000000000..bb134ba25 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-16.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-2.png b/zh_CN/_images/vmware-esxi-install-cl-2.png new file mode 100644 index 000000000..a3554e920 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-2.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-3.png b/zh_CN/_images/vmware-esxi-install-cl-3.png new file mode 100644 index 000000000..aec0c8d04 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-3.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-4.png b/zh_CN/_images/vmware-esxi-install-cl-4.png new file mode 100644 index 000000000..30cabb0ec Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-4.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-5.png b/zh_CN/_images/vmware-esxi-install-cl-5.png new file mode 100644 index 000000000..f1e7cee18 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-5.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-6.png b/zh_CN/_images/vmware-esxi-install-cl-6.png new file mode 100644 index 000000000..b0a584876 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-6.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-7.png b/zh_CN/_images/vmware-esxi-install-cl-7.png new file mode 100644 index 000000000..4971a78e8 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-7.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-8.png b/zh_CN/_images/vmware-esxi-install-cl-8.png new file mode 100644 index 000000000..b188da8a7 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-8.png differ diff --git a/zh_CN/_images/vmware-esxi-install-cl-9.png b/zh_CN/_images/vmware-esxi-install-cl-9.png new file mode 100644 index 000000000..24e726964 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-install-cl-9.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-1.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-1.png new file mode 100644 index 000000000..828ca8385 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-1.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-10.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-10.png new file mode 100644 index 000000000..9648bdaa7 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-10.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-11.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-11.png new file mode 100644 index 000000000..c12c90fbb Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-11.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-12.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-12.png new file mode 100644 index 000000000..9d654081c Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-12.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-13.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-13.png new file mode 100644 index 000000000..bb134ba25 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-13.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-2.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-2.png new file mode 100644 index 000000000..a3554e920 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-2.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-3.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-3.png new file mode 100644 index 000000000..209a94928 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-3.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-4.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-4.png new file mode 100644 index 000000000..30cabb0ec Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-4.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-5.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-5.png new file mode 100644 index 000000000..f1e7cee18 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-5.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-6.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-6.png new file mode 100644 index 000000000..b0a584876 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-6.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-7.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-7.png new file mode 100644 index 000000000..4971a78e8 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-7.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-8.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-8.png new file mode 100644 index 000000000..fe3c517fb Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-8.png differ diff --git a/zh_CN/_images/vmware-esxi-preconfigured-cl-image-9.png b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-9.png new file mode 100644 index 000000000..d1af9ceb2 Binary files /dev/null and b/zh_CN/_images/vmware-esxi-preconfigured-cl-image-9.png differ diff --git a/zh_CN/_images/vnc-1.png b/zh_CN/_images/vnc-1.png new file mode 100644 index 000000000..bb496aaf1 Binary files /dev/null and b/zh_CN/_images/vnc-1.png differ diff --git a/zh_CN/_images/vnc-10.png b/zh_CN/_images/vnc-10.png new file mode 100644 index 000000000..be6751fca Binary files /dev/null and b/zh_CN/_images/vnc-10.png differ diff --git a/zh_CN/_images/vnc-2.png b/zh_CN/_images/vnc-2.png new file mode 100644 index 000000000..aa7561f73 Binary files /dev/null and b/zh_CN/_images/vnc-2.png differ diff --git a/zh_CN/_images/vnc-3.png b/zh_CN/_images/vnc-3.png new file mode 100644 index 000000000..29365e082 Binary files /dev/null and b/zh_CN/_images/vnc-3.png differ diff --git a/zh_CN/_images/vnc-4.png b/zh_CN/_images/vnc-4.png new file mode 100644 index 000000000..b36082895 Binary files /dev/null and b/zh_CN/_images/vnc-4.png differ diff --git a/zh_CN/_images/vnc-6.png b/zh_CN/_images/vnc-6.png new file mode 100644 index 000000000..5a808e341 Binary files /dev/null and b/zh_CN/_images/vnc-6.png differ diff --git a/zh_CN/_images/vnc-7.png b/zh_CN/_images/vnc-7.png new file mode 100644 index 000000000..a20e6c973 Binary files /dev/null and b/zh_CN/_images/vnc-7.png differ diff --git a/zh_CN/_images/vnc-8.png b/zh_CN/_images/vnc-8.png new file mode 100644 index 000000000..fa702cb4c Binary files /dev/null and b/zh_CN/_images/vnc-8.png differ diff --git a/zh_CN/_images/vnc-9.png b/zh_CN/_images/vnc-9.png new file mode 100644 index 000000000..a8cafba4b Binary files /dev/null and b/zh_CN/_images/vnc-9.png differ diff --git a/zh_CN/_images/web-server-install-1.png b/zh_CN/_images/web-server-install-1.png new file mode 100644 index 000000000..d1dd0e229 Binary files /dev/null and b/zh_CN/_images/web-server-install-1.png differ diff --git a/zh_CN/_images/web-server-install-2.png b/zh_CN/_images/web-server-install-2.png new file mode 100644 index 000000000..b0fd4d3f0 Binary files /dev/null and b/zh_CN/_images/web-server-install-2.png differ diff --git a/zh_CN/_images/web-server-install-3.png b/zh_CN/_images/web-server-install-3.png new file mode 100644 index 000000000..5fbdad011 Binary files /dev/null and b/zh_CN/_images/web-server-install-3.png differ diff --git a/zh_CN/_images/web-server-install-4.png b/zh_CN/_images/web-server-install-4.png new file mode 100644 index 000000000..2c553ce95 Binary files /dev/null and b/zh_CN/_images/web-server-install-4.png differ diff --git a/zh_CN/_images/web-server-install-5.png b/zh_CN/_images/web-server-install-5.png new file mode 100644 index 000000000..292dfbc62 Binary files /dev/null and b/zh_CN/_images/web-server-install-5.png differ diff --git a/zh_CN/_images/web-server-install-6.png b/zh_CN/_images/web-server-install-6.png new file mode 100644 index 000000000..0700a2103 Binary files /dev/null and b/zh_CN/_images/web-server-install-6.png differ diff --git a/zh_CN/_images/web-server-install-7.png b/zh_CN/_images/web-server-install-7.png new file mode 100644 index 000000000..f3f9c327d Binary files /dev/null and b/zh_CN/_images/web-server-install-7.png differ diff --git a/zh_CN/_images/web-server-install-8.png b/zh_CN/_images/web-server-install-8.png new file mode 100644 index 000000000..3e631ec1c Binary files /dev/null and b/zh_CN/_images/web-server-install-8.png differ diff --git a/zh_CN/_images/wp-install-1.png b/zh_CN/_images/wp-install-1.png new file mode 100644 index 000000000..3d1239fe1 Binary files /dev/null and b/zh_CN/_images/wp-install-1.png differ diff --git a/zh_CN/_images/wp-install-2.png b/zh_CN/_images/wp-install-2.png new file mode 100644 index 000000000..6adc942a9 Binary files /dev/null and b/zh_CN/_images/wp-install-2.png differ diff --git a/zh_CN/_images/wp-install-3.png b/zh_CN/_images/wp-install-3.png new file mode 100644 index 000000000..9e7132100 Binary files /dev/null and b/zh_CN/_images/wp-install-3.png differ diff --git a/zh_CN/_images/wp-install-4.png b/zh_CN/_images/wp-install-4.png new file mode 100644 index 000000000..124f3b8e6 Binary files /dev/null and b/zh_CN/_images/wp-install-4.png differ diff --git a/zh_CN/_images/wp-install-5.png b/zh_CN/_images/wp-install-5.png new file mode 100644 index 000000000..6651b16f9 Binary files /dev/null and b/zh_CN/_images/wp-install-5.png differ diff --git a/zh_CN/_images/wp-install-6.png b/zh_CN/_images/wp-install-6.png new file mode 100644 index 000000000..6118eebbb Binary files /dev/null and b/zh_CN/_images/wp-install-6.png differ diff --git a/zh_CN/_images/wp-install-7.png b/zh_CN/_images/wp-install-7.png new file mode 100644 index 000000000..554a0d36a Binary files /dev/null and b/zh_CN/_images/wp-install-7.png differ diff --git a/zh_CN/_images/wp-install-8.png b/zh_CN/_images/wp-install-8.png new file mode 100644 index 000000000..1e477c251 Binary files /dev/null and b/zh_CN/_images/wp-install-8.png differ diff --git a/zh_CN/_sources/FAQ/index.rst.txt b/zh_CN/_sources/FAQ/index.rst.txt new file mode 100644 index 000000000..5cfa0866d --- /dev/null +++ b/zh_CN/_sources/FAQ/index.rst.txt @@ -0,0 +1,205 @@ +.. _faq: + +FAQ +### + +Below is a list of commonly asked questions with answers sourced from the +|CL-ATTR| team and `Clear Linux community forums`_. + +.. contents:: :local: + :depth: 2 + +General +******* + +Why did you make another distro? +================================ + +The |CL| team felt that performance was left on the table with Linux software. +|CL| takes a holistic approach to improving performance across the stack. We +also wanted to take more modern approaches with OS updates and tooling. + +| + +Can other distros copy |CL| improvements? +========================================= + +Yes, we absolutely love open source reuse and upstreaming improvements. + +| + +How often do you update? +======================== + +The |CL| team puts out multiple releases a week, often releasing 2 or more +times a day. This rolling release approach allows |CL| to remain agile to +upstream changes and security patches. + +| + +Is telemetry required? +====================== + +The telemetry solution provided by |CL| is entirely optional and customizable. +It is disabled by default. If you do choose to enable telemetry, the data +helps the |CL| team proactively identify and resolve bugs. See the +:ref:`telem-guide` guide for more information. + +| + +What is the default firewall? +============================= + +|CL| packages :command:`iptables` as a bundle, however, there are no default +firewall rules. All network traffic is allowed by default. + +| + +Where are the files that I usually see under /etc like fstab? +============================================================= + +|CL| has a stateless design that maintains a separation between system files +and user files. Default values are stored under :file:`/usr/share/defaults/`. +Files under :file:`/etc/` are not created unless you create one. + +A blog post explaining how this is accomplished with :file:`/etc/fstab/` +specifically is available here: +https://clearlinux.org/news-blogs/where-etcfstab-clear-linux + +| + +Software packages +***************** + +How is software installed and updated? +====================================== + +|CL| provides software in the form of :ref:`bundles-guide` and +updates software with :ref:`swupd `. + +:ref:`Flatpak\* ` is an application virtualization solution +that allows more software to be available to |CL| users by augmenting the +software |CL| packages natively with software available through Flatpak. + +Our goal is to have software packaged natively and made available through +bundles whenever possible. + +| + +Does |CL| use RPMs like other distros? +====================================== + +|CL| provides software in the form of :ref:`bundles-guide`. The RPM +format is used as an intermediary step for packaging and determining software +dependencies at OS build time. + +Individual RPMs can sometimes be manually installed on a |CL| system with the +right tools, but that is not the intended use case. + +| + +Can I install a software package from another OS on |CL|? +========================================================= + +Software that is packaged in other formats for other Linux distributions is +not guaranteed to work on |CL| and may be impacted by |CL| updates. + +If the software you're seeking is open source, please submit a request to add +it to |CL|. Submit requests on GitHub\* here: +https://github.com/clearlinux/distribution/issues + +| + +Software availability +********************* + +What software is available on |CL|? +=================================== + +Available software can be found in the `Software Store`_, through the GNOME\* +Software application on the desktop, or by using :ref:`swupd search `. + +| + +Is Google\* Chrome\* available? +=============================== + +The Google Chrome web browser is not distributed as a bundle in |CL| due to +copyright and licensing complexities. + +A discussion on manually installing and maintaining Google Chrome can be found +on GitHub: https://github.com/clearlinux/distribution/issues/422 + +| + +Is Microsoft\* Visual Studio Code\* available? +============================================== + +Yes. Find the CLI command for installing `VS Code`_ and other Flatpak apps in +the `software store`_. Installing Flatpak apps is also covered in our +:ref:`tutorial `. + +The |CL| team is working on a natively packaged version of Visual Studio Code +for future release. + +Join a community forum discussion about manually installing and maintaining +Visual Studio Code: https://community.clearlinux.org/t/need-native-support-for-vs-code-through-swupd/ + +.. _VS Code: https://clearlinux.org/software?search_api_fulltext=vscode + +| + +Is FFmpeg available? +==================== + +`FFmpeg`_ is a multimedia software suite, which is commonly used for +various media encoding/decoding, streaming, and playback. + +|CL| does not distribute FFmpeg due to well-known licensing and legal +complexities (See https://www.ffmpeg.org/legal.html and +http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html). + +Read more in the |CL| repository, including discussion of an alternative +hardware-based solution: +https://github.com/clearlinux/distribution/issues/429. + +While |CL| cannot distribute FFmpeg, a manual solution to build and install +FFmpeg under :file:`/usr/local` has been shared on the community forums: +https://community.clearlinux.org/t/how-to-h264-etc-support-for-firefox-including-ffmpeg-install. + +| + +Is ZFS\* available? +=================== + +ZFS is not available with |CL| because of copyright and licensing +complexities. BTRFS is an alternative filesystem that is available in |CL| +natively. + +A user on GitHub notes that the ZFS kernel module can be compiled, built, and +installed manually: https://github.com/clearlinux/distribution/issues/631 + +| + +Can you add a driver that I need? +================================= + +If a kernel module is available as part of the Linux kernel source tree but +not enabled in the |CL| kernels, in many cases the |CL| team will enable it +upon request. Submit requests on GitHub here: +https://github.com/clearlinux/distribution/issues + +The |CL| team does not typically add out-of-tree kernel modules as a matter of +practice because of the maintenance overhead. If the driver was unable to be +merged upstream, there is a good chance we may be unable to merge it for +similar reasons. + +Kernel modules can be individually built and installed on |CL|. See the +:ref:`kernel modules ` page for more information. + +| + + +.. _`Clear Linux community forums`: https://community.clearlinux.org +.. _`Software Store`: https://clearlinux.org/software +.. _`FFmpeg`: https://ffmpeg.org/ diff --git a/zh_CN/_sources/about.rst.txt b/zh_CN/_sources/about.rst.txt new file mode 100644 index 000000000..f2c81637e --- /dev/null +++ b/zh_CN/_sources/about.rst.txt @@ -0,0 +1,85 @@ +.. _about: + +About +##### + +The |CL| delivers a secure, hardware optimized OS. Its easy updates ensure that +software dependencies remain mutually compatible. + +|CL| does this via custom infrastructure components and process innovations. + +.. contents:: + :local: + :depth: 1 + + +For detailed information on these topics, refer to the :ref:`cl-guides` guides. + + +Release Cadence +*************** + +|CL| updates are based on a rolling release that can occur daily, up to a few +times per week. Each release has a unique version number that +identifies every component in the OS from kernel, to driver, to tool, to GUI +application. Most components are included in entities called *bundles*. + +Updates +******* + +By default, |CL| automatically checks for updates, ensuring that the latest +performance and security fixes are installed as soon as they are available. +:ref:`swupd-guide` is the custom tool designed to manage updates and bundles. + +|CL| is :ref:`stateless` to make sure that system components can be updated +without impacting user settings. + + +Ease of Use +*********** + +|CL| makes it easier to manage a number of difficult problems. + +* :ref:`autoproxy` makes it possible for |CL| tools to operate in some proxy + environments without needing to be configured. + +* Being :ref:`stateless` means that configuration settings are easier to manage + and remain untouched when system sofware is updated. + +* :ref:`swupd-guide` simplifies managing software and maintaining compatibility. + +Custom Derivatives +****************** + +The same tools used to build the |CL| are available *in* the OS. These tools can +be used to create a custom distribution that continues to benefit from upstream +rolling releases. + +.. figure:: /_figures/about/clear-lifecycle.png + :scale: 75% + :align: center + :alt: Creating and managing a Clear Linux* OS version (or derivative) + + Figure 1: Creating and managing a Clear Linux\* OS version (or derivative) + +Create +====== + +To create a custom distribution you need to understand how to use the +:ref:`autospec` and :ref:`mixer` tools. + +Additional training materials are available in the `how-to-clear`_ GitHub\* +project to help you get started with |CL| tools. + +Deploy +====== + +We also provide training on how to :ref:`deploy-at-scale`. + +Administrate +============ + +|CL| provides a :ref:`telem-guide` solution for collecting useful information +about a deployment, as well as :ref:`debug` capabilities. + +.. _how-to-clear: https://github.com/clearlinux/how-to-clear diff --git a/zh_CN/_sources/disclaimers.rst.txt b/zh_CN/_sources/disclaimers.rst.txt new file mode 100644 index 000000000..6f2dfb6e6 --- /dev/null +++ b/zh_CN/_sources/disclaimers.rst.txt @@ -0,0 +1,12 @@ +:orphan: + +.. _disclaimers: + + +.. rubric:: Disclaimer + +.. important:: + This documentation is a work in progress and is being provided for + informative purposes only. Because it is a work in progress, there are + parts that are either missing or will be revised as code development + continues. diff --git a/zh_CN/_sources/documentation_license.rst.txt b/zh_CN/_sources/documentation_license.rst.txt new file mode 100644 index 000000000..758a7a24f --- /dev/null +++ b/zh_CN/_sources/documentation_license.rst.txt @@ -0,0 +1,12 @@ +:orphan: + +.. raw:: html + + Creative Commons License
This work is licensed under a Creative Commons + Attribution 4.0 International License + diff --git a/zh_CN/_sources/get-started/bare-metal-install-desktop.rst.txt b/zh_CN/_sources/get-started/bare-metal-install-desktop.rst.txt new file mode 100644 index 000000000..c5e758964 --- /dev/null +++ b/zh_CN/_sources/get-started/bare-metal-install-desktop.rst.txt @@ -0,0 +1,542 @@ +.. _bare-metal-install-desktop: + +Install |CL-ATTR| from the live desktop +####################################### + +This page explains how to boot the |CL-ATTR| live desktop image, from which +you can install |CL| or explore without modifying the host system. + +.. contents:: + :local: + :depth: 1 + +System requirements +******************* + +Before installing |CL|, verify that the host system supports the +installation: + +* :ref:`system-requirements` +* :ref:`compatibility-check` + +Preliminary steps +***************** + +#. Visit our `Downloads`_ page. + +#. Download the file :file:`clear--live-desktop.iso`, + also called the |CL| Desktop. + + .. note:: + + is the latest |CL| auto-numbered release. + +#. Verify and decompress the file per your OS. + + * :ref:`download-verify-decompress` + +#. Follow your OS instructions to create a bootable USB drive. + + * :ref:`bootable-usb` + +.. _install-on-target-start: + +Install from live image +*********************** + +After you download and burn the live desktop image on a USB drive, follow +these steps. + +#. Insert the USB drive into an available USB slot. + +#. Power on the system. + +#. Open the system BIOS setup menu by pressing the :kbd:`F2` key. + Your BIOS setup menu entry point may vary. + +#. In the setup menu, enable the UEFI boot and set the USB drive as the + first option in the device boot order. + +#. Save these settings, e.g. :kbd:`F10`, and exit. + +#. Reboot the target system. + +#. Select :guilabel:`Clear Linux OS` in the boot menu, shown in Figure 1. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-01.png + :scale: 100% + :alt: Clear Linux OS in boot menu + + Figure 1: Clear Linux OS in boot menu + +.. _install-on-target-end: + +Software (optional) +=================== + +Explore |CL| bundles and other software. Double-click the +:guilabel:`Software` icon from the Activities menu, shown in Figure 2. +Ensure a network connection exists before launching the Software application. + +.. note:: + + While running the |CL| live desktop image, the Software application is + intended only for exploration. Do not attempt to install applications during + exploration. + +Launch the |CL| installer +========================= + +#. After the live desktop image boots, scroll over the vertical + :guilabel:`Activities` menu at left. + +#. Click the |CL| penguin icon to launch the installer, shown in Figure 2. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-02.png + :scale: 100% + :alt: Install Clear Linux OS icon + + Figure 2: |CL| installer icon + +#. After the installer is launched, it will appear as shown in Figure 3. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-03.png + :scale: 100% + :alt: |CL| Desktop Installer + + Figure 3: |CL| OS Desktop Installer + +#. In :guilabel:`Select Language`, select a language from the options, or + type your preferred language in the search bar. + +#. Select :guilabel:`Next`. + +Checking prerequisites +====================== + +The installer automatically launches :guilabel:`Checking Prerequisites`, +which checks your target system for compatibility and network connectivity. + +After the installer shows `Prerequisites passed`, select :guilabel:`Next` to +proceed with installation. + +.. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-04.png + :scale: 100% + :alt: Checking Prerequisites + + Figure 4: Checking Prerequisites + +Network Proxy (optional) +------------------------ + +#. Configure :guilabel:`Network Proxy` settings. + +#. In the top right menu bar, select the :guilabel:`Power button`. + +#. Select :guilabel:`Wired Connected` and then :guilabel:`Wired Settings`. + + #. In :guilabel:`Network Proxy`, select the :guilabel:`Gear` icon to view + options. + + #. Select an option from `Automatic`, `Manual` or `Disabled`. + + #. Close :guilabel:`Network Proxy`. + +#. Close :guilabel:`Settings`. + +.. _incl-bare-metal-beta-start: + +Minimum installation requirements +********************************* + +To fulfill minimum installation requirements, complete the +`Required options`_. We also recommend completing `Advanced options`_. + +.. note:: + + * The :kbd:`Install` button is only highlighted **after** you complete + `Required options`_. + + * Check marks indicate a selection has been made. + + * An Internet connection is required. You may want to launch a browser + prior to installation to verify your Internet connection. + +|CL| Desktop Installer +********************** + +The |CL| Desktop Installer Main Menu appears as shown in Figure 5. To meet +the minimum requirements, enter values in all submenus for the +:guilabel:`Required options`. After you complete them, your selections appear +below submenus and a check mark appears at right. + +.. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-05.png + :scale: 100% + :alt: Clear Linux OS Desktop Installer - Main Menu + + Figure 5: Clear Linux OS Desktop Installer - Main Menu + +Navigation +********** + +* Use the :kbd:`mouse` to navigate or select options. + +* Use :kbd:`Tab` key to navigate between :guilabel:`Required options` + and :guilabel:`Advanced options` + +* Use :kbd:`Up` or :kbd:`Down` arrow keys to navigate the submenus. + +* Select :kbd:`Confirm`, or :kbd:`Cancel` in submenus. + +Required options +**************** + +Select Time Zone +================ + +#. From the Main Menu, select :guilabel:`Select Time Zone`. `UTC` is selected + by default. + +#. In :guilabel:`Select Time Zone`, navigate to the desired time zone. + Or start typing the region and then the city. + (.e.g., :file:`America/Los_Angeles`). + +#. Select :guilabel:`Confirm`. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-06.png + :scale: 100% + :alt: Select System Timezone + + Figure 6: Select System Time Zone + +Select Keyboard +=============== + +#. From the Main Menu, select :guilabel:`Select Keyboard`. + +#. Navigate to your desired keyboard layout. We select "us" for the + United States. + +#. Select :guilabel:`Confirm`. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-07.png + :scale: 100% + :alt: Select Keyboard menu + + Figure 7: Select Keyboard menu + +Select Installation Media +========================= + +#. From the Main Menu, select :guilabel:`Select Installation Media`. + +#. Choose an installation method: `Safe Installation`_ or + `Destructive Installation`_. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-08.png + :scale: 100% + :alt: Select Installation Media + + Figure 8: Select Installation Media + +Safe Installation +----------------- + +Use this method to safely install |CL| on media with available space, or +alongside existing partitions, and accept the `Default partition schema`_. +If enough free space exists, safe installation is allowed. + +.. note:: + + |CL| allows installation alongside another OS. Typically, when you boot + your system, you can press an `F key` to view and select a bootable + device or partition during the BIOS POST stage. Some BIOSes present the + |CL| partition, and you can select and boot it. However, other + BIOSes may only show the primary partition, in which case you will not be + able boot |CL|. Be aware of this possible limitation. + + +Destructive Installation +------------------------ + +Use this method to destroy the contents of the target device, install |CL| +on it, and accept the `Default partition schema`_. + +Disk encryption +=============== + +For greater security, disk encryption is supported using LUKS. Encryption is +optional. + +#. To encrypt the root partition, select :guilabel:`Enable Encryption`, + as shown in Figure 9. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-09.png + :scale: 100% + :alt: Enable Encryption + + Figure 9: Enable Encryption + +#. When :guilabel:`Encryption Passphrase` appears, enter a passphrase. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-10.png + :scale: 100% + :alt: Encryption Passphrase + + Figure 10: Encryption Passphrase + + .. note:: + + Minimum length is 8 characters. Maximum length is 94 characters. + +#. Enter the same passphrase in the second field. + +#. Select :guilabel:`Confirm` in the dialogue box. + + .. note:: + + :guilabel:`Confirm` is only highlighted if passphrases match. + +#. Select :guilabel:`Confirm` in submenu. + +Manage User +=========== + +#. In Required Options, select :guilabel:`Manage User`. + +#. In :guilabel:`User Name`, enter a user name. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-11.png + :scale: 100% + :alt: Manage User + + Figure 11: Manage User + +#. In :guilabel:`Login`, create a login name. It must start with a letter + and can use numbers, hyphens, and underscores. Maximum length is 31 + characters. + +#. In :guilabel:`Password`, enter a password. Minimum length is + 8 characters. Maximum length is 255 characters. + +#. In :guilabel:`Confirm`, enter the same password. + + .. note:: + + :guilabel:`Administrator` rights are selected by default. + For security purposes, the default user must be assigned as an + Administrator. + +#. Select :kbd:`Confirm`. + + .. note:: + + Select :guilabel:`Cancel` to return to the Main Menu. + +Modify User +----------- + +#. In Manager User, select :guilabel:`Manage User`. + +#. Modify user details as desired. + +#. Select :guilabel:`Confirm` to save the changes you made. + + .. note:: + + Optional: Select :guilabel:`Cancel` to return to the Main Menu to + revert changes. + +Optional: Skip to `Finish installation`_. + +Telemetry +========= + +Choose whether to participate in `telemetry`. :ref:`telem-guide` is a |CL| +feature that reports failures and crashes to the |CL| development +team for improvements. + +#. From :guilabel:`Required Options`, select :guilabel:`Telemetry`. + +#. Select :kbd:`Yes`. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-12.png + :scale: 100% + :alt: Enable Telemetry + + Figure 12: Enable Telemetry + +#. If you don't wish to participate, select :kbd:`No`. + +Advanced options +**************** + +After you complete the `Required options`_, we recommend completing +:guilabel:`Advanced options`--though they're not required. Doing so +customizes your development environment, so you're ready to go immediately +after reboot. + +.. note:: + + You can always add more bundles later with :ref:`swupd-guide`. + +Bundle Selection +================ + +#. On the Advanced menu, select :guilabel:`Bundle Selection` + +#. Select your desired bundles. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-13.png + :scale: 100% + :alt: Bundle Selection + + Figure 13: Bundle Selection + +#. Select :kbd:`Confirm`. + +#. View the bundles that you selected. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-14.png + :scale: 100% + :alt: Bundle Selections - Advanced Options + + Figure 14: Bundle Selections - Advanced Options + +Optional: Skip to `Finish installation`_. + +Assign Hostname +=============== + +#. In Advanced Options, select :guilabel:`Assign Hostname`. + +#. In :guilabel:`Hostname`, enter the hostname only (excluding the domain). + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-15.png + :scale: 100% + :alt: Assign Hostname + + Figure 15: Assign Hostname + + .. note:: + + Hostname does not allow empty spaces. Hostname must start with an + alphanumeric character but may also contain hyphens. Maximum length of + 63 characters. + +#. Select :kbd:`Confirm`. + +Optional: Skip to `Finish installation`_. + +Kernel Configuration +==================== + +#. In :guilabel:`Kernel Configuration`, navigate to select your desired + kernel. :guilabel:`Native` is selected by default. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-16.png + :scale: 100% + :alt: Kernel Configuration + + Figure 16: Kernel Configuration + +#. To add arguments, enter the argument in :guilabel:`Add Extra Arguments`. + +#. To remove an argument, enter the argument in :guilabel:`Remove Arguments`. + +#. Select :kbd:`Confirm`. + +Software Updater Configuration +============================== + +#. In Advanced Options, select :guilabel:`Software Updater Configuration`. + +#. In :guilabel:`Mirror URL`, follow the instructions if you wish to + specify a different installation source. + +#. :guilabel:`Enable Auto Updates` is selected by default. If you **do not** + wish to enable automatic software updates, uncheck the box. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-17.png + :scale: 100% + :alt: Software Updater Configuration + + Figure 17: Software Updater Configuration + +#. Select :kbd:`Confirm`. + +Finish installation +******************* + +#. When you are satisfied with your installation configuration, select + :guilabel:`Install`. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-18.png + :scale: 100% + :alt: Assign Hostname + + Figure 18: Finish installation + + .. note: + + All check marks must appear in :guilabel:`Required Options` for the + :guilabel:`Install` button to be enabled. + +#. If you do not enter a selection for all :guilabel:`Required Options`, + the :guilabel:`Install` button remains disabled, as shown + in Figure 19. Return to `Required Options`_ and make selections. + + .. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-19.png + :scale: 100% + :alt: Required Options - Incomplete + + Figure 19: Required Options - Incomplete + +#. After installation is complete, select :guilabel:`Exit`. + +#. Shut down the target system. + +#. Remove the USB or any installation media. + +#. Power on your system. + + .. note:: + + Allow time for the graphical login to appear. A login prompt shows the administrative user that you created. + +#. Log in as the administrative user. + +Congratulations. You successfully installed |CL|. + +Default partition schema +======================== + +Create partitions per requirements in Table 1. + +.. list-table:: **Table 1. Default partition schema** + :widths: 25, 25, 25, 25 + :header-rows: 1 + + * - FileSystem + - Label + - Mount Point + - Default size + + * - **VFAT (FAT32)** + - boot + - /boot + - 150MB + + * - **linux-swap** + - swap + - + - 256MB + + * - **ext[234] or XFS** + - root + - / + - *Size depends upon use case/desired bundles.* + +.. _Downloads: https://clearlinux.org/downloads + + diff --git a/zh_CN/_sources/get-started/bare-metal-install-server.rst.txt b/zh_CN/_sources/get-started/bare-metal-install-server.rst.txt new file mode 100644 index 000000000..4461c9434 --- /dev/null +++ b/zh_CN/_sources/get-started/bare-metal-install-server.rst.txt @@ -0,0 +1,869 @@ +.. _bare-metal-install-server: + +Install |CL-ATTR| from the live server +###################################### + +This page explains how to install |CL-ATTR| on bare metal from a bootable USB +drive using a live server image. + +.. contents:: + :local: + :depth: 1 + +System requirements +******************* + +Before installing |CL|, verify that the host system supports the +installation: + +* :ref:`system-requirements` +* :ref:`compatibility-check` + +Download the latest |CL| live server image +****************************************** + +Get the latest |CL| installer image from the `Downloads`_ page. Look for the +:file:`clear-[version number]-live-server.iso` file. + +#. Verify and decompress the file per your OS. + + * :ref:`download-verify-decompress` + +#. Follow your OS instructions to create a bootable USB drive. + + * :ref:`bootable-usb` + +Install |CL| on your target system +********************************** + +Ensure that your system is configured to boot UEFI. The installation method +described below requires a wired Internet connection with DHCP. + +.. note:: + + Alternatively, you can install |CL| over a wireless connection by first + using `nmtui`. Follow the `nmtui` instructions shown in Figure 2. + +Follow these steps to install |CL| on the target system: + +#. Insert the USB drive into an available USB slot. + +#. Power on the system. + +#. Open the system BIOS setup menu by pressing the :kbd:`F2` key. + Your BIOS setup menu entry point may vary. + + .. note:: + |CL| supports UEFI boot. Some hardware may list UEFI and non-UEFI USB + boot entries. In this case, you should select the `UEFI` boot + option. + +#. In the setup menu, enable the UEFI boot and set the USB drive as the first + option in the device boot order. + +#. Save these settings and exit. + +#. Reboot the target system. + +#. This action launches the |CL| installer boot menu, shown in figure 1. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-01.png + :scale: 100% + :alt: Clear Linux OS Installer boot menu + + Figure 1: Clear Linux OS Installer boot menu + +#. With :guilabel:`Clear Linux OS` highlighted, select :kbd:`Enter`. + +Launch the |CL| Installer +************************* + +#. At the :guilabel:`login` prompt, enter :command:`root`. + +#. Follow the onscreen instructions, shown in Figure 2, and + enter a temporary password. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-02.png + :scale: 100% + :alt: root login + + Figure 2: root login + +#. At the :guilabel:`root` prompt, enter :command:`clr-installer` and + press :kbd:`Enter`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-03.png + :scale: 100% + :alt: clr-installer command + + Figure 3: clr-installer command + +Minimum installation requirements +********************************* + +To fulfill minimum installation requirements, complete the +`Required options`_. While not required, we encourage you to apply the +`Recommended options`_. `Advanced options`_ are optional. + +.. note:: + + * The :kbd:`Install` button is **only highlighted after** you complete + `Required options`_. + +Main Menu +********* +The |CL| Installer Main Menu appears as shown in Figure 4. + +.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-04.png + :scale: 100% + :alt: Clear Linux OS Installer + + Figure 4: Clear Linux OS Installer + +The |CL| Installer Main Menu has two tabs: :guilabel:`[R] Required options` +and :guilabel:`[A] Advanced options`. Navigate between tabs using the arrow +these shortcut keys: + +* :kbd:`Shift+A` for :guilabel:`[A] Advanced options` +* :kbd:`Shift+R` for :guilabel:`[R] Required options` + +To meet the minimum requirements, enter your choices in the +:guilabel:`Required options`. After confirmation, your selections appear +beside the :guilabel:`>>` chevron, below the menu options. + +Navigation +********** + +* Select :kbd:`Tab` or :kbd:`Up/Down` arrows to highlight your choice. + +* Select :kbd:`Enter` or :kbd:`Spacebar` to confirm your choice. + +* Select :kbd:`Cancel` or :kbd:`Esc` to cancel your choice. + +Required options +**************** + +Choose Timezone +=============== + +#. From the Main Menu, navigate to :guilabel:`Choose Timezone`. + `UTC` is the default. + +#. Select :kbd:`Enter`. + +#. In :guilabel:`Select System Timezone`, use :kbd:`Up/Down` arrows + navigate to the desired timezone. + +.. todo: User need only select Enter; can only select Confirm with mouse. + +#. Press :kbd:`Enter` to confirm. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-05.png + :scale: 100% + :alt: Select System Timezone + + Figure 5: Select System Timezone + +Choose Language +=============== + +#. From the Main Menu, navigate to :guilabel:`Choose Language`. + +#. Select :kbd:`Enter`. + +#. In :guilabel:`Select System Language`, navigate to your desired language. + +#. Press :kbd:`Enter` to confirm. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-06.png + :scale: 100% + :alt: Select System Language + + Figure 6: Select System Language + +Configure the Keyboard +====================== + +#. From the Main Menu, select :guilabel:`Configure the Keyboard`. + +#. Select :kbd:`Enter`. + +#. In :guilabel:`Select Keyboard`, navigate to the desired option. + +#. Select :kbd:`Enter` to :kbd:`Confirm`. + +#. Optional: In :guilabel:`Test keyboard`, type text to assure + that the keys map to your keyboard. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-07.png + :scale: 100% + :alt: Select Keyboard menu + + Figure 7: Select Keyboard menu + +Configure Installation Media +============================ + +#. From the Main Menu, select :guilabel:`Configure Installation Media`. + +#. Choose an installation method: + * `Safe Installation`_ + * `Destructive Installation`_ + * `Advanced Configuration`_ + + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-08.png + :scale: 100% + :alt: Select Installation Media + + Figure 8: Select Installation Media + +#. Select :guilabel:`Rescan Media` to show available installation targets. + +.. todo: Revise below section to match the dev-gui-00 + +Safe Installation +----------------- + +Use this method to safely install |CL| on media with available space, or +alongside existing partitions, and accept the `Default partition schema`_. +If enough free space exists, safe installation is allowed. See also +`Troubleshooting`_ below. + +Destructive Installation +------------------------ + +Use this method to destroy the contents of the target device, install |CL| +on it, and accept the `Default partition schema`_. + +.. note:: + + From the :guilabel:`Select Installation Media` menu, select + :guilabel:`Enable Encryption` to encrypt the root filesystem for either + option above. See also `Disk encryption`_ for more information. + +Advanced Configuration +---------------------- + +Use this method to manually configure partitions. These must meet +`Default partition schema`_. You may also choose `Disk encryption`_ during +configuration of each partition. + +.. note:: + + `Advanced Configuration` is available in the installer versions 1.2.0 and + above. + +#. From :guilabel:`Select Installation Media`, shown in Figure 8 above, + select :guilabel:`Advanced Configuration`. + +#. In :guilabel:`Advanced Configuration`, navigate to :file:`/dev/sda` + and then press :kbd:`Enter`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-09.png + :scale: 100% + :alt: Advanced configuration menu + + Figure 9: Advanced configuration menu + +#. Choose a partition method: + + * :guilabel:`Auto Partition` Select this option to accept the + `Default partition schema`_. + + #. Navigate to and press :guilabel:`Confirm`. + + #. Continue with installation configuration. Jump to `Telemetry`_. + + * `Manual Partition`_ Continue below. + +Manual Partition +---------------- + +We provide a simple example below. + +#. Navigate to the unallocated media (e.g.,`/dev/sda`) until highlighted, as + shown in Figure 9. + +#. Press :guilabel:`Enter` to edit the partition. + +#. The :guilabel:`Partition Setup` menu appears, shown in Figure 10. + + .. note:: + + After adding the first partition, select :guilabel:`Free Space` to add another partition. + +root partition +-------------- + +#. We configure the `root` partition as shown in Figure 10. + Configuration of the `root` partition varies. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-10.png + :scale: 100% + :alt: root partition + + Figure 10: root partition + +#. Navigate to :guilabel:`Add` and press :guilabel:`Enter`. + +boot partition +-------------- + +#. We configure the `boot` partition as shown in Figure 11. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-11.png + :scale: 100% + :alt: boot partition + + Figure 11: boot partition + +#. Navigate to :guilabel:`Add` and press :guilabel:`Enter`. + +swap partition +-------------- + +#. In the :guilabel:`File System` pulldown menu, select `swap`, and + enter a label. We enter the minimum required size (e.g., 256M). + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-12.png + :scale: 100% + :alt: swap partition + + Figure 12: swap partition + +#. Navigate to :guilabel:`Add` and press :guilabel:`Enter`. + +#. Next, navigate to :guilabel:`Confirm` and press :guilabel:`Enter`, + shown in Figure 13. + + Manual partitioning is complete. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-13.png + :scale: 100% + :alt: Final configuration of disk partitions + + Figure 13: Final configuration of disk partitions + +#. You may skip to the `Telemetry`_ section below. + +Disk encryption +=============== + +For greater security, disk encryption is supported using LUKS for the +any partition except `/boot` on |CL|. To encrypt the root partition, see the +example below. Encryption is optional. + +Encryption Passphrase +--------------------- + +|CL| uses a single passphrase for encrypted partitions. Additional keys may +be configured post-installation using the ``cryptsetup`` tool. + +#. Optional: Select :guilabel:`[X] Encrypt` to encrypt the root partition, + as shown in Figure 14. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-14.png + :scale: 100% + :alt: Encrypt partition + + Figure 14: Encrypt partition + +#. The :guilabel:`Encryption Passphrase` dialogue appears. + + .. note:: + + Minimum length is 8 characters. Maximum length is 94 characters. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-15.png + :scale: 100% + :alt: Encryption Passphrase + + Figure 15: Encryption Passphrase + +#. Enter the same passphrase in the first and second field. + +#. Navigate to :guilabel:`Confirm` and press :kbd:`Enter`. + + .. note:: + + :guilabel:`Confirm` is only highlighted if passphrases match. + +Telemetry +========= + +:ref:`telem-guide` is a |CL| feature that reports failures and crashes to +the |CL| development team for improvements. + +Select your desired option on whether to participate in telemetry. + +#. In the Main Menu, navigate to :guilabel:`Telemetry` and select + :kbd:`Enter`. + +#. Select :kbd:`Tab` to highlight your choice. + +#. Select :kbd:`Enter` to confirm. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-16.png + :scale: 100% + :alt: Enable Telemetry + + Figure 16: Enable Telemetry + +Recommended options +******************* + +After you complete the `Required options`_, we highly recommend completing +these selected `Advanced options`_ at minimum: + +* `Manage User`_ Assign a new user with administrative rights +* `Assign Hostname`_ Simplify your development environment + +Skip to finish installation +=========================== + +After selecting values for all :guilabel:`Required options`, you may skip +to `Finish installation`_. + +Otherwise, continue below. In the Main Menu, select +:guilabel:`Advanced options` for additional configuration. + +Advanced options +**************** + +Configure Network Interfaces +============================ + +By default, |CL| is configured to automatically detect the host network +interface using DHCP. However, if you want to use a static IP address or if +you do not have a DHCP server on your network, follow these instructions to +manually configure the network interface. Otherwise, default network +interface settings are automatically applied. + +.. note:: + + If DHCP is available, no user selection may be required. + +#. Navigate to :guilabel:`Configure Network Interfaces` and + select :kbd:`Enter`. + +#. Navigate to the network :guilabel:`interface` you wish to change. + +#. When the desired :guilabel:`interface` is highlighted, select + :guilabel:`Enter` to edit. + + .. note:: Multiple network interfaces may appear. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-17.png + :scale: 100% + :alt: Configure Network Interfaces + + Figure 17: Configure Network Interfaces + +#. Notice :guilabel:`Automatic / dhcp` is selected by default (at bottom). + + Optional: Navigate to the checkbox :guilabel:`Automatic / dhcp` and select + :kbd:`Spacebar` to deselect. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-18.png + :scale: 100% + :alt: Network interface configuration + + Figure 18: Network interface configuration + +#. Navigate to the appropriate fields and assign the desired + network configuration. + +#. To save settings, navigate to :guilabel:`Confirm` and select + :kbd:`Enter`. + + .. note:: + + To revert to previous settings, navigate to the :guilabel:`Cancel` + and select :kbd:`Enter`. + +#. Upon confirming network configuration, the :guilabel:`Testing Networking` + dialogue appears. Assure the result shows success. If a failure occurs, + your changes will not be saved. + +#. Upon confirmation, you are returned to :guilabel:`Network interface` + settings. + +#. Navigate to and select :guilabel:`Main Menu`. + +Optional: Skip to `Finish installation`_. + +Proxy +===== + +|CL| automatically attempts to detect proxy settings, as described in +:ref:`autoproxy`. If you need to manually assign proxy settings, follow this +instruction. + +#. From the Advanced options menu, navigate to :guilabel:`Proxy`, and + select :kbd:`Enter`. + +#. Navigate to the field :guilabel:`HTTPS Proxy`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-19.png + :scale: 100% + :alt: Configure the network proxy + + Figure 19: Configure the network proxy + +#. Enter the desired proxy address and port using conventional syntax, + such as: \http://address:port. + +#. Navigate to :guilabel:`Confirm` and select :kbd:`Enter`. + +#. To revert to previous settings, navigate to :guilabel:`Cancel` + and select :guilabel:`Cancel`. + +Optional: Skip to `Finish installation`_. + +Test Network Settings +===================== + +To manually assure network connectivity before installing |CL|, +select :guilabel:`Test Network Settings` and select :guilabel:`Enter`. + +A progress bar appears as shown in Figure 20. + +.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-20.png + :scale: 100% + :alt: Testing Networking dialogue + + Figure 20: Testing Networking dialogue + +.. note:: + + Any changes made to network settings are automatically tested + during configuration. + +Optional: Skip to `Finish installation`_. + +Bundle Selection +================ + +#. On the Advanced menu, select :guilabel:`Bundle Selection` + +#. Navigate to the desired bundle using :kbd:`Tab` or :kbd:`Up/Down` arrows. + +#. Select :kbd:`Spacebar` to select the checkbox for each desired bundle. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-21.png + :scale: 100% + :alt: Bundle Selection + + Figure 21: Bundle Selection + +#. Optional: To start developing with |CL|, we recommend + adding :file:`os-clr-on-clr`. + +#. Navigate to and select :kbd:`Confirm`. + + You are returned to the :guilabel:`Advanced options` menu. + +Optional: Skip to `Finish installation`_. + +Manage User +=========== + +Add New User +------------ + +#. In Advanced Options, select :guilabel:`Manage User`. + +#. Select :guilabel:`Add New User` as shown in Figure 22. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-22.png + :scale: 100% + :alt: Add New User, User Name + + Figure 22: Add New User + +#. Optional: Enter a :guilabel:`User Name`. + + .. note: + + The User Name must be alphanumeric and can include spaces, commas, or + hyphens. Maximum length is 64 characters. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-23.png + :scale: 100% + :alt: User Name + + Figure 23: User Name + +#. Enter a :guilabel:`Login`. + + .. note:: + + The User Login must be alphanumeric and can include hyphens and underscores. Maximum length is 31 characters. + +#. Enter a :guilabel:`Password`. + + .. note: + + Minimum length is 8 characters. Maximum length is 255 characters. + +#. In :guilabel:`Confirm`, enter the same password. + +#. Optional: Navigate to the :guilabel:`Administrative` checkbox and select + :kbd:`Spacebar` to assign administrative rights to the user. + + .. note:: + + Selecting this option enables sudo privileges for the user. + +#. Select :kbd:`Confirm`. + + .. note:: + + If desired, select :guilabel:`Reset` to reset the form. + +#. In :guilabel:`Manage User`, navigate to :guilabel:`Confirm`. + +#. With :guilabel:`Confirm` highlighted, select :kbd:`Enter`. + +Modify / Delete User +-------------------- + +#. In :guilabel:`Manage User`, navigate to the user you wish + to modify until highlighted, as shown in Figure 24. + +#. Select :kbd:`Enter` to modify the user. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-24.png + :scale: 100% + :alt: Modify User + + Figure 24: Modify User + +#. Modify user details as desired. + +#. Navigate to :kbd:`Confirm` until highlighted. + + .. note:: + + Optional: Select :guilabel:`Reset` to rest the form. + +#. Select :guilabel:`Confirm` to save the changes you made. + +#. Optional: In :guilabel:`Modify User`, to delete the user, navigate to + the :guilabel:`Delete` button and select :kbd:`Enter`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-25.png + :scale: 100% + :alt: Delete User + + Figure 25: Delete User + +You are returned to :guilabel:`Manage User`. + +#. Navigate to :kbd:`Confirm` until highlighted. + +#. Select :guilabel:`Enter` to complete :guilabel:`Manage User` options. + +Optional: Skip to `Finish installation`_. + +Kernel Command Line +=================== + +For advanced users, |CL| provides the ability to add or remove kernel +arguments. If you want to append a new argument, enter the argument here. +This argument will be used every time you install or update a +new kernel. + +#. In Advanced Options, select :guilabel:`Tab` to highlight + :guilabel:`Kernel Command Line`. + +#. Select :kbd:`Enter`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-26.png + :scale: 100% + :alt: kernel command line + + Figure 26: kernel command line + +#. Choose from the following options. + + * To add arguments, enter the argument in :guilabel:`Add Extra Arguments`. + + * To remove an argument, enter the argument in + :guilabel:`Remove Arguments`. + +#. Select :kbd:`Confirm`. + +Optional: Skip to `Finish installation`_. + +Kernel Selection +================ + +#. Select a kernel option. By default, the latest kernel release is + selected. Native kernel is shown in Figure 27. + +#. To select a different kernel, navigate to it using :guilabel:`Tab`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-27.png + :scale: 100% + :alt: Kernel selection + + Figure 27: Kernel selection + +#. Select :kbd:`Spacebar` to select the desired option. + +#. Navigate to :kbd:`Confirm` and select :kbd:`Enter`. + +Optional: Skip to `Finish installation`_. + +Swupd Mirror +============ + +If you have your own custom mirror of |CL|, you can add its URL. + +#. In Advanced Options, select :guilabel:`Swupd Mirror`. + +#. To add a local swupd mirror, enter a valid URL in :guilabel:`Mirror URL:` + +#. Select :kbd:`Confirm`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-28.png + :scale: 100% + :alt: Swupd Mirror + + Figure 28: Swupd Mirror + +Optional: Skip to `Finish installation`_. + +Assign Hostname +=============== + +#. In Advanced Options, select :guilabel:`Assign Hostname`. + +#. In :guilabel:`Hostname`, enter the hostname only (excluding the domain). + + .. note:: + + Hostname does not allow empty spaces. Hostname must start with an + alphanumeric character but may also contain hyphens. Maximum length of + 63 characters. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-29.png + :scale: 100% + :alt: Assign Hostname + + Figure 29: Assign Hostname + +#. Navigate to :kbd:`Confirm` until highlighted. + +#. Select :kbd:`Confirm`. + +Optional: Skip to `Finish installation`_. + +Automatic OS Updates +==================== + +Automatical OS updates are enabled by default. In the rare case that you +need to disable automatic software updates, follow the onscreen instructions, +shown in Figure 30. + +#. In Advanced Options, select :guilabel:`Automatic OS Updates`. + +#. Select the desired option. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-30.png + :scale: 100% + :alt: Automatic OS Updates + + Figure 30: Automatic OS Updates + +You are returned to the :guilabel:`Main Menu`. + +Save Configuration Settings +=========================== + +#. In Advanced Options, select :guilabel:`Save Configuration Settings`. + +#. A dialogue box shows the installation configuration was saved to + :file:`clr-installer.yaml` + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-31.png + :scale: 100% + :alt: Automatic OS Updates + + Figure 31: Automatic OS Updates + +#. Use the :file:`clr-installer.yaml` file to install |CL|, with the same + configuration, on multiple targets. + +Finish installation +******************* + +#. When you are satisfied with your installation configuration, navigate to + :guilabel:`Install` and select :kbd:`Enter`. + + .. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-32.png + :scale: 100% + :alt: Select Install + + Figure 32: Select Install + +#. Select :guilabel:`reboot`. + + .. note:: + + If you do not assign an administrative user, upon rebooting, + enter `root` and set the root password immediately. + +#. When the system reboots, remove any installation media present. + +Default partition schema +======================== + +Create partitions per requirements in Table 1. + +.. list-table:: **Table 1. Default partition schema** + :widths: 25, 25, 25, 25 + :header-rows: 1 + + * - FileSystem + - Label + - Mount Point + - Default size + + * - ``VFAT(FAT32)`` + - boot + - /boot + - 150MB + + * - ``linux-swap`` + - swap + - + - 256MB + + * - ``ext[234] or XFS`` + - root + - / + - *Size depends upon use case/desired bundles.* + +Troubleshooting +*************** + +For Configure Installation Media +================================ + +If a warning message appears that no media or space is available after +entering :guilabel:`Configure Installation Media`: + +- Verify that target media has enough free space. + +- Confirm the USB is properly connected to and mounted on target media. + +- Review the size of existing partitions on the target media: + + - Linux\* OS: :command:`lsblk -a` + - Windows\* OS: :command:`diskpart`, then :command:`list disk` + - macOS\* platform: :command:`diskutil list` + +.. _Downloads: https://clearlinux.org/downloads diff --git a/zh_CN/_sources/get-started/bootable-usb.rst.txt b/zh_CN/_sources/get-started/bootable-usb.rst.txt new file mode 100644 index 000000000..cd63fcae7 --- /dev/null +++ b/zh_CN/_sources/get-started/bootable-usb.rst.txt @@ -0,0 +1,210 @@ +.. _bootable-usb: + +Create a bootable USB drive +########################### + +Follow the instructions applicable to your system to create a bootable |CL-ATTR| +USB drive: + +* :ref:`bootable-usb-linux` +* :ref:`bootable-usb-mac` +* :ref:`bootable-usb-windows` + +Prerequisites +************* + +* Use an **8GB** or larger USB drive. +* Download the |CL| live boot image or interactive installer image from the + `Downloads`_ page. + +.. _bootable-usb-linux: + +Create a bootable USB drive on Linux\* +************************************** + +Make sure you have completed all `Prerequisites`_. + +Before burning the image onto your USB drive, :ref:`verify-linux` on Linux. + +Burn the |CL| image onto a USB drive +==================================== + +.. caution:: + + Burning an image formats the USB drive, and will destroy all pre-existing + content. Back up your data before proceeding. + +#. Open a terminal emulator and get root privilege. + + .. code-block:: bash + + sudo -s + +#. Go to the directory with the decompressed image. + +#. Plug in the USB drive. + +#. Identify the USB drive using the :command:`lsblk` command. This shows all + drives attached to the system, including the primary hard disk. In the + example output below, there are 4 drives + (`/dev/sda`, `/dev/sdb`, `/dev/sdc`, and `/dev/sdd`) attached, where + `/dev/sda` is primary drive. The remaining are three USB drives. The output + also shows the mounted partitions (under the `MOUNTPOINT` column) for each + drive. + + .. code-block:: bash + + lsblk + + Example output: + + .. code-block:: console + + NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT + sdd 8:48 1 15G 0 disk + ├─sdd2 8:50 1 5G 0 part /run/media/user1/960c184f-3bb7-42b7-bcaf-0c1282 + ├─sdd3 8:51 1 8G 0 part /run/media/user1/704f3382-b26d-4f34-af1b-cb9aab + └─sdd1 8:49 1 2G 0 part + sdb 8:16 1 14.8G 0 disk + └─sdb1 8:17 1 14.8G 0 part /run/media/user1/PATRIOT_USB + sdc 8:32 1 7.3G 0 disk + └─sdc1 8:33 1 7.3G 0 part /run/media/user1/LINUX MINT + sda 8:0 0 335.4G 0 disk + ├─sda4 8:4 0 28G 0 part + ├─sda2 8:2 0 3.7G 0 part [SWAP] + ├─sda7 8:7 0 6G 0 part /home + ├─sda5 8:5 0 1G 0 part /boot + ├─sda3 8:3 0 954M 0 part /boot/efi + ├─sda1 8:1 0 28G 0 part + ├─sda8 8:8 0 30G 0 part / + └─sda6 8:6 0 7.9G 0 part [SWAP] + +#. You must unmount a USB drive before burning an image onto it. Note that + some Linux distros automatically mount a USB drive when it is plugged in. + Unmount a USB drive with the :command:`umount` command followed by the device + identifier/partition. For example: + + .. code-block:: bash + + umount /dev/sdd2 + umount /dev/sdd3 + +#. Burn the image onto the USB drive. The example below burns an uncompressed + image onto ``: + + .. code-block:: bash + + dd if=./clear-[version number]-[image type] of= oflag=sync bs=4M status=progress + +.. caution:: + + Not fully unmounting the USB drive before burning an image could cause + file system checksum errors in it. If this happens, burn the image again, + ensuring all the USB drive partitions are unmounted first. + +.. _bootable-usb-mac: + +Create a bootable USB drive on macOS\* +************************************** + +Make sure you have completed all `Prerequisites`_. + +Before burning the image onto your USB drive, :ref:`verify-mac` on macOS. + +Burn the |CL| image onto a USB drive +==================================== + +.. caution:: + + Burning an image formats the USB drive, and will destroy all pre-existing + content. Back up your data before proceeding. + +#. Launch the Terminal app. + +#. Go to the directory with the decompressed image. + +#. Plug in a USB drive and get its identifier: + + .. code-block:: bash + + diskutil list + + This will list available disks and their partitions, as shown in Figure 1. + + .. figure:: /_figures/bootable-usb/bootable-usb-mac-01.png + :scale: 100 % + :alt: Get USB drive identifier + + Figure 1: macOS - Get USB drive identifier + +#. Unmount the USB drive identified in the previous step. For example: + + .. code-block:: bash + + diskutil umountDisk /dev/disk2 + +#. Burn the image onto the drive using the :command:`dd` command. + The example below burns an uncompressed image onto ``: + + .. code-block:: bash + + sudo dd if=./clear-[version number]-[image type] of= bs=4m + + To speed up the imaging process, add an ‘r’ in front of the disk identifier. + For example `/dev/rdisk2`. + + Press :kbd:`-T` to check imaging progress. + +#. Eject the USB drive. + + .. code-block:: bash + + diskutil eject /dev/disk2 + +.. _bootable-usb-windows: + +Create a bootable USB drive on Windows\* +**************************************** + +Make sure you have completed all `Prerequisites`_. + +Before burning the image onto your USB drive, :ref:`verify-windows` on Windows. + +Burn the |CL| image onto a USB drive +==================================== + +.. caution:: + + Burning an image formats the USB drive, and will destroy all pre-existing + content. Back up your data before proceeding. + +#. Download the `Rufus`_ utility to burn the image onto a USB drive. + We use Rufus 3.5 here. **Only use the latest version of Rufus**. + +#. Plug in the USB drive and open Rufus. + +#. Under `Boot selection`, click the :guilabel:`SELECT` button. + +#. Find and select the previously extracted |CL| image file. + +#. Click the :guilabel:`START` button. See Figure 2. + + .. figure:: /_figures/bootable-usb/bootable-usb-windows-02.png + :scale: 80 % + :alt: Rufus utility + + Figure 2: Rufus utility + +#. When the dialogue appears, select + :guilabel:`Write in ISO image mode (Recommended)`. See Figure 3. + + .. figure:: /_figures/bootable-usb/bootable-usb-windows-03.png + :scale: 80 % + :alt: ISOHybrid image detected + + Figure 3: ISOHybrid image detected + +#. Select the Windows taskbar menu for USB and select eject. + +.. _Rufus: https://rufus.ie/ +.. _Downloads: https://clearlinux.org/downloads diff --git a/zh_CN/_sources/get-started/cloud-install/aws-web.rst.txt b/zh_CN/_sources/get-started/cloud-install/aws-web.rst.txt new file mode 100644 index 000000000..72f7f90dc --- /dev/null +++ b/zh_CN/_sources/get-started/cloud-install/aws-web.rst.txt @@ -0,0 +1,281 @@ +.. _aws-web: + +|CL-ATTR| on Amazon Web Services\* +################################## + +This tutorial explains how to create and launch a |CL| +:abbr:`AMI (Amazon Machine Image)` instance from the +:abbr:`AWS\* (Amazon Web Services)` console and complete the following tasks: + +#. Locate and select the |CL| OS Basic AMI in the AWS Marketplace. +#. Create a new public and private key pair to allow you to connect to your + |CL| instance securely. +#. Launch the new |CL| instance and connect to it. +#. Update your instance of |CL| using the :command:`swupd` command. +#. Stop the |CL| instance. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +This tutorial assumes the following statements are true: + +* You are using a linux-based system to access AWS and can run :command:`SSH` + to access the remote |CL| AWS image. +* Your browser puts downloaded files in the :file:`$HOME/Downloads` + directory. +* You have already set up an AWS user account and logged into the AWS + console. + +.. note:: + This tutorial uses a |CL| AMI t2.micro instance that is eligible for the + AWS free tier. To learn more about AWS and setting up an account, visit the + AWS website at http://aws.amazon.com. + +Locate, select, and launch the |CL| Basic AMI +********************************************* + +#. Start from your main AWS services console menu in your browser and select + the :guilabel:`EC2` text as shown in Figure 1: + + .. figure:: /_figures/aws/aws-web-1.png + :scale: 50 % + :alt: AWS Console + + Figure 1: :guilabel:`AWS Console` + + This selection brings up your :guilabel:`EC2 Dashboard` menu. + +#. To create a new |CL| instance from the :guilabel:`EC2 Dashboard` menu, + select the :guilabel:`Launch Instance` button as shown in Figure 2: + + .. figure:: /_figures/aws/aws-web-2.png + :scale: 50 % + :alt: EC2 Dashboard + + Figure 2: :guilabel:`EC2 Dashboard` + + This selection takes you to the + :guilabel:`Step 1: Choose an Amazon Machine Image (AMI)` menu. + +#. To find the :guilabel:`Clear Linux OS Basic` AMI in the + :guilabel:`Step 1: Choose an Amazon Machine Image (AMI)` menu, do the + following: + + #. In the lefthand navigation window, select the + :guilabel:`AWS Marketplace` menu item to bring up the search bar to + :guilabel:`Search AWS Marketplace Products`. + + #. In the search bar, type "clear linux os" and press the :kbd:`Enter` key + to search for and locate the :guilabel:`Clear Linux OS Basic` AMI. + + #. Select the :guilabel:`Clear Linux OS Basic` AMI by clicking the + :guilabel:`Select` button as shown in Figure 3: + + .. figure:: /_figures/aws/aws-web-3.png + :scale: 50 % + :alt: Step 1: Choose AMI + + Figure 3: :guilabel:`Step 1: Choose AMI` + + #. A pop-up dialog box appears showing you more information about the + :guilabel:`Clear Linux OS Basic` AMI along with the pricing details for + running |CL| on different platform configurations as shown in Figure 4. + Select the :guilabel:`Continue` button. + + .. figure:: /_figures/aws/aws-web-4.png + :scale: 50 % + :alt: Clear Linux OS Basic + + Figure 4: :guilabel:`Clear Linux OS Basic` + +#. The :guilabel:`Choose Instance Type` menu appears as shown in Figure 5. + + .. figure:: /_figures/aws/aws-web-5.png + :scale: 50 % + :alt: Choose an Instance Type + + Figure 5: :guilabel:`Choose an Instance Type` + + Select the :guilabel:`t2.micro` type by clicking the box on the left side + of the instance and then select the :guilabel:`Review and Launch` button to + move to the :guilabel:`Step 7: Review the Instance Launch` menu. + + .. note:: + + You can configure the instance details, add additional storage, add + tags, and configure the security group before selecting the + :guilabel:`Review and Launch` button if you want to further customize + this |CL| instance. + +#. The :guilabel:`Step 7: Review the Instance Launch` menu, shown in Figure 6, + allows you to :guilabel:`Cancel` the process, return to + the :guilabel:`Previous` screen to change the configuration + or :guilabel:`Launch` the instance defined. + + .. figure:: /_figures/aws/aws-web-6.png + :scale: 50 % + :alt: Step 7: Review the Instance Launch + + Figure 6: :guilabel:`Step 7: Review the Instance Launch` + + #. Select the :guilabel:`Launch` button. A dialog box appears, as shown in + Figure 7, asking you to + :guilabel:`Select an existing key pair or create a new pair`. + + .. figure:: /_figures/aws/aws-web-7.png + :scale: 50 % + :alt: Select an existing key pair or create a new pair + + Figure 7: :guilabel:`Select an existing key pair or create a new pair` + + #. Select the :guilabel:`Create a new key pair` option. + + #. For the :guilabel:`Key pair name` field, enter `AWSClearTestKey`. + + #. Select the :guilabel:`Download Key Pair` button to download the + :file:`AWSClearTestKey.pem` to your browser's defined + :file:`Downloads` directory. + + #. When the file finishes downloading, select the + :guilabel:`Launch Instances` button to proceed to the + :guilabel:`Launch Status` menu shown in Figure 8. + + .. figure:: /_figures/aws/aws-web-8.png + :scale: 50 % + :alt: Launch Status + + Figure 8: :guilabel:`Launch Status` + + #. Once the :guilabel:`Launch Status` page changes to what is shown in + Figure 9, select the :guilabel:`View Instances` button to view your + :guilabel:`Instances` dashboard. + + .. figure:: /_figures/aws/aws-web-9.png + :scale: 50 % + :alt: View Instance + + Figure 9: :guilabel:`View Instance` + +Connect to your Clear Linux OS basic instance +********************************************* + +Your :guilabel:`Instances` Dashboard is shown in Figure 10 with the new |CL| +OS basic instance already selected and in the running state. If there are +other instances available, they are also listed but not selected. + +.. figure:: /_figures/aws/aws-web-10.png + :scale: 50 % + :alt: Instance Dashboard + + Figure 10: :guilabel:`Instance Dashboard` + +#. To connect to your running instance, click the :guilabel:`Connect` button + located at the top of your dashboard. AWS brings up the pop-up dialog + box shown in Figure 11 describing how to connect to your running instance. + +.. _fig-aws-web-11: + +.. figure:: /_figures/aws/aws-web-11.png + :scale: 50 % + :alt: Connect to Your Instance + + Figure 11: :guilabel:`Connect to Your Instance` + +#. Open a terminal on your system. You should be in your :file:`$HOME` + directory. + +#. Copy the previously downloaded keyfile from the :file:`Downloads` + directory to the current directory. + + .. code-block:: console + + cp Downloads/AWSClearTestKey.pem . + +#. Change the attributes of the :file:`AWSClearTestKey.pem` using the + :command:`chmod` command as instructed in the dialog box shown in Figure + 11. + + .. code-block:: console + + chmod 400 AWSClearTestKey.pem + +#. Copy the text highlighted in the :guilabel:`Example:` section that is + shown in :ref:`figure 11`. Paste the copied text into your + terminal, change the text before the `@` sign to the username `clear`, and + press the :kbd:`Enter` key to execute the command. + + .. code-block:: console + + ssh -i "AWSClearTestKey.pem" clear@ec2-34-209-39-184.us-west-2.compute.amazonaws.com + +#. A message appears on the terminal stating the authenticity of the host + can't be established and prompts you with the message: + + .. code-block:: console + + The authenticity of host 'ec2-34-209-39-184.us-west-2.compute.amazonaws.com (34.209.39.184)' can't be established. + ECDSA key fingerprint is SHA256:LrziT5Ar66iBTfia8qmiIsrfBUm/UGam76U8bDR6yJc. + Are you sure you want to continue connecting (yes/no)? + +#. Type `yes` and press the :kbd:`Enter` key. Another warning is printed to + the terminal and you are now at the command prompt of your new |CL| + instance. + + .. code-block:: console + + Warning: Permanently added 'ec2-34-209-39-184.us-west-2.compute.amazonaws.com,34.209.39.184' (ECDSA) to the list of known hosts. + clear@clr-96a8565d0ca54b0c80364a1e5e7b0f88 ~ $ + +Update the |CL| instance +************************ + +Run the :command:`sudo swupd update` command to update the operating +system as shown in Figure 12: + +.. figure:: /_figures/aws/aws-web-12.png + :scale: 50 % + :alt: sudo swupd update + + Figure 12: :guilabel:`sudo swupd update` + +In this example, we updated from version 18940 to 19100. + +Stop the |CL| instance +********************** + +When you are finished using your AWS |CL| instance, you must stop it using +the :guilabel:`Instances` dashboard to stop accruing charges. Complete the +following steps from the :guilabel:`Instances` dashboard to stop your AWS |CL| +instance from running. + +#. Select the :guilabel:`Actions` button to bring up a pull-down menu. + +#. Select the :guilabel:`Instance State` menu item to expand the options. + +#. Select :guilabel:`Stop` menu item to shut down the running instance. + + Figure 13 illustrates these steps. + + .. figure:: /_figures/aws/aws-web-13.png + :scale: 50 % + :alt: Stop Instance + + Figure 13: :guilabel:`Stop Instance` + +#. A pop-up dialog box appears warning you that any ephemeral storage of + your instance will be lost. Select the :guilabel:`Yes, Stop` button to stop + your |CL| instance. + +.. figure:: /_figures/aws/aws-web-14.png + :scale: 50 % + :alt: Stop Instances + + Figure 14: :guilabel:`Stop Instances` + +Congratulations! You are up and running with |CL| on AWS. To see what you +can do with your |CL| instance, visit our :ref:`tutorials ` +section for examples on using your |CL| system. diff --git a/zh_CN/_sources/get-started/cloud-install/azure.rst.txt b/zh_CN/_sources/get-started/cloud-install/azure.rst.txt new file mode 100644 index 000000000..223088d26 --- /dev/null +++ b/zh_CN/_sources/get-started/cloud-install/azure.rst.txt @@ -0,0 +1,544 @@ +.. _azure: + +|CL-ATTR| on Microsoft Azure +############################ + +|CL-ATTR| is available for you to use in the Microsoft* Azure* marketplace and +is offered with three different images, also known as a +:abbr:`SKU (Stock Keeping Unit)`. + +* |CL| Basic - This SKU consists of a bare-bones system which can be used as a + starting point for those wanting to explore and build out a system with + additional software bundles of their choosing. + +* |CL| Containers - This SKU comes with the containers-basic software bundle + already installed. + +* |CL| Machine-learning - This SKU comes pre-loaded with popular open source + tools for developing machine learning applications. + +You can access these images directly from your MS Azure dashboard through the +`Azure portal`_ or by using the MS Azure :abbr:`CLI (Command Line Interface)` +2.0. If you do not already have an account set up with MS Azure, you can sign +up for a `MS Azure free account`_ to access the |CL| +:abbr:`VM(Virtual Machine)` images. + +The Azure CLI offers the ability to create and manage resources in MS Azure +from the command line. In this tutorial you learn to: + +#. Install the latest MS Azure CLI on your |CL| machine. + +#. Log into MS Azure using the CLI 2.0 interface. + +#. Create a MS Azure resource group. + +#. Locate the |CL| images. + +#. Create and log into the |CL| virtual machine. + +#. Stop and deallocate the |CL| VM and resources. + +To use the MS Azure CLI 2.0 on your |CL| system, your system must have the +following packages installed: + +* Python 2.7 or later + +* libffi + +* OpenSSL 1.0.2 + +You can check to see what versions you have installed on your system by +running the individual commands as follows: + +.. code-block:: bash + + python --version + +.. code-block:: console + + python 2.7.12 + +.. code-block:: bash + + openssl version + +.. code-block:: console + + OpenSSL 1.0.2n 7 Dec 2017 + +.. code-block:: bash + + ls -l /usr/lib64/libffi* + +.. code-block:: console + + lrwxrwxrwx 1 root root 15 Jan 12 2017 /usr/lib64/libffi.so.6 -> libffi.so.6.0.4 + -rwxr-xr-x 1 root root 38792 Jan 12 2017 /usr/lib64/libffi.so.6.0.4 + +If you do not have these packages installed on your |CL| system, install the +sysadmin-basic software bundle using the :command:`swupd` command: + +.. code-block:: bash + + sudo swupd bundle-add sysadmin-basic + +.. note:: + + These instructions are for installing the MS Azure CLI 2.0 tools on a |CL| + system. If you are installing the CLI on another platform, follow the + instructions in the `MS Azure Install Azure CLI tutorial`_ for your + specific operating system. + +Install MS Azure CLI 2.0 on |CL| +******************************** + +#. To install the MS Azure CLI 2.0 on |CL|, use the :command:`curl` command as + follows: + + .. code-block:: bash + + curl -L https://aka.ms/InstallAzureCli | bash + + If you get an error message from :command:`curl` related to the -L + parameter or an error message is generated that includes the text "Object + Moved", use the full URL instead of the aka.ms redirect address: + + .. code-block:: bash + + curl https://azurecliprod.blob.core.windows.net/install | bash + +#. The installation script begins and prompts you several times during + execution for information. + + .. note:: + + The console output from the script displays your username instead of the + **[user]** variable shown on this tutorial. + + .. code-block:: console + + ===> In what directory would you like to place the install? (leave blank to use '/home/[user]/lib/azure-cli'): + + Press the :kbd:`Enter` key to accept the default or you can chose another + directory to install the MS Azure CLI 2.0 tools into. + + .. code-block:: console + + ===> In what directory would you like to place the 'az' executable? (leave blank to use '/home/[user]/bin'): + + Press the :kbd:`Enter` key to accept the default or you can chose another + directory to install the :command:`az` executable in. + +#. The installation downloads and builds all required tools and when complete + prompts you with: + + .. code-block:: console + + ===> Modify profile to update your $PATH and enable shell/tab completion now? (Y/n): Y + + Type :kbd:`Y` and press the :kbd:`Enter` key to allow this modification. + + .. code-block:: console + + ===> Enter a path to an rc file to update (leave blank to use '/home/[user]/.bashrc'): + + Press the :kbd:`Enter` key to accept the default or enter the pathname to + your :file:`.bashrc` file. The installation completes with the final output + shown below: + + .. code-block:: console + + -- Backed up '/home/[user].bashrc' to '/home/[user]/.bashrc.backup' + -- Tab completion set up complete. + -- If tab completion is not activated, verify that '/home/[user]/.bashrc' is sourced by your shell. + -- + -- ** Run `exec -l $SHELL` to restart your shell. ** + -- + -- Installation successful. + -- Run the CLI with /home/[user]/bin/az --help + +#. The installation program finishes and you must restart your shell for + the changes to take effect. When the installation is successful, run the + following command to restart your shell. + + .. code-block:: bash + + exec -l $SHELL + +With the MS Azure CLI 2.0 executable successfully built and installed, run +the :command:`az` command. + +.. code-block:: bash + + az + +The output from the :command:`az` command is shown below: + +.. code-block:: console + + + /\ + / \ _____ _ _ __ ___ + / /\ \ |_ / | | | \'__/ _ \ + / ____ \ / /| |_| | | | __/ + /_/ \_\/___|\__,_|_| \___| + + + Welcome to the cool new Azure CLI! + + Here are the base commands: + + account : Manage Azure subscription information. + acr : Manage Azure Container Registries. + acs : Manage Azure Container Services. + ad : Synchronize on-premises directories and manage Azure Active Directory + resources. + advisor : (PREVIEW) Manage Azure Advisor. + aks : Manage Kubernetes clusters. + appservice : Manage App Service plans. + backup : Commands to manage Azure Backups. + batch : Manage Azure Batch. + batchai : Batch AI. + billing : Manage Azure Billing. + cdn : Manage Azure Content Delivery Networks (CDNs). + cloud : Manage registered Azure clouds. + cognitiveservices: Manage Azure Cognitive Services accounts. + configure : Display and manage the Azure CLI 2.0 configuration. This command is + interactive. + consumption : Manage consumption of Azure resources. + container : (PREVIEW) Manage Azure Container Instances. + cosmosdb : Manage Azure Cosmos DB database accounts. + disk : Manage Azure Managed Disks. + dla : (PREVIEW) Manage Data Lake Analytics accounts, jobs, and catalogs. + dls : (PREVIEW) Manage Data Lake Store accounts and filesystems. + eventgrid : Manage Azure Event Grid topics and subscriptions. + extension : Manage and update CLI extensions. + feature : Manage resource provider features. + feedback : Loving or hating the CLI? Let us know! + find : Find Azure CLI commands. + functionapp : Manage function apps. + group : Manage resource groups and template deployments. + image : Manage custom virtual machine images. + interactive : Start interactive mode. + iot : (PREVIEW) Manage Internet of Things (IoT) assets. + keyvault : Safeguard and maintain control of keys, secrets, and certificates. + lab : Manage Azure DevTest Labs. + lock : Manage Azure locks. + login : Log in to Azure. + logout : Log out to remove access to Azure subscriptions. + managedapp : Manage template solutions provided and maintained by Independent Software + Vendors (ISVs). + monitor : Manage the Azure Monitor Service. + mysql : Manage Azure Database for MySQL servers. + network : Manage Azure Network resources. + policy : Manage resource policies. + postgres : Manage Azure Database for PostgreSQL servers. + provider : Manage resource providers. + redis : Access to a secure, dedicated Redis cache for your Azure applications. + reservations : Manage Azure Reservations. + resource : Manage Azure resources. + role : Manage user roles for access control with Azure Active Directory and service + principals. + sf : Manage and administer Azure Service Fabric clusters. + snapshot : Manage point-in-time copies of managed disks, native blobs, or other + snapshots. + sql : Manage Azure SQL Databases and Data Warehouses. + storage : Manage Azure Cloud Storage resources. + tag : Manage resource tags. + vm : Provision Linux or Windows virtual machines. + vmss : Manage groupings of virtual machines in an Azure Virtual Machine Scale Set + (VMSS). + webapp : Manage web apps. + +Log into your Microsoft Azure account +************************************* + +#. With the :command:`az` command properly installed and functional, login to + your MS Azure account using the :command:`az login` command shown below: + + .. code-block:: bash + + az login + + The output from this command is: + + .. code-block:: console + + To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code BQ9MG442B to authenticate. + +#. Open your browser and enter the page `https://aka.ms/devicelogin` as shown + in figure 1: + + .. figure:: /_figures/azure/azure-1.png + :scale: 50 % + :alt: Microsoft Device Login + + Figure 1: :guilabel:`Microsoft Device Login` + +#. Enter the code `BQ9MG442B` to authenticate your device as shown in figure + 2. The code `BQ9MG442B` is a random authentication code generated for each + session login and will be different each time you log into MS Azure using + the :command:`az login` command. + + .. figure:: /_figures/azure/azure-2.png + :scale: 50 % + :alt: Microsoft Device Login - Azure CLI + + Figure 2: :guilabel:`Microsoft Device Login - Azure CLI` + +#. Once you enter the authentication code, the website changes to a screen to + enter your existing Microsoft Azure credentials. + +#. Log in with your existing MS Azure account credentials. Once complete, the + browser screen changes again as shown in figure 3. The screen shows you + have signed into the Microsoft Cross-platform Command Line Interface + application on your device and you can close the window. + + .. figure:: /_figures/azure/azure-3.png + :scale: 50 % + :alt: Microsoft Azure Cross-platform CLI + + Figure 3: :guilabel:`Microsoft Azure Cross-platform CLI` + +The MS Azure CLI 2.0 interface is now active using your existing MS Azure +account credentials. + +Create a MS Azure resource group +******************************** + +To learn more about MS Azure resource groups, visit the +`Azure Resource Manager overview`_ for an overview and detailed description +of resources within MS Azure. + +#. To create our new resource group, run the :command:`az group create ...` + command shown below to create a resource group named `ClearResourceGroup` + using the `-n` parameter and locate it in the `westus` region using the + `-l` parameter. + + .. code-block:: bash + + az group create -n ClearResourceGroup -l westus + +#. When the command has completed, the output from this command is similar to + the following: + + .. code-block:: console + + { + "id": "/subscriptions/{unique-id}/resourceGroups/ClearResourceGroup", + "location": "westus", + "managedBy": null, + "name": "ClearResourceGroup", + "properties": { + "provisioningState": "Succeeded" + }, + "tags": null + } + +Create and log into the |CL| virtual machine +******************************************** + +For this tutorial, we are using the |CL| Basic SKU for our VM. + +#. To locate the available |CL| Basic VM SKU images in the MS Azure + marketplace, run the :command:`az vm image ...` command: + + .. code-block:: bash + + az vm image list --offer clear-linux --sku basic --all --output table + + This command may take some time to finish. The output lists all available + |CL| Basic images available in the Microsoft Azure marketplace as shown + below: + + .. code-block:: console + + Offer Publisher Sku Urn Version + -------------- ------------------- ---------------- ------------------------------------------------------------- --------- + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:15780.0.0 15780.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:15960.0.0 15960.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:16050.0.0 16050.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:16150.0.0 16150.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:16500.0.0 16500.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:16810.0.0 16810.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:18080.0.0 18080.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:18620.0.0 18620.0.0 + clear-linux-os clear-linux-project basic clear-linux-project:clear-linux-os:basic:18860.0.0 18860.0.0 + + .. note:: + + The output list shows current offerings. New versions are added to the + MS Azure marketplace all the time. To reference the latest version of an + image, you can use the version label `latest` when specifying an image. + +#. The information shown in the `Urn` column lists the + `Publisher:Offer:Sku:Version` for each image available and this is the + information we want to create the |CL| Basic VM. Since we are creating a + |CL| Basic VM, highlight the `clear-linux-project:clear-linux-os:basic:` + string and copy it to your clipboard. Use the label + `latest` instead of referencing a specific version. + +#. Create the new |CL| Basic VM. Run the :command:`az vm create ...` + command using the URN `:clear-linux-project:clear-linux-os:basic:latest` + that we copied to the clipboard on the previous step. + + .. code-block:: bash + + az vm create --resource-group ClearResourceGroup --name ClearVM --image clear-linux-project:clear-linux-os:basic:latest --generate-ssh-keys + + .. note:: + + If you have already defined your public/private SSH key pair and they + are stored in your :file:`$HOME/.ssh` directory, you do not need to + include the *--generate-ssh-keys* option. + + Your output from this command will look similar to this output, where + [user] is your user name: + + .. code-block:: console + + SSH key files '/home/[user]/.ssh/id_rsa' and '/home/[user]/.ssh/id_rsa.pub' have been generated under ~/.ssh to allow SSH access to the VM. If using machines without permanent storage, back up your keys to a safe location. + + running... + + { + "fqdns": "", + "id": "/subscriptions/{unique-id}/resourceGroups/ClearResourceGroup/providers/Microsoft.Compute/virtualMachines/ClearVM", + "location": "westus", + "macAddress": "00-0D-3A-37-C7-59", + "powerState": "VM running", + "privateIpAddress": "10.0.0.4", + "publicIpAddress": "13.91.4.245", + "resourceGroup": "ClearResourceGroup", + "zones": "" + } + + Take note of the public IP address from the output. + +#. Login into the new |CL| Basic VM, run the :command:`ssh` command with the + public IP address obtained from the previous step as shown: + + .. code-block:: bash + + ssh [user]@13.91.4.245 + + You may see the following message about the authenticity of the host. If + this appears, type `yes` to proceed connecting to your new |CL| VM. + + .. code-block:: console + + The authenticity of host '13.91.4.245 (13.91.4.245)' can't be established. + RSA key fingerprint is SHA256:{unique-number}. + Are you sure you want to continue connecting (yes/no)? yes + Warning: Permanently added '13.91.4.245' (RSA) to the list of known hosts. + + [user]@ClearVM ~ $ + + You are now logged into your new |CL| VM as [user], where [user] is your + user name. To check which software bundles are included with + this VM image, run the :command:`sudo swupd bundle-list` command inside the VM: + + .. code-block:: bash + + sudo swupd bundle-list + + The output shown should be similar to: + + .. code-block:: console + + swupd-client bundle list 3.14.1 + Copyright (C) 2012-2017 Intel Corporation + + bootloader + editors + kernel-hyperv + network-basic + openssh-server + os-cloudguest-azure + os-core + os-core-update + perl-basic + python-basic + python3-basic + storage-utils + sysadmin-basic + Current OS version: 19600 + + When you are finished using your new |CL| VM, type :command:`exit` to close + the :command:`SSH` terminal and logout. + +Stop and deallocate the |CL| VM and resources +********************************************* + +When you finish using your new |CL| instance, you must stop the VM and +deallocate the resources in your resource group. If you only stop a VM, the OS +image shuts down but the resources associated with it in your resource group +remain allocated and incurring charges. For instance, if you stop and then +later start the VM using the :command:`az vm start...` without deallocating +the resources, the IP address is retained and you can access the VM using that +same IP address. To release the resources associated with the VM and stop +incurring charges for them, you must deallocate the resources as well. + +#. At the command prompt, enter the :command:`az vm stop...` command as + follows: + + .. code-block:: bash + + az vm stop --resource-group ClearResourceGroup --name ClearVM + + This will stop the VM and then output text similar to: + + .. code-block:: console + + { + "endTime": "2017-12-13T23:04:02.346676+00:00", + "error": null, + "name": "{unique-name}", + "startTime": "2017-12-13T23:03:59.018536+00:00", + "status": "Succeeded" + } + +#. Once the VM stops, deallocate the VM resources to stop incurring + charges for the |CL| instance. Enter the following command: + + .. code-block:: console + + az vm deallocate --resource-group ClearResourceGroup --name ClearVM + +**Congratulations!** + +You are up and running with |CL| on MS Azure using the Azure +CLI 2.0 command line tools. + +Next steps +********** + +To see use cases you can fulfill with your |CL| instance, visit our +:ref:`tutorials ` section. + +For additional information visit the |CL| +`Azure Partner Mini Case Study`_ and the `Azure Partner Datasheet`_. + +To learn more about the MS Azure CLI 2.0 tool and options that are available, +visit the `MS Azure documentation and tutorials`_ website. + +.. _`Azure Portal`: + https://portal.azure.com + +.. _`MS Azure free account`: + https://azure.microsoft.com/en-us/free/ + +.. _`MS Azure documentation and tutorials`: + https://docs.microsoft.com/en-us/cli/azure/overview?view=azure-cli-latest + +.. _`MS Azure Install Azure CLI tutorial`: + https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest + +.. _`Azure Resource Manager overview`: + https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-overview + +.. _Azure Partner Datasheet: + http://download.microsoft.com/download/D/9/E/D9E22342-96D9-4455-BB15-99A1AF514DDD/Microsoft%20Azure%20Partner%20Datasheet%20-%20Intel%20Clear%20Linux.pdf + +.. _Azure Partner Mini Case Study: + http://download.microsoft.com/download/D/9/E/D9E22342-96D9-4455-BB15-99A1AF514DDD/Microsoft%20Azure%20Partner%20Mini%20Case%20Study%20-%20Intel%20Clear%20Linux.pdf diff --git a/zh_CN/_sources/get-started/cloud-install/gce.rst.txt b/zh_CN/_sources/get-started/cloud-install/gce.rst.txt new file mode 100644 index 000000000..85c583cf0 --- /dev/null +++ b/zh_CN/_sources/get-started/cloud-install/gce.rst.txt @@ -0,0 +1,267 @@ +.. _gce: + +|CL-ATTR| on Google Cloud Platform\* +#################################### + +This page explains the steps to create a virtual machine instance of +|CL-ATTR| on `Google Cloud Platform`_ (:abbr:`GCP (Google Cloud Platform)`). + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* Set up a Google account and a GCP billing account. + +* Generate and install a user SSH key in the Linux PCs that will connect to + the VMs in GCP. + +Setup |CL| VM on GCP +******************** + +#. Sign in to your Google\* account on the + `Google Cloud Console `_: + + .. figure:: /_figures/gce/00-sign-in.png + :scale: 50 % + :alt: Sign in to Google services + + Figure 1: Google sign in screen + +#. Google Cloud Platform uses **Projects** to manage resources. + Select or create a new project for hosting the |CL| VM. + + .. note:: + + Refer to the + `Quickstart Using a Linux VM `_ + guide to learn about the process of creating VM instances on GCP. + +#. Navigate to the latest |CL| + `release folder `_ + to view the currently released :abbr:`GCE (Google Compute Engine\*)` + image, and download the :file:`clear--gce.tar.gz` + image archive. + + You don't need to uncompress the image archive, the intact file will + be uploaded to the Google Cloud Storage later. + +#. Create a *Storage Bucket* for hosting the |CL| image source archive + downloaded in the previous step: + + * Click the :guilabel:`Navigation menu` icon on the upper left screen menu. + + * Select the :menuselection:`Storage` item from the sidebar on the left. + You will be sent to the Storage Browser tool or the Cloud Storage + overview page. + + .. figure:: /_figures/gce/01-cloud-storage.png + :scale: 50 % + :alt: Browse Google Cloud Storage + + Figure 2: Browse Google Cloud Storage + + .. note:: + You may need to create a billing account and link to this project + before you create a bucket. + + .. figure:: /_figures/gce/02-storage-browser.png + :scale: 50 % + :alt: Cloud Storage Browser tool + + Figure 3: Cloud Storage Browser tool + + * Click the :guilabel:`CREATE BUCKET` button to enter the bucket creation tool. + The bucket name must be unique because buckets in the Cloud Storage share + a single global namespace. + + Leave the remaining options set to the defaults, and click the + :guilabel:`Create` button at the bottom to create a *Bucket*. + + .. figure:: /_figures/gce/03-create-bucket.png + :scale: 50 % + :alt: Set a unique bucket name + + Figure 4: Set bucket name + +#. Once the bucket is created, click the :guilabel:`Upload files` button + on the Bucket details page to upload the |CL| GCE image archive + to the named bucket: + + .. figure:: /_figures/gce/04-bucket-created.png + :scale: 50 % + :alt: Cloud Storage bucket is available for storing objects + + Figure 5: Cloud Storage bucket + + .. figure:: /_figures/gce/10-image-upload.png + :scale: 50 % + :alt: Uploading the image source archive file + + Figure 6: Uploading the image source archive file + + .. figure:: /_figures/gce/11-bucket-uploaded.png + :scale: 50 % + :alt: Image archive imported complete + + Figure 7: Importing complete + +#. Browse the Compute Engine Image library page: + + * Click the :guilabel:`Navigation menu` icon on the upper left screen menu. + + * Select the :menuselection:`Compute Engine --> Images` from the side bar + on the left. + + .. figure:: /_figures/gce/20-gce-image.png + :scale: 50 % + :alt: Go to Google Compute Engine Image library + + Figure 8: Image library + +#. On the Compute Engine Image library page, click the + :guilabel:`[+] CREATE IMAGE` menu item to create a custom image: + + .. figure:: /_figures/gce/20-image-library.png + :scale: 50 % + :alt: Create a Google Compute Engine image + + Figure 9: Create image + +#. In the VM image creation page, change the image source type to + *Cloud Storage file*. + +#. Under :guilabel:`Source`, select :guilabel:`Browse`. + +#. Locate the :file:`clear--gce.tar.gz` file, + and click :guilabel:`Select`. + + .. figure:: /_figures/gce/21-create-image.png + :scale: 50 % + :alt: Create the image using the imported image archive object + + Figure 10: Create image using imported object + + Accept all default options, and click the :guilabel:`Create` button + at the bottom to import the Clear Linux GCE image to the image library. + + .. figure:: /_figures/gce/22-image-list.png + :scale: 50 % + :alt: Clear Linux Compute Engine image is created + + Figure 11: Image is created + +#. After the |CL| image is imported, you can launch a VM instance running + |CL|: + + * Click the :guilabel:`Navigation menu` icon on the upper left screen menu. + + * Select :menuselection:`Compute Engine --> VM Instances` from the side bar + on the left. + + .. figure:: /_figures/gce/30-vm-instances.png + :scale: 50 % + :alt: Go to VM instances catalog + + Figure 12: VM instances catalog + +#. If no VM instance was created in this project, you will be prompted to + create one. + +#. Alternatively, click the :guilabel:`CREATE INSTANCE` button on the VM + instances page to create a VM instance. + + .. figure:: /_figures/gce/30-vm-none.png + :scale: 50 % + :alt: Prompt for VM creation + + Figure 13: VM creation + + .. figure:: /_figures/gce/30-vm-catalog.png + :scale: 50 % + :alt: List of VM instances + + Figure 14: VM instances list + + * Under :guilabel:`Region`, choose a region based on the + `Best practices for Compute Engine regions selection`_. + + * Under :guilabel:`Boot disk`, click the :guilabel:`Change` button. + + .. figure:: /_figures/gce/30-create-vm.png + :scale: 50 % + :alt: Use custom image while creating Clear Linux VM instance + + Figure 15: Use custom image + + * Select the :menuselection:`Custom images` tab for using Clear Linux OS GCE image. + + .. figure:: /_figures/gce/31-select-boot-disk.png + :scale: 50 % + :alt: Select Clear Linux boot disk to create a VM instance + + Figure 16: Select Clear Linux boot disk to create a VM instance + + * Scroll down to the bottom of the VM instance creation page, + expand the :guilabel:`Management, security, disks, networking, sole tenancy` + group. + + .. figure:: /_figures/gce/40-clear-vm-security.png + :scale: 50 % + :alt: Clear Linux requires setting up SSH keys + + Figure 17: Set up SSH keys + + .. note:: + |CL| does not allow SSH login with a root account by default. + As a result, you must configure the VM instance with your + SSH public key, so that you are able to access it remotely. + + Refer to :ref:`security` for more details. + + * Click the :menuselection:`Security` tab, copy and paste your SSH public key: + + .. figure:: /_figures/gce/40-ssh-key.png + :scale: 50 % + :alt: Set SSH key for remote login + + Figure 18: Set SSH key for remote login + + .. warning:: + + The username is assigned from characters preceding ``@`` in the email + address, included in the SSH key. The dot symbol "." is not allowed, + because it is an invalid character while creating user accounts in + |CL|. + + * Click the :guilabel:`Create` button to create the |CL| VM. + +#. The Clear Linux VM instance is created and assigned a public IP address: + + .. figure:: /_figures/gce/41-vm-created.png + :scale: 50 % + :alt: Clear Linux VM instance is created and started + + Figure 19: Clear Linux VM instance is created and started + +#. You can now SSH login to the VM using the IP address obtained in the + previous step, and the username associated with the SSH public key: + + .. figure:: /_figures/gce/42-ssh-vm.png + :scale: 50 % + :alt: SSH login to the Clear Linux VM + + Figure 20: SSH login to Clear Linux VM + +Related topics +************** + +* :ref:`azure` +* :ref:`aws-web` + + +.. _Google Cloud Platform: https://cloud.google.com/ + +.. _Best practices for Compute Engine regions selection: https://cloud.google.com/solutions/best-practices-compute-engine-region-selection diff --git a/zh_CN/_sources/get-started/cloud-install/qingcloud.rst.txt b/zh_CN/_sources/get-started/cloud-install/qingcloud.rst.txt new file mode 100644 index 000000000..befd121f5 --- /dev/null +++ b/zh_CN/_sources/get-started/cloud-install/qingcloud.rst.txt @@ -0,0 +1,235 @@ +.. _qingcloud: + +|CL-ATTR| on QingCloud\* (如何在青云 QingCloud 上创建 |CL| 虚拟主机) +######################################################################### + +本教程介绍如何通过青云 QingCloud\* 控制台创建和启动 |CL| 实例以及完成以下任务: + +#. 在 QingCloud 系统镜像中找到并选择 |CL| 操作系统。 +#. 创建新的公钥和私钥对,以便可以安全地连接到 |CL| 虚拟主机。 +#. 启动新的 |CL| 虚拟主机并连接到该主机。 +#. 删除 |CL| 虚拟主机。 + +.. contents:: + :local: + :depth: 1 + +必备条件 +************ + +本教程假定您已经完成了如下默认配置: + +* 您的环境可以运行 SSH 以访问远程 |CL| 虚拟主机。 +* 您知悉浏览器下载文件的绝对路径。 +* 您已设置了 QingCloud 的用户帐户,并确保该账户为启用状态,并且已登录到 QingCloud 控制台。 要了解有关青云和设置账户的更多信息,请访问青云官网,网址为 https://www.qingcloud.com/。 + +在 QingCloud 控制台中选择并启动 |CL| 虚拟主机 +********************************************** + +#. 在浏览器中在 QingCloud 控制台主菜单中,依次选择 **“计算”** 、 **“主机”**,之后点击图1中所示的 **“创建”** 选项。 + + .. figure:: /_figures/qingcloud/QingCloud-1.png + :scale: 50 % + :alt: QingCloud 控制台 + + 图1: QingCloud 控制台 + + 选择此选项后,页面将跳转到“创建主机”页面。 + +#. 在创建主机页面,先点击图2中所示的 **“系统”** 选项,再点击最右侧 **|CL|** 图标,并点击 **“下一步”** 按钮。 + + .. figure:: /_figures/qingcloud/QingCloud-2.png + :scale: 50 % + :alt: 选择 |CL| 创建虚拟主机 + + 图2: 选择 |CL| 创建虚拟主机 + + 之后,您将来到配置选择界面。 + +#. 在配置选择界面,您可以看到不同硬件配置类型的虚拟主机,比如调整 CPU 核心数量、内存大小以及硬盘和副本备份策略。这里我们将选择默认配置来进行接下来的演示。 + + .. figure:: /_figures/qingcloud/QingCloud-3.png + :scale: 50 % + :alt: 配置选择 + + 图3: 配置选择 + + 在点击 “下一步” 按钮之后,您将来到网络设置界面。 + +#. 在网络设置界面,您可以创建私有的 VPC 网络,也可以快速测试 |CL| 选择基础网络。 这里我们选择 **“基础网络”**。 + + .. figure:: /_figures/qingcloud/QingCloud-4.png + :scale: 50 % + :alt: 网络设置 + + 图4: 网络设置 + +#. 在基本信息设置界面,您需要输入虚拟主机名称,并设置 SSH 密钥登录方式。 + + #. 如果之前没有创建过 SSH 密钥,请点击图5中 **“创建一个”** 按钮以创建 SSH 密钥。 + + .. figure:: /_figures/qingcloud/QingCloud-6.png + :scale: 50 % + :alt: 创建SSH密钥 + + 图5: 创建SSH密钥 + + 在点击 “创建一个” 按钮之后,页面将跳转到 SSH 密钥创建界面。 + + #. 在 SSH 密钥创建界面中,您可以依照图6填写密钥的名称以便记忆,并且选择您需要的加密方法,确认无误后即可点击 **“提交”** 按钮。 + + .. figure:: /_figures/qingcloud/QingCloud-6.png + :scale: 50 % + :alt: 新建SSH密钥 + + 图6: 新建SSH密钥 + + 提交之后,将跳出密钥下载按钮。 + + #. 出现密钥下载按钮后,请在10分钟之内点击下载按钮完成密钥的下载,并将该密钥妥善保存到本地,以便之后连接虚拟主机使用。 + + .. figure:: /_figures/qingcloud/QingCloud-7.png + :scale: 50 % + :alt: 下载SSH密钥 + + 图7: 下载SSH密钥 + + 在关闭下载对话框之后,界面将跳转到之前的 “基本信息设置” 界面 + +#. 在确保 SSH 密钥已妥善下载保存的情况下,如图8检查虚拟主机的基本信息,确认无误后请点击 **“创建”** 按钮。 + + .. figure:: /_figures/qingcloud/QingCloud-8.png + :scale: 50 % + :alt: 确认信息并创建虚拟主机 + + 图8: 确认信息并创建虚拟主机 + + 确认后,QingCloud 将会创建 |CL| 虚拟主机,您可以在新的界面中查看当前虚拟主机的状态。 + + + +申请公网IP并添加到虚拟主机 +************************************ + +#. 由于 QingCloud 不会为使用默认网络创建的虚拟主机自动分配公网IP地址,所以我们需要手动申请,并添加到虚拟主机。如图9点击导航栏左侧的 **“网络与CDN”** 按钮。 + + .. figure:: /_figures/qingcloud/QingCloud-9.png + :scale: 50 % + :alt: 网络与CDN + + 图9: 网络与CDN + + 点击后,您将来到网络与CDN配置界面。 + +#. 在新页面中,如图10点击左侧 **“公网IP”** 按钮,并点击中间的 **“申请”** 按钮以进行创建公网IP。 + + .. figure:: /_figures/qingcloud/QingCloud-10.png + :scale: 50 % + :alt: 申请创建公网IP + + 图10: 申请创建公网IP + + 点击申请后,将跳出提示栏,仔细阅读后按照图11点击 **“继续申请公网IP”** 按钮。 + + .. figure:: /_figures/qingcloud/QingCloud-11.png + :scale: 50 % + :alt: 提示栏确认 + + 图11: 提示栏确认 + + 之后将跳转到申请公网IP界面。 + +#. 在申请公网IP页面中,如图12确认和填写相关信息,包括计费模式和带宽上限(本教程中使用的是流量计费模式并且设置了2Mbps的带宽上限),确认无误后点击 **“提交”** 按钮。 + + .. figure:: /_figures/qingcloud/QingCloud-13.png + :scale: 50 % + :alt: 确认提交公网IP申请 + + 图12: 确认提交公网IP申请 + +#. 之后如图13通过导航栏点击 **“计算”**、**“网卡”** 按钮来到网卡界面。 + + .. figure:: /_figures/qingcloud/QingCloud-13.png + :scale: 50 % + :alt: 网卡界面 + + 图13: 网卡界面 + +#. 在网卡界面,按照图14选中刚刚创建的 Clear Linux OS 主机的网卡,并点击上方 **“更多操作”** 按钮,再点击 **“绑定公网IPv4”** 按钮。 + + .. figure:: /_figures/qingcloud/QingCloud-14.png + :scale: 50 % + :alt: 绑定选中 + + 图14: 绑定选中 + +#. 在绑定公网IP确认界面,按照图15选择刚刚申请完成的公网IP地址,并点击下方 **“提交”** 按钮。 等待片刻后,状态将会变成图16中所示。 + + .. figure:: /_figures/qingcloud/QingCloud-15.png + :scale: 50 % + :alt: 提交绑定 + + 图15: 提交绑定 + + .. figure:: /_figures/qingcloud/QingCloud-16.png + :scale: 50 % + :alt: 公网IP绑定成功 + + 图16: 公网IP绑定成功 + + +连接到 |CL| 虚拟主机 +***************************** + +请您点击导航栏左侧 **“计算”**、**“主机”** 按钮,确认当前虚拟主机处于正在运行状态,且已绑定了公网IP地址。如图17所示。 + +.. figure:: /_figures/qingcloud/QingCloud-17.png + :scale: 50 % + :alt: 确认虚拟主机当前处于正常状态 + + 图17: 确认虚拟主机当前处于正常状态 + +#. 复制当前 |CL| 虚拟主机的公网IP地址,并使用 SSH 客户端进行连接。 这里我们需要用到之前保存的 SSH 密钥。 +#. 在此教程中,以 MobaXterm 客户端为例演示登录过程。请如图18检查各项。用户名我们选择 **root**,密钥请选择之前下载并保存到本地的 SSH 密钥。 + + .. figure:: /_figures/qingcloud/QingCloud-18.png + :scale: 50 % + :alt: SSH 登录虚拟主机设置 + + 图18: SSH 登录虚拟主机设置 + +#. 设置成功后,点击登录即可登录到 |CL| 虚拟主机。 + + .. figure:: /_figures/qingcloud/QingCloud-19.png + :scale: 50 % + :alt: SSH 登录成功 + + 图19: SSH 登录成功 + + +删除 |CL| 虚拟主机 +************************* + +本章节介绍如何在 QingCloud 上删除所创建的 |CL| 虚拟主机。 + +#. 通过左侧导航栏依次选择 **“计算”**、**“主机”** 后,找到刚刚创建的 Clear Linux OS 主机,如图20所示选中此主机,再点击上方 **“更多操作”** 按钮选择 **“删除”**,即可删除虚拟主机。 + + .. figure:: /_figures/qingcloud/QingCloud-20.png + :scale: 50 % + :alt: |CL| 虚拟主机 + + 图20: 删除 |CL| 虚拟主机 + + +删除申请的公网IP +***************** + +本章节介绍如何在 QingCloud 上删除所申请的公网IP地址。 + +#. 通过左侧导航栏依次选择 **“网络与CDN”**、**“公网IP”** 后,找到刚刚申请的公网IP地址,如图21所示选中此项目,再点击上方 **“更多操作”** 按钮选择 **“删除”**,即可删除。 + + .. figure:: /_figures/qingcloud/QingCloud-21.png + :scale: 50 % + :alt: 删除公网IP地址 + + 图21: 删除公网IP地址 \ No newline at end of file diff --git a/zh_CN/_sources/get-started/compatibility-check.rst.txt b/zh_CN/_sources/get-started/compatibility-check.rst.txt new file mode 100644 index 000000000..ff17e55e3 --- /dev/null +++ b/zh_CN/_sources/get-started/compatibility-check.rst.txt @@ -0,0 +1,68 @@ +.. _compatibility-check: + +Check processor and EFI firmware compatibility +############################################## + +Before installing |CL-ATTR|, check your host system's processor and EFI firmware +compatibility. To check compatibilty, choose one of the following paths: + +* From a system with a Linux\* OS installed, follow the instructions to :ref:`check-compatibility-steps`. + +* From a non-Linux OS, first :ref:`bare-metal-install-desktop` and then follow + the instructions to :ref:`check-compatibility-steps`. + +.. note:: + This does not check other system components (for example: storage and + graphics) for compatibility with |CL|. + +.. _check-compatibility-steps: + +Check compatibility +******************* + +#. Download the `clear-linux-check-config.sh`_ file. + + If a browser is not available, use: + + .. code-block:: console + + curl -O https://cdn.download.clearlinux.org/current/clear-linux-check-config.sh + +#. Make the script executable. + + .. code-block:: console + + chmod +x clear-linux-check-config.sh + +#. Run the script. + + #. Check to see if the host's processor and EFI firmware is capable of + running |CL|. + + .. code-block:: console + + ./clear-linux-check-config.sh host + + #. Check to see if the host is capable of running |CL| in a container. + + .. code-block:: console + + ./clear-linux-check-config.sh container + + The script prints a list of test results similar to the output below. + All items should return a `SUCCESS` status. This example indicates the + host's processor and EFI firmware support running |CL|. + + .. code-block:: console + + Checking if host is capable of running Clear Linux* OS + + SUCCESS: 64-bit CPU (lm) + SUCCESS: Supplemental Streaming SIMD Extensions 3 (ssse3) + SUCCESS: Streaming SIMD Extension v4.1 (sse4_1) + SUCCESS: Streaming SIMD Extensions v4.2 (sse4_2) + SUCCESS: Advanced Encryption Standard instruction set (aes) + SUCCESS: Carry-less Multiplication extensions (pclmulqdq) + SUCCESS: EFI Firmware + +.. _clear-linux-check-config.sh: https://cdn.download.clearlinux.org/current/clear-linux-check-config.sh diff --git a/zh_CN/_sources/get-started/index.rst.txt b/zh_CN/_sources/get-started/index.rst.txt new file mode 100644 index 000000000..aa365df7e --- /dev/null +++ b/zh_CN/_sources/get-started/index.rst.txt @@ -0,0 +1,58 @@ +.. _get-started: + +Get started +########### + +The Get Started section guides you through the requirements and installation of +|CL-ATTR|. Follow these step-by-step intructions to get started with |CL|, fast. + +Pre-install +*********** + +There are a couple of things to take care of before you install. + +* :ref:`system-requirements` +* :ref:`compatibility-check` +* :ref:`bootable-usb` + +When installing |CL-ATTR| in a VM, consider which kernel to use. + +* :ref:`Compatible VM kernels ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + compatibility-check + bootable-usb + +Install +******* + +.. toctree:: + :maxdepth: 1 + + bare-metal-install-desktop + bare-metal-install-server + install-configfile + +.. _virtual-machine-install: + +Install in a virtual machine +**************************** + +.. toctree:: + :maxdepth: 1 + :glob: + + virtual-machine-install/* + ../../guides/maintenance/increase-virtual-disk-size.rst + +Deploy to the cloud +******************** + +.. toctree:: + :maxdepth: 1 + :glob: + + cloud-install/* \ No newline at end of file diff --git a/zh_CN/_sources/get-started/install-configfile.rst.txt b/zh_CN/_sources/get-started/install-configfile.rst.txt new file mode 100644 index 000000000..60a1bf753 --- /dev/null +++ b/zh_CN/_sources/get-started/install-configfile.rst.txt @@ -0,0 +1,192 @@ +.. _install-configfile: + +Install using clr-installer and a configuration file +#################################################### + +This page explains how to install |CL-ATTR| using the clr-installer tool +with a configuration file. The configuration file (:file:`clr-installer.yaml`) +can be reused to duplicate the same installation configuration on additional +machines. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +Ensure that your target system supports the installation: + +* :ref:`system-requirements` +* :ref:`compatibility-check` + +Process +******* + +This guide describes two methods for using a configuration file with the +clr-installer tool. You can use either method to achieve the same goal. Choose +the method that works best for your setup. + +If you are installing |CL| for the first time, we recommend Example 1. + +To clone an existing |CL| setup on another system, we recommend Example 2. + +Example 1 +========= + +This method uses a configuration file template to perform a new installation. + +Perform the following steps: + +#. Go to `Downloads`_ and download the latest Clear Linux OS Server image. + + For example: + https://download.clearlinux.org/releases/30010/clear/clear-30010-live-server.iso.xz + +#. Follow the instructions to :ref:`bootable-usb` based on your OS. + +#. Boot up the USB thumb drive. +#. Select :guilabel:`Clear Linux OS` from the menu. +#. In the console window, log in as root and set a password. +#. Verify you have a network connection to the Internet and configure proxy + settings if you're working behind a firewall. +#. Download a :file:`live-server.yaml` template. + + For example: + + .. code-block:: bash + + curl -O https://download.clearlinux.org/releases/30010/clear/config/image/live-server.yaml + +#. Edit the template and change the settings as needed. + + Commonly-changed settings include: + +.. _install-configfile-yaml-begin: + + #. Under *block-devices*, set “file: "/dev/sda"” or enter your preferred device. + #. Under *targetMedia*, set the third partition size to “0” to use the entire disk space. + #. Under *bundles*, add additional bundles as needed. + #. Delete the *post-install* section unless you have post-installation scripts. + #. Under *Version*, set a version number. To use the latest version, set to “0”. + + Commonly-changed settings are shown in lines 15, 34, 37, and 51 below. + See `Installer YAML Syntax`_ for more details. + + .. code-block:: bash + :linenos: + :emphasize-lines: 14,15,34,37,51 + + #clear-linux-config + + # c-basic-offset: 2; tab-width: 2; indent-tabs-mode: nil + # vi: set shiftwidth=2 tabstop=2 expandtab: + # :indentSize=2:tabSize=2:noTabs=true: + + # File: developer-live-server.yaml + # Use Case: Live Image which boots into login prompt + # Optionally allows for installing Clear Linux OS + # using the TUI clr-installer by running clr-installer + + # switch between aliases if you want to install to an actual block device + # i.e /dev/sda + block-devices: [ + {name: "bdevice", file: "/dev/sda"} + ] + + targetMedia: + - name: ${bdevice} + type: disk + children: + - name: ${bdevice}1 + fstype: vfat + mountpoint: /boot + size: "150M" + type: part + - name: ${bdevice}2 + fstype: swap + size: "32M" + type: part + - name: ${bdevice}3 + fstype: ext4 + mountpoint: / + size: "0" + type: part + + bundles: [os-core, os-core-update, NetworkManager, clr-installer, vim] + + autoUpdate: false + postArchive: false + postReboot: false + telemetry: false + iso: true + keepImage: true + autoUpdate: false + + keyboard: us + language: en_US.UTF-8 + kernel: kernel-native + + version: 30010 + +.. _install-configfile-yaml-end: + +Start the installation with the command: + +.. code-block:: bash + + clr-installer --config live-server.yaml + +Example 2 +========= + +This method uses a saved configuration file from a previous installation, +which you can use to easily duplicate the installation on additional machines. + +Perform the following steps: + +#. Open a console window on a system where |CL| was installed to retrieve a + copy of the configuration file. + +#. In the console window, log in as root and enter your password. + +#. Change directory to :file:`/root` and copy the :file:`clr-installer.yaml` + file to a USB thumb drive. + + .. code-block:: bash + + cd /root + cp clr-installer.yaml + +Start the installation on the target with the following steps: + +#. Go to `Downloads`_ and download the latest Clear Linux OS Server image. + + For example: + https://download.clearlinux.org/releases/30010/clear/clear-30010-live-server.iso.xz + +#. Follow the instructions to :ref:`bootable-usb` based on your OS. + +#. Boot up the USB thumb drive. +#. Select :guilabel:`Clear Linux OS` from the menu. +#. In the console window, log in as root and set a password. +#. Verify you have a network connection to the Internet and configure proxy + settings if you're working behind a firewall. +#. Plug in and mount the USB thumb drive containing the retrieved + :file:`clr-installer.yaml` configuration file. +#. Start the installation with the command: + + .. code-block:: bash + + clr-installer --config clr-installer.yaml + +References +********** + +* `Clear Linux Installer`_ +* `Installer YAML Syntax`_ + +.. _Downloads: https://clearlinux.org/downloads +.. _Clear Linux Installer: https://github.com/clearlinux/clr-installer + +.. _Installer YAML Syntax: https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md \ No newline at end of file diff --git a/zh_CN/_sources/get-started/virtual-machine-install/hyper-v.rst.txt b/zh_CN/_sources/get-started/virtual-machine-install/hyper-v.rst.txt new file mode 100644 index 000000000..db8548c7b --- /dev/null +++ b/zh_CN/_sources/get-started/virtual-machine-install/hyper-v.rst.txt @@ -0,0 +1,68 @@ +.. _hyper-v: + +|CL-ATTR| on Microsoft Hyper-V\* +################################ + +This page explains how to run |CL-ATTR| inside a +`Windows Server Virtualization`_\* or **Hyper-V** environment. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* Enable `Intel® Virtualization Technology`_ (Intel® VT) + +* Enable `Intel® Virtualization Technology for Directed I/O`_ (Intel® VT-d) in + your BIOS/UEFI firmware configuration. + +Enable Hyper-V +************** + +Please refer to `Install Hyper-V on Windows 10`_ to enable and configure +*Hyper-V* on your machine. + +Create a virtual network +************************ + +Once *Hyper-V* has been enabled on your Windows system, you will need to +create a virtual network in the **Hyper-V Manager**. Refer to the +`Create a virtual network`_ documentation to create and configure +a virtual network. + +Create a virtual machine +************************ + +#. Download and decompress the latest hyperv disk image + :file:`clear-XXXXX-hyperv.img.gz`, where XXXXX is the latest + available version of |CL| from our `Downloads`_ page. + +#. Create a virtual machine using the **Hyper-V Manager**: + + a. Choose **Generation 2** when prompted to *specify VM generation*. + b. Choose **Use an existing virtual hard disk** and browse to find the + :file:`clear-XXXX-hyperv.vhdx` file. + c. When finished, open VM settings, select Firmware Section and in Secure + Boot config, **uncheck** Enable Secure Boot. + + .. note:: Currently, |CL| does not boot with `secure boot` + enabled. + +#. Connect to your new VM and start it. You should see a prompt: + + .. code-block:: console + + > User: root + +#. Set a root user password. + +Your virtual machine running |CL| is ready! + +.. _Windows Server Virtualization: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/about/ +.. _Install Hyper-V on Windows 10: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v +.. _Create a virtual network: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/connect-to-network +.. _Downloads: https://cdn.download.clearlinux.org/image/ +.. _`Intel® Virtualization Technology`: http://www.intel.com/content/www/us/en/virtualization/virtualization-technology/intel-virtualization-technology.html +.. _`Intel® Virtualization Technology for Directed I/O`: https://software.intel.com/en-us/articles/intel-virtualization-technology-for-directed-io-vt-d-enhancing-intel-platforms-for-efficient-virtualization-of-io-devices diff --git a/zh_CN/_sources/get-started/virtual-machine-install/kvm.rst.txt b/zh_CN/_sources/get-started/virtual-machine-install/kvm.rst.txt new file mode 100644 index 000000000..3e68f0b7f --- /dev/null +++ b/zh_CN/_sources/get-started/virtual-machine-install/kvm.rst.txt @@ -0,0 +1,253 @@ +.. _kvm: + +|CL-ATTR| on KVM +################ + +This page explains how to run |CL-ATTR| in a virtualized environment using +:abbr:`KVM (Kernel-based Virtual Machine)`. + +.. contents:: + :local: + :depth: 1 + +Install QEMU-KVM +**************** + +#. Enable the `Intel® Virtualization Technology`_ (Intel® VT) and the + `Intel® Virtualization Technology for Directed I/O`_ (Intel® VT-d) in the + host machine’s BIOS. + +#. Log in and open a terminal emulator. + +#. Install `QEMU*-KVM` on the host machine. Below are some example distros. + + * On |CL|: + + .. code-block:: bash + + sudo swupd bundle-add kvm-host + + * On Ubuntu\* 18.04 LTS Desktop: + + .. code-block:: bash + + sudo apt-get install qemu-kvm + + * On Mint\* 19.1 “Cinnamon” Desktop: + + .. code-block:: bash + + sudo apt-get install qemu-kvm + + * On Fedora\* 30 Workstation: + + .. code-block:: bash + + sudo dnf install qemu-kvm + +Download and launch the virtual machine +*************************************** + +#. Download the latest pre-built |CL| KVM image file from + the `image `_ directory. Look for + ``clear--kvm.img.xz``. You can also use this command: + + .. code-block:: bash + + curl -O https://cdn.download.clearlinux.org/image/$(curl https://cdn.download.clearlinux.org/image/latest-images | grep '[0-9]'-kvm'\.') + +#. Uncompress the downloaded image: + + .. code-block:: bash + + unxz -v clear--kvm.img.xz + +#. Download the 3 OVMF files (`OVMF.fd`, `OVMF_CODE.fd`, `OVMF_VARS.fd`) that + provides UEFI support for virtual machines. + + .. code-block:: bash + + curl -O https://cdn.download.clearlinux.org/image/OVMF.fd + curl -O https://cdn.download.clearlinux.org/image/OVMF_CODE.fd + curl -O https://cdn.download.clearlinux.org/image/OVMF_VARS.fd + + .. note:: + + The default OVMF files from |CL| may not work for some distro version(s). + You may get an `ASSERT` in the `debug.log` file when starting the VM. + If that is the case, use the distro-specific-OVMF files instead. + For example, the |CL| OVMF files work for Ubuntu 18.04 LTS, but not for Ubuntu 19.04 LTS. + Installing and using the OVMF files for Ubuntu 19.04 LTS resolved the `ASSERT` issue. + +#. Download the `start_qemu.sh`_ script from the + `image `_ directory. This script + will launch the |CL| VM and provide console interaction within the same + terminal emulator window. + + .. code-block:: bash + + curl -O https://cdn.download.clearlinux.org/image/start_qemu.sh + +#. Make the script executable: + + .. code-block:: bash + + chmod +x start_qemu.sh + +#. Start the |CL| KVM virtual machine: + + .. code-block:: bash + + sudo ./start_qemu.sh clear--kvm.img + +#. Log in as ``root`` user and set a new password. + +SSH access into the virtual machine +*********************************** + +To interact with the |CL| VM through SSH instead of the console it was +launched from, follow these steps. + +#. Configure SSH in the |CL| VM to allow root login: + + .. code-block:: bash + + cat > /etc/ssh/sshd_config << EOF + PermitRootLogin yes + EOF + +#. Enable and start SSH server in the |CL| VM: + + .. code-block:: bash + + systemctl enable sshd + systemctl start sshd + +#. Determine the IP address of the host on which you will launch the VM. + Substitute in the next step with this information. + + .. code-block:: bash + + ip a + +#. SSH into the |CL| VM using the default port of `10022`: + + .. code-block:: bash + + ssh -p 10022 root@ + +Optional: Add the GNOME Display Manager (GDM) +********************************************* + +To add :abbr:`GDM (GNOME Display Manager)` to the |CL| VM, follow these steps: + +#. Shutdown the active |CL| VM. + + .. code-block:: bash + + poweroff + +#. Install the Spice viewer on the local host or remote system. Below are some + example distros. + + * On Clear Linux: + + .. code-block:: bash + + sudo swupd bundle-add virt-viewer + + * On Ubuntu\* 18.04 LTS Desktop: + + .. code-block:: bash + + sudo apt-get install virt-viewer + + * On Mint\* 19.1 “Cinnamon” Desktop: + + .. code-block:: bash + + sudo apt-get install virt-viewer + + * On Fedora\* 30 Workstation: + + .. code-block:: bash + + sudo dnf install virt-viewer + +#. Modify the :file:`start_qemu.sh` script to increase memory (`-m`), add + graphics driver (`-vga`), and add Spice (`-spice`, `-usb`, and + `-device`) support. + + .. code-block:: console + + qemu-system-x86_64 \ + -enable-kvm \ + ${UEFI_BIOS} \ + -smp sockets=1,cpus=4,cores=2 -cpu host \ + -m 4096 \ + -vga qxl \ + -nographic \ + -spice port=5924,disable-ticketing \ + -usb \ + -device usb-tablet,bus=usb-bus.0 \ + -drive file="$IMAGE",if=virtio,aio=threads,format=raw \ + -netdev user,id=mynet0,hostfwd=tcp::${VMN}0022-:22,hostfwd=tcp::${VMN}2375-:2375 \ + -device virtio-net-pci,netdev=mynet0 \ + -debugcon file:debug.log -global isa-debugcon.iobase=0x402 $@ + +#. Due to changes in the :file:`start_qemu.sh` script from the previous step, + using the same OVMF files will result in the VM not booting properly and + you end up in the the UEFI shell. The easiest way to avoid this is to delete + the OVMF files and restore the originals before relaunching the VM. + +#. Increase the size of the VM by 10GB to accommodate the GDM installation: + + .. code-block:: bash + + qemu-img resize -f raw clear--kvm.img +10G + +#. Relaunch the |CL| VM: + + .. code-block:: bash + + sudo ./start_qemu.sh clear--kvm.img + +#. Determine the IP address of the host on which you will launch the VM. + Substitute in the next step with this information. + + .. code-block:: bash + + ip a + +#. From the local host or remote system, open a new terminal emulator window + and connect into the |CL| VM using the Spice viewer: + + .. code-block:: bash + + remote-viewer spice://:5924 + +#. Log in as `root` user into the |CL| VM. + +#. Follow these steps from :ref:`increase-virtual-disk-size` to resize the partition of the virtual disk of the VM. + +#. Add GDM to the |CL| VM: + + .. code-block:: bash + + swupd bundle-add desktop-autostart + +#. Reboot the |CL| VM to start GDM: + + .. code-block:: bash + + reboot + +#. Go through the GDM out-of-box experience (OOBE). + +#. The default aspect ratio of the GDM GUI for the |CL| VM is 4:3. To change + it, use GDM's `Devices > Displays` setting tool (located at the top-right corner). + + +.. _Intel® Virtualization Technology: https://www.intel.com/content/www/us/en/virtualization/virtualization-technology/intel-virtualization-technology.html +.. _Intel® Virtualization Technology for Directed I/O: https://software.intel.com/en-us/articles/intel-virtualization-technology-for-directed-io-vt-d-enhancing-intel-platforms-for-efficient-virtualization-of-io-devices +.. _start_qemu.sh: https://cdn.download.clearlinux.org/image/start_qemu.sh diff --git a/zh_CN/_sources/get-started/virtual-machine-install/virtualbox-cl-installer.rst.txt b/zh_CN/_sources/get-started/virtual-machine-install/virtualbox-cl-installer.rst.txt new file mode 100644 index 000000000..a6aaa6bb4 --- /dev/null +++ b/zh_CN/_sources/get-started/virtual-machine-install/virtualbox-cl-installer.rst.txt @@ -0,0 +1,404 @@ +.. _virtualbox-cl-installer: + +|CL-ATTR| on VirtualBox\* +######################### + +This page explains how to create a virtual machine on the `VirtualBox`_ +hypervisor with |CL-ATTR| as the guest operating system. These instructions +support the |CL| live-server installer to create the |CL| virtual machine (VM). + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +#. Enable virtualization, such as `Intel® Virtualization Technology `_ + (Intel® VT), on the host system from EFI/BIOS. + +#. Download and install |VB| **version 6.0 or later** from + `VirtualBox`_ using the `VirtualBox Installation Instructions`_ for your + platform. + +Download and extract the |CL| installer ISO +******************************************* + +#. Download the :file:`clear--live-server.iso.xz` of + |CL| on the `Downloads`_ page. + +#. Validate the integrity of the downloaded image by checking the file hash + and signatures. Refer to :ref:`validate-signatures` for detailed steps. + +#. Decompress the downloaded image. + + - On Windows, you can use `7zip`_ to extract the file by right-clicking the + file to *Extract Here* (in the same directory) + + .. figure:: figures/vbox/virtualbox-cl-installer-01.png + :scale: 100% + :alt: 7zip extract here command + + Figure 1: 7zip extract here command + + - On Linux : + + .. code-block:: bash + + xz -d clear--live-server.iso.xz + +#. Delete the originally downloaded compressed file. + +Create a new |VB| virtual machine +********************************* + +A new :abbr:`VM (Virtual Machine)` needs to be created in |VBM| where |CL| +will be installed. General instructions for creating a virtual machine and +details about using different settings are available in the VirtualBox manual section `Creating Your First Virtual Machine`_. + +#. Launch the |VBM| from your host system. + +#. Click the :guilabel:`New` button to create a new VM. + +#. Choose :guilabel:`Expert mode`. + +#. On the :guilabel:`Create Virtual Machine` screen, enter the following settings: + + - **Name**: Choose name (e.g. ClearLinuxOS-VM). + - **Type**: Linux + - **Version**: **Linux 2.6 / 3.x / 4.x (64-bit)** + - **Hard disk**: `Create a virtual hard disk now` + - **Memory size default**: 2048 MB (Adjust appropriately.) + + .. note:: + Later, if you want to change the amount of RAM allocated, power down your VM. Return to :file:`Settings > System` and change + :guilabel:`Base Memory` to the desired size. + + .. figure:: figures/vbox/virtualbox-cl-installer-02.png + :scale: 100% + :alt: Create Virtual Machine + + Figure 2: Create Virtual Machine + +#. Click :guilabel:`Create`. + +#. On the :guilabel:`Create Virtual Hard Disk` screen, select: + + - **File location** + - **File size**: **32.00 GB**. Adjust size to your needs. + - **Hard disk file type**: `VDI (VirtualBox Disk Image)` + - **Storage on physical hard disk**: `Dynamically allocated` + + .. figure:: figures/vbox/virtualbox-cl-installer-03.png + :scale: 100% + :alt: Create Virtual Hard Disk + + Figure 3: Create Virtual Hard Disk + +#. Click :guilabel:`Create`. + + A new virtual machine will be created and appear in the |VBM|. + +#. Click :guilabel:`Settings` to configure the |CL| VM. + +#. In the left-hand menu, navigate to the :menuselection:`System` menu. + +#. On the :guilabel:`Motherboard` tab, select the :guilabel:`Chipset` menu, and + then select :menuselection:`ICH9`. See Figure 4. + + .. note:: + + You can select which chipset will be presented to the virtual machine. + Consult the `VM VirtualBox User Manual`_ for more details. + +#. In :guilabel:`Enabled Features`, check these boxes: + + - **Enable I/O APIC** + - **Enable EFI (special OSes only)** + + .. figure:: figures/vbox/virtualbox-cl-installer-04.png + :scale: 100% + :alt: Settings > System + + Figure 4: Settings > System + + .. note:: + + By default, only 1 virtual CPU is allocated to the new VM. Consider + increasing the number of virtual processors allocated to the virtual + machine under Settings > System > Processor for increased + performance. + +#. Click :guilabel:`OK`. + +Install |CL| on the |VB| VM +*************************** + +|CL| is ready to be installed. + +Mount the installation ISO +========================== + +The |CL| installer ISO needs to be mounted as a virtual CD-ROM on the VM +before powering the VM on. + +#. From the *ClearLinux-OS* :guilabel:`Settings` menu at left, select + :guilabel:`Storage`. + +#. From :guilabel:`Storage Devices`, middle column, click the blue + disk labeled :guilabel:`Empty`. + +#. From the :guilabel:`Attributes` menu, click the blue CD disk next to + the :guilabel:`Optical Drive` drop down menu and click + :guilabel:`Choose Virtual Optical Disk File...` + + .. figure:: figures/vbox/virtualbox-cl-installer-05.png + :scale: 100% + :alt: Choose Virtual Optical Disk Drive + + Figure 5: Choose Virtual Optical Disk Drive + +#. Where there appears :guilabel:`Please choose a virtual optical disk file`, + select the ISO file and click *Open*. + + .. figure:: figures/vbox/virtualbox-cl-installer-06.png + :scale: 100% + :alt: Mounting an ISO + + Figure 6: Mounting an ISO + +#. Click :guilabel:`OK` to exit and return to the main |VBM|. + +Install |CL| with live-server installer +======================================= + +#. In the |VBM|, select virtual machine you created and click :guilabel:`Start`. + + .. figure:: figures/vbox/virtualbox-cl-installer-07.png + :scale: 100% + :alt: Start the installer + + Figure 7: Start the installer + + .. note:: + + To release the mouse cursor from the VM console window, press the right + :kbd:`Ctrl` key on the keyboard. + +#. When :guilabel:`Clear Linux Installer` in boot manager appears, + select :kbd:`Enter`. Do not install the bundle `desktop-autostart`. + +#. Follow the steps in :ref:`bare-metal-install-server` to + install |CL| onto the VM virtual disk. Note: + + #. In :guilabel:`Configure Installation Media`, navigate top + VBOX HARDDISK, and then select :guilabel:`Confirm`. + + #. In :menuselection:`Advanced options --> Manage User`, create an + administrative user. + + #. Do not install the bundle `desktop-autostart`. + +#. When |CL| installation is complete, click :guilabel:`Exit`. + +#. At the prompt, enter: + + .. code-block:: bash + + shutdown now + +Unmount the ISO +=============== + +The |CL| installer ISO needs to be unmounted to allow the VM to boot from the +virtual hard disk. + +#. Return to the |VBM|. + +#. Click :guilabel:`Settings` to configure the |CL| VM. + +#. From the VM :guilabel:`Settings` window, navigate to the :guilabel:`Storage` + pane in the left menu. + +#. From the middle :guilabel:`Storage Devices` column, click the blue CD disk + labeled :guilabel:`clear--live-server.iso` under the + :guilabel:`Controller: IDE`. + +#. From the :guilabel:`Attributes` column on the right, in :guilabel:`Optical Drive`, + select the blue CD icon beside and click + :guilabel:`Remove Disk from Virtual Drive`. + + .. figure:: figures/vbox/virtualbox-cl-installer-08.png + :scale: 100% + :alt: Remove Disk from Virtual Drive + + Figure 8: Remove Disk from Virtual Drive + +#. Click :guilabel:`OK` to exit the :guilabel:`VM Settings` menu and return to + the main |VBM|. + +Install |VB| Linux Guest Additions +================================== + +|CL| provides Linux Guest Additions drivers for full compatibility using an +install script in the **kernel-lts** (Long Term Support) bundle by |CL|. + +#. From the |VBM| select the |CL| VM, and select :guilabel:`Start`. + +#. In the VM Console, log in as the administrative user previously created. + + .. note:: + A message may appear: "A kernel update is available: you may wish + to reboot the system." + + To update the kernel, enter: + + .. code-block:: bash + + sudo reboot + + At initial login, enter the administrative user's password and continue. + +#. Validate the installed kernel is **kernel-lts** by checking the output + of the :command:`uname -r` command. It should end in **.lts** or **.lts2018**. + + .. code-block:: bash + + uname -r + .lts + + If the running kernel is not **lts**: install the LTS kernel manually, + update the bootloader, and check again: + + .. code-block:: bash + + sudo swupd bundle-add kernel-lts + clr-boot-manager set-kernel $(basename $(realpath /usr/lib/kernel/default-lts)) + clr-boot-manager update + reboot + +#. Remove any kernel bundles that do not end in *-lts* or *kernel-install* + to simplify and avoid conflicts: + + .. code-block:: bash + + sudo swupd bundle-list | grep kernel + sudo swupd bundle-remove + +#. In the VM Console top menu, click :guilabel:`Devices`, and select + :guilabel:`Insert Guest Additions CD image...` to mount the |VB| driver + installation to the |CL| VM. + + .. figure:: figures/vbox/virtualbox-cl-installer-09.png + :scale: 100% + :alt: Insert Guest Additions CD image + + Figure 9: Insert Guest Additions CD image + +#. If a dialogue appears, "VBx_GAs_6.0.8... Would you like to run it?", + select :guilabel:`Cancel`. + + Instead, we provide a script to patch and install |VB| drivers on |CL|. + +#. Open a Terminal and enter the script: + + .. code-block:: bash + + sudo install-vbox-lga + + .. note:: + + Successful installation shows: "Guest Additions installation complete". + If drivers are already installed, don't re-install them. + +#. Shut down the system. Select :menuselection:`Machine --> ACPI Shutdown`. + + .. figure:: figures/vbox/virtualbox-cl-installer-10.png + :scale: 100% + :alt: Powering off a VirtualBox VM + + Figure 10: Powering off a VirtualBox VM + +#. Select :guilabel:`Settings`, :guilabel:`Display`. + +#. In :guilabel:`Graphics Controller`, select :guilabel:`VBoxSVGA` + to adjust screen size dynamically. + + .. figure:: figures/vbox/virtualbox-cl-installer-11.png + :scale: 100% + :alt: Remove Disk from Virtual Drive + + Figure 11: VirtualBox hardware acceleration error + +#. In the |VBM|, select :guilabel:`Start`. + +#. In the VM console, login and verify the |VB| drivers are loaded: + + .. code-block:: bash + + lsmod | grep ^vbox + + You should see drivers loaded with names beginning with **vbox**: + (e.g., vboxvideo, vboxguest). + +#. Add `desktop-autostart` for a full desktop experience. + + .. code-block:: bash + + sudo swupd bundle-add desktop-autostart + +#. Reboot the VM and log in with the administrative user. + + .. code-block:: bash + + sudo reboot + +The |CL| VM running on |VB| is ready to develop and explore. + +Troubleshooting +*************** + +#. **Problem:** On a Microsoft\* Windows\* OS, |VB| encounters an error when + trying to start a VM indicating *VT-X/AMD-v hardware acceleration is not + available on your system.* + + .. figure:: figures/vbox/virtualbox-cl-installer-12.png + :scale: 100% + :alt: Remove Disk from Virtual Drive + + Figure 12: VirtualBox hardware acceleration error + + **Solution:** First, double check the `Prerequisites`_ section to make + sure *Hardware accelerated virtualization* extensions have been enabled + in the host system's EFI/BIOS. + + *Hardware accelerated virtualization*, may get disabled for |VB| when + another hypervisor, such as *Hyper-V* is enabled. + + To disable *Hyper-V* execute this command in an + **Administrator: Command Prompt or Powershell**, and reboot the system: + + .. code-block:: bash + + bcdedit /set {current} hypervisorlaunchtype off + + To enable Hyper-V again, execute this command in an + **Administrator: Command Prompt or Powershell**, and reboot the system: + + .. code-block:: bash + + bcdedit /set {current} hypervisorlaunchtype Auto + +.. _VirtualBox Installation Instructions: https://www.virtualbox.org/manual/ch02.html + +.. _VirtualBox: https://www.virtualbox.org + +.. _Downloads: https://clearlinux.org/downloads + +.. _`Creating Your First Virtual Machine`: https://www.virtualbox.org/manual/UserManual.html#gui-createvm + +.. _7zip: http://www.7-zip.org/ + +.. _Intel® Virtualization Technology: https://www.intel.com/content/www/us/en/virtualization/virtualization-technology/intel-virtualization-technology.html + +.. _VM VirtualBox User Manual: https://docs.oracle.com/cd/E97728_01/E97727/html/settings-system.html \ No newline at end of file diff --git a/zh_CN/_sources/get-started/virtual-machine-install/vmw-player-preconf.rst.txt b/zh_CN/_sources/get-started/virtual-machine-install/vmw-player-preconf.rst.txt new file mode 100644 index 000000000..8420e7df4 --- /dev/null +++ b/zh_CN/_sources/get-started/virtual-machine-install/vmw-player-preconf.rst.txt @@ -0,0 +1,308 @@ +.. _vmw-player-preconf: + +|CL-ATTR| on VMware\* Workstation Player (pre-configured image) +############################################################### + +This page explains how to deploy a pre-configured |CL| VMware image on +`VMware Workstation 14 Player`_. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +VMware Workstation 14 Player is a type 2 hypervisor. For example, it runs on +top of Windows\* or Linux\* operating system. With VMware ESXi, you +can create, configure, manage, and run |CL-ATTR| +:abbr:`VMs (Virtual Machines)` on your local system. + +.. note:: + + Screenshots in this document show VMware Workstation 14 Player for + Windows. Menus and prompts in the Linux version have minor wording + differences. + +Install the VMware Workstation Player hypervisor +************************************************ + +#. Enable :abbr:`Intel® VT (Intel® Virtualization Technology)` and + :abbr:`Intel® VT-d (Intel® Virtualization Technology for Directed I/O)` in + your system's BIOS. + +#. `VMware Workstation 14 Player`_ is available for Windows and Linux. + Download your preferred version. + +#. Depending on which OS you're running, install it by following one of these + instructions: + + * On supported Linux distros: + + #. Enable a GUI desktop. + + #. Start a terminal emulator. + + #. Start the installer by issuing the command below and following the + guided steps. + + .. code-block:: bash + + sudo sh ./VMware-Player-[version number].x86_64.bundle + + * On Windows: + + #. Start the installer. + #. Follow the setup wizard. + +For additional help, see the `VMware Workstation Player Documentation`_. + +Download the latest |CL| VMware image +************************************* + +Get the latest |CL| VMware image from the `image repository`_. +Look for :file:`clear-[version number]-vmware.vmdk.xz`. You can also use +this command: + +.. code-block:: bash + + curl -O https://cdn.download.clearlinux.org/image/$(curl https://cdn.download.clearlinux.org/image/latest-images | grep vmware) + +Decompress and verify the image +******************************* + +Visit :ref:`download-verify-decompress` and follow the instructions for your +Windows\* or Linux\* environment. Visit :ref:`image-types` for additional +information about all available |CL| images. + +Create and configure a new VM +***************************** + +#. Start the `VMware Workstation Player` app. +#. On the home screen, click :guilabel:`Create a New Virtual Machine`. See + figure 1. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-01.png + :scale: 100% + :alt: VMware Workstation 14 Player - Create a new virtual machine + + Figure 1: VMware Workstation 14 Player - Create a new virtual machine + +#. On the :guilabel:`Welcome to the New Virtual Machine Wizard` screen, + select the :guilabel:`I will install the operating system later` option. + See figure 2. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-02.png + :scale: 100% + :alt: VMware Workstation 14 Player - Select install operating system + + Figure 2: VMware Workstation 14 Player - Select install operating + system later. + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Select a Guest Operating System` screen, set the + :guilabel:`Guest operating system` setting to :guilabel:`Linux`. + See figure 3. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-03.png + :scale: 100% + :alt: VMware Workstation 14 Player - Select guest operating system type + + Figure 3: VMware Workstation 14 Player - Select guest operating system + type + +#. Set :guilabel:`Version` setting to + :guilabel:`Other Linux 3.x or later kernel 64-bit`. + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Name the Virtual Machine` screen, give your new VM a + name. See figure 4. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-04.png + :scale: 100% + :alt: VMware Workstation 14 Player - Name virtual machine + + Figure 4: VMware Workstation 14 Player - Name virtual machine + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Specify Disk Capacity` screen, click + the :guilabel:`Next` button. Keep the default disk settings unchanged. + When we attach the pre-configured |CL| VMware image, we will remove the + default virtual disk and replace it with the pre-configured one. See + figure 5. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-05.png + :scale: 100% + :alt: VMware Workstation 14 Player - Set disk capacity + + Figure 5: VMware Workstation 14 Player - Set disk capacity + +#. On the :guilabel:`Ready to Create Virtual Machine` screen, click the + :guilabel:`Customize Hardware...` button. See figure 6. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-06.png + :scale: 100% + :alt: VMware Workstation 14 Player - Customize hardware + + Figure 6: VMware Workstation 14 Player - Customize hardware + +#. Under the :guilabel:`Device` list, select :guilabel:`Processors`. See + figure 7. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-07.png + :scale: 100% + :alt: VMware Workstation 14 Player - Set virtualization engine option + + Figure 7: VMware Workstation 14 Player - Set virtualization engine + option + +#. Under the :guilabel:`Virtualization engine` section, + check :guilabel:`Virtualize Intel VT-x/EPT or AMD-V/RVI`. + +#. To disconnect the virtual CD/DVD (IDE) since it is not needed, under the + :guilabel:`Device` list, select :guilabel:`New CD/DVD (IDE)`. See figure 8. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-08.png + :scale: 100% + :alt: VMware Workstation 14 Player - Disconnect CD/DVD (IDE) + + Figure 8: VMware Workstation 14 Player - Disconnect CD/DVD (IDE) + +#. Under the :guilabel:`Device status` section, uncheck + :guilabel:`Connect at power on`. + +#. Click the :guilabel:`Close` button. + +#. Click the :guilabel:`Finish` button. + +Attach the pre-configured |CL| VMware image +******************************************* + +#. Move the downloaded and decompressed pre-configured |CL| VMware image file + :file:`clear-[version number]-basic.vmdk` to the directory where your + newly-created VM resides. + + .. note:: + + Depending on the OS, you can typically find the VMware VM files under: + + * On Linux distros: :file:`/home/username/vmware` + * On Windows: :file:`C:\Users\username\Documents\Virtual Machines` + +#. On the :guilabel:`VMware Workstation Player` home screen, select your + newly-created VM. See figure 9. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-09.png + :scale: 100% + :alt: VMware Workstation 14 Player - Edit virtual machine settings + + Figure 9: VMware Workstation 14 Player - Edit virtual machine settings + +#. Click :guilabel:`Edit virtual machine settings`. + +#. To remove the default hard disk, under the :guilabel:`Device` list, select + :guilabel:`Hard Disk (SCSI)`. See figure 10. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-10.png + :scale: 100% + :alt: VMware Workstation 14 Player - Remove hard drive + + Figure 10: VMware Workstation 14 Player - Remove hard drive + +#. Click the :guilabel:`Remove` button. + +#. To add a new hard disk and attach the pre-configured |CL| VMware image, + click the :guilabel:`Add...` button. See Figure 11. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-11.png + :scale: 100% + :alt: VMware Workstation 14 Player - Add new hard drive + + Figure 11: VMware Workstation 14 Player - Add new hard drive + +#. Under the :guilabel:`Hardware types` section, select :guilabel:`Hard Disk`. + +#. Click the :guilabel:`Next` button. + +#. Select your preferred :guilabel:`Virtual disk type`. See figure 12. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-12.png + :scale: 100% + :alt: VMware Workstation 14 Player - Select virtual disk type + + Figure 12: VMware Workstation 14 Player - Select virtual disk type + +#. Select the :guilabel:`Use an existing virtual disk` option. See figure 13. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-13.png + :scale: 100% + :alt: VMware Workstation 14 Player - Use existing virtual disk + + Figure 13: VMware Workstation 14 Player - Use existing virtual disk + +#. Click the :guilabel:`Browse` button and select the pre-configured |CL| + VMware image file. See figure 14. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-14.png + :scale: 100% + :alt: VMware Workstation 14 Player - Select ready-made VMware |CL| + + Figure 14: VMware Workstation 14 Player - Select ready-made VMware |CL| + image file + +#. Click the :guilabel:`Finish` button. + + .. note:: + + When asked to convert the existing virtual disk to a newer format, + selecting either option works. + +Enable UEFI boot support +************************ + +|CL| needs UEFI support to boot. To enable it, add the +following line to the end of your VM's :file:`.vmx` file: + +.. code-block:: console + + firmware = "efi" + +.. note:: + + Depending on the OS, you can typically find the VMware VM files under: + + * On Linux distros: :file:`/home/username/vmware` + * On Windows: :file:`C:\\Users\\username\\Documents\\Virtual Machines` + +Power on the VM +*************** + +After configuring the settings above, power on your |CL| virtual machine. + +#. On the :guilabel:`VMware Workstation Player` home screen, select your + VM. See figure 15. + + .. figure:: figures/vmw-player-preconf/vmw-player-preconf-15.png + :scale: 100% + :alt: VMware Workstation 14 Player - Power on virtual machine + + Figure 15: VMware Workstation 14 Player - Power on virtual machine + +#. Click :guilabel:`Play virtual machine`. + +Related topics +************** + +For other guides on using the VMWare Player and ESXi, see: + +* :ref:`vmw-player` +* :ref:`vmware-esxi-install-cl` +* :ref:`vmware-esxi-preconfigured-cl-image` + +.. _image repository: https://cdn.download.clearlinux.org/image/ +.. _VMware ESXi: https://www.vmware.com/products/esxi-and-esx.html +.. _VMware Workstation 14 Player: https://www.vmware.com/products/workstation-player.html +.. _VMware Workstation Player Documentation: https://docs.vmware.com/en/VMware-Workstation-Player/index.html diff --git a/zh_CN/_sources/get-started/virtual-machine-install/vmw-player.rst.txt b/zh_CN/_sources/get-started/virtual-machine-install/vmw-player.rst.txt new file mode 100644 index 000000000..72590018d --- /dev/null +++ b/zh_CN/_sources/get-started/virtual-machine-install/vmw-player.rst.txt @@ -0,0 +1,299 @@ +.. _vmw-player: + +|CL-ATTR| on VMware\* Workstation Player +######################################## + +This page explains how to create a new VM and install |CL| on it with the +VMware Workstation Player hypervisor. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +`VMware Workstation Player`_ is a type 2 hypervisor. It runs on top of +Windows\* or Linux\* operating systems. With VMware ESXi, you can +create, configure, manage, and run |CL-ATTR| :abbr:`VMs (Virtual Machines)` +on your local system. + +VMware offers a type 1 hypervisor called `VMware ESXi`_ designed for the +cloud environment. For information on how to install |CL| as guest OS on +it, see :ref:`vmware-esxi-install-cl`. + +.. note:: + + The screenshots on this document show the Windows version of the + VMware Workstation 15 Player. The menus and prompts are similar to those + in other versions and for the Linux OS save some minor wording differences. + +If you prefer to use a pre-configured |CL| VMware image instead, +see our :ref:`vmw-player-preconf` guide. + +Install the VMware Workstation Player hypervisor +************************************************ + +#. Enable :abbr:`Intel® VT (Intel® Virtualization Technology)` and + :abbr:`Intel® VT-d (Intel® Virtualization Technology for Directed I/O)` in + your system's BIOS. + +#. `VMware Workstation Player`_ is available for Windows and Linux. + Download your preferred version. + + .. note:: + + By default, selecting download means you receive the latest version + of this application. Commands may differ based on the version. + +#. Install VMware Workstation Player following the instructions + appropriate for your system's OS: + + * On supported Linux distros: + + #. Enable a GUI desktop. + #. Start a terminal emulator. + #. Start the installer by issuing the command below and follow the + guided steps. + + .. code-block:: console + + sudo sh ./VMware-Player-[version number].x86_64.bundle + + * On Windows: + + #. Start the installer. + #. Follow the setup wizard. + +For additional help, see the `VMware Workstation Player Documentation`_. + +Download the latest |CL| installer +********************************** + +Get the latest installer with |CL| OS Desktop from the `downloads`_ page. + +Visit :ref:`image-types` for additional information about all available |CL| images. + +We also provide instructions for downloading and verifying a Clear Linux ISO. +For more information, refer to :ref:`download-verify-decompress`. + +Create and configure a new VM +***************************** + +#. Start the `VMware Workstation Player` app. + +#. On the home screen, click :guilabel:`Create a New Virtual Machine`. See + Figure 1. + + .. figure:: figures/vmw-player/vmw-player-01.png + :scale: 100% + :alt: VMware Workstation Player - Create a new virtual machine + + Figure 1: VMware Workstation Player - Create a new virtual + machine + +#. On the :guilabel:`Welcome to the New Virtual Machine Wizard` screen, + select the :guilabel:`Installer disc image file (iso)` option. + See Figure 2. + + .. figure:: figures/vmw-player/vmw-player-02.png + :scale: 100% + :alt: VMware Workstation Player - Select |CL| installer ISO + + Figure 2: VMware Workstation Player - Select |CL| installer ISO + +#. Click the :guilabel:`Browse` button and select the decompressed |CL| + installer ISO. + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Select a Guest Operating System`, set the + :guilabel:`Guest operating system` setting to :guilabel:`Linux`. See + Figure 3. + + .. figure:: figures/vmw-player/vmw-player-03.png + :scale: 100% + :alt: VMware Workstation Player - Select guest operating system type + + Figure 3: VMware Workstation Player - Select guest operating system + type + +#. Set the :guilabel:`Version` setting to + :guilabel:`Other Linux 4.x or later kernel 64-bit`. + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Name the Virtual Machine` screen, name the new VM. See + Figure 4. + + .. figure:: figures/vmw-player/vmw-player-04.png + :scale: 100% + :alt: VMware Workstation Player - Name virtual machine + + Figure 4: VMware Workstation Player - Name virtual machine + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Specify Disk Capacity` screen, set the VM's maximum disk + size. See Figure 5. + + .. figure:: figures/vmw-player/vmw-player-05.png + :scale: 100% + :alt: VMware Workstation Player - Set disk capacity + + Figure 5: VMware Workstation Player - Set disk capacity + + .. note:: + + For optimal performance with the |CL| Desktop image, we recommend 32GB + of drive space. See :ref:`system-requirements` for more details. + +#. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Ready to Create Virtual Machine` screen, click the + :guilabel:`Customize Hardware...` button. See Figure 6. + + .. figure:: figures/vmw-player/vmw-player-06.png + :scale: 100% + :alt: VMware Workstation Player - Customize hardware + + Figure 6: VMware Workstation Player - Customize hardware + +#. Select :guilabel:`Memory` and set the size to 2GB. See Figure 7. + + .. figure:: figures/vmw-player/vmw-player-07.png + :scale: 100% + :alt: VMware Workstation Player - Set memory size + + Figure 7: VMware Workstation Player - Set memory size + + .. note:: + The |CL| installer ISO needs a minimum of 2GB of RAM. + After completing installation, |CL| can run on as little as + 128MB of RAM. Thus, you can reduce the memory size if needed. + See :ref:`system-requirements` for more details. + +#. Under the :guilabel:`Device` list, select :guilabel:`Processors`. See + Figure 8. + + .. figure:: figures/vmw-player/vmw-player-08.png + :scale: 100% + :alt: VMware Workstation Player - Set virtualization engine option + + Figure 8: VMware Workstation Player - Set virtualization engine + option + +#. Under the :guilabel:`Virtualization engine` section, + check :guilabel:`Virtualize Intel VT-x/EPT or AMD-V/RVI`. + +#. Click the :guilabel:`Close` button. + +#. Click the :guilabel:`Finish` button. + +Enable UEFI boot support +************************ + +|CL| needs UEFI support to boot. To enable UEFI: + +#. Power off the VM. click the :guilabel:`Player` menu. See Figure 9. + + .. figure:: figures/vmw-player/vmw-player-09.png + :scale: 100% + :alt: VMware Workstation Player - Power off virtual machine + + Figure 9: VMware Workstation Player - Power off virtual machine + +#. Go to :guilabel:`Power` and select :guilabel:`Shut Down Guest`. + +#. Add the following line to the end of your VM's :file:`.vmx` file: + + .. code-block:: console + + firmware = "efi" + + .. note:: + + Depending on the OS, you can typically find the VMware VM files under: + + * On Linux distros: :file:`/home/username/vmware` + * On Windows: :file:`C:\\Users\\username\\Documents\\Virtual Machines` + +Install |CL| into the new VM +**************************** + +#. Select the newly-created VM and click the :guilabel:`Play virtual machine` + button. See Figure 10. + + .. figure:: figures/vmw-player/vmw-player-10.png + :scale: 100% + :alt: VMware Workstation Player - Power on virtual machine + + Figure 10: VMware Workstation Player - Power on virtual machine + +#. Follow the :ref:`install-on-target-start` guide to complete the + installation of |CL|. + +#. After the installation completes, reboot the VM. This reboot restarts the + |CL| installer. + +Detach the |CL| installer ISO from the VM +***************************************** + +#. To enable the mouse pointer so you access VMware Workstation Player's + menus, press :kbd:`` + :kbd:`` on the keyboard. + +#. To disconnect the CD/DVD to stop it from booting the |CL| installer ISO + again, click the :guilabel:`Player` menu. See Figure 11. + + .. figure:: figures/vmw-player/vmw-player-11.png + :scale: 100% + :alt: VMware Workstation Player - Edit CD/DVD settings + + Figure 11: VMware Workstation Player - Edit CD/DVD settings + +#. Go to :menuselection:`Removable Devices-->CD/DVD (IDE)-->Disconnect`. + +#. Click the :guilabel:`OK` button. + +Install open-vm-tools +********************* + +Optional: You may want to install the `open-vm-tools` in your virtual +machine. The Open Virtual Machine Tools (open-vm-tools) are the open source +implementation of VMware Tools for Linux\* guest operating systems. + +#. Power on your |CL| virtual machine. On the + :guilabel:`VMware Workstation Player` home screen, select your VM. See Figure 10. + +#. Click :guilabel:`Play virtual machine`. + +#. In |CL| you can install the bundle, and enable the tools, in your VM. + + .. code-block:: bash + + sudo swupd bundle-add os-cloudguest-vmware + sudo systemctl enable --now open-vm-tools + +More information is available on the `VMWare Tools Product Documentation`_ +site. + +Related topics +************** + +For other guides on using the VMWare Player and ESXi, see: + +* :ref:`vmw-player-preconf` +* :ref:`vmware-esxi-install-cl` +* :ref:`vmware-esxi-preconfigured-cl-image` + +.. _VMware ESXi: https://www.vmware.com/products/esxi-and-esx.html + +.. _VMware Workstation Player: + https://www.vmware.com/products/workstation-player.html + +.. _VMware Workstation Player Documentation: + https://docs.vmware.com/en/VMware-Workstation-Player/index.html + +.. _downloads: https://clearlinux.org/downloads + +.. _VMWare Tools Product Documentation: https://docs.vmware.com/en/VMware-Tools/10.1.0/com.vmware.vsphere.vmwaretools.doc/GUID-8B6EA5B7-453B-48AA-92E5-DB7F061341D1.html diff --git a/zh_CN/_sources/get-started/virtual-machine-install/vmware-esxi-install-cl.rst.txt b/zh_CN/_sources/get-started/virtual-machine-install/vmware-esxi-install-cl.rst.txt new file mode 100644 index 000000000..61d8e6bb5 --- /dev/null +++ b/zh_CN/_sources/get-started/virtual-machine-install/vmware-esxi-install-cl.rst.txt @@ -0,0 +1,288 @@ +.. _vmware-esxi-install-cl: + +|CL-ATTR| on VMware\* ESXi +########################## + +This page explains how to create a new :abbr:`VM (Virtual Machine)` and +manually install |CL-ATTR| on the new VM with VMware ESXi 6.5. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +`VMware ESXi`_ is a type 1 bare-metal hypervisor that runs directly on top +of server hardware. With VMware ESXi, you can create, configure, manage, and +run |CL| virtual machines in the cloud. + +Manually installing |CL| on a new VM gives additional configuration flexibility +during installation. For example: alternate disk sizes, number of partitions, +pre-installed bundles, etc. + +If you prefer to use a pre-configured |CL| VMware image instead, refer to +:ref:`vmware-esxi-preconfigured-cl-image`. + +.. note:: + + VMware also offers a type 2 hypervisor designed for the desktop environment, + called `VMware Workstation Player`_. Refer to :ref:`vmw-player-preconf` or + :ref:`vmw-player` for more information. + + Visit :ref:`image-types` to learn more about all available images. + +Download the latest |CL| installer ISO +************************************** + +Get the latest |CL| installer ISO image from the `image`_ repository. +Look for :file:`clear-[version number]-installer.iso.xz`. + +We also provide instructions for downloading and verifying a Clear Linux ISO. +For more information, refer to :ref:`download-verify-decompress`. + +Upload the |CL| installer ISO to the VMware server +************************************************** + +#. Connect to the VMware server and log into an account with sufficient + permission to create and manage VMs. +#. Under the :guilabel:`Navigator` window, select :guilabel:`Storage`. + See Figure 1. +#. Under the :guilabel:`Datastores` tab, click the :guilabel:`Datastore browser` + button. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-1.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Storage + + Figure 1: VMware ESXi - Navigator > Storage + +#. Click the :guilabel:`Create directory` button and name the directory `ISOs`. + See Figure 2. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-2.png + :scale: 100 % + :alt: VMware ESXi - Datastore > Create directory + + Figure 2: VMware ESXi - Datastore > Create directory + +#. Select the newly-created directory and click the :guilabel:`Upload` button. + See Figure 3. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-3.png + :scale: 100 % + :alt: VMware ESXi - Datastore > Upload ISO + + Figure 3: VMware ESXi - Datastore > Upload ISO + +#. Select the decompressed |CL| installer ISO file :file:`clear-[version number]-installer.iso` + and upload it. + +Create and configure a new VM +***************************** + +In this section, you will create a new VM, configure its basic parameters such +as drive size, number of CPUs, memory size, and then attach the |CL| installer ISO. + +#. Under the :guilabel:`Navigator` window, select :guilabel:`Virtual Machines`. + See Figure 4. +#. In the right window, click the :guilabel:`Create / Register VM` button. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-4.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Virtual Machines + + Figure 4: VMware ESXi - Navigator > Virtual Machines + +#. On the :guilabel:`Select creation type` step: + + #. Select the :guilabel:`Create a new virtual machine` option. + See Figure 5. + #. Click the :guilabel:`Next` button. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-5.png + :scale: 100 % + :alt: VMware ESXi - Create a new virtual machine + + Figure 5: VMware ESXi - Create a new virtual machine + +#. On the :guilabel:`Select a name and guest OS` step: + + #. Give the new VM a name in the :guilabel:`Name` field. See Figure 6. + #. Set the :guilabel:`Compatability` option to :guilabel:`ESXi 6.5 virtual machine`. + #. Set the :guilabel:`Guest OS family` option to :guilabel:`Linux`. + #. Set the :guilabel:`Guest OS version` option to :guilabel:`Other 3.x or later Linux (64-bit)`. + #. Click the :guilabel:`Next` button. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-6.png + :scale: 100 % + :alt: VMware ESXi - Give a name and select guest OS type + + Figure 6: VMware ESXi - Give a name and select guest OS type + +#. On the :guilabel:`Select storage` step: + + #. Accept the default option. + #. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Customize settings` step: + + #. Click the :guilabel:`Virtual Hardware` button. See Figure 7. + #. Expand the :guilabel:`CPU` setting and enable :guilabel:`Hardware virtualization` by + checking :guilabel:`Expose hardware assisted virtualization to the guest OS`. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-7.png + :scale: 100 % + :alt: VMware ESXi - Enable hardware virtualization + + Figure 7: VMware ESXi - Enable hardware virtualization + + #. Set :guilabel:`Memory` size to 2048MB (2GB). See Figure 8. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-8.png + :scale: 100 % + :alt: VMware ESXi - Set memory size + + Figure 8: VMware ESXi - Set memory size + + .. note:: + + The |CL| installer ISO needs a minimum of 2GB of RAM to work properly. + You can reduce the memory size after the installation completes if you want, + because a minimum |CL| installation can function on as little as 128MB of RAM. + See :ref:`system-requirements` for more details. + + #. Set :guilabel:`Hard disk 1` to the desired capacity. See Figure 9. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-9.png + :scale: 100 % + :alt: VMware ESXi - Set hard disk size + + Figure 9: VMware ESXi - Set hard disk size + + .. note:: + + A minimum |CL| installation can exist on 600MB of drive space. + See :ref:`system-requirements` for more details. + + #. Attach the |CL| installer ISO. For the :guilabel:`CD/DVD Drive 1` setting, + click the drop-down list to the right of it and select the :guilabel:`Datastore ISO file` + option. Then select the |CL| installer ISO :file:`clear-[version number]-installer.iso` + that you previously uploaded to the VMware server. See Figure 10. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-10.png + :scale: 100 % + :alt: VMware ESXi - Set CD/DVD to boot installer ISO + + Figure 10: VMware ESXi - Set CD/DVD to boot installer ISO + +#. Click the :guilabel:`Next` button. +#. Click the :guilabel:`Finish` button. + +Install |CL| into the new VM +**************************** + +#. Power on the VM. + + #. Under the :guilabel:`Navigator` window, select :guilabel:`Virtual Machines`. + See Figure 11. + #. In the right window, select the newly-created VM. + #. Click the :guilabel:`Power on` button. + #. Click on the icon representing the VM to bring it into view and maximize + its window. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-11.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Virtual Machines > Power on VM + + Figure 11: VMware ESXi - Navigator > Virtual Machines > Power on VM + +#. Follow the :ref:`install-on-target-start` guide to complete the installation of + |CL|. +#. After the installation is complete, follow the |CL| instruction to reboot it. + This will restart the installer again. + +Reconfigure the VM's settings to boot the newly-installed |CL| +************************************************************** + +After |CL| has been installed using the installer ISO, it must be detached so +it will not run again. Also, in order to boot the newly-installed |CL|, you must +enable UEFI support. + +#. Power off the VM. + + #. Click the :guilabel:`Actions` button - located on the top-right corner + of the VM's windows - and go to the :guilabel:`Power` setting and + select the :guilabel:`Power off` option. See Figure 12. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-12.png + :scale: 100 % + :alt: VMware ESXi - Actions > Power off + + Figure 12: VMware ESXi - Actions > Power off + +#. Edit the VM settings. + + #. Click the :guilabel:`Actions` button again and select :guilabel:`Edit settings`. + See Figure 13. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-13.png + :scale: 100 % + :alt: VMware ESXi - Actions > Edit settings + + Figure 13: VMware ESXi - Actions > Edit settings + +#. Disconnect the CD/DVD to stop it from booting the |CL| installer ISO again. + + #. Click the :guilabel:`Virtual Hardware` button. See Figure 14. + #. For the :guilabel:`CD/DVD Drive 1` setting, uncheck the + :guilabel:`Connect` checkbox. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-14.png + :scale: 100 % + :alt: VMware ESXi - Disconnect the CD/DVD drive + + Figure 14: VMware ESXi - Disconnect the CD/DVD drive + +#. |CL| needs UEFI support in order to boot. Enable it. + + #. Click the :guilabel:`VM Options` button. See Figure 15. + #. Expand the :guilabel:`Boot Options` setting. + #. For the :guilabel:`Firmware` setting, click the drop-down list to the right + of it and select the :guilabel:`EFI` option. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-15.png + :scale: 100 % + :alt: VMware ESXi - Set boot firmware to EFI + + Figure 15: VMware ESXi - Set boot firmware to EFI + +#. Click the :guilabel:`Save` button. + +Power on the VM and boot |CL| +***************************** + +After configuring the settings above, power on the VM. + +#. Under the :guilabel:`Navigator` window, select :guilabel:`Virtual Machines`. + See Figure 16. +#. In the right window, select the VM. +#. Click the :guilabel:`Power on` button. +#. Click on the icon representing the VM to bring it into view and maximize + its window. + + .. figure:: figures/vmware-esxi/vmware-esxi-install-cl-16.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Virtual Machines > Power on VM + + Figure 16: VMware ESXi - Navigator > Virtual Machines > Power on VM + +Related topics +************** + +* :ref:`vmware-esxi-preconfigured-cl-image` + + +.. _VMware ESXi: https://www.vmware.com/products/esxi-and-esx.html +.. _VMware Workstation Player: https://www.vmware.com/products/workstation-player.html +.. _image: https://cdn.download.clearlinux.org/image diff --git a/zh_CN/_sources/get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.rst.txt b/zh_CN/_sources/get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.rst.txt new file mode 100644 index 000000000..83f5efa6b --- /dev/null +++ b/zh_CN/_sources/get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.rst.txt @@ -0,0 +1,288 @@ +.. _vmware-esxi-preconfigured-cl-image: + +|CL-ATTR| on VMware\* ESXi (pre-configured image) +################################################# + +This page explains how to deploy a pre-configured |CL| VMware +:abbr:`VM (Virtual Machine)` image on a VMware ESXi 6.5 host. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +`VMware ESXi`_ is a type 1 bare-metal hypervisor which runs directly on top +of server hardware. With VMware ESXi, you can create, configure, manage, +and run |CL-ATTR| virtual machines at scale. + +We provide a pre-configured |CL| VMware image that can be run on a VMware ESXi +6.5 host. + +If manuall installation is preferred, refer to :ref:`vmware-esxi-install-cl`. + +.. note:: + + VMware also offers a type 2 hypervisor designed for the desktop environment, + called `VMware Workstation Player`_. Refer to :ref:`vmw-player-preconf` or + :ref:`vmw-player` for more information. + +Download the latest |CL| VMware image +************************************* + +Get the latest |CL| VMware prebuilt image from the `image`_ repository. +Look for :file:`clear-[version number]-vmware.vmdk.xz`. You can also use +this command: + +.. code-block:: bash + + curl -O https://cdn.download.clearlinux.org/image/$(curl https://cdn.download.clearlinux.org/image/latest-images | grep vmware) + +Visit :ref:`image-types` for additional information about all available |CL| images. + +We also provide instructions for downloading and verifying a Clear Linux ISO. +For more information, refer to :ref:`download-verify-decompress`. + +Upload the |CL| image to the VMware server +****************************************** + +Once the |CL| VMware prebuilt image has been downloaded and +decompressed on your local system, it must be uploaded to a datastore +on the VMware ESXi server. + +The steps in this section can also be referenced from the VMware documentation +`Using Datastore File Browser in the VMware Host Client`_. + +#. Connect to the VMware ESXi server and login to an account with sufficient + permission to create and manage VMs. + +#. Under the :guilabel:`Navigator` window on the left side, + select :guilabel:`Storage`. + See Figure 1 + +#. Under the :guilabel:`Datastores` tab, click + the :guilabel:`Datastore browser` button. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-1.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Storage + + Figure 1: VMware ESXi - Navigator > Storage + +#. Click the :guilabel:`Create directory` button and name the directory + `Clear Linux VM`. See Figure 2. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-2.png + :scale: 100 % + :alt: VMware ESXi - Datastore > Create directory + + Figure 2: VMware ESXi - Datastore > Create directory + +#. Select the newly-created directory and click the :guilabel:`Upload` + button. See Figure 3. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-3.png + :scale: 100 % + :alt: VMware ESXi - Datastore > Upload VMware image + + Figure 3: VMware ESXi - Datastore > Upload VMware image + +#. Select the decompressed |CL| VMware image file + :file:`clear-[version number]-vmware.vmdk` and upload it. + +Convert the |CL| image to an ESXi-supported format +************************************************** + +Once the |CL| VMware prebuilt image has been uploaded to the VMware ESXi +datastore, it must be converted to a format for use with VMware's ESXi +hypervisor. + +The steps in this section can also be referenced from the VMware documentation on `Cloning and converting virtual machine disks with vmkfstools`_ + +#. SSH into the `vSphere Management Assistant`_ appliance that is managing + the ESXi host or connect to the vSphere hosting using the `vSphere CLI`_. + + .. note:: + + If there is no :abbr:`vMA (vSphere Management Assistant)` appliance or :abbr:`vCLI (vSphere CLI)` configured and available, + you can temporarily enable SSH directly on the ESXi host by following the + steps described in `Enable the Secure Shell (SSH) in the VMware Host Client`_. + + As a security best practice, remember to disable SSH access after following the steps in this section. + + +#. Locate the uploaded image, which is typically found in + :file:`/vmfs/volumes/datastore1`. + +#. Use the :command:`vmkfstools` command to perform the conversion, as + shown below: + + .. code-block:: console + + vmkfstools -i clear-[version number]-vmware.vmdk -d zeroedthick clear-[version number]-esxi.vmdk + + Two files should result from this: + + * :file:`clear-[version number]-esxi-flat.vmdk` + * :file:`clear-[version number]-esxi.vmdk` + + The :file:`clear-[version number]-esxi.vmdk` file will be used in the + next section when you create a new VM. + +Create and configure a new VM +***************************** + +In this section, you will create a new VM, configure its basic parameters +such as number of CPUs, memory size, and then attach the converted |CL| +VMware image. Also, in order to boot |CL|, you must enable UEFI support. + +#. Under the :guilabel:`Navigator` window, select + :guilabel:`Virtual Machines`. See Figure 4. + +#. In the right window, click the :guilabel:`Create / Register VM` button. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-4.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Virtual Machines + + Figure 4: VMware ESXi - Navigator > Virtual Machines + +#. On the :guilabel:`Select creation type` step: + + #. Select the :guilabel:`Create a new virtual machine` option. See + Figure 5. + + #. Click the :guilabel:`Next` button. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-5.png + :scale: 100 % + :alt: VMware ESXi - Create a new virtual machine + + Figure 5: VMware ESXi - Create a new virtual machine + +#. On the :guilabel:`Select a name and guest OS` step: + +#. Give the new VM a name in the :guilabel:`Name` field. See Figure 6. + +#. Set the :guilabel:`Compatability` option to + :guilabel:`ESXi 6.5 virtual machine`. +#. Set the :guilabel:`Guest OS family` option to :guilabel:`Linux`. +#. Set the :guilabel:`Guest OS version` option to + :guilabel:`Other 3.x or later Linux (64-bit)`. +#. Click the :guilabel:`Next` button. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-6.png + :scale: 100 % + :alt: VMware ESXi - Give a name and select guest OS type + + Figure 6: VMware ESXi - Give a name and select guest OS type + +#. On the :guilabel:`Select storage` step: + + #. Accept the default option. + #. Click the :guilabel:`Next` button. + +#. On the :guilabel:`Customize settings` step: + + #. Click the :guilabel:`Virtual Hardware` button. See Figure 7. + #. Expand the :guilabel:`CPU` setting and enable + :guilabel:`Hardware virtualization` by checking + :guilabel:`Expose hardware assisted virtualization to the guest OS`. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-7.png + :scale: 100 % + :alt: VMware ESXi - Enable hardware virtualization + + Figure 7: VMware ESXi - Enable hardware virtualization + + #. Remove the default :guilabel:`Hard drive 1` setting by clicking + the `X` icon on the right side. See Figure 8. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-8.png + :scale: 100 % + :alt: VMware ESXi - Remove hard drive + + Figure 8: VMware ESXi - Remove hard drive + + #. Since a pre-configured image will be used, + the :guilabel:`CD/DVD Drive 1` setting will not be needed. Disable it + by unchecking the :guilabel:`Connect` checkbox. See Figure 9. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-9.png + :scale: 100 % + :alt: VMware ESXi - Disconnect the CD/DVD drive + + Figure 9: VMware ESXi - Disconnect the CD/DVD drive + + #. Attach the :file:`clear-[version number]-esxi.vmdk` file that was + converted from the pre-configured |CL| VMware image. + + #. Click the :guilabel:`Add hard disk` button and select the + :guilabel:`Existing hard drive` option. See Figure 10. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-10.png + :scale: 100 % + :alt: VMware ESXi - Add an existing hard drive + + Figure 10: VMware ESXi - Add an existing hard drive + + #. Select the converted :file:`clear-[version number]-esxi.vmdk` + file. Do not use the original unconverted + :file:`clear-[version number]-vmware.vmdk` file. See Figure 11. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-11.png + :scale: 100 % + :alt: VMware ESXi - Select the converted `vmdk` file + + Figure 11: VMware ESXi - Select the converted + :file:`clear-[version number]-esxi.vmdk` file + +#. |CL| needs UEFI support in order to boot. Enable UEFI boot support. + + #. Click the :guilabel:`VM Options` button. See Figure 12. + #. Expand the :guilabel:`Boot Options` setting. + #. For the :guilabel:`Firmware` setting, click the drop-down list to + the right of it and select the :guilabel:`EFI` option. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-12.png + :scale: 100 % + :alt: VMware ESXi - Set boot firmware to EFI + + Figure 12: VMware ESXi - Set boot firmware to EFI + +#. Click the :guilabel:`Save` button. +#. Click the :guilabel:`Next` button. +#. Click the :guilabel:`Finish` button. + +Power on the VM and boot |CL| +***************************** + +After configuring the settings above, power on the VM. + +#. Under the :guilabel:`Navigator` window, select + :guilabel:`Virtual Machines`. See Figure 13. +#. In the right window, select the newly-created VM. +#. Click the :guilabel:`Power on` button. +#. Click on the icon representing the VM to bring it into view and maximize + its window. + + .. figure:: figures/vmware-esxi/vmware-esxi-preconfigured-cl-image-13.png + :scale: 100 % + :alt: VMware ESXi - Navigator > Virtual Machines > Power on VM + + Figure 13: VMware ESXi - Navigator > Virtual Machines > Power on VM + +Related topics +************** + +* :ref:`vmware-esxi-install-cl` + +.. _VMware ESXi: https://www.vmware.com/products/esxi-and-esx.html +.. _Using Datastore File Browser in the VMware Host Client: https://docs.vmware.com/en/VMware-vSphere/6.7/com.vmware.vsphere.html.hostclient.doc/GUID-7533A767-8396-4844-A3F2-206047D254EA.html +.. _vSphere Management Assistant: https://www.vmware.com/support/developer/vima/ +.. _vSphere CLI: https://www.vmware.com/support/developer/vcli/ +.. _Cloning and converting virtual machine disks with vmkfstools: https://kb.vmware.com/kb/1028042 +.. _Enable the Secure Shell (SSH) in the VMware Host Client: https://docs.vmware.com/en/VMware-vSphere/6.7/com.vmware.vsphere.html.hostclient.doc/GUID-B649CB74-832F-467B-B6A4-8BA67AD5C1F0.html +.. _VMware Workstation Player: https://www.vmware.com/products/workstation-player.html +.. _image: https://cdn.download.clearlinux.org/image diff --git a/zh_CN/_sources/guides/clear/autoproxy.rst.txt b/zh_CN/_sources/guides/clear/autoproxy.rst.txt new file mode 100644 index 000000000..3b8502299 --- /dev/null +++ b/zh_CN/_sources/guides/clear/autoproxy.rst.txt @@ -0,0 +1,153 @@ +.. _autoproxy: + +Autoproxy +######### + +Autoproxy is provided to enable |CL-ATTR| to work smoothly behind a +corporate proxy. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +Autoproxy tries to detect a Proxy Auto-Config (PAC) script and use it to +automatically resolve the proxy needed for a given connection. With +Autoproxy, you can use |CL| inside any proxy environment without having to +manually configure the proxies. + +Corporate and private networks can be very complex, needing to restrict and +control network connections for security reasons. The typical side effects +are limited or blocked connectivity, and require manual configuration of +proxies to perform the most mundane tasks, such as cloning a repo or checking +for updates. With |CL|, all of the work is done behind the scenes to +effortlessly use your network and have connections “just work”. + +This feature removes severe complications with network connectivity due to +proxy issues. You can automate tasks, such as unit testing, without worrying +about the proxy not being set, and you can remove unset proxies from the +equation when dealing with network unavailability across systems. + +How it works +************ + +We designed Autoproxy around tools provided by most Linux\* +distributions with a few minor additions and modifications. We leveraged the +DHCP and network information obtained from systemd and created a +PAC-discovery daemon. The daemon uses the information to resolve a URL for a +PAC file. The daemon then passes the URL into PACrunner\*. PACrunner +downloads the PAC file and uses the newly implemented Duktape\* engine to +parse it. + +.. figure:: figures/autoproxy_0.png + :width: 400px + + Figure 1: Autoproxy Flow + +From that point on, any cURL\* or network requests query PACrunner for the +correct proxy to use. We modified the cURL library to communicate with +PACrunner over DBus. However, cURL will ignore PACrunner and run normally if +no PAC file is loaded or if you manually set any proxies. Thus, your +environment settings are respected and no time is wasted trying to resolve a +proxy. All these steps happen in the background with no user interaction. + +Troubleshooting +=============== + +Autoproxy allows |CL| to operate seamlessly behind a proxy +because :ref:`swupd ` and other |CL| tools are implemented on +top of libcurl. Tools that do not use libcurl, like git, must +be configured independently. + +If you are familiar with PAC files and WPAD, you can use +:command:`pacdiscovery` and :command:`FindProxyForURL` to +troubleshoot problems with autproxy. + +.. note:: + + Learn more about WPAD, PAC files, and PAC functions at `findproxyforurl`_. + +.. _findproxyforurl: http://findproxyforurl.com/ + +Run :command:`pacdiscovery` with no arguments to indicate + +1. if there is a problem resolving the :command:`WPAD` host name resolution: + + .. code-block:: bash + + pacdiscovery + + .. code-block:: console + + failed getaddrinfo: No address associated with hostname + Unable to find wpad host + +2. or if the :command:`pacrunner` service is disabled (masked). + + .. code-block:: bash + + pacdiscovery + + .. code-block:: console + + PAC url: http://autoproxy.your.domain.com/wpad.dat + Failed to create proxy config: Unit pacrunner.service is masked. + +Unmask the :command:`pacrunner` service by running: + +.. code-block:: bash + + systemctl unmask pacrunner.service + +:command:`FindProxyForURL` with :command:`busctl` can also indicate if the +:command:`pacrunner.service` is masked. + +.. code-block:: bash + + busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client + +.. code-block:: console + + FindProxyForURL ss "http://www.google.com" "google.com" + Unit pacrunner.service is masked. + dig wpad, dig wpad. + +:command:`FindProxyForURL` returns the URL and port of the proxy server when +an external URL and host are provided as arguments. + +.. code-block:: bash + + busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client + +.. code-block:: console + + FindProxyForURL ss "http://www.google.com" "google.com" + s "PROXY proxy.your.domain.com:" + +If a proxy server is not avialable, or if :command:`pacrunner` is running +without a PAC file, :command:`FindProxyForURL` will return "DIRECT". + +.. code-block:: bash + + busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client + +.. code-block:: console + + FindProxyForURL ss "http://www.google.com" "google.com" + s "DIRECT" + +Once :command:`pacdiscovery` is able to look up :command:`WPAD`, restart the +:command:`pacrunner` service: + +.. code-block:: bash + + systemctl stop pacrunner + systemctl restart pacdiscovery + +.. note:: + + A "domain" or "search" entry in :file:`/etc/resolv.conf` is required + for short name lookups to resolve. The :file:`resolv.conf` man page has + additional details. \ No newline at end of file diff --git a/zh_CN/_sources/guides/clear/autospec.rst.txt b/zh_CN/_sources/guides/clear/autospec.rst.txt new file mode 100644 index 000000000..7dabfd580 --- /dev/null +++ b/zh_CN/_sources/guides/clear/autospec.rst.txt @@ -0,0 +1,512 @@ +.. _autospec: + +autospec +######## + +**autospec** is a tool used to assist with the automated creation and +maintenance of RPM packaging in |CL-ATTR|. Where a standard +:abbr:`RPM (RPM Package Manager)` build process using :command:`rpmbuild` +requires a tarball and :file:`.spec` file to start, autospec requires only a +tarball and package name to start. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +The autospec tool attempts to infer the requirements of the :file:`.spec` file +by analyzing the source code and :file:`Makefile` information. It +continuously runs updated builds based on new information discovered from build +failures until it has a complete and valid :file:`.spec` file. If needed, you +can influence the behavior of autospec and customize the build by providing +optional `control files`_ to the autospec tool. + +autospec uses **mock** as a sandbox to run the builds. Visit the `mock wiki`_ for +additional information on using mock. + +For a general understanding of how an RPM works, visit +the `rpm website`_ or the `RPM Packaging Guide`_. + +How it works +************ + +Learn the autospec tool set up and process. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +============= + +The setup for building source in |CL| must be completed before using the +autospec tool. + +Refer to `Setup environment to build source`_ for instructions on completing +the setup. + +Create an RPM +============= + +The basic autospec process is described in the following steps: + +#. The :command:`make autospec` command generates a :file:`.spec` file based on + the analysis of code and existing control files. + + Any control files should be located in the same directory as the resulting + :file:`.spec` file. + + View the `autospec README`_ for more information on `control files`_. + +#. autospec creates a build root with mock config. + +#. autospec attempts to build an RPM from the generated :file:`.spec`. + +#. autospec detects any missed declarations in the :file:`.spec`. + +#. If build errors occur, autospec scans the build log to try to detect + the root cause. + +#. If autospec detects the root cause and knows how to continue, it restarts + the build automatically at step 1 with updated build instructions. + +#. Otherwise, autospec stops the build for user inspection to resolve the + errors. Respond to the build process output by fixing source code issues + and/or editing control files to resolve issues, which may include + dependencies or exclusions. See `autospec README`_ for more information on + control files. + + The user resumes the process at step 1 after errors are resolved. + + If a binary dependency doesn't exist in |CL|, you must build it + before running autospec again. + +Following these steps, autospec continues to rebuild the package, based on +new information discovered from build failures, until it has a valid +:file:`.spec`. If no build errors occur, RPM packages are successfully built. + +Examples +******** + +Complete `Setup environment to build source`_ before using these examples. + +.. contents:: + :local: + :depth: 1 + +Example 1: Build RPM with an existing spec file +=============================================== + +This example shows how to build a RPM from a pre-packaged upstream package with +an existing spec file. The example uses the ``dmidecode`` package. + +#. Navigate to the autospec workspace and clone the ``dmidecode`` package: + + .. code-block:: bash + + cd ~/clearlinux + make clone_dmidecode + + .. note:: + + You can clone all package repos at once using the following command: + + .. code-block:: bash + + make [-j NUM] clone-packages + + The optional NUM is the number of threads to use. + + For a list of available packages, view the + :file:`~/clearlinux/projects/common/packages` file. + +#. Navigate to the local copy of the ``dmidecode`` package and build it: + + .. code-block:: bash + + cd ~/clearlinux/packages/dmidecode/ + make build + +#. The resulting RPMs are in :file:`./rpms`. Build logs and additional RPMs are + in :file:`./results`. + +Example 2: Build a new RPM +========================== + +This example shows how to build a new RPM with no spec file. The example will +create a simple helloclear RPM. + +#. Navigate to the autospec workspace and build the helloclear RPM. The + :file:`Makefile` provides a :command:`make autospecnew` that can + automatically generate an RPM package using the autospec tool. You must pass + the URL to the source tarball and the NAME of the RPM you wish to create: + + .. code-block:: bash + + cd ~/clearlinux + make autospecnew URL="https://github.com/clearlinux/helloclear/archive/helloclear-v1.0.tar.gz" NAME="helloclear" + + The resulting RPMs are in :file:`./packages/helloclear/rpms`. Build logs and + additional RPMs are in :file:`./packages/helloclear/results`. + +Example 3: Generate a new spec file with a pre-defined package +============================================================== + +This example shows how to modify an existing package to create a custom RPM. In +this example you will make a simple change to the ``dmidecode`` package and +rebuild the package. + +#. Navigate to the autospec workspace and clone the ``dmidecode`` package: + + .. code-block:: bash + + cd ~/clearlinux + make clone_dmidecode + +#. Navigate into the *dmidecode* directory: + + .. code-block:: bash + + cd packages/dmidecode + +#. Open the :file:`excludes` file with an editor and add these lines: + + .. code-block:: console + + /usr/bin/biosdecode + /usr/bin/ownership + /usr/bin/vpddecode + /usr/share/man/man8/biosdecode.8 + /usr/share/man/man8/ownership.8 + /usr/share/man/man8/vpddecode.8 + + .. note:: + + These files aren't needed by dmidecode, so we can remove them without + any issues. + +#. In the :file:`dmidecode` directory, build the modified ``dmidecode`` package: + + .. code-block:: bash + + make autospec + +#. The resulting RPMs are in :file:`./rpms`. Logs are in :file:`./results`. + +Example 4: Provide control files to autospec +============================================ + +This example shows how to modify control files to correct build failures that +autospec is unable to resolve. In this example, you will add a missing license +and dependencies so autospec can complete a successful build. + +#. Navigate to the autospec workspace: + + .. code-block:: bash + + cd ~/clearlinux + +#. If you have not already, clone all upstream package repos: + + .. code-block:: bash + + make [-j NUM] clone-packages + + The optional NUM is the number of threads to use. + + .. note:: + + In a later step of this example, we will search the cloned package repos + for a missing dependency. + +#. Build the opae-sdk RPM: + + .. code-block:: bash + + make autospecnew URL="https://github.com/OPAE/opae-sdk/archive/0.13.0.tar.gz" NAME="opae-sdk" + + This results in an error for a missing license file: + + .. code-block:: console + + [FATAL] Cannot find any license or opae-sdk.license file! + +#. Navigate to the package with build failures: + + .. code-block:: bash + + cd packages/opae-sdk + +#. Add one or more valid license identifiers from the + `SPDX License List `_. + In the example below, two different licenses are appropriate based on the + opae-sdk project licensing: + + .. code-block:: bash + + echo "BSD-3-Clause MIT" > opae-sdk.license + +#. Run autospec again: + + .. code-block:: bash + + make autospec + + This results in a generic error: + + .. code-block:: console + + [FATAL] Build failed, aborting + +#. Open the build log to view the error details: + + .. code-block:: bash + + cat ./results/build.log + + The build log contains details for the specific failures. In this + instance, there are missing dependencies: + + .. code-block:: console + + CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: + CJSON_LIBRARY + linked by target "opae-c++-utils" in directory /builddir/build/BUILD/opae-sdk-0.13.0/tools/c++utilslib + json-c_LIBRARIES + linked by target "opae-c" in directory /builddir/build/BUILD/opae-sdk-0.13.0/libopae + libuuid_LIBRARIES + linked by target "opae-c" in directory /builddir/build/BUILD/opae-sdk-0.13.0/libopae + +#. Search the spec files of upstream |CL| packages to see if the json-c library + is available. In this case, it does exist and we'll add the json-c 'dev' + package into the buildreq_add: + + .. code-block:: bash + + grep 'json-c\.so$' ~/clearlinux/packages/*/*.spec + echo "json-c-dev" >> buildreq_add + + .. note:: + + This search step works only if the user cloned all of the upstream package + repos. In this example, upstream package repos were cloned in a previous + step. + +#. Search the spec files of upstream |CL| packages to see if the libuuid library + is available. In this case, it exists in the util-linux package, so we'll add + util-linux-dev package into the buildreq_add: + + .. code-block:: bash + + grep 'libuuid\.so$' ~/clearlinux/packages/*/*.spec + echo "util-linux-dev" >> buildreq_add + +#. Run autospec again and find the successfully-generated RPMs in the :file:`rpms` + directory: + + .. code-block:: bash + + make autospec + +.. note:: + + If you need a dependency that does not exist in the |CL| repo, you must first + build it manually (see `Example 2: Build a new RPM`_), then add the repo so + that autospec knows the package exists. For example: + + .. code-block:: bash + + cd ~/clearlinux/packages/ + make repoadd + make repostatus + + You only need to add the dependency to the :file:`buildreq_add` control file + if autospec is not able to automatically find the correct dependency on its + own. + +Test packaged software +********************** + +After software has been packaged with autospec, the resulting RPMs can be +tested for functionality before being integrated and deployed into a |CL| +image with the :ref:`Mixer tool `. + +The |CL| development tooling offers two ways to quickly test autospec +generated RPMs. + +.. note:: + The methods outlined below should only be used for temporary testing on + development systems. + + +Test in a |CL| virtual machine +============================== + +The |CL| development tooling includes a method to install RPMs into a |CL| +virtual machine running on the KVM hypervisor. Using a :abbr:`VM (Virtual +Machine)` allows testing in a completely isolated environment. + +To test an autospec-created package inside a VM: + +#. Download the |CL| KVM image into the :file:`~/clearlinux` directory as + :file:`clear.img`. The location and name :file:`clear.img.xz` is important + for the tooling to work: + + .. code-block:: bash + + cd ~/clearlinux + curl -o clear.img.xz https://download.clearlinux.org/image/$(curl https://download.clearlinux.org/image/latest-images | grep '[0-9]'-kvm) + +#. Extract the downloaded |CL| KVM image: + + .. code-block:: bash + + unxz -v clear.img.xz + +#. Copy the QEMU start script and virtual firmware needed for KVM into the + :file:`~/clearlinux` directory: + + .. code-block:: bash + + cp ~/clearlinux/projects/common/start_qemu.sh . + cp /usr/share/qemu/OVMF.fd . + +#. Run :command:`make install` from the package's autospec directory. The + :command:`make install` command mounts the downloaded |CL| KVM image and + installs the autospec-created RPM into it: + + .. code-block:: bash + + cd ~/clearlinux/packages/ + make install + + The code that makes this possible can be viewed by searching for the + *install:* target in the `Makefile.common`_ file on GitHub. + +#. Return to the :file:`~/clearlinux` directory and start the |CL| VM: + + .. code-block:: bash + + cd ~/clearlinux/ + sudo ./start_qemu.sh clear.img + +#. A new |CL| VM will launch in the console. Log into the VM as *root* and set + a new password for the VM. + +#. Check that the software is installed in the |CL| VM as expected and perform + any relevant tests. + +#. After testing has been completed, the |CL| VM can be powered off and + deleted: + + .. code-block:: bash + + poweroff + rm clear.img + + +Test directly on a development machine +====================================== + +The |CL| development tooling also includes a method to extract +autospec-created RPMs locally onto a |CL| development system for testing. +Extracting an RPM directly onto a system offers quicker testing; however +conflicts may occur and responsibility to remove the software after testing is +up to the developer. + +To test an autospec created package directly on the |CL| development system: + +#. Run :command:`make install-local` from the package's autospec directory. + The :command:`make install-local` command extracts the RPM directly onto + the filesystem of the running |CL| system: + + .. code-block:: bash + + cd ~/clearlinux/packages/ + make install-local + + The code that makes this possible can be viewed by searching for the + *install-local:* target in the `Makefile.common`_ file on GitHub. + +#. Check that the software is installed as expected and perform any relevant + tests. + +#. After testing has been completed, the software and any related files must + be identified and deleted. The :command:`swupd repair --picky` + command can help restore the state of the :file:`/usr` directory (see + :ref:`swupd `) however any other files must be cleaned up + manually. + + +References +********** + +Reference the `autospec README`_ for details regarding `autospec` commands and options. + +Setup environment to build source +================================= + +.. _install-tooling-after-header: + +Setup of the workspace and tooling used for building source in |CL| is mostly +automated for you with a setup script. It uses tools from the +:command:`os-clr-on-clr` bundle. + +The setup script creates a workspace in the :file:`clearlinux` folder, with the +subfolders :file:`Makefile`, :file:`packages`, and :file:`projects`. The +:file:`projects` folder contains the main tools used for making packages in +|CL| :file:`autospec` and :file:`common`. + +Follow these steps to setup the workspace and tooling for building source: + +#. Install the :command:`os-clr-on-clr` bundle: + + .. code-block:: bash + + sudo swupd bundle-add os-clr-on-clr + +#. Download the :file:`user-setup.sh` script: + + .. code-block:: bash + + curl -O https://raw.githubusercontent.com/clearlinux/common/master/user-setup.sh + +#. Make :file:`user-setup.sh` executable: + + .. code-block:: bash + + chmod +x user-setup.sh + +#. Run the script as an unprivileged user: + + .. code-block:: bash + + ./user-setup.sh + +#. After the script completes, log out and log in again to complete the setup + process. + +#. Set your Git user email and username for the repos on your system: + + .. code-block:: bash + + git config --global user.email "you@example.com" + git config --global user.name "Your Name" + + This global setting is used by |CL| tools that make use of Git. + +.. _install-tooling-end: + +Related topics +************** + +* :ref:`Mixer tool ` + +.. _`Makefile.common`: https://github.com/clearlinux/common/blob/master/Makefile.common +.. _autospec README: https://github.com/clearlinux/autospec +.. _control files: https://github.com/clearlinux/autospec#control-files +.. _mock wiki: https://github.com/rpm-software-management/mock/wiki +.. _rpm website: http://rpm.org +.. _RPM Packaging Guide: https://rpm-packaging-guide.github.io/ diff --git a/zh_CN/_sources/guides/clear/bundles.rst.txt b/zh_CN/_sources/guides/clear/bundles.rst.txt new file mode 100644 index 000000000..52cc194d7 --- /dev/null +++ b/zh_CN/_sources/guides/clear/bundles.rst.txt @@ -0,0 +1,27 @@ +.. _bundles-guide: + +Bundles +####### + +Linux-based operating systems contain the code of several hundred, if +not thousands, of open source projects. To make this manageable, +distributions use a concept called "packages" to configure and compile +the source code of these projects into binaries. + +Many distributions then split the content of these compiled packages +into so-called sub-packages, which are the granularity at which these +distributions deploy their software. With those kinds of distributions, +system administrators can then install and update sub-packages +individually or as a set, using tools such as "yum" and "apt-get." + +The |CL-ATTR| takes a slightly different approach. While we also use the +concept of packages to manage compiling source code into binaries, we do not +use the package concept to deploy software. Instead, we provide software +"bundles" that are installed and managed using :ref:`swupd`. +Each bundle contains as many or as few open source projects needed to provide a +complete functionality. + +Related topics +************** + +* :ref:`swupd-guide` \ No newline at end of file diff --git a/zh_CN/_sources/guides/clear/compatible-kernels.rst.txt b/zh_CN/_sources/guides/clear/compatible-kernels.rst.txt new file mode 100644 index 000000000..3adaa54c2 --- /dev/null +++ b/zh_CN/_sources/guides/clear/compatible-kernels.rst.txt @@ -0,0 +1,83 @@ +.. _compatible-kernels: + +Kernels +####### + +The |CL-ATTR| provides the following Linux kernels with a respective bundle. +This document describes the specific use cases these `bundles`_ serve +and provides links to their source code. + +Bare metal only +*************** + +Kernel native + The *kernel-native* bundle focuses on the bare metal platforms. It is + optimized for fast booting and performs best on the Intel® architectures + described on the :ref:`supported hardware list`. The + optimization patches are found in our `Linux`_ GitHub\* repo. + +.. _vm-kernels: + +Also compatible with VMs +************************ + +Kernel LTS + The *kernel-lts* bundle focuses on the bare metal platforms but uses the + latest :abbr:`LTS (Long Term Support)` Linux kernel. It is optimized for + fast booting and performs best on the Intel® architectures described on the + :ref:`supported hardware list`. Additionally, this + kernel includes the VirtualBox\* kernel modules, see our + :ref:`instructions on using Virtualbox` for more + information. The optimization patches are found in our `Linux-LTS`_ GitHub + repo. + +VM only +******* + +Kernel KVM + The *kernel-kvm* bundle focuses on the Linux + :abbr:`KVM (Kernel-based Virtual Machine)`. It is optimized for fast + booting and performs best on Virtual Machines running on the Intel® + architectures described on the + :ref:`supported hardware list`. Use this kernel when + running |CL| as the guest OS on top of *qemu/kvm*. Use this kernel with + **cloud orchestrators** using *qemu/kvm* internally as their **hypervisor** + . This kernel can be used as a standalone |CL| VM, see our + :ref:`instructions on using KVM` for more information. The + optimization patches are found in our `Linux-KVM`_ GitHub repo. + +Kernel Hyper-V\* + The *kernel-hyperv* bundle focuses on running Linux on Microsoft\* + Hyper-V. It is optimized for fast booting and performs best on Virtual + Machines running on the Intel® architectures described on the + :ref:`supported hardware list`. + Use this kernel when running |CL| as the guest OS of **Cloud Instances** in + projects such as Microsoft `Azure`_\*. This kernel can be used in a + standalone |CL| VM, see our :ref:`instructions on using Hyper-V` + for more information. The optimization patches are found in our + `Linux-HyperV`_ GitHub repo. + +Kernel Hyper-V LTS + The *kernel-hyperv-lts* bundle focuses on running Linux on Microsoft + Hyper-V but uses the latest :abbr:`LTS (Long Term Support)` Linux kernel. + It is optimized for fast booting and performs best on Virtual + Machines running on the Intel® architectures described on the + :ref:`supported hardware list`. + Use this kernel when running |CL| as the guest OS of **Cloud Instances** in + projects such as Microsoft `Azure`_. This kernel can be used in a + standalone |CL| VM, see our :ref:`instructions on using Hyper-V` + for more information. The optimization patches are found in our + `Linux-HyperV-LTS`_ GitHub repo. + + +.. _Linux: https://github.com/clearlinux-pkgs/linux +.. _Linux-LTS: https://github.com/clearlinux-pkgs/linux-lts +.. _Linux-KVM: https://github.com/clearlinux-pkgs/linux-kvm +.. _Linux-HyperV: https://github.com/clearlinux-pkgs/linux-hyperv +.. _Linux-HyperV-LTS: https://github.com/clearlinux-pkgs/linux-hyperv-lts +.. _Linux-Container: https://github.com/clearlinux-pkgs/linux-container +.. _bundles: https://github.com/clearlinux/clr-bundles +.. _CIAO: https://github.com/01org/ciao +.. _Azure: + https://azuremarketplace.microsoft.com/en-us/marketplace/apps/clear-linux-project.clear-linux-os + diff --git a/zh_CN/_sources/guides/clear/debug.rst.txt b/zh_CN/_sources/guides/clear/debug.rst.txt new file mode 100644 index 000000000..bb984767b --- /dev/null +++ b/zh_CN/_sources/guides/clear/debug.rst.txt @@ -0,0 +1,91 @@ +.. _debug: + +Debug system +############ + +|CL-ATTR| introduces a novel approach to system software debugging using +*clr-debug-info*. On the client side, the |CL| debug system obtains any +necessary debug information on-the-fly over a network during a debugging +session. On the server side, the system curates and compresses debug +information into small pieces for efficient downloading. + +For developers, this avoids the interruption during debugging that usually +happens when debug information is missing. This can be especially useful on +systems where storage is limited. + + +.. contents:: :local: + :depth: 2 + + +Background +---------- + +Software that is compiled and packaged for general usage in an operating +system typically only contains components that are used to execute the +program, such as binaries and libraries. Extra developer data, such as the +actual source code and symbol information, are separated and excluded for +efficiency. + +The debug information helps relate binary code to human readable source code +lines and variables. Most of the time, this auxiliary information +is not needed; +however without it, debugging a program results in limited visibility. + + +Usage +----- + +The clr-debug-info system is integrated into |CL| and seamlessly engages once +installed. + +#. Install the *dev-utils* bundle. + + .. code:: bash + + sudo swupd bundle-add dev-utils + + .. note:: + + The *telemetrics* and *performance-tools* bundles also include + clr-debug-info. + + +#. Start a debugging session against a program using a debugger, such as GDB. + For example, to debug *gnome-control-center* execute the following + command: + + .. code:: bash + + gdb /usr/bin/gnome-control-center + +As you step through the program and debug information is needed, the +clr_debug_daemon obtains it in the background. + + +Implementation +-------------- + +The implementation of the |CL| debug system is open source and available on +GitHub at: https://github.com/clearlinux/clr-debug-info/ + +.. figure:: figures/debug-diagram.png + :width: 400px + :alt: Debug system communication flow + + Figure 1: The communication flow of the |CL| debug system + +The |CL| debug system implements a :abbr:`FUSE (filesystem in userspace)` +filesystem mounted at :file:`/usr/lib/debug` and :file:`/usr/src/debug`. The +FUSE filesystem starts automatically. You can verify its status by executing +:command:`systemctl status clr_debug_fuse.service`. + +The *clr_debug_daemon* is responsible for fetching the appropriate package +debug content from the server and making it available for any debugging +programs that need it. It is socket activated whenever a request to the local +FUSE filesystem occurs. You can verify its status with :command:`systemctl +status clr_debug_daemon.service`. + + +|CL| hosts debuginfo content packaged for consumption by |CL| debug clients at +https://download.clearlinux.org/debuginfo/ diff --git a/zh_CN/_sources/guides/clear/ister.rst.txt b/zh_CN/_sources/guides/clear/ister.rst.txt new file mode 100644 index 000000000..b71aa8cc1 --- /dev/null +++ b/zh_CN/_sources/guides/clear/ister.rst.txt @@ -0,0 +1,93 @@ +.. _ister: + +ister.py image builder +###################### + +The `ister.py`_ tool is a template-based installer used by |CL-ATTR| to produce +images for each release. The same ister tool is available for use in |CL| to +create custom images based on an upstream image. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +|CL| is a rolling release and produces an average of 10 releases per week using the +ister tool. With each release, we produce multiple +:ref:`image types for different environments ` and use cases such +as installers, Hyper-V, KVM, or VMWare. + +Each image has a JSON configuration file that is used by ister to generate the +image. These JSON configuration files describe the image type, partitions, version, +and bundles that will be preinstalled by default with the image. For each image +type we produce, the corresponding JSON configuration file for the image also is +published. + +The :ref:`mixer` tool also uses ister to build images for your custom +mix. Like upstream images, a JSON configuration file is defined for the image, +which ister uses to generate the image. Refer to the :ref:`mixer` guide +for instructions on using ister to build an image for a custom mix. + +Examples +******** + +Recreate an upstream image +========================== + +The published configuration files for upstream images may be used to recreate an +image. Here are some examples: + +* Use an older version of |CL| and the image is no longer available (only after + March 2017). +* Customize the partitions of an image. +* Customize the bundles preinstalled in an image. +* Run your own post installation script. + + +Follow these steps to recreate an upstream image based on the image's JSON +configuration file: + +#. Install the :command:`os-installer` bundle. Refer to :ref:`swupd-guide` for + more information on installing bundles. + +#. Download the `ister.py`_ tool and grant it sudo privileges. + +#. Download the JSON configuration file for the desired image (located in + :file:`config/image/`): + + * `Current release`_ + * `Previous releases`_ (only after March 2017) + + For a previous release, navigate to `Previous releases`_, select the version + you want, and find the JSON configuration file under + :file:`/clear/config/image`. For example: + ``https://cdn.download.clearlinux.org/releases/15700/clear/config/image/`` + +#. Download the “PostNonChroot” script (if applicable). + + The JSON configuration file for the image may have an accompanying + “PostNonChroot” script that is executed at the end of the image creation + process. If it does, download the script and make it executable. + +#. Edit the JSON configuration file as needed. + +#. If your configuration file has an accompanying "PostNonChroot" script, change + the default path of the script to match your path. + +#. Generate the new image with the following command: + + .. code-block:: bash + + sudo ister.py -t [JSON configuration] + +Related topics +************** + +* :ref:`mixer` +* :ref:`bulk-provision` + +.. _ister.py: https://github.com/bryteise/ister +.. _Current release: https://cdn.download.clearlinux.org/current/ +.. _Previous releases: https://cdn.download.clearlinux.org/releases/ diff --git a/zh_CN/_sources/guides/clear/mixer.rst.txt b/zh_CN/_sources/guides/clear/mixer.rst.txt new file mode 100644 index 000000000..a846f1a0f --- /dev/null +++ b/zh_CN/_sources/guides/clear/mixer.rst.txt @@ -0,0 +1,858 @@ +.. _mixer: + +mixer +##### + +**mixer** is the tool used by the |CL-ATTR| team to generate official update +content and releases. The update content generated by mixer is then consumed +by swupd on a downstream client. The same mixer tool is available as part of +|CL| to create your own customized update content and releases. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +mixer uses the following sources as inputs to generate update content: + +* Upstream |CL| bundles with their corresponding RPM packages +* Locally-defined bundles with their corresponding local RPM packages +* Locally-defined bundles with upstream RPM packages + +Using the mixer tool, you select which set of content from these sources +will be part of your update. You can select content from each of these sources to make a unique combination of functionality for your custom update content, known as a **mix**. + +The update content that mixer generates consists of various pieces of OS +content, update metadata, as well as a complete image. The OS content +includes all files in an update, as well as zero- and delta-packs for improved update performance. The update metadata, stored as manifests, describes all of the bundle information for the update. Update content produced by mixer is then published to a web server and consumed by clients via swupd. Refer to :ref:`swupd ` for additional information regarding updates and update content. + +How it works +************ + +Learn the mixer tool set up and workflow. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +============= + +* :command:`mixer` bundle + + Add the mixer tool with the :command:`mixer` bundle. Refer to + :ref:`swupd-guide` for more information on installing bundles. + +* Docker\* container + + mixer by default runs all build commands in a Docker container to ensure + the correct tool versions are used. This also allows custom mixes to + automatically perform downstream format bumps when the upstream releases a + format bump. See `Format version`_ for additional information regarding + format bumps. + + Refer to `Configure and enable Docker`_ for instruction. + +* Docker proxy (optional) + + If you use a proxy server, you must set your proxy environment variables and + create a proxy configuration file for the Docker daemon and container. + + Consult your IT department for the correct values if you are behind a + corporate proxy. + + Refer to `Configure Docker proxy info`_ for instruction. + +* Location to host the update content and images + + In order for swupd to make use of your mix, the update content for your mix + must be hosted on a web server. Your mix will be configured with an update + location URL, which swupd will use to pull down updates. + + Refer to `Set up a nginx web server for mixer`_ for an simple example of + setting up an update location. + +Mix setup +========== + +Follow these steps to create and initialize the mixer workspace. Complete +the setup before you create a mix. + +#. Create workspace. + + The mixer tool uses a simple workspace to contain all input and output in a + basic directory structure. The workspace is simply an empty folder from + which you execute the mixer commands. Each mix uses its own separate + workspace. + +#. Initialize the workspace and mix. + + Before you create a mix, you must explicitly initialize the mixer workspace. + During initialization, the mixer workspace is configured and the base for + your mix is defined. By default, your mix is based on the latest + upstream version and starts with the minimum set of bundles. Your first custom + mix version number starts at 10. Alternatively, you can select other + versions or bundle sets from which to start. + + Initialization creates the directory structure within the workspace and adds + the :file:`builder.conf` file, which is used to configure the mixer tool. + + View the `mixer.init man page`_ for more information on mixer + initialization. + + View the list of suitable `releases`_ from which to mix. + +#. Edit builder.conf. + + :file:`builder.conf` tells the mixer tool how to configure the mix. For + example, it allows you to configure where mixer output is located and where + swupd update content will be located. + + At minimum, set the URL of your update server so your custom OS knows where + to get update content. + + Refer to the `builder.conf`_ section for more information. + +Create a mix +============ + +A mix is created with the following steps: + +#. Add custom RPMs and set up local repo (optional). + + If you are adding custom RPMs to your mix, you must add the RPMs to + your mix workspace and set up a corresponding local repository. + + Go to the :ref:`autospec` guide to learn to build RPMs from + scratch. If the RPMs are not built on |CL|, make sure your + configuration and toolchain builds them correctly for |CL|. Otherwise there + is no guarantee they will be compatible. + + Refer to the :ref:`autospec` guide for more information on using autospec to + build RPMs. + +#. Update and build bundles. + + Add, edit, or remove bundles that will be part of your content and build + them. mixer automatically updates the :file:`mixbundles` file when you + update the bundles in your mix. + + View the `mixer.bundle man page`_ for more information on configuring bundles + in a mix. + + View the `mixer.build man page`_ for more information on building bundles. + + View the `Bundles`_ section for more information on how mixer manages + bundles. + +#. Create the update content. + + mixer creates update content with this step. Zero-packs are created + automatically, and delta-packs can be optionally created at the same time + (for all builds after version 0). + + A zero-pack is the full set of content needed to go from mix version 0 + (nothing) to the mix version for which you just built content. + + A delta-pack provides the content *delta* between a `PAST_VERSION` to a + `MIX_VERSION` that allows the transition from one mix version to another. + + View :ref:`swupd-guide` for more information on update content. + +#. Create image. + + mixer creates a bootable image from your updated content using + the :ref:`ister` tool. In this step you can specify which bundles you want + *preinstalled* in the image. Users can later install other bundles available + in your mix. + +#. Make update available. + + Deploy update content and images to your update server. + + View the `Example 3: Deploy updates to target`_ for a simple deployment + scenario. + +Maintain or modify mix +====================== + +Update or modify your content to a new version by following the steps to +create a mix. Increment the mix version number for the next mix. + +Examples +******** + +The following examples are designed to work together and in order. The examples +use: + +* A stock installation of |CL|. +* A web server that comes with |CL| to host the content updates. +* A simple VM that updates against the locally produced content created in + Example 2. + +Complete all `Prerequisites`_ before using these examples. + +Example 1: Mix set up +====================== + +This example shows the basic steps for the first-time setup of +mixer for a new mix. + +#. Create an empty directory to use as a workspace for mixer: + + .. code-block:: bash + + mkdir ~/mixer + +#. In your mixer workspace, generate an initial mix based on the latest upstream + |CL| version, with minimum bundles. In the initialization output, be aware + that your initial mix version is set to 10 and that the minimum bundles have + been added. + + .. code-block:: bash + + cd ~/mixer + mixer init + +#. Edit :file:`builder.conf` to set the value of CONTENTURL and VERSIONURL to + the IP address of the nginx\* server you set up in the prerequisite + `Set up a nginx web server for mixer`_. For example: + + .. code-block:: console + + CONTENTURL="http://192.168.25.52" + VERSIONURL="http://192.168.25.52" + +Example 2: Create a simple mix +============================== + +This example shows how to create a simple custom mix using upstream content. +We'll create an image for a QEMU virtual machine that we can use later to test +our mix. + +We can use the default bundles that were added during initialization, but these +include the :command:`native-kernel` bundle that is intended to be used on a +bare metal system instead of a VM. So we will modify the default bundle +set to get a smaller kernel image, which will also be faster to load. + +#. Update bundles in mix: + + .. code-block:: bash + + mixer bundle remove kernel-native + mixer bundle add kernel-kvm + +#. In this case, we will add the `editors` bundle from upstream, but we will + remove the `joe` editor. + + .. code-block:: bash + + mixer bundle add editors + mixer bundle edit editors + +#. Use an editor and manually remove `joe` from the bundle definition. + + .. code-block:: bash + + $EDITOR ./local-bundles/editors + +#. List the bundles in the mix again to confirm removal. + + .. code-block:: bash + + mixer bundle list --tree + + +#. Build bundles: + + .. code-block:: bash + + mixer build bundles + + Look in ~/mixer/update/image//full for the full chroot after the + :command:`build` command completes. + +#. Build update content. Browse to your \http://localhost site and you'll see + the web page is now up, but with no update content. Build the update content: + + .. code-block:: bash + + mixer build update + + Refresh your \http://localhost site and now you can see the update + content for mix version 10. + + Look in ~/mixer/update/www/ to see the update content in your + workspace. + +#. Configure image. Edit the ister configuration file for your image to include + all of the bundles you want preinstalled in the image. If this is the first + time creating an image, first get a copy of the + :file:`release-image-config.json` template file: + + .. code-block:: bash + + curl -O https://raw.githubusercontent.com/bryteise/ister/master/release-image-config.json + + For this example, edit :file:`release-image-config.json` so that the root + partition size is "5G" and replace the "kernel-native" bundle with + "kernel-kvm". + + .. code-block:: console + + { + "DestinationType" : "virtual", + "PartitionLayout" : [ { "disk" : "release.img", "partition" : 1, "size" : "32M", "type" : "EFI" }, + { "disk" : "release.img", "partition" : 2, "size" : "16M", "type" : "swap" }, + { "disk" : "release.img", "partition" : 3, "size" : "5G", "type" : "linux" } ], + "FilesystemTypes" : [ { "disk" : "release.img", "partition" : 1, "type" : "vfat" }, + { "disk" : "release.img", "partition" : 2, "type" : "swap" }, + { "disk" : "release.img", "partition" : 3, "type" : "ext4" } ], + "PartitionMountPoints" : [ { "disk" : "release.img", "partition" : 1, "mount" : "/boot" }, + { "disk" : "release.img", "partition" : 3, "mount" : "/" } ], + "Version": "latest", + "Bundles": ["kernel-kvm", "os-core", "os-core-update"] + } + +#. Build the image. + + .. code-block:: bash + + sudo mixer build image + + The output from this step will be :file:`release.img`, which is a live image. + +#. Make the next mix. Create a new version of your mix, for the live image to + update to. Increment your mix version by 10: + + .. code-block:: bash + + mixer versions update + + Repeat steps 1-3 to add the upstream :command:`curl` bundle to the mix: + + .. code-block:: bash + + mixer bundle add curl + mixer build bundles + mixer build update + + Build optional delta-packs, which helps reduce client update time: + + .. code-block:: bash + + mixer build delta-packs --from 10 --to 20 + + Refresh your \http://localhost site to see the update content for + mix version 20. + + Look in ~/mixer/update/www/ to see the update content in your + workspace. + +Example 3: Deploy updates to target +=================================== + +The image created in Example 2 is directly bootable in QEMU. In this example, +we'll boot the image from Example 2 to verify it, and update the image from +mix version 10 (from which the image was built), to mix version 20. + +#. Set up the QEMU environment. + + Install the :command:`kvm-host` bundle to your |CL|: + + .. code-block:: bash + + sudo swupd bundle-add kvm-host + + Get the virtual EFI firmware, download the image launch script, and make it + executable: + + .. code-block:: bash + + curl -O https://download.clearlinux.org/image/OVMF.fd + curl -O https://download.clearlinux.org/image/start_qemu.sh + chmod +x start_qemu.sh + +#. Start your VM image (created in Example 2): + + .. code-block:: bash + + sudo ./start_qemu.sh release.img + +#. Log in as root and set a password + +#. Try out your mix. + + Take a look at the default bundles installed in your mix: + + .. code-block:: bash + + swupd info + swupd bundle-list + swupd bundle-list -a + +#. Now we will add the `editors` bundle that we modified. + + .. code-block:: bash + + swupd bundle add editors + +#. Try to start the `joe` editor. It should not appear because we removed it + from the original `editors` bundle. + +#. Next we will update from version 10 to 20 to capture the newly + available bundles. Use :command:`swupd` to update your mix: + + .. code-block:: bash + + swupd check-update + swupd update + swupd bundle-list -a + +#. Now your mix should be at version 20 and curl is now available. Try using + curl. This will fail because curl is not yet installed: + + .. code-block:: console + + curl: command not found + To install curl use: swupd bundle-add curl + + Add the new bundle from your update server to your VM. Retry curl. It works! + + .. code-block:: bash + + swupd bundle-add curl + curl -O https://download.clearlinux.org/image/start_qemu.sh + + Shutdown your VM: + + .. code-block:: bash + + poweroff + + +.. Example: Create a mix with custom RPM +.. ------------------------------------- +.. TODO future example to show copy into local-rpms... + +References +********** + +Reference the `mixer man page`_ for details regarding mixer commands and options. + +.. contents:: + :local: + :depth: 1 + +.. rst-class:: content-collapse + +builder.conf +============ + +mixer initialization creates a :file:`builder.conf` that stores the basic +configuration for the mixer tool. The items of primary interest are CONTENTURL +and VERSIONURL, which will be used by systems updating against your custom +content. + +.. code-block:: console + + #builder.conf + + #VERSION 1.0 + + [Builder] + CERT = "/home/clr/mix/Swupd_Root.pem" + SERVER_STATE_DIR = "/home/clr/mix/update" + VERSIONS_PATH = "/home/clr/mix" + YUM_CONF = "/home/clr/mix/.yum-mix.conf" + + [Swupd] + BUNDLE = "os-core-update" + CONTENTURL = "" + VERSIONURL = "" + + [Server] + DEBUG_INFO_BANNED = "true" + DEBUG_INFO_LIB = "/usr/lib/debug" + DEBUG_INFO_SRC = "/usr/src/debug" + + [Mixer] + LOCAL_BUNDLE_DIR = "/home/clr/mix/local-bundles" + LOCAL_REPO_DIR = "" + LOCAL_RPM_DIR = "" + DOCKER_IMAGE_PATH = "clearlinux/mixer" + +Additional explanation of variables in :file:`builder.conf` is provided in Table +1. + ++-------------------------------+----------------------------------------------------------+ +| **Variable** | **Explanation** | ++-------------------------------+----------------------------------------------------------+ +| `CERT` | Sets the path where mixer stores the certificate file | +| | used to sign content for verification. mixer | +| | automatically generates the certificate if you do not | +| | provide the path to an existing one, and signs the | +| | :file:`Manifest.MoM` file to provide security for the | +| | updated content you create. | +| | | +| | chroot-builder uses the certificate file to sign | +| | the root :file:`Manifest.MoM` file to provide | +| | security for content verification. | +| | | +| | swupd uses this certificate to verify the | +| | :file:`Manifest.MoM` file's signature. | +| | | +| | For now, we strongly recommend that you do not modify | +| | this variable, as swupd expects a certificate with a | +| | very specific configuration to sign and verify | +| | properly. | ++-------------------------------+----------------------------------------------------------+ +| `CONTENTURL` and `VERSIONURL` | Set these variables to the IP address of the web server | +| | hosting the update content. | +| | | +| | VERSIONURL is the IP address where the swupd client | +| | looks to determine if a new version is available. | +| | | +| | CONTENTURL is the location from which swupd pulls | +| | content updates. | +| | | +| | If the web server is on the same machine as the | +| | SERVER_STATE_DIR directory, you can create a symlink to | +| | the directory in your web server's document root to | +| | easily host the content. | +| | | +| | These URLs are embedded in the images created by mixer. | ++-------------------------------+----------------------------------------------------------+ +| `DOCKER_IMAGE_PATH` | Sets the base name of the docker image that mixer pulls | +| | down to run builds in the proper container. | ++-------------------------------+----------------------------------------------------------+ +| `LOCAL_BUNDLE_DIR` | Sets the path where mixer stores the local bundle | +| | definition files. The bundle definition files include | +| | any new, original bundles you create, along with any | +| | edited versions of upstream bundles. | ++-------------------------------+----------------------------------------------------------+ +| `SERVER_STATE_DIR` | Sets the path to which mixer outputs content. By | +| | default, mixer automatically sets the path. | ++-------------------------------+----------------------------------------------------------+ +| `VERSIONS_PATH` | Sets the path for the mix version and upstream version's | +| | two state files: :file:`mixversion` and | +| | :file:`upstreamversion`. mixer creates both files for | +| | you when you set up the workspace. | ++-------------------------------+----------------------------------------------------------+ +| `YUM_CONF` | Sets the path where mixer automatically generates the | +| | :file:`.yum-mix.conf` file. | +| | | +| | The yum configuration file points the chroot-builder to | +| | where the RPMs are stored. | ++-------------------------------+----------------------------------------------------------+ +| **Table 1**: *Variables in builder.conf* | ++-------------------------------+----------------------------------------------------------+ + +Format version +-------------- + +Compatible versions of an OS are tracked with an OS *compatibility epoch*. +Versions of an OS within an epoch are fully compatible and can update to any +other version within that epoch. The compatibility epoch is set as the +`Format` variable in the :file:`mixer.state` file. Variables in the +:file:`mixer.state` are used by mixer between executions and should not be +manually changed. + +A format bump is like modifying the foundation of a house to create a new +level. If `Format` increments to a new epoch (a "format bump"), the OS has +changed in such a way that updating from build A in format X to build B in +format Y will not work. + +A format bump is required when: + +* The software updater, :command:`swupd`, or the software is no longer + compatible with the previous update scheme + +* A package is removed from the update stream and the update must ensure the + files associated with that package are removed from the system + +Using a format increment, we make sure pre- and co-requisite changes flow out +with proper ordering. The updated client will only update to the latest +release in its respective format version, unless overridden by command line +flags. In this way, we can guarantee that all clients update to the final +version in their given format. + +The given format *must* contain all the changes needed to understand the content built in the next format. Only after reaching the final release in the old format can a client continue to update to releases in the new format. + +The format version is incremented only when a compatibility breakage is +introduced. Normal updates, such as updating a software package, do not require a format increment. + +.. rst-class:: content-collapse + +Bundles +======= + +mixer stores information about the bundles included in a mix in a flat file +called :file:`mixbundles`, which is located in the path set by the VERSIONS_PATH variable in :file:`builder.conf`. :file:`mixbundles` is automatically created when the mix is initiated. mixer will refresh the file each time you change the bundles in the mix. + +Bundles can include other bundles. Nested bundles can themselves include +other bundles. If you see an unexpected bundle in your mix, it is likely a +nested bundle in one of the bundles you explicitly added. + +A bundle will fill into one of two categories: upstream or local. Upstream +bundles are those provided by |CL|. Local bundles are either modified upstream bundles or new local bundles. + +Upstream bundles +---------------- + +mixer automatically downloads and caches upstream bundle definition files. +These definition files are stored in the upstream-bundles directory in the +workspace. Do not modify the files in this directory. This directory is +simply a mirror for mixer to use. mixer will automatically delete the +contents of this directory before repopulating it on-the-fly if a new +version must be downloaded. + +The mixer tool automatically caches the bundles for the |CL| version +configured in the :file:`upstreamversion` file. mixer also cleans up old +versions once they are no longer needed. + +Local bundles +------------- + +Local bundles are bundles that you create, or are edited versions of upstream +bundles. Local bundle definition files are stored in the local-bundles +directory in the workspace. The LOCAL_BUNDLE_DIR variable sets the path of this directory in the :file:`builder.conf` file. + +*mixer always checks for local bundles first and the upstream bundles +second.* So bundles in the local-bundles directory will always take +precedence over any upstream bundles that have the same name. This +precedence enables you to copy upstream bundles locally, and edit into a +local variation. + +Bundle configuration +-------------------- + +mixer provides commands to configure the bundles for a mix, such as to add a +bundle to a mix, to create a new bundle for a mix, or to remove a bundle from a +mix. View the `mixer.bundle man page`_ for a full list of commands and more +information on configuring bundles in a mix. + +Editing an existing local bundle is as simple as opening the bundle definition +file in your favorite editor, making the desired edits, and saving your changes. + +.. note:: + + Removing bundles from a mix: By default, removing a bundle will only + remove the bundle from the mix. The local bundle definition file will + still remain. To completely remove a bundle, including its local bundle definition file, use the :command:`--local` flag. + + If you remove the bundle definition file for a local, edited version of an + upstream bundle in a mix, the mix reverts to reference the original upstream version of the bundle. + +.. rst-class:: content-collapse + +Configure and enable Docker +=========================== + +Use these steps to enable Docker for the mixer tool. Make sure to +`Configure Docker proxy info`_ first if needed. + +#. Start the Docker daemon: + + .. code-block:: bash + + sudo systemctl start docker + sudo chmod 777 /var/run/docker.sock + sudo docker info + +#. Add user to the docker group + + .. code-block:: bash + + sudo usermod -G docker -a + +Pull Docker container manually (optional) +----------------------------------------- + +By default, mixer automatically pulls a Docker container for mixing if one +does not already exist. If you need to troubleshoot the mixer container, it +may be useful to manually pull a mixer Docker container. + +Versions of the mixer Docker container are available under the tags for the +`clearlinux/mixer repo `_ +on Docker Hub. Each version of the mixer Docker container is named after the +associated |CL| upstream format version. Refer to `Format version`_ for +additional information on upstream format versions. + +Use the following steps to manually pull a mixer Docker container: + +#. Find the version of the container you need by viewing the tags for the + `clearlinux/mixer repo `_ + on Docker Hub. + +#. Pull the latest container version: + + .. code-block:: bash + + docker pull clearlinux/mixer: + +#. View local docker images: + + .. code-block:: bash + + docker images + +.. rst-class:: content-collapse + +Configure Docker proxy info +=========================== + +If needed, use these steps to configure the Docker proxy information. + +#. Create the Docker daemon proxy config directory: + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/system/docker.service.d + +#. Create :file:`/etc/systemd/system/docker.service.d/http-proxy.conf` and + add the following using your own proxy values: + + .. code-block:: console + + [Service] + Environment="HTTP_PROXY=:" + Environment="HTTPS_PROXY=:" + +#. Reload the Docker daemon: + + .. code-block:: bash + + sudo systemctl daemon-reload + +Configure the Docker container proxies, to pass proxy settings to +containers: + +#. Create a directory for your container config: + + .. code-block:: bash + + mkdir ~/.docker + +#. Create the config file :file:`~/.docker/config.json` and add the following + entries, using your own proxy values: + + .. code-block:: console + + { + "proxies": + { + "default": +   { +    "httpProxy": ":", +     "httpsProxy": ":" +   } + } + } + +#. Set ownership and permission on the docker config directory: + + .. code-block:: bash + + sudo chown "$USER":"$USER" /home/"$USER"/.docker -R + sudo chmod g+rwx "$HOME/.docker" -R + +Configure proxies to allow mixer to access upstream content from behind +a firewall. + +#. Open your :file:`$HOME/.bashrc` file and add proxy and port values for the + following: + + .. code-block:: console + + export http_proxy=":" + export https_proxy=":" + export HTTP_PROXY=":" + export HTTPS_PROXY=":" + export no_proxy="<...>" + +#. Log out and log back in for the proxies to take effect. + +.. rst-class:: content-collapse + +Set up a nginx web server for mixer +=================================== + +A web server is needed to host your update content. In this example, we use +the nginx web server, which comes with |CL|. + +Set up a nginx web server for mixer with the following steps: + +#. Install the :command:`nginx` bundle: + + .. code-block:: bash + + sudo swupd bundle-add nginx + +#. Make the directory where mixer updates will reside: + + .. code-block:: bash + + sudo mkdir -p /var/www + +#. Create a symbolic link between your workspace updates and the updates on + the local nginx web server. In this example, `$HOME/mixer` is the + workspace for the mix. + + .. code-block:: bash + + sudo ln -sf $HOME/mixer/update/www /var/www/mixer + +#. Set up ``nginx`` configuration: + + .. code-block:: bash + + sudo mkdir -p /etc/nginx/conf.d + +#. Copy the default example configuration file: + + .. code-block:: bash + + sudo cp -f /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf + +#. Configure the mixer update server. Create and add the following server + configuration content to :file:`/etc/nginx/conf.d/mixer.conf` (sudo required): + + .. code-block:: console + + server { + server_name localhost; + location / { + root /var/www/mixer; + autoindex on; + } + } + +#. Restart the daemon, enable nginx on boot, and start the service. + + .. code-block:: bash + + sudo systemctl daemon-reload + + sudo systemctl enable nginx + + sudo systemctl start nginx + +#. Verify the web server is running at \http://localhost. At this point + you should no longer see a "404 Not Found" message. + +Related topics +************** + +* :ref:`autospec` +* :ref:`bundles-guide` +* :ref:`swupd-guide` + +.. _Docker Hub: https://hub.docker.com/r/clearlinux/mixer/tags/ +.. _mixer man page: https://github.com/clearlinux/mixer-tools/blob/master/docs/mixer.1.rst +.. _mixer.init man page: https://github.com/clearlinux/mixer-tools/blob/master/docs/mixer.init.1.rst +.. _mixer.bundle man page: https://github.com/clearlinux/mixer-tools/blob/master/docs/mixer.bundle.1.rst +.. _mixer.build man page: https://github.com/clearlinux/mixer-tools/blob/master/docs/mixer.build.1.rst +.. _releases: https://github.com/clearlinux/clr-bundles/releases diff --git a/zh_CN/_sources/guides/clear/security.rst.txt b/zh_CN/_sources/guides/clear/security.rst.txt new file mode 100644 index 000000000..c78fb6d30 --- /dev/null +++ b/zh_CN/_sources/guides/clear/security.rst.txt @@ -0,0 +1,156 @@ +.. _security: + +OS Security +########### + +|CL-ATTR| aims to make systemic and layered security-conscious decisions +that are both performant and practical. This security philosophy is rooted +within the project's codebase and operating culture. + +.. contents:: :local: + :depth: 1 + +Security in updates +******************* + +The |CL| team believes in the benefits of software security through open +sourcing, incremental updates, and rapidly resolving known security advisories. + +The latest Linux\* codebase +=========================== + +|CL| uses the newest version of the Linux kernel which allows the operating +system to leverage the latest features from the upstream Linux kernel, +including security fixes. + +Automated effective updating +============================ + +|CL| is incrementally updated multiple times per day. + +This `rolling release`_ model allows |CL| to consume the latest security fixes +of software packages as soon as they become available. There is no waiting for +major or minor releases on |CL|. + +An update is not effective if it is just simply downloaded onto a system. +It needs to be obtained *AND* ensured that the new patched copy is being +used; not an older copy loaded into memory. |CL| will let you know when a +service needs to be rebooted or do it for your automatically after +a software update, if desired. + +In |CL| updates are delivered automatically, efficiently, and effectively. For +more information about software updates in |CL|, refer to the :ref:`swupd-guide` +guide. + +Automated CVE scanning and remediation +====================================== + +The sheer number of software packages and security vulnerabilities is growing +exponentially. Repositories of Common Vulnerabilities and Exposures (CVEs) +and their fixes, if known, are published by :abbr:`NIST` in a +National Vulnerability Database \ |NVD|\ and at \ |MITRE|\ . + +|CL| employs a proactive and measured approach to addressing known +and fixable :abbr:`CVEs (Common Vulnerabilities and Exposures)`. +Packages are automatically scanned against CVEs daily, and security +patches are deployed as soon as they are available. + +These combined practices minimize the amount of time |CL| systems are exposed to unnecessary security risk. + +Security in software +********************* + +Minimized attack surface +======================== + +|CL| removes legacy, unneeded, or redundant standards and components as much as +possible to enable the use of best known security standards. Below are some +examples: + +* `RC4`, `SSLv3`, `3DES`, and `SHA-1` ciphers which have had known + vulnerabilities, have been explicitly disabled within many |CL| packages to + avoid their accidental usage. + +* Services and subsystems which expose sensitive system information + have been removed such as the `finger` and `tcpwrappers`. + +* `SFTP` has been disabled by default due to security considerations. + +Verified trust +============== + +|CL| encourages the use of secure practices such as encryption +and digital signature verification throughout the system and discourages blind +trust. Below are some examples: + +* All update operations from swupd are transparently encrypted and checked + against the |CL| maintainers' public key for authenticity. + More information about swupd security can be found in the + `Security for software update in Clear Linux* OS`_ blog post. + +* Before being built, packages available from |CL| verify checksums and + signatures provided by third party project codebases and maintainers. + +* |CL| features a unified certificate store, `clrtrust`_ which comes + ready to work with well-known Certificate Authorities out of the box. + clrtrust also offers an easy to use command line interface for managing + system-wide chains of trust, instead of ignoring foreign certificates. + +Compiled with secure options +============================ + +While |CL| packages are optimized for performance on Intel® architecture, +security conscious kernel and compiler options are sensibly taken advantage of. +Below are some examples: + +* Kernels shipped with |CL| are signed and disallow the usage of + custom kernel modules to maintain verifiable system integrity. + +* `Address space layout randomization (ASLR)`_ and + `Kernel address space layout randomization (KASLR)`_ are kernel features + which defend against certain memory based attacks. + More information about PIE executables can be found in the + `Recent GNU* C library improvements`_ blog post. + +Security in system design +************************* + +Simple, yet effective, techniques are used throughout the |CL| system design to +defend against common attack vectors and enable good security hygiene. Below are +some examples: + +* Full disk encryption using :abbr:`LUKS (Linux Unified Key Setup)` is available + during installation. Refer to `cryptsetup`_ for additional information about + LUKS. + +* |CL| uses the PAM cracklib module to harden user login and password + security resulting in: + + - No default username or root password set out of the box with + |CL|, you will be asked to set your own password immediately. + + - Simple password schemes, which are known to be easily compromised, + cannot be set in |CL|. + + - A password blacklist, to avoid system passwords being set to + passwords which have been compromised in the past. + +* `Tallow`_, a lightweight service which monitors and blocks suspicious SSH + login patterns, is installed with the :command:`openssh-server` bundle. + +.. _`Security for software update in Clear Linux* OS`: https://clearlinux.org/blogs/security-software-update-clear-linux-os-intel-architecture +.. _`Recent GNU* C library improvements`: https://clearlinux.org/blogs/recent-gnu-c-library-improvements +.. _`rolling release`: https://en.wikipedia.org/wiki/Rolling_release +.. _`clrtrust`: https://github.com/clearlinux/clrtrust +.. _`Address space layout randomization (ASLR)`: https://en.wikipedia.org/wiki/Address_space_layout_randomization +.. _`Kernel address space layout randomization (KASLR)`: https://lwn.net/Articles/569635/ +.. _`cryptsetup`: https://gitlab.com/cryptsetup/cryptsetup/ +.. _`Tallow`: https://github.com/clearlinux/tallow + +.. |NVD| raw:: html + + https://nvd.nist.gov/ + +.. |MITRE| raw:: html + + https://cve.mitre.org/ diff --git a/zh_CN/_sources/guides/clear/stateless.rst.txt b/zh_CN/_sources/guides/clear/stateless.rst.txt new file mode 100644 index 000000000..c80b9d9a0 --- /dev/null +++ b/zh_CN/_sources/guides/clear/stateless.rst.txt @@ -0,0 +1,139 @@ +.. _stateless: + +Stateless +######### + +In most operating systems, user data, system data, and configuration files +can become intermingled. + +.. figure:: figures/stateless-1.png + :scale: 45% + :align: center + :alt: Stateless: User and system files mixed + + Figure 1: Without stateless, user and system files become mixed on the filesystem over time. + +|CL-ATTR| has a stateless design philosophy with the goal to provide an +:abbr:`OS (operating system)` that functions without excessive user +configuration or customization. Stateless in this context does *not* mean +ephemeral or non-persistent. + +.. contents:: :local: + :depth: 1 + +File-level separation +********************* + +To accomplish a stateless design the Linux Filesystem Hierarchy is separated +between user-owned areas and |CL|-owned areas. + +.. figure:: figures/stateless-2.png + :scale: 45% + :align: center + :alt: Stateless: User and system files separation + + Figure 2: With stateless, user and system files are separated on the filesystem. + +System areas +============ +File under the :file:`/usr` directory are managed by |CL| as system files. +Files written under the :file:`/usr` directory by users can get removed +through system updates with :ref:`swupd `. This operating +assumption allows |CL| to verify and maintain integrity of system files. + +User areas +========== +Files under the :file:`/etc/`, :file:`/home`, and :file:`/var` directories are +owned and managed by the user. A freshly installed |CL| system will only have +a minimal set of files in the :file:`/etc/` directory and software installed +by |CL| does not write to :file:`/etc`. This operating assumption allows |CL| +users to clearly identify the configuration that makes their system unique. + + +Software configuration +********************** + +With stateless separation, default software configurations are read in order +from predefined source code, |CL| provided defaults, and user-provided +configuration. + +Default configurations +====================== + +Software in |CL| provides default configuration values so that it is +immediately functional, whenever it is appropriate to do so. + +|CL| distributed software packages may be directly modified to include default +configuration values or default configuration files may be provided by |CL| +under :file:`/usr/share/defaults`. These files can be referenced as templates +for customization. + +For example, the default configuration that Apache uses when installed can be +found at :file:`/usr/share/defaults/httpd/httpd.conf` directory. + + +Overriding configurations +========================= + +If a configuration needs to be changed, the appropriate file should be +modified by the user under :file:`/etc/`. If the configuration file does not +already exist, it can be created in the appropriate location. + +User defined configuration files should contain the minimal set of desired +changes and rely on default configuration for the rest. + +For example, a customized Apache configuration can be used instead by: + +#. Create the destination directory for the configuration: + + .. code-block:: bash + + sudo mkdir /etc/httpd + +#. Copy the default configuration as a reference template: + + .. code-block:: bash + + sudo cp /usr/share/defaults/httpd/httpd.conf /etc/httpd/ + +#. Make any desired modifications to the configurations: + + .. code-block:: bash + + sudoedit /etc/httpd/httpd.conf + +#. Reload the service or reboot the system to pickup any changes: + + .. code-block:: bash + + systemctl daemon-reload httpd && systemctl restart httpd + +This pattern can be used to modify the configurations of other programs too. +The `stateless man page`_ has application-specific examples. + +System reset +************ + +Once advantage of the stateless design is that the system defaults can be +easily restored by simply deleting everything under :file:`/etc/` and +:file:`/var`. + +Running the commands below effectively performs a system reset as if it was +just installed: + +.. code-block:: bash + + sudo rm -rf /etc + sudo rm -rf /var + +In other Linux distributions, this can be a catastrophic action that renders +a system unable to boot. + +Additional information +********************** + +* `stateless man page`_ + +.. _`stateless man page`: https://github.com/clearlinux/clr-man-pages/blob/master/stateless.7.rst + + diff --git a/zh_CN/_sources/guides/clear/swupd.rst.txt b/zh_CN/_sources/guides/clear/swupd.rst.txt new file mode 100644 index 000000000..22c74243a --- /dev/null +++ b/zh_CN/_sources/guides/clear/swupd.rst.txt @@ -0,0 +1,353 @@ +.. _swupd-guide: + +swupd +##### + +:command:`swupd` links a |CL-ATTR| installation with upstream updates and +software. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +:command:`swupd` has two main functions: + +#. Manage software and replace APT or YUM, by installing bundles + rather than packages. +#. Check for system updates and install them. + +:command:`swupd` manages overlapping dependencies behind the scenes, ensuring +that all software is compatible across the system. It can be used to verify +the OS, clean cached files, and fix issues. + +:ref:`Bundles ` contain everything needed to deliver a software +capability. They are the smallest granularity component that is +managed by |CL|. A bundle comes with all of its dependencies rather than +downloading a cascade of package dependencies when installing a piece of +software. + +Versioning +========== + +Using package managers to monitor software version compatibility or +compare multiple systems on many Linux distributions can be cumbersome. + +With |CL| :command:`swupd`, versioning happens at the individual file level. +This means |CL| generates an entirely new OS version with any set of software +changes to the system, including software downgrades or removals. This +rolling release versioning model is similar to :command:`git` internal version +tracking, where any of the individual file commits are tracked and move the +pointer forward when changed. + +A number that represents the **current** release of the OS describes the +versions of all the software on the OS. Each build is composed of a specific +set of bundles made from a particular version of packages. On a daily basis, +this matters to system administrators who need to determine which of their +systems do not have the latest security fixes, or which combinations of +software have been tested. Every release of the same number is guaranteed to +contain the same versions of software, so there's no ambiguity between two +systems running the same version of |CL|. + +Updating +======== + +|CL| enforces regular updating of the OS by default and automatically +checks for updates against a version server. The content server provides the +file and metadata content for all versions and can be the same as the +version server. The content url server provides metadata in the form of +*manifests*, which list and describe file contents, symlinks, +and directories. Additionally, the actual content is provided to clients +in the form of archive files. + +Software updates with |CL| are also efficient. Unlike package-based +distributions, :command:`swupd` only updates files that have changed, rather +than entire packages. For example, it is quite common for an OS security +patch to be as small as 15 KB. Using binary deltas, |CL| is able to +apply only what is needed. + +For details on how to generate update content for |CL|, see the +:ref:`mixer ` tool. + +How it works +************ + +Prerequisites +============= + +* The device is on a well-connected network. +* The device is able to connect to an update server. The default server is: + http://update.clearlinux.org + +Updates +======= + +|CL| updates are automatic by default, but can be set to occur only on +demand. :command:`swupd` makes sure that regular updates are simple and +secure. It can also check the validity of currently installed files and +software, and can correct any problems. + +Manifests +--------- + +The |CL| software update content consists of data and metadata. The data is +the files that end up in the OS. The metadata contains relevant information to +properly provision the data to the OS file system, as well as update the +system and add or remove additional content to the OS. + +The manifests are mostly long lists of hashes that describe content. +Each bundle gets its own manifest file. There is a master manifest +file that describes all manifests to tie it all together. + +Fullfiles, packs, and delta packs +--------------------------------- + +To speed up updates and optimize content delivery, update data provisioned to +a system is obtained by one of the following methods: + +* *Fullfiles* are always generated for every file in every release. This + allows any |CL| to obtain the exact copy of the content + for each version directly. This is used if the OS verification + needs to replace a single file, for instance. + +* *Packs* are available for some releases. They combine many files to speed + up the creation of installation media and large updates. + +* *Delta packs* are an optimized version of packs that only contain updates + (binary diffs). They cannot be used without having the original file content. + +Bundle search +============= + +:command:`swupd` searches download manifest data for +bundles that match the term. Enter only one term, or hyphenated term, per +search. Use the command :command:`man swupd` to learn more. + +Only the base bundle is returned. Bundles can contain other bundles via +includes. For more details, see `Bundle Definition Files`_ and its +subdirectory bundles. + +Bundles that are already installed are marked **(installed)** in search +results. + +Optionally, you can review our `bundles`_ on GitHub\*. + +Examples +******** + +Example 1: Disable and enable automatic updates +=============================================== + +|CL| updates are automatic by default, but can be set to occur only +on demand. + +#. Verify your current auto-update setting. + + .. code-block:: bash + + sudo swupd autoupdate + + Output: + + .. code-block:: console + + Enabled + +#. Disable automatic updates. + + .. code-block:: bash + + sudo swupd autoupdate --disable + + Output: + + .. code-block:: console + + Warning: disabling automatic updates may take you out of compliance with your IT policy + + Running systemctl to disable updates + Created symlink /etc/systemd/system/swupd-update.service → /dev/null. + Created symlink /etc/systemd/system/swupd-update.timer → /dev/null. + +#. Check manually for updates. + + .. code-block:: bash + + sudo swupd check-update + +#. Install an update after identifying one that you need. + + .. code-block:: bash + + sudo swupd update --version + +#. Re-enable automatic installs. + + .. code-block:: bash + + sudo swupd autoupdate --enable + +.. _swupd-guide-example-install-bundle: + +Example 2: Find and install Kata Containers\* +============================================= + +Kata Containers is a popular container implementation. Unlike other +container implementations, each Kata Container has its own +kernel instance and runs on its own :abbr:`VM (Virtual Machine)` for +improved security. + +|CL| makes it very easy to install, since you only need to add +one bundle to use `Kata Containers`_: `containers-virt`_, despite a +number of dependencies. Also, check out our tutorial: :ref:`kata`. + +#. Find the correct bundle. + + To return all possible matches for the search string, enter + :command:`swupd search`, followed by 'kata': + + .. code-block:: bash + + sudo swupd search kata + + The output should be similar to: + + .. code-block:: console + + Bundle with the best search result: + + containers-virt - Run container applications from Dockerhub in + lightweight virtual machines + + This bundle can be installed with: + + swupd bundle-add containers-virt + + Alternative bundle options are + + cloud-native-basic - Contains ClearLinux native software for Cloud + + .. note:: + + If your search does not produce results with a specific term, shorten + the search term. For example, use *kube* instead of *kubernetes*. + +#. Add the bundle. + + .. code-block:: bash + + sudo swupd bundle-add containers-virt + + .. note:: + + To add multiple bundles, add a space followed by the bundle name. + + The output of a successful installation should be similar to: + + .. code-block:: console + + Downloading packs... + + Extracting containers-virt pack for version 24430 + ...50% + Extracting kernel-container pack for version 24430 + ...100% + Starting download of remaining update content. This may take a while... + ...100% + Finishing download of update content... + Installing bundle(s) files... + ...100% + Calling post-update helper scripts. + Successfully installed 1 bundle + +Example 3: Verify and correct system file mismatch +================================================== + +:command:`swupd` can determine whether system directories and files have +been added to, overwritten, removed, or modified (e.g., permissions). + +.. code-block:: bash + + sudo swupd diagnose + +All directories that are watched by :command:`swupd` are verified according +to the manifest data. Hash mismatches are flagged as follows: + +.. code-block:: console + + Verifying version 23300 + Verifying files + ...0% + Hash mismatch for file: /usr/bin/chardetect + ... + ... + Hash mismatch for file: /usr/lib/python3.6/site-packages/urllib3/util/wait.py + ...100% + Inspected 237180 files + 423 files did not match + Verify successful + +In this case, Python\* packages that were installed on top of the default +install were flagged as mismatched. :command:`swupd` can be directed to +ignore or fix issues based on command line options. + +:command:`swupd` can correct any issues it detects. Additional directives +can be added including a white list of directories to be ignored. + +The following command repairs issues, removes unknown items, and +ignores files or directories matching :file:`/usr/lib/python`: + +.. code-block:: bash + + sudo swupd repair --picky --picky-whitelist=/usr/lib/python + +.. _swupd-quick-ref: + +Quick reference +*************** + +swupd info + Returns the currently installed version and update servers. + +swupd update + Updates to a specific version or updates to latest version if no + arguments are used. + +swupd bundle-list [--all] + Lists installed bundles. + +swupd bundle + Finds a bundle that contains your search term. + +swupd bundle-add + Adds a bundle. + +swupd bundle-remove + Removes a bundle. + +swupd --help + Lists additional :command:`swupd` commands. + +man swupd + Opens the :command:`swupd` man page. + +Refer to `swupd source documentation`_ on GitHub for more details. + +Related topics +************** + +* :ref:`autospec` +* :ref:`mixer` +* :ref:`bundles` + +.. _swupd source documentation: https://github.com/clearlinux/swupd-client/blob/master/docs/swupd.1.rst + +.. _Kata Containers: https://clearlinux.org/downloads/containers + +.. _containers-virt: https://github.com/clearlinux/clr-bundles/blob/master/bundles/containers-virt + +.. _Bundle Definition Files: https://github.com/clearlinux/clr-bundles + +.. _bundles: https://github.com/clearlinux/clr-bundles/tree/master/bundles \ No newline at end of file diff --git a/zh_CN/_sources/guides/clear/telemetrics.rst.txt b/zh_CN/_sources/guides/clear/telemetrics.rst.txt new file mode 100644 index 000000000..6e0fa4ab0 --- /dev/null +++ b/zh_CN/_sources/guides/clear/telemetrics.rst.txt @@ -0,0 +1,860 @@ +.. _telem-guide: + +Telemetrics +########### + +This guide describes the |CL-ATTR| telemetry solution. + +.. important:: + + Telemetry in |CL| is **opt-in**. The telemetry client is **not** active + and sends **no** data until you explicitly enable it. + +.. note:: + + The telemetry functionality adheres to `Intel privacy policies `_ + regarding the collection and use of :abbr:`PII (Personally Identifiable Information)` and is open source. + + No intentionally identifiable information about the user or system owner is + collected. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Telemetrics in |CL| is a client and server solution used to collect +data from running |CL| systems to help quickly identify and fix bugs in the +OS. Both client and server are customizable, and an API is available on the +client side for instrumenting your code for debug and analysis. + +Telemetry, one of the key features of |CL|, enables developers to observe and +proactively address issues in the OS before end users are impacted. + +Telemetrics is a combination word made from: + +* Telemetry, which is sensing and reporting data. +* Analytics, which is using visualization and statistical inferencing to make + sense of the reported data. + +|CL| telemetry reports system-level debug/crash information using specialized +probes. The probes monitor system tasks such as swupd, kernel oops, machine +error checks, and the BIOS error report table for unhandled hardware +failures. Telemetry enables real-time issue reporting to allow system +developers to focus quickly on an issue and monitor corrective actions. + +|CL| telemetry is fully customizable and can be used during software +development for debugging purposes. You can use the libtelemetry library in +your code to create custom telemetry records. You can also use the +telem-record-gen utility in script files for light-touch record creation +where instrumenting code files doesn't make sense. + +The |CL| telemetrics solution is an **opt-in** choice on the client side. +By default, the telemetry client is disabled until you choose to enable it. +Enabling the client is covered in this guide. + +Architecture +============ + +|CL| telemetry has two fundamental components, which are shown in Figure 1: + +* Client: generates and delivers records to the backend server via the network. + +* Backend: receives records sent from the client and displays the cumulative + content through a specialized web interface. + +.. figure:: /_figures/telemetrics/telemetry-e2e.png + :alt: Figure 1, Telemetry Architecture + + Figure 1: :guilabel:`|CL| Telemetry Architecture` + +The telemetry client provides the front end of the telemetrics solution and +includes the following components: + +* telemprobd, which is a daemon that receives and prepares telemetry records + from probes and spools them to disk. +* telempostd, which is a daemon that manages spooled telemetry records and + delivers these records according to configurable settings. +* probes, which collect specific types of data from the operating system. +* libtelemetry, which is the API that telemetrics probes use to create records. + +The telemetry backend provides the server-side component of the telemetrics +solution and consists of: + +* Nginx web server. +* Two Flask apps: + + * Collector, which is an ingestion web app for records received from client + probes. + * TelemetryUI, which is a web app that exposes different views to visualize + the telemetry data. +* PostgreSQL as the underlying database server. + +.. note:: + + The default telemetry backend server is hosted by the Intel |CL| development + team and is not viewable outside the Intel firewall. To collect your own + records, you must set up your own telemetry backend server. + +How to use +********** + +From a workflow perspective, the |CL| telemetrics system is straightforward. +On the client side, the main decisions after installation and enabling +telemetry involve what to do with the record data generated by the probes. +You can send the data to the default or a custom backend server, keep the data +local to the system, or both. The backend server has a more complex setup, but +once it's running, it is simple to use and configure. + +This section describes some of the possible scenarios for configuring +the |CL| telemetrics system, and suggests which ones make sense according to +your needs. + +Scenarios +========= + +#. Enable telemetry: + + Before probes can generate records, the telemetry client daemons must be + enabled. You can configure the client before enabling by creating a custom + :file:`telemetrics.conf` file that you place in the :file:`/etc/telemetrics` + directory. If you choose to use the default settings, records will be sent + to the telemetrics backend server managed by the |CL| development team at + Intel. + +#. Save record data locally: + + You can configure the telemetry client to save records locally. This is + convenient when you want instant feedback during a development cycle, or to + track system issues if you believe there is a machine specific problem. The + client can be set not to send records at all, or to both keep the records + locally and send to the backend server. + +#. Set up a server to collect data: + + Whether you are managing a network of |CL| systems or you don't want to + send records to the default telemetry server, you can set up a backend + server to collect your records. The backend server can be installed on any + Linux system and provides the same dashboard as the default server. + + +#. Instrument your code with the libtelemetry API: + + The :command:`telemetrics` bundle includes the libtelemetry C library, which + exposes an API used by the telemprobd and telempostd daemons. You can use + these in your applications as well. The API documentation is found in the + :file:`telemetry.h` file in `Telemetrics client`_ repository. + + +Examples +******** + +.. contents:: + :local: + :depth: 1 + +Enable or disable telemetry +=========================== + +#. Enabling during installation: + + During the initial installation of |CL|, you are requested to join the + stability enhancement program and allow |CL| to collect anonymous reports to + improve system stability. If you choose not to join this program, then the + telemetry software bundle is not added to your system. Choosing to join will + automatically enable telemetry on your system after installation is + complete. + +#. Enabling after install: + + To start telemetry on your system, run the following command: + + .. code-block:: bash + + sudo telemctl start + + This enables and starts the :command:`telemprobd` and :command:`telempostd` + daemons. Your system will begin to send telemetry data to the server defined + in the file :file:`/etc/telemetrics/telemetrics.conf`. If this file does not + exist, the :command:`telemprobd` and :command:`telempostd` daemons will use + the file :file:`/usr/share/defaults/telemetrics/telemetrics.conf`. + +#. Disabling after install: + + To disable both of the telemetry daemons, run the following command: + + .. code-block:: bash + + sudo telemctl stop + +#. Opt in to telemetry: + + To opt-in to the telemetry services, simply enter the opt-in command, which + also starts the service: + + .. code-block:: bash + + sudo telemctl opt-in + + This removes the :file:`/etc/telemetrics/opt-out` file, if it exists, and + starts the telemetry services. + + .. note:: + + To opt-in but not immediately start telemetry services, you must + run the command :command:`sudo telemctl stop` after the :command:`opt-in` + command is entered. Once you are ready to start the service, enter the + command :command:`sudo telemctl start`. + +#. Opt out of telemetry: + + To stop sending telemetrics data from your system, opt out of the telemetry + service: + + .. code-block:: bash + + sudo telemctl opt-out + + This creates the file :file:`/etc/telemetrics/opt-out` and stops the + telemetry services. + + +Saving data locally +=================== + +This example requires |CL| to be installed and telemetry to be enabled on the +system. + +To change how records are managed, copy the default +:file:`/usr/share/defaults/telemetrics/telemetrics.conf` file to +:file:`/etc/telemetrics/telemetrics.conf` and edit it. The changes in the +:file:`/etc/telemetrics/telemetrics.conf` file will override the defaults in +the :file:`/usr/share/defaults/telemetrics/telemetrics.conf` file. You may need +root permissions to create and edit files in :file:`/etc`. For each +example, and for any time you make changes to the configuration file, you must +restart the client daemons to pick up the changes: + +.. code-block:: bash + + sudo telemctl restart + + +The :command:`telemctl journal` command gives you access to features and +options of the telemetry journal to assist with system analytics and debug. +:command:`telemctl journal` has a number of options to help filter records. +Use :command:`-h` or :command:`--help` to view usage options. + + +#. Keep a local copy and send records to backend server: + + To keep a local copy of the telemetry record and also send it on to the + backend server, we will need to change the + :guilabel:`record_retention_enabled` configuration key value to + :guilabel:`true`. + +#. Keep all records -- don't send to backend server: + + To keep records on the system without sending them to a backend server, set + the :guilabel:`record_server_delivery_enabled` key value to + :guilabel:`false`. Note that you will also need to ensure the + :guilabel:`record_retention_enabled` configuration key value is set to + :guilabel:`true` or the system will not keep local copies. + +#. Keep and send records to custom server: + + This assumes you have set up a custom server according to the next example. + + The server is identified by the :guilabel:`server` setting, and by default + records are sent to the |CL| server + :guilabel:`server=https://clr.telemetry.intel.com/v2/collector`. To change + this, you can use an IP address or fully qualified domain name. + + +Set up a back-end server to collect telemetry records +===================================================== + +For this example, start with a clean installation of |CL| on a new system +using the :ref:`bare-metal-install-server` getting started guide and: + +#. Join the :guilabel:`Stability Enhancement Program` to install and + enable the telemetrics components. + +#. Select the manual installation method with the following settings: + + * Set the hostname to :guilabel:`clr-telem-server`, + * Create an administrative user named :guilabel:`clear` and add this user + to sudoers + +#. Log in with your administrative user, from your :file:`$HOME` directory, + run :command:`git` to clone the :guilabel:`telemetrics-backend` repository + into the :file:`$HOME/telemetrics-backend` directory: + + .. code-block:: console + + git clone https://github.com/clearlinux/telemetrics-backend + + .. note:: + + You may need to set up the :envvar:`https_proxy` environment variable if + you have issues reaching github.com. + +#. Change your current working directory to :file:`telemetrics-backend/scripts`. +#. Before you install the telemetrics backend with the :file:`deploy.sh` script + file in the next step, here is an explanation of the options to be specified: + + * :command:`-a install` to perform an install + * :command:`-d clr` to install to a |CL| distro + * :command:`-H localhost` to set the domain to localhost + + .. caution:: + The :file:`deploy.sh` shell script has minimal error checking and makes + several changes to your system. Be sure that the options you define on + the cmdline are correct before proceeding. + +#. Run the shell script from the :file:`$HOME/telemetrics-backend/scripts` + directory: + + .. code-block:: console + + ./deploy.sh -H localhost -a install -d clr + + + + The script starts and lists all the defined options and prompts you for + the :guilabel:`PostgreSQL` database password. + + .. code-block:: console + + Options: + host: localhost + distro: clr + action: install + repo: https://github.com/clearlinux/telemetrics-backend + source: master + type: git + DB password: (default: postgres): + +#. For the :guilabel:`DB password:`, press the :kbd:`Enter` key to accept the + default password `postgres`. + + .. note:: + + The :file:`deploy.sh` script uses :command:`sudo` to run commands and you + may be prompted to enter your user password at any time while the script + is executing. If this occurs, enter your user password to execute the + :command:`sudo` command. + + +#. After all the server components have been installed, you are prompted to + enter the :guilabel:`PostgreSQL` database password to change it as + illustrated below: + + .. code-block:: console + + Enter password for 'postgres' user: + New password: + Retype new password: + passwd: password updated successfully + + Enter `postgres` for the current value of the password and then enter a new + password, retype it to verify the new password and the :guilabel:`PostgreSQL` + database password will be updated. + +#. After the installation is complete, you can use your web browser to view the + new server by opening the browser on the system and typing in localhost + in the address bar. You should see a web page similar to the one shown in + Figure 2 below. + + .. figure:: /_figures/telemetrics/telemetry-backend-1.png + :alt: Telemetry UI + + Figure 2: :guilabel:`Telemetry UI` + +Create records with telem-record-gen +==================================== + +The telemetrics bundle provides a record generator tool called +`telem-record-gen`. This tool can be used to create records from shell +scripts or the command line when writing a probe in C is not desirable. +Records are sent to the backend server, and can also be echoed to stdout. + +There are three ways to supply the payload to the record. + +#. On the command line, use the :command:`-p ` option: + + .. code-block:: bash + + telem-record-gen -c a/b/c -n -o -p 'payload goes here' + + .. code-block:: console + + record_format_version: 4 + classification: a/b/c + severity: 1 + machine_id: FFFFFFFF + creation_timestamp: 1539023189 + arch: x86_64 + host_type: innotek GmbH|VirtualBox|1.2 + build: 25180 + kernel_version: 4.14.71-404.lts + payload_format_version: 1 + system_name: clear-linux-os + board_name: VirtualBox|Oracle Corporation + cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz + bios_version: VirtualBox + event_id: 2236710e4fc11e4a646ce956c7802788 + + payload goes here + +#. Specify a file that contains the payload with the option + :command:`-P path/to/file`. + + .. code-block:: bash + + telem-record-gen -c a/b/c -n -o -P ./payload_file.txt + + .. code-block:: console + + record_format_version: 4 + classification: a/b/c + severity: 1 + machine_id: FFFFFFFF + creation_timestamp: 1539023621 + arch: x86_64 + host_type: innotek GmbH|VirtualBox|1.2 + build: 25180 + kernel_version: 4.14.71-404.lts + payload_format_version: 1 + system_name: clear-linux-os + board_name: VirtualBox|Oracle Corporation + cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz + bios_version: VirtualBox + event_id: d73d6040afd7693cccdfece479df9795 + + payload read from file + +#. If the :command:`-p` or :command:`-P` options are absent, the tool reads + from stdin so you can use it in a :file:`heredoc` in scripts. + + .. code-block:: bash + + #telem-record-gen -c a/b/c -n -o << HEOF + payload read from stdin + HEOF + + .. code-block:: console + + record_format_version: 4 + classification: a/b/c + severity: 1 + machine_id: FFFFFFFF + creation_timestamp: 1539023621 + arch: x86_64 + host_type: innotek GmbH|VirtualBox|1.2 + build: 25180 + kernel_version: 4.14.71-404.lts + payload_format_version: 1 + system_name: clear-linux-os + board_name: VirtualBox|Oracle Corporation + cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz + bios_version: VirtualBox + event_id: 2f070e8e71679f2b1f28794e3a6c42ee + + payload read from stdin + +Set a static machine id +======================= + +The machine id reported by the telemetry client is rotated every three days +for privacy reasons. If you wish to have a static machine id for testing +purposes, you can opt in by creating a file named `opt-in-static-machine-id` +in the directory :file:`/etc/telemetrics/`. + +#. Create a directory `telemetrics`. + + .. code-block:: bash + + sudo mkdir -p /etc/telemetrics + + +#. Create the file and replace the "unique machine ID" with your desired + static machine ID. + + .. code-block:: bash + + echo "unique machine ID" | sudo tee /etc/telemetrics/opt-in-static-machine-id + +.. note:: + + The machine ID is different than the system hostname. + +Instrument your code with the libtelemetry API +============================================== + +Prerequisites +------------- + +Confirm that the telemetrics header file is located on the system at +:file:`usr/include/telemetry.h` The `latest version`_ of the file can also be +found on github for reference, but installing the :command:`telemetry` bundle +will install the header file that matches your |CL| version. + +#. Includes and variables: + + You must include the following headers in your code to use the API: + + .. code-block:: console + + #define _GNU_SOURCE + #include + #include + #include + #include + + + Use the following code to create the variables needed to hold the data for + the record to be created: + + .. code-block:: console + + uint32_t severity = 1; + uint32_t payload_version = 1; + char classification[30] = "org.clearlinux/hello/world"; + struct telem_ref *tm_handle = NULL; + char *payload; + int ret = 0; + + + + Severity: + Type: uint32_t + Value: Severity field value. Accepted values are in the range 1-4, with + 1 being the lowest severity, and 4 being the highest severity. Values + provided outside of this range are clamped to 1 or 4. [low, med, high, + crit] + + Payload_version: + Type: uint32_t + Value: Payload format version. The only supported value right now is 1, + which indicates that the payload is a freely-formatted (unstructured) + string. Values greater than 1 are reserved for future use. + + Classification: + Type: char array + Value: It should have the form, DOMAIN/PROBENAME/REST: DOMAIN is the + reverse domain to use as a namespace for the probe (e.g. org.clearlinux), + PROBENAME is the name of the probe, and REST is an arbitrary value that + the probe should use to classify the record. The maximum length for the + classification string is 122 bytes. Each sub-category may be no longer + than 40 bytes long. Two / delimiters are required. + + Tm_handle: + Type: Telem_ref struct pointer + Value: Struct pointer declared by the caller, The struct is initialized + if the function returns success. + + Payload: + Type: char pointer + Value: The payload to set + +#. For this example, we'll set the payload to “hello” by using + :command:`asprintf()`: + + .. code-block:: console + + if (asprintf(&payload, "hello\n") < 0) { + exit(EXIT_FAILURE); + } + + The functions :command:`asprintf()` and :command:`vasprintf()` are analogs of + :command:`sprintf(3)` and :command:`vsprintf(3)`, except that they allocate a + string large enough to hold the output including the terminating null byte + ('\0'), and return a pointer to it via the first argument. This pointer + should be passed to :command:`free(3)` to release the allocated storage when + it is no longer needed. + +#. Create the new telemetry record: + + The function :command:`tm_create_record()` initializes a telemetry record and + sets the severity and classification of that record, as well as the payload + version number. The memory needed to store the telemetry record is allocated + and should be freed with :command:`tm_free_record()` when no longer needed. + + .. code-block:: console + + if ((ret = tm_create_record(&tm_handle, severity, classification, payload_version)) < 0) { + printf("Failed to create record: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } + +#. Set the payload field of a telemetrics record: + + The function :command:`tm_set_payload()` attaches the provided telemetry record + data to the telemetry record. The current maximum payload size is 8192b. + + .. code-block:: console + + if ((ret = tm_set_payload(tm_handle, payload)) < 0) { + printf("Failed to set record payload: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } + free(payload); + + The :command:`free()` function frees the memory space pointed to by `ptr`, which + must have been returned by a previous call to :command:`malloc()`, + :command:`calloc()`, or :command:`realloc()`. Otherwise, or if + :command:`free(ptr)` has already been called before, undefined behavior + occurs. If `ptr` is NULL, no operation is performed. + +#. Send a record to the telemetrics daemon: + + The function :command:`tm_send_record()` delivers the record to the local + :command:`telemprobd(1)` service. Since the telemetry record was allocated by + the program it should be freed with :command:`tm_free_record()` when it is no + longer needed. + + .. code-block:: console + + if ((ret = tm_send_record(tm_handle)) < 0) { + printf("Failed to send record to daemon: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } else { + printf("Successfully sent record to daemon.\n"); + ret = 0; + } + fail: + tm_free_record(tm_handle); + tm_handle = NULL; + + return ret; + + +#. A full sample application with compiling flags: + + Create a new file :file:`test.c` and add the following code: + + .. code-block:: console + + #define _GNU_SOURCE + #include + #include + #include + #include + + int main(int argc, char **argv) + { + uint32_t severity = 1; + uint32_t payload_version = 1; + char classification[30] = "org.clearlinux/hello/world"; + struct telem_ref *tm_handle = NULL; + char *payload; + + int ret = 0; + + if (asprintf(&payload, "hello\n") < 0) { + exit(EXIT_FAILURE); + } + + if ((ret = tm_create_record(&tm_handle, severity, classification, payload_version)) < 0) { + printf("Failed to create record: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } + + if ((ret = tm_set_payload(tm_handle, payload)) < 0) { + printf("Failed to set record payload: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } + + free(payload); + + if ((ret = tm_send_record(tm_handle)) < 0) { + printf("Failed to send record to daemon: %s\n", strerror(-ret)); + ret = 1; + goto fail; + } else { + printf("Successfully sent record to daemon.\n"); + ret = 0; + } + fail: + tm_free_record(tm_handle); + tm_handle = NULL; + + return ret; + } + + + + Compile with the gcc compiler, using this command: + + .. code-block:: bash + + gcc test.c -ltelemetry -o test_telem + + + Test to ensure the program is working: + + .. code-block:: bash + + ./test_telem + Successfully sent record to daemon. + + .. note:: + + A full example of the `heartbeat probe`_ in C is documented in the + source code. + +Reference +********* + +.. contents:: + :local: + :depth: 1 + +The telemetry API +================= + +Installing the :command:`telemetrics` bundle includes the libtelemetry C library, +which exposes an API used by the telemprobd and telempostd daemons. You can +use these in your applications as well. The API documentation is found in the +:file:`telemetry.h` file in `Telemetrics client`_ repository. + +Client configuration +==================== + +The telemetry client will look for the configuration file located at +:file:`/etc/telemetrics/telemetrics.conf` and use it if it exists. If the +file does not exist, the client will use the default configuration located +at :file:`/usr/share/defaults telemetrics/telemetrics.conf`. To modify or +customize the configuration, copy the file from +:file:`/usr/share/defaults/telemetrics` to :file:`/etc/telemetrics` and edit it. + +Configuration options +--------------------- + +The client uses the following configuration options from the config file: + +server + This specifies the web server to which telempostd sends the telemetry records. +socket_path + This specifies the path of the unix domain socket on which the telemprobd + listens for connections from the probes. +spool_dir + This configuration option is related to spooling. If the daemon is not able + to send the telemetry records to the backend server due to reasons such as + the network availability, then it stores the records in a spool directory. + This option specifies the path of the spool directory. This directory should + be owned by the same user as the daemon. +record_expiry + This is the time, in minutes, after which the records in the spool directory + are deleted by the daemon. +spool_process_time + This specifies the time interval, in seconds, that the daemon waits for + before checking the spool directory for records. The daemon picks up the + records in the order of modification date and tries to send the record to the + server. It sends a maximum of 10 records at a time. If it was able to send a + record successfully, it deletes the record from the spool. If the daemon + finds a record older than the "record_expiry" time, then it deletes that + record. The daemon looks at a maximum of 20 records in a single spool run loop. +rate_limit_enabled + This determines whether rate-limiting is enabled or disabled. When enabled, + there is a threshold on both records sent within a window of time, and record + bytes sent within a window a time. +record_burst_limit + This is the maximum amount of records allowed to be passed by the daemon + within the record_window_length of time. If set to -1, the rate-limiting for + record bursts is disabled. +record_window_length + The time, in minutes (0-59), that establishes the window length for the + record_burst_limit. For example, if record_burst_window=1000 and + record_window_length=15, then no more than 1000 records can be passed within + any given fifteen-minute window. +byte_burst_limit + This is the maximum amount of bytes that can be passed by the daemon within + the byte_window_length of time. If set to -1, the rate-limiting for byte + bursts is disabled. +byte_window_length + This is the time, in minutes (0-59), that establishes the window length for + the byte_burst_limit. +rate_limit_strategy + This is the strategy chosen once the rate-limiting threshold has been + reached. Currently the options are 'drop' or 'spool', with spool being the + default. If spool is chosen, records will be spooled and sent at a later time. +record_retention_enabled + When this key is enabled (true) the daemon saves a copy of the payload on + disk from all valid records. To avoid the excessive use of disk space only + the latest 100 records are kept. The default value for this configuration key + is false. +record_server_delivery_enabled + This key controls the delivery of records to server; when enabled (default + value), the record will be posted to the address in the configuration file. + If this configuration key is disabled (false), records will not be spooled or + posted to backend. This configuration key can be used in combination with + record_retention_enabled to keep copies of telemetry records locally only. + + .. note:: + + Configuration options may change as the telemetry client evolves. + Please use the comments in the file itself as the most accurate + reference for configuration. + + +Client run-time options +======================= + +The |CL| telemetry client provides an admin tool called :guilabel:`telemctl` +for managing the telemetry services and probes. The tool is located in +:file:`/usr/bin`. Running it with no argument results in the following: + +.. code-block:: bash + + sudo telemctl + +.. code-block:: console + + /usr/bin/telemctl - Control actions for telemetry services + stop Stops all running telemetry services + start Starts all telemetry services + restart Restarts all telemetry services + is-active Checks if telemprobd and telempostd are active + opt-in Opts in to telemetry, and starts telemetry services + opt-out Opts out of telemetry, and stops telemetry services + journal Prints telemetry journal contents. Use -h argument for more + options + +start/stop/restart +------------------ + +The commands to start, stop and restart the telemetry services manage all +required services and probes on the system. There is no need to separately +start/stop/restart the two client daemons telemprobd and telempostd. +The :command:`restart` command option will call :command:`telemctl stop` +followed by :command:`telemctl start` . + +is-active +--------- + +The :command:`is-active` option reports whether the two client daemons are +active. This is useful to verify that the :command:`opt-in` and +:command:`opt-out` options have taken effect, or to ensure that telemetry is +functioning on the system. Note that both daemons are verified. + +.. code-block:: bash + + sudo telemctl is-active + +.. code-block:: console + + telemprobd : active + telempostd : active + + +.. _Telemetrics client: https://github.com/clearlinux/telemetrics-client/ +.. _latest version: https://github.com/clearlinux/telemetrics-client/tree/master/src +.. _heartbeat probe: https://github.com/clearlinux/telemetrics-client/tree/master/src/probes/hello.c diff --git a/zh_CN/_sources/guides/index.rst.txt b/zh_CN/_sources/guides/index.rst.txt new file mode 100644 index 000000000..cb435c7b9 --- /dev/null +++ b/zh_CN/_sources/guides/index.rst.txt @@ -0,0 +1,58 @@ +.. _guides: + +Guides +###### + +The following guides provide step-by-step instructions on using |CL|. + +.. note:: + + As of 22 May 2019 :file:`mixin` is no longer supported. + +.. _cl-guides: + +Clear Linux +=========== + +.. toctree:: + :maxdepth: 1 + :glob: + + clear/* + +Maintenance +=========== + +.. toctree:: + :maxdepth: 1 + :glob: + + maintenance/* + +Network +======= + +.. toctree:: + :maxdepth: 1 + :glob: + + network/* + +Kernel +======= + +.. toctree:: + :maxdepth: 1 + :glob: + + kernel/* + +Stacks +======= + +.. toctree:: + :maxdepth: 1 + :glob: + + stacks/* + stacks/dlrs/* diff --git a/zh_CN/_sources/guides/kernel/kernel-development.rst.txt b/zh_CN/_sources/guides/kernel/kernel-development.rst.txt new file mode 100644 index 000000000..64837a19f --- /dev/null +++ b/zh_CN/_sources/guides/kernel/kernel-development.rst.txt @@ -0,0 +1,462 @@ +.. _kernel-development: + +Kernel development +################## + +This guide shows how to obtain and compile a Linux\* kernel source using +|CL-ATTR| development tooling. + +.. contents:: + :local: + :depth: 1 + :backlinks: top + +Overview +******** + +The :ref:`compatible-kernels` available in |CL| aim to be performant and +practical. In some cases, it may be necessary to modify the kernel to suit +your specific needs or test new kernel code as a developer. + +`Source RPMs (SRPMS)`_ are also available for all |CL| kernels, and can be +used for development instead. + +Request changes be included with the |CL| kernel +************************************************ + +If the kernel modification you need is already open source and likely to be +useful to others, consider submitting a request to include it in the +|CL| kernels. If your change request is accepted, you do not need to maintain +your own modified kernel. + +Make enhancement requests to the |CL| `Distribution Project`_ on GitHub\*. + +Set up kernel development environment +************************************* + +In some cases, it may be necessary to modify the kernel to suit your specific +needs or to test new kernel code. + +You can build and install a custom kernel; however you must: + +* Disable Secure Boot +* Maintain any updates to the kernel going forward + +To create a custom kernel, start with the |CL| development environment. +Then make changes to the kernel, build it, and install it. + + +Install the |CL| development tooling framework +============================================== + +.. include:: ../clear/autospec.rst + :start-after: install-tooling-after-header: + :end-before: install-tooling-end: + +Clone the kernel package +======================== + +Clone the existing kernel package repository from |CL| as a starting point. + +#. Clone the Linux kernel package from |CL|. Using the + :command:`make clone_` command in the + :file:`clearlinux/` directory clones the package from the + `clearlinux-pkgs`_ repo on GitHub. + + .. code-block:: bash + + cd ~/clearlinux + make clone_linux + +#. Navigate into the cloned package directory. + + .. code-block:: bash + + cd ~/clearlinux/packages/linux + + +The "linux" package is the kernel that comes with |CL| in the +:command:`kernel-native` bundle. Alternatively, you can use a different kernel +variant as the base for modification. For a list of kernel package names which +you can clone instead, see the `clearlinux-pkgs`_ repo on GitHub. + +.. note:: + + The latest version of the |CL| kernel package is pulled as a starting + point. An older version can pulled by switching to different git tag by using + :command:`git checkout tag/`. + +Change the kernel version +========================= + +|CL| tends to use the latest kernel available from `kernel.org`_, the Linux +upstream. The kernel version that will be built can be changed in the +RPM SPEC file. While most packages in Clear Linux are typically packaged +using :ref:`autospec`, the kernel is not. This means control files +provided by autospec are not available and changes must be made manually. + +#. Open the Linux kernel package RPM SPEC file in an editor. + + .. code-block:: bash + + $EDITOR linux.spec + +#. Modify the Version, Release, and Source0 URL entries at the top of the + file to change the version of Linux kernel that will be compiled. + + A list of current and available kernel release can be found on + `kernel.org`_. + + .. code-block:: spec + :linenos: + :emphasize-lines: 1-3,12 + + Name: linux + Version: 4.20.8 + Release: 696 + License: GPL-2.0 + Summary: The Linux kernel + Url: http://www.kernel.org/ + Group: kernel + Source0: https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.20.8.tar.xz + Source1: config + Source2: cmdline + + %define ktarget native + + .. note:: + - Consider changing the Name from *linux* in the RPM spec file to easily + identify a modified kernel. + + - Consider changing the ktarget from *native* in the RPM spec file to + easily identify a modified kernel. + +#. Commit and save the changes to the file. + +.. _pull-copy-kernel-source: + +Pull a copy of the Linux kernel source code +=========================================== + +Obtain a local copy of the source code to make modifications against. + +#. Run make sources to pull the kernel source code specified in the RPM + SPEC file. In the example, it downloads the :file:`linux-4.20.8.tar.xz` + file. + + .. code-block:: bash + + make sources + + +#. Extract the kernel source code archive. This will create a working copy + of the Linux source that you can modify. + + .. code-block:: bash + + tar -xvf linux-4.20.8.tar.xz + +#. Navigate to the extracted directory. In this example, it has been + extracted into a :file:`linux-4.20.8` directory. + + .. code-block:: bash + + cd linux-4.20.8/ + + +Customize the Linux kernel source +********************************* + +After the kernel sources have been obtained, customizations to the kernel +configuration or source code can be made for inclusion with the kernel +build. These customizations are optional. + +Modify kernel configuration +=========================== + +The kernel source has many configuration options available to pick support for +different hardware and software features. + +These configuration values must be provided in the :file:`.config` file at +compile time. You will need to make modifications to the :file:`.config` +file, and include it in the kernel package. + + +#. Make sure you have followed the steps to :ref:`pull-copy-kernel-source` + and are in the kernel source working directory. + + +#. If you have an existing :file:`.config` file from an old kernel, copy it + into the working directory as :file:`.config` for comparison. + Otherwise, use the |CL| kernel configuration file as template + + .. code-block:: bash + + cp ~/clearlinux/packages/linux/config .config + + +#. Make any desired changes to the :file:`.config` using a kernel + configuration tool. Below are some popular options: + + - :command:`$EDITOR .config` - the .config file can be directly edited + for simple changes with names that are already known. + + - :command:`make config` - a text-based tool that asks questions + one-by-one to decide configuration options. + + - :command:`make menuconfig` - a terminal user interface that provides + menus to decide configuration options. + + - :command:`make xconfig` - a graphical user interface that provides + tree views to decide configuration options. + + + More configuration tools can be found by looking at the make help: + :command:`make help | grep config` + +#. Commit and save the changes to the :file:`.config` file. + +#. Copy the :file:`.config` file from the kernel source directory into + the kernel package directory as :file:`config` for inclusion in the build. + + .. code-block:: bash + + cp .config ../config + +Modify kernel source code +========================= + +Changes to kernel code are applied with patch files. Patch files are +formatted git commits that can be applied to the main source code. + +You will need to obtain a copy of the source code, +make modifications, generate patch file(s), and add them to the RPM SPEC +file for inclusion during the kernel build. + +If you have a large number of patches or a more complex workflow, +consider using a patch management tool in addition to Git such as +`Quilt`_. + + +#. Make sure you have followed the steps to :ref:`pull-copy-kernel-source` and + are in the kernel source working directory. + + +#. Initialize the kernel source directory as a new git repo and create a + commit with all the existing source files to begin tracking changes. + + .. code-block:: bash + + git init + git add -A + git commit -m "Initial commit of Linux kernel source" + + +#. Apply patches provided by the |CL| kernel package to the kernel source + in the working directory. + + .. code-block:: bash + + git am ../*.patch + + +#. Make any of your desired code changes to the Linux source code files. + + +#. Track and commit your changes to the local git repo. + + .. code-block:: bash + + git add + git commit -m "My patch for driver A" + + +#. Generate a patch file based on your git commits. + represents the number of local commits to create patch file. + See the `git-format-patch`_ documentation for detailed information + on using :command:`git format-patch` + + .. code-block:: bash + + git format-patch - + +#. Copy the patch files from the patches directory in the linux + source tree to the RPM build directory. + + .. code-block:: bash + + cp *.patch ~/clearlinux/packages/linux/ + + +#. Navigate back to the RPM build directory. + + .. code-block:: bash + + cd ~/clearlinux/packages/linux/ + +#. Open the Linux kernel package RPM SPEC file in an editor. + + .. code-block:: bash + + $EDITOR linux.spec + +#. Locate the section of the SPEC file that contains existing patch + variable definitions and append your patch file name. Ensure the + patch number does not collide with an existing patch. + In this example, the patch file is called + :file:`2001-my-patch-for-driver-A.patch` + + .. code-block:: spec + :linenos: + :emphasize-lines: 13 + + # + # Small Clear Linux Tweaks + # + Patch0501: 0501-zero-extra-registers.patch + Patch0502: 0502-locking-rwsem-spin-faster.patch + + #Serie1.name WireGuard + #Serie1.git https://git.zx2c4.com/WireGuard + #Serie1.tag 00bf4f8c8c0ec006633a48fd9ee746b30bb9df17 + Patch1001: 1001-WireGuard-fast-modern-secure-kernel-VPN-tunnel.patch + #Serie1.end + + Patch2001: 2001-my-patch-for-driver-A.patch + + +#. Locate the section of the SPEC file further down that contains + patch application and append your patch file number used in the step above. + In this example, patch2001 is added. + + .. code-block:: spec + :linenos: + :emphasize-lines: 11 + + # + # Small tweaks + # + %patch0501 -p1 + %patch0502 -p1 + + #Serie1.patch.start + %patch1001 -p1 + #Serie1.patch.end + + %patch2001 -p1 + + +#. Commit and save the changes to the RPM SPEC file. + +Modify kernel boot parameters +============================= +The kernel boot options are passed from the bootloader to the kernel with +command-line parameters. + +While temporary changes can be made to kernel parameters on a running +system or on a during boot, you can also modify the default parameters that +are persistent and distributed with a customized kernel. + + +#. Open the kernel :file:`cmdline` file in an editor. + + .. code-block:: bash + + $EDITOR cmdline + + +#. Make any desired change to the kernel parameters. + For example, you can remove the :command:`quiet` parameter to see more + verbose output of kernel log messages during the boot process. + +#. Commit and save the changes to the :file:`cmdline` file. + +See the `kernel parameters`_ documentation for a list of available +parameters. + +Build and install the kernel +**************************** +After changes have been made to the kernel source and RPM SPEC file, +the kernel is ready to be compiled and packaged into an RPM. + +The |CL| development tooling makes use of :command:`mock` environments to +isolate building of packages in a sanitized workspace. + +#. Start the compilation process by issuing the :command:`make build` + command. This process is typically resource intensive and will take a + while. + + .. code-block:: bash + + make build + + .. note:: + The mock plugin `ccache`_ can be enabled to help speed up any future + rebuilds of the kernel package by caching compiler outputs and reusing + them. + + +#. The result will be multiple :file:`.rpm` files in the :file:`rpms` + directory as output. + + .. code-block:: bash + + ls rpms/ + + The kernel RPM will be named + :file:`linux--.x86_64.rpm` + + +#. The kernel RPM file can be input to the :ref:`mixer` to create a + custom bundle and mix of |CL|. + +Alternatively, the kernel RPM bundle can be installed manually on a local +machine for testing. This approach works well for individual development or +testing. For a more scalable and customizable approach, consider using the +:ref:`mixer` to provide a custom kernel with updates. + +#. Install the kernel onto the local system by extracting the RPM with the + :command:`rpm2cpio` command. + + .. code-block:: bash + + rpm2cpio linux--.x86_64.rpm | (cd /; sudo cpio -i -d -u -v); + + +#. Update the |CL| boot manager using :command:`clr-boot-manager` and reboot. + + .. code-block:: bash + + sudo clr-boot-manager list-kernels + sudo clr-boot-manager set-kernel org.clearlinux..- + + sudo reboot + + +#. After a reboot, verify the customized kernel is running. + + .. code-block:: bash + + uname -a + +Related topics +************** + +* :ref:`kernel-modules` +* :ref:`mixer` + +.. _Distribution Project: https://github.com/clearlinux/distribution/issues/new/choose + +.. _Source RPMs (SRPMS): https://cdn.download.clearlinux.org/current/source/SRPMS/ + +.. _Quilt: http://savannah.nongnu.org/projects/quilt + +.. _clearlinux-pkgs: https://github.com/clearlinux-pkgs + +.. _kernel.org: https://www.kernel.org/ + +.. _kernel parameters: https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt + +.. _ccache: https://fedoraproject.org/wiki/Mock/Plugin/CCache?rd=Subprojects/Mock/Plugin/CCache + +.. _git-format-patch: https://git-scm.com/docs/git-format-patch diff --git a/zh_CN/_sources/guides/kernel/kernel-modules-dkms.rst.txt b/zh_CN/_sources/guides/kernel/kernel-modules-dkms.rst.txt new file mode 100644 index 000000000..bda29de09 --- /dev/null +++ b/zh_CN/_sources/guides/kernel/kernel-modules-dkms.rst.txt @@ -0,0 +1,312 @@ +.. _kernel-modules-dkms: + +Add kernel modules with DKMS +############################ + +This guide describes how to add kernel modules with +:abbr:`DKMS (Dynamic Kernel Module System)`. + +.. contents:: :local: + :depth: 1 + :backlinks: top + +Overview +******** + +Certain kernel modules are enabled by default in |CL-ATTR|. To use additional +kernel modules that are not part of the Linux source tree, you may need to +build out-of-tree kernel modules. Use this guide to add kernel modules with +:abbr:`DKMS (Dynamic Kernel Module System)` or refer to :ref:`kernel-modules`. + +Description +*********** + +Kernel modules are additional pieces of software capable of being inserted +into the Linux kernel to add functionality, such as a hardware driver. +Kernel modules may already be part of the Linux source tree (in-tree) or may +come from an external source, such as directly from a vendor (out-of-tree). + +:abbr:`DKMS (Dynamic Kernel Module System)` is a framework that facilitates +the building and installation of kernel modules. DKMS allows |CL| to provide +hooks that automatically rebuild modules against new kernel versions. + +.. include:: kernel-modules.rst + :start-after: kernel-modules-availability-begin: + :end-before: kernel-modules-availability-end: + +Install DKMS +************ + +.. _kernel-modules-dkms-install-begin: + +The :command:`kernel-native-dkms` bundle provides the :command:`dkms` program and +Linux kernel headers, which are required for compiling kernel modules. + +The :command:`kernel-native-dkms` bundle also: + +* Adds a `systemd` update trigger + (:file:`/usr/lib/systemd/system/dkms-new-kernel.service`) to automatically + run DKMS to rebuild modules after a kernel upgrade occurs with :ref:`swupd + update `. + +* Disables kernel module signature verification by appending a kernel + command-line parameter (:command:`module.sig_unenforce`) from the + :file:`/usr/share/kernel/cmdline.d/clr-ignore-mod-sig.conf` file. + +* Adds a notification to the Message of the Day (MOTD) indicating kernel + module signature verification is disabled. + +.. warning:: + + We recommend that you always review the :command:`swupd update` output + to make sure kernel modules were successfully rebuilt against the new + kernel. This is especially important for systems where a successful boot + relies on a kernel module. + +Install the :command:`kernel-native-dkms` or :command:`kernel-lts-dkms` +bundle: + +#. Determine which kernel variant is running on |CL|. Only the *native* + and *lts* kernels are enabled to build and load out-of-tree kernel modules + with DKMS. + + .. code-block:: bash + + $ uname -r + 5.XX.YY-ZZZZ.native + + Ensure *.native* or *.lts* is in the kernel name. + +#. Install the DKMS bundle corresponding to the installed kernel. Use + :command:`kernel-native-dkms` for the native kernel or + :command:`kernel-lts-dkms` for the lts kernel. + + .. code-block:: bash + + sudo swupd bundle-add kernel-native-dkms + + or + + .. code-block:: bash + + sudo swupd bundle-add kernel-lts-dkms + + +#. Update the |CL| bootloader and reboot. + + .. code-block:: bash + + sudo clr-boot-manager update + reboot + +.. _kernel-modules-dkms-install-end: + +Build, install, and load an out-of-tree module +********************************************** + +Follow the steps in this section if you are an individual user or testing, +and you need an out-of-tree kernel module that is not available through +|CL|. For a more scalable and customizable approach, we recommend using +:ref:`mixer` to provide a custom kernel and updates. + +Prerequisites +============= + +Before you begin, you must: + +* Disable Secure Boot in UEFI/BIOS. The loading of new out-of-tree modules + modifies the signatures that Secure Boot relies on for trust. + +* Obtain a kernel module package in the form of source code or + pre-compiled binaries. + +Obtain kernel module source +=========================== + +A required :file:`dkms.conf` file inside of the kernel module's source code +directory informs DKMS how the kernel module should be compiled. + +Kernel modules may come packaged as: + +- Source code without a :file:`dkms.conf` file +- Source code with a premade :file:`dkms.conf` file +- Source code with a premade :file:`dkms.conf` file and precompiled module + binaries +- Precompiled module binaries only (without source code) + +Of the package types listed above, only precompiled kernel module binaries +will not work, because |CL| requires kernel modules to be built against the +same kernel source tree before they can be loaded. If you are only able to +obtain source code without a :file:`dkms.conf` file, you must manually create +a :file:`dkms.conf` file, described later in this document. + +#. Download the kernel module's source code. + + * Review the available download options. Some kernel modules provide + separate archives that are specifically enabled for DKMS support. + + * Review the README documentation, because it often provides required + information to build the module with DKMS support. + + .. code-block:: bash + + curl -O http://.tar.gz + tar -xvf .tar.gz + cd / + cat README + +Build kernel module with an existing dkms.conf +============================================== + +If the kernel module maintainer packaged the source archive with the +:command:`dkms mktarball` command, the entire archive can be passed to the +:command:`dkms ldtarball` which completes many steps for you. + +The archive contains the required :file:`dkms.conf` file, and may contain +a :file:`dkms_source_tree` directory and a :file:`dkms_binaries_only` +directory. + +#. Run the :command:`dkms ldtarball` command against the kernel + module archive. + + .. code-block:: bash + + dkms ldtarball .tar.gz + + + :command:`dkms ldtarball` places the kernel module source under + :file:`/usr/src/-/`, builds it if necessary, + and adds the module into the DKMS tree. + + +#. Verify the kernel module is detected by checking the output of the + :command:`dkms status` command. + + .. code-block:: bash + + dkms status + + +#. Install the kernel module. + + .. code-block:: bash + + dkms install -m -v + +Build kernel module without an existing dkms.conf +================================================= + +If the kernel module source does not contain a :file:`dkms.conf` file or the +:command:`dkms ldtarball` command encounters errors, you must manually +create the file. + +Review the kernel module README documentation for guidance on what needs to be +in the :file:`dkms.conf` file, including special variables that may be +required to build successfully. + +Here are some additional resources that can be used for reference: + +* DKMS manual page (:command:`man dkms`) shows detailed syntax in the + DKMS.CONF section. + +* Ubuntu community wiki entry for the `Kernel DKMS Package`_ shows an example + where a single package contains multiple modules. + +* Sample `dkms.conf`_ file in the GitHub\* repository for the DKMS project. + +.. note:: + + :command:`AUTOINSTALL=yes` must be set in the dkms.conf for the module to + be automatically recompiled with |CL| updates. + +The instructions below show a generic example: + +#. Create or modify the :file:`dkms.conf` file inside of the extracted source + code directory. + + .. code-block:: bash + + $EDITOR dkms.conf + + MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build" + CLEAN="make -C src/ clean" + BUILT_MODULE_NAME=custom_module + BUILT_MODULE_LOCATION=src/ + PACKAGE_NAME=custom_module + PACKAGE_VERSION=1.0 + DEST_MODULE_LOCATION=/kernel/drivers/other + AUTOINSTALL=yes + + This example identifies a kernel module named *custom_module* with version + *1.0*. + +#. Copy the kernel module source code into the :file:`/usr/src/` directory. + + .. code-block:: bash + + sudo mkdir /usr/src/- + sudo cp -Rv . /usr/src/- + + .. note:: + + ** and ** must match the entries in the + :file:`dkms.conf` file. + +#. Add the kernel module to the DKMS tree so that it is tracked by DKMS. + + .. code-block:: bash + + sudo dkms add -m + +#. Build the kernel module using DKMS. If the build encounters errors, + you may need to edit the :file:`dkms.conf` file. + + .. code-block:: bash + + sudo dkms build -m -v + +#. Install the kernel module using DKMS. + + .. code-block:: bash + + sudo dkms install -m -v + +Load kernel module +================== + +By default, DKMS installs modules "in-tree" under :file:`/lib/modules` so the +:command:`modprobe` command can be used to load them. + +#. Load the installed module with the :command:`modprobe` command. + + .. code-block:: bash + + sudo modprobe + +#. Validate the kernel module is loaded. + + .. code-block:: bash + + lsmod | grep + +Examples +******** + +.. include:: kernel-modules.rst + :start-after: kernel-modules-autoload-begin: + :end-before: kernel-modules-autoload-end: + +Related topics +************** + +* `Dynamic Kernel Module System (DKMS)`_ + +* `Dell Linux Engineering Dynamic Kernel Module Support: From Theory to Practice `_ + +* `Linux Journal: Exploring Dynamic Kernel Module Support `_ + +.. _Dynamic Kernel Module System (DKMS): https://github.com/dell/dkms + +.. _Kernel DKMS Package: https://help.ubuntu.com/community/Kernel/DkmsDriverPackage#Configure_DKMS + +.. _dkms.conf: https://github.com/dell/dkms/blob/master/sample.conf diff --git a/zh_CN/_sources/guides/kernel/kernel-modules.rst.txt b/zh_CN/_sources/guides/kernel/kernel-modules.rst.txt new file mode 100644 index 000000000..eae7f04a1 --- /dev/null +++ b/zh_CN/_sources/guides/kernel/kernel-modules.rst.txt @@ -0,0 +1,223 @@ +.. _kernel-modules: + +Add kernel modules manually +########################### + +This guide describes how to add kernel modules manually. + +.. contents:: :local: + :depth: 1 + :backlinks: top + +Overview +******** + +Certain kernel modules are enabled by default in |CL-ATTR|. To use additional +kernel modules that are not part of the Linux source tree, you may need to +build out-of-tree kernel modules. Use this guide to add kernel modules +manually, or refer to :ref:`kernel-modules-dkms`. + +Description +*********** + +Kernel modules are additional pieces of software capable of being inserted +into the Linux kernel to add functionality, such as a hardware driver. +Kernel modules may already be part of the Linux source tree (in-tree) or may +come from an external source, such as directly from a vendor (out-of-tree). + + +.. _kernel-modules-availability-begin: + +Kernel module availability +************************** + +|CL| comes with many upstream kernel modules available for use. Using an +existing module is significantly easier to maintain and retains signature +verification of the |CL| kernel. For more information on |CL| security +practices, see the :ref:`security` page. + +Before continuing, check if the kernel module you're looking for is already +available in |CL| or submit a request to add the module. + + +Check if the module is already available +======================================== + + +You can search for kernel module file names, which end with the :file:`.ko` +file extension, using the :command:`swupd search` command, as shown in the +following example. See :ref:`swupd-guide` for more information. + +.. code-block:: bash + + sudo swupd search ${module_name}.ko + + +Submit a request to add the module +================================== + +If the kernel module you need is already open source (for example, in the Linux +upstream) and likely to be useful to others, consider submitting a request to +add or enable it in the |CL| kernel. + +Make enhancement requests to the |CL| 'Distribution Project'_ on GitHub. + +.. _kernel-modules-availability-end: + + +Build, install, and load an out-of-tree module +********************************************** + +Follow the steps in this section if you are an individual user or testing, and +you need an out-of-tree kernel module that is not available through |CL|. For +a more scalable and customizable approach, we recommend using the +:ref:`mixer` to provide a custom kernel and updates. + + +Prerequisites +============= + +Before you begin, you must: + +* Disable Secure Boot. +* Disable kernel module integrity checking. +* Have a kernel module package in the form of source code. +* Rebuild the module against new versions of the Linux kernel. + +.. note:: + + Any time the kernel is upgraded on your Clear Linux system, you must + rebuild your out-of-tree modules. + + +Build and install kernel module +=============================== + +#. Determine which kernel variant is running on |CL|. In the example below, + the *native* kernel is in use. + + .. code-block:: bash + + $ uname -r + 5.XX.YY-ZZZZ.native + +#. Install the kernel dev bundle corresponding to the installed kernel. The + kernel dev bundle contains the kernel headers, which are required for + compiling kernel modules. For example: + + * :command:`linux-dev` for developing against the native kernel. + * :command:`linux-lts-dev` for developing against the LTS kernel. + + .. code-block:: bash + + sudo swupd bundle-add linux-dev + +#. Follow instructions from the kernel module source code to compile the + kernel module. For example: + + .. code-block:: bash + + curl -O http://.tar.gz + tar -xvf .tar.gz + cd / + cat README + + + +Load kernel module +================== + +#. Disable Secure Boot in your system's UEFI settings, if you have enabled + it. The loading of new out-of-tree modules modifies the signatures that + Secure Boot relies on for trust. + +#. Disable signature checking for the kernel by modifying the kernel boot + parameters and reboot the system. + + All kernel modules from |CL| have been signed to enforce kernel security. + However, out-of-tree modules break this chain of trust so this mechanism + needs to be disabled. + + .. code-block:: bash + + sudo mkdir -p /etc/kernel/cmdline.d + echo "module.sig_unenforce" | sudo tee /etc/kernel/cmdline.d/allow-unsigned-modules.conf + +#. Update the boot manager and reboot the system to implement the changed + kernel parameters. + + .. code-block:: bash + + sudo clr-boot-manager update + sudo reboot + + .. note:: + + If successful, the :command:`clr-boot-manager update` command does not + return any console output. + +#. After rebooting, manually load out-of-tree modules using the + :command:`insmod` command. + + .. code-block:: bash + + sudo insmod + +Examples +******** + +.. _kernel-modules-autoload-begin: + +Optional: Specify module options and aliases +============================================ + +Use the :command:`modprobe` command to load a module and set options. + +:command:`modprobe` may add or remove more than one module due to module +interdependencies. You can specify which options to use with individual modules, +by using configuration files under the :file:`/etc/modprobe.d` directory. + +.. code-block:: bash + + sudo mkdir /etc/modprobe.d + +All files underneath the :file:`/etc/modprobe.d` directory that end with the +:file:`.conf` extension specify module options to use when loading. You can use +:file:`.conf` files to create convenient aliases for modules or to override the +normal loading behavior altogether for those with special requirements. + +Learn more about :command:`modprobe` on the modprobe.d manual page: + +.. code-block:: bash + + man modprobe.d + +Optional: Configure kernel modules to load at boot +================================================== + +Use the :file:`/etc/modules-load.d` configuration directory to specify kernel +modules to load automatically at boot. + +.. code-block:: bash + + sudo mkdir /etc/modules-load.d + +All files underneath the :file:`/etc/modules-load.d` directory that end with +the :file:`.conf` extension contain a list of module names of aliases (one per +line) to load at boot. + +Learn more about module loading in the modules-load.d manual page: + +.. code-block:: bash + + man modules-load.d + + +.. _kernel-modules-autoload-end: + +Related topic +************* + +* :ref:`kernel-modules-dkms` + +.. _`Distribution Project`: https://github.com/clearlinux/distribution diff --git a/zh_CN/_sources/guides/maintenance/architect-lifecycle.rst.txt b/zh_CN/_sources/guides/maintenance/architect-lifecycle.rst.txt new file mode 100644 index 000000000..ed3287113 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/architect-lifecycle.rst.txt @@ -0,0 +1,78 @@ +.. _architect-lifecycle: + +Architect the life-cycle of |CL-ATTR| +##################################### + +This guide describes the basic, recommended infrastructure and workflow for +maintaining a |CL-ATTR| derivative. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* A repository with software RPM artifacts and a CI/CD system with a |CL| + machine for building `mixes` + +* Experience using :ref:`mixer ` to create a |CL|-based distro + +* Experience using :ref:`swupd ` for maintaining the |CL| + build environment + +* Familiarity with |CL| architecture and reuse of its content in releases + +Description +*********** + +Maintaining a |CL| derivative requires: + +* Monitoring upstream |CL| for new releases +* Building software packages and staging +* Employing CI/CD automation for building releases +* Integrating Quality Assurance for testing and validation + +Coordinated infrastructure is deployed to automate the life-cycle +of your |CL| derivative. We divide deployment of this infrastucture in two +parts: *Content Workflow*; and *Release Workflow*, shown in Figure 1. + +.. figure:: figures/architect-lifecycle-1.png + :scale: 100% + :alt: Architect the life-cycle + + Figure 1: Architect the life-cycle + +Content Workflow +**************** + +The Content Workflow (Figure 1) orchestrates the processes used to manage +the creation of content for the distribution. This includes everything from +detecting a new release in a custom software repository to generating RPM +package files. The RPM files serve as intermediary artifacts that track software +dependencies and provide file-level data consumed in a Release Workflow. The +`Watcher Pipeline`_ checks |CL| and a content provider, such as Koji, to +determine if a new release is necessary. + +Release Workflow +**************** + +The Release Workflow (Figure 1) gathers the content of the RPMs and +ensures it can be consumed by :ref:`mixer `. A content web server +hosts the |CL| derivative, to which targets connect for updating their OSes. +As an integral part of this toolchain, the `Release Pipeline`_ enables these +derivatives to incorporate |CL| content into their own custom +content. The Watcher Pipeline triggers the Release Pipeline to create +new releases. + +Implementation +************** + +The |CL| Distro Factory manages the Release Workflow. For detailed information +about Distro Factory deployment, refer to the `clr-distro-factory`_ GitHub\* repo. + +.. _clr-distro-factory: https://github.com/clearlinux/clr-distro-factory/wiki#clear-linux-distro-factory + +.. _Release Pipeline: https://github.com/clearlinux/clr-distro-factory/wiki/Release + +.. _Watcher Pipeline: https://github.com/clearlinux/clr-distro-factory/wiki/Watcher diff --git a/zh_CN/_sources/guides/maintenance/assign-static-ip.rst.txt b/zh_CN/_sources/guides/maintenance/assign-static-ip.rst.txt new file mode 100644 index 000000000..14fc86948 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/assign-static-ip.rst.txt @@ -0,0 +1,184 @@ +.. _assign-static-ip: + +Assign a static IP address +########################## + + +This guide explains how to assign a static IP address. This may be helpful in +scenarios such as a network with no DHCP server. + +.. contents:: + :local: + :depth: 1 + +Identify which program is managing the interface +************************************************ + +New installations of |CL-ATTR| use NetworkManager as the default network interface +manager for all network connections. + +.. note:: + + * The cloud |CL| images continue to use `systemd-networkd` to manage + network connections. + + * In earlier |CL| versions, `systemd-network` was used to manage Ethernet + interfaces and NetworkManager was used for wireless interfaces. + + +Before defining a configuration for assigning a static IP address, verify which +program is managing the network interface. + +#. Check the output of :command:`nmcli device` to see if NetworkManager is + managing the device. + + .. code-block:: bash + + nmcli device status + + If the STATE column for the device shows *connected* or *disconnected*, the + network configuration is being managed by NetworkManager, then use the + instructions for :ref:`using NetworkManager `. + + If the STATE column for the device shows *unmanaged*, then check if the + device is being managed by systemd-networkd. + + +#. Check the output of :command:`networkctl list` to see if + `systemd-networkd` is managing the device. + + .. code-block:: bash + + networkctl list + + If the SETUP column for the device shows *configured*, the network + configuration is being managed by `systemd-networkd`, then use the + instructions for :ref:`using systemd-networkd `. + + +.. _nm-static-ip: + +Using NetworkManager +******************** + +Network connections managed by NetworkManager are stored as files with the +:file:`.nmconnection` file extension in the +:file:`/etc/NetworkManager/system-connections/` directory. + +A few tools exists to aid to manipulate network connections managed by +NetworkManager: + +* nmcli - a command-line tool + +* nmtui - a text user interface that provides a pseudo graphical menu in the + terminal + +* nm-connection-editor - a graphical user interface + +The method below uses the command line tool nmcli to modify network +connection. + + +#. Identify the existing connection name: + + .. code:: bash + + nmcli connection show + + Sample output: + + .. code:: bash + + NAME UUID TYPE DEVICE + Wired connection 1 00000000-0000-0000-0000-000000000000 802-3-etherneten01 + + If a connection does not exist, create it with the + :command:`nmcli connection add` command. + + +#. Modify the connection to use a static IP address. Replace the variables in + brackets with the appropriate values. Replace *[CONNECTION_NAME]* with the + NAME from the command above. + + .. code:: + + sudo nmcli connection modify "[CONNECTION_NAME]" \ + ipv4.method "manual" \ + ipv4.addresses "[IP_ADDRESS]/[CIDR_NETMASK]" \ + ipv4.gateway "[GATEWAY_IP_ADDRESS]" \ + ipv4.dns "[PRIMARY_DNS_IP],[SECONDARY_DNS_IP]" + + + See the `nmcli developer page `_ for more + configuration options. For advanced configurations, the + :file:`/etc/NetworkManager/system-connections/*.nmconnection`. can be edited + directly. + + +#. Restart the NetworkManager server to reload the DNS servers: + + .. code-block:: bash + + sudo systemctl restart NetworkManager + + +#. Verify your static IP address details have been set: + + .. code-block:: bash + + nmcli + + + +.. _networkd-static-ip: + +Using systemd-networkd +********************** + +Network connections managed by systemd-networkd are stored as files with the +:file:`.network` file extension the :file:`/etc/systemd/network/` directory. + +Files to manipulate network connections managed by systemd-networkd must be +created manually. + +#. Create the :file:`/etc/systemd/network` directory if it does not already exist: + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/network + +#. Create a :file:`.network` file and add the following content. Replace the + variables in brackets with the appropriate values. Replace *[INTERFACE_NAME]* + with LINK from the output of the :command:`networkctl list` command that was + run previously. + + .. code-block:: bash + + sudo $EDITOR /etc/systemd/network/70-static.network + + [Match] + Name=[INTERFACE_NAME] + + [Network] + Address=[IP_ADDRESS]/[CIDR_NETMASK] + Gateway=[GATEWAY_IP_ADDRESS] + DNS=[PRIMARY_DNS_IP] + DNS=[SECONDARY_DNS_IP] + + See the `systemd-network man page + `_ + for more configuration options. + +#. Restart the `systemd-networkd` service: + + .. code-block:: bash + + sudo systemctl restart systemd-networkd + + +#. Verify your static IP address details have been set: + + .. code-block:: bash + + networkctl status + diff --git a/zh_CN/_sources/guides/maintenance/bulk-provision.rst.txt b/zh_CN/_sources/guides/maintenance/bulk-provision.rst.txt new file mode 100644 index 000000000..a609fa6a7 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/bulk-provision.rst.txt @@ -0,0 +1,172 @@ +.. _bulk-provision: + +Bulk provision +############## + +This guide explains how to perform a bulk provision of |CL-ATTR| using a +combination of the |CL| installer, Ister, and +:abbr:`ICIS (Ister Cloud Init Service)`. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +To configure a bulk provision: + +* Define Ister configuration files to customize the installation process +* Define cloud-init\* files to customize the installation instance +* Host the configuration files in ICIS to allow Ister to use them during + the installation + +Figure 1 depicts the flow of information between a PXE server and a PXE +client that needs to be set up to perform a bulk provision. + +.. figure:: ./figures/bulk-provision-flow.png + :alt: Bulk provision information flow + + Figure 1: Bulk provision information flow + +Prerequisites +************* + +Before performing a bulk provision, verify you have a PXE server capable +of performing network boots of |CL|. Please refer to our +:ref:`guide on how to perform an iPXE boot` using +:abbr:`NAT (network address translation)` for details. + +Because a bulk provision relies on a reboot, ensure the following +preparations have been made: + +* No existing disks are bootable. +* The network boot option must come immediately after the disk boot option + on any computer performing the installation. + +Configuration +************* + +#. Install ICIS by following the getting started guide on the + `ICIS`_ GitHub\* repository. + +#. Create an Ister installation file and save it to the + :file:`static/ister` directory within the web hosting directory for + ICIS. The installation file is a JSON block and provides Ister + with the steps it needs to perform an installation. The file outlines + what partitions, file systems, and mount points Ister should set + up. Lastly, the file outlines which bundles to install. See our + :ref:`bundles` document for the list of available bundles. The + following example shows the contents of an Ister installation file: + + .. code-block:: json + + { + "DestinationType":"physical", + "PartitionLayout":[ + {"disk":"sda", "partition":1, "size":"512M", "type":"EFI"}, + {"disk":"sda", "partition":2, "size":"512M", "type":"swap"}, + {"disk":"sda", "partition":3, "size":"rest", "type":"linux"} + ], + "FilesystemTypes":[ + {"disk":"sda", "partition":1, "type":"vfat"}, + {"disk":"sda", "partition":2, "type":"swap"}, + {"disk":"sda", "partition":3, "type":"ext4"} + ], + "PartitionMountPoints":[ + {"disk":"sda", "partition":1, "mount":"/boot"}, + {"disk":"sda", "partition":3, "mount":"/"} + ], + "Version":"latest", + "Bundles":[ + "kernel-native", + "os-core", + "os-core-update", + "os-cloudguest" + ], + "IsterCloudInitSvc":"http://192.168.1.1:60000/icis/" + } + + .. important:: + + Every Ister installation file hosted on ICIS must contain the + the `IsterCloudInitSvc` parameter as well as the :command:`os-cloudguest` + bundle. These entries allow Ister to customize an instance of of an + install. + +#. Create an Ister configuration file to define the location of the + Ister installation file. Save it to the :file:`static/ister` directory + within the web hosting directory of ICIS. The following example shows + an Ister configuration file: + + .. code-block:: none + + template=http://192.168.1.1:60000/icis/static/ister/ister.json + +#. Modify the iPXE boot script by adding a kernel parameter to the command line + for booting the network image. Add the kernel parameter `isterconf` with + the location of the Ister configuration file hosted on ICIS as the + kernel parameter value. The following example shows an iPXE boot script + with the `isterconf` parameter: + + .. code-block:: none + + #!ipxe + kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug tsc=reliable no_timer_check noreplace-smp rw initrd=initrd isterconf=http://192.168.1.1:60000/icis/static/ister/ister.conf + initrd initrd + boot + + .. note:: + + After the network image of |CL| boots, Ister inspects the + parameters used during boot in :file:`/proc/cmdline` to find the + location of the Ister configuration file. + +#. Write a cloud-init document to customize the instance of the installation + according to your requirements. The `cloud-init`_ documentation provides a + guide on how to write a cloud-init document. The guide covers the + customization options provided by cloud-init after an installation. + +#. Save the cloud-init document to the :file:`static/roles` directory within + the web hosting directory for ICIS with the name of a role you would + like to create. For example, a role may be "database", "web", or "ciao". + +#. After creating the roles, also known as cloud-init files, assign roles to + MAC addresses of PXE clients. To do so, modify the :file:`config.txt` file + in the :file:`static` directory within the web hosting directory of ICIS. + The following example shows an example assignment: + + .. code-block:: none + + # MAC address,role + 00:01:02:03:04:05,ciao + + If MAC addresses of PXE clients are not listed within the + :file:`config.txt` file, a default role for those MAC address may be + defined as follows: + + .. code-block:: none + + # MAC address,role + default,ciao + +#. Verify the following URLs are accessible on your local network: + + * \http://192.168.1.1:60000/icis/static/ister/ister.conf + * \http://192.168.1.1:60000/icis/static/ister/ister.json + * \http://192.168.1.1:60000/icis/get_config/ + * \http://192.168.1.1:60000/icis/get_role/ + * \http://192.168.1.1:60000/ipxe/ipxe_boot_script.txt + +#. Power on the PXE client and watch it boot and install |CL|. + +#. Power-cycle the PXE client and watch it customize the |CL| installation. + +**Congratulations!** You have successfully performed a bulk provision of |CL|. + + +.. _ICIS: + https://github.com/clearlinux/ister-cloud-init-svc + +.. _cloud-init: + https://cloudinit.readthedocs.io diff --git a/zh_CN/_sources/guides/maintenance/cpu-performance.rst.txt b/zh_CN/_sources/guides/maintenance/cpu-performance.rst.txt new file mode 100644 index 000000000..53709f157 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/cpu-performance.rst.txt @@ -0,0 +1,207 @@ +.. _cpu-performance: + +CPU Power and Performance +######################### + +This guide explains the CPU power and performance mechanisms in |CL-ATTR|. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Modern x86 :abbr:`CPUs (central processing units)` employ a number of features +and technologies to balance performance, energy, and thermal efficiencies. + +By default, |CL| prioritizes maximum CPU performance with the philosophy that +the faster the program finishes execution, the faster the CPU can return to a +low energy idle state. It is important to understand and evaluate all of these +technologies when troubleshooting or considering changing the defaults. + +.. contents:: + :local: + :depth: 1 + +CPU power saving mechanisms +*************************** + +C-states and P-states are both CPU power saving mechanisms that are entered +under different operating conditions. The tradeoff is a slightly longer time +to exit these states when the CPU is needed once again. + +.. _c-states-section: + +C-states (idle states) +====================== + +C-states are hardware sleep states that are entered when it is determined that +the CPU is idle and not executing instructions. + +C-states aim to reduce power utilization by increasingly reducing clock +frequency, voltages, and features in each state. + +Although C-states can typically be limited or disabled in a system's UEFI or +BIOS configuration, these settings are overridden when the `intel_idle driver`_ +is in use. + +To view the current cpuidle driver run this command in a terminal: + +.. code:: bash + + cat /sys/devices/system/cpu/cpuidle/current_driver + +For troubleshooting, C-states can be limited with a kernel command line boot +parameter by adding :command:`processor.max_cstate=N intel_idle.max_cstate=N` +or completely disabled with :command:`idle=poll`. + +.. note:: + + * :command:`processor.max_cstate=0` is changed to :command:`processor.max_cstate=1` + by the kernel to be a valid value. + + * :command:`intel_idle.max_cstate=0` disables the Intel Idle driver, not set + it to C-state 0. + +.. _p-states-section: + +P-states (performance states) +============================= + +P-states, also known as *Intel SpeedStep® technology* on Intel processors or +*Cool'n'Quiet* on AMD processors, are states entered while the CPU is active and +executing instructions. + +P-states aim to reduce power utilization by adjusting CPU clock frequency and +voltages based on CPU demand. + +P-states can typically be limited or disabled in a system's firmware (UEFI/BIOS). + +Turbo boost +----------- + +`Intel® Turbo Boost Technology`_, found on some modern Intel CPUs, allows core(s) on +a processor to temporarily operate at a higher than rated CPU clock frequency +to accommodate demanding workloads if the CPU is under defined power and +thermal thresholds. + +Turbo boost is an extension of P-states. As such, changing or limiting +C-states or P-states impact the ability of a process to enter Turbo boost. + +Turbo boost can be disabled in a system's UEFI or BIOS. Turbo boost can also +be disabled within |CL| with the command: + +.. code:: bash + + echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo + +Linux CPU clock frequency scaling +********************************* + +The CPUFreq subsystem in Linux allows the OS to control :ref:`C-states +` and :ref:`P-states ` +via CPU drivers and governors that provide algorithms that define how and when +to enter these states. + +Scaling driver +============== + +Linux uses the `Intel P-state driver`_, :command:`intel_pstate`, for modern Intel +processors from the Sandy Bridge generation or newer. Other processors may +default to the :command:`acpi-cpufreq*` driver which reads values from the systems +UEFI or BIOS. + +To view the current CPU frequency scaling driver run this command in a terminal: + +.. code:: bash + + cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver + +Scaling governor +================ + +|CL| sets the CPU governor to *performance* which calls for the CPU to operate +at maximum clock frequency. In other words, P-state P0. While this may sound +wasteful at first, it is important to remember that power utilization does not +increase significantly simply because of a locked clock frequency without a +workload. + +To view the current CPU frequency scaling governor run this command in a terminal: + +.. code:: bash + + cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor + +To change the CPU frequency scaling governor: + +#. Disable |CL| enforcement of certain power and performance settings: + + .. code:: bash + + sudo systemctl mask clr-power.timer + +#. Change the governor. In the example below, the governor is set to + *performance*: + + .. code:: bash + + echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor + +The list of all governors can be found in the Linux kernel documentation on +`CPUFreq Governors`_. + +.. note:: + + The intel_pstate driver only supports *performance* and *powersave* governors. + +Thermal management +****************** + +`thermald`_ is a Linux thermal management daemon used to prevent the +overheating of platforms. When temperature thresholds are exceeded, thermald +forces a C-state by inserting CPU sleep cycles and adjusts available cooling +methods. This can be especially desirable for laptops. + +By default, thermald is disabled in |CL| and starts automatically if battery +power is detected. thermald can be manually enabled using the systemd service +by running the command: + +.. code:: bash + + sudo systemctl enable --now thermald + +For more information, see the thermald man page: + +.. code:: bash + + man thermald + +`ThermalMonitor`_ is a GUI application that can visually graph and log +temperatures from thermald. To use ThermalMonitor, add the +:command:`desktop-apps-extras` bundle and add your user account to the power +group: + +.. code:: bash + + sudo swupd bundle-add desktop-apps-extras + sudo usermod -a -G power + ThermalMonitor + +.. note:: + + After adding a new group, you must log out and log back in for the new group + to take effect. + + +.. _`Intel P-state driver`: https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt + +.. _`CPUFreq Governors`: https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt + +.. _thermald: https://01.org/linux-thermal-daemon + +.. _`intel_idle driver`: https://github.com/torvalds/linux/blob/master/drivers/idle/intel_idle.c + +.. _`ThermalMonitor`: https://github.com/intel/thermal_daemon/tree/master/tools/thermal_monitor + +.. _`Intel® Turbo Boost Technology`: https://www.intel.com/content/www/us/en/architecture-and-technology/turbo-boost/turbo-boost-technology.html diff --git a/zh_CN/_sources/guides/maintenance/deploy-at-scale.rst.txt b/zh_CN/_sources/guides/maintenance/deploy-at-scale.rst.txt new file mode 100644 index 000000000..3c5270c83 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/deploy-at-scale.rst.txt @@ -0,0 +1,255 @@ +.. _deploy-at-scale: + +Deploy at Scale +############### + +This guide describes deployment considerations and strategies when deploying +|CL-ATTR| at scale in your environment. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +In this guide the term *endpoint* refers to a system targeted for |CL| +installation, whether that is a datacenter system or unit deployed in field. + +.. note:: + + This guide is not a replacement or blueprint for designing your own IT + operating environment. + + Implementation details for a scale deployment are beyond the scope of this + guide. + + Your |CL| deployment should complement your existing environment and + available tools. It is assumed core IT dependencies of your environment, + such as your network, are healthy and scaled to suit the deployment. + +Pick a usage and update strategy +******************************** + +Different business scenarios call for different deployment methodologies. +|CL| offers the flexibility to continue consuming the upstream |CL| +distribution or the option to fork away from the |CL| distribution and +act as your own :abbr:`OSV (Operating System Vendor)`. + +Below is an overview of some considerations. + +Create your own Linux distribution (mix) +======================================== + +This approach forks away from the |CL| upstream and has you act as your own +:abbr:`OSV (Operating System Vendor)` by leveraging the :ref:`mixer` process to +create customized images based on |CL|. This is a level of responsibility +that requires having more infrastructure and processes to adopt. In return, +this approach *offers you a high degree of control and customization*. Consider: + +* Development systems that generate bundles and updates should have + sufficient performance for the task and be separate from the swupd update + webservers that serve update content to production machines. + +* swupd update webservers that serve update content to production machines + should be appropriately scaled. Specific implementation details for a scalable, + resilient web server are beyond the scope of this document. + + (See :ref:`mixer` for more information about update servers.) + +Adopt an agile methodology +========================== + +The cloud, and other scaled deployments, are all about flexibility and speed. +It only makes sense that any |CL| deployment strategy should follow suit. + +Manually rebuilding your own bundles or mix for every release is not +sustainable at a large scale. A |CL| deployment pipeline should be agile +enough to validate and produce new versions with speed. Whether or not those +updates actually make their way to your production can be separate +business decision. However this *ability to frequently roll new versions* of +software to your endpoints is an important prerequisite. + +You own the validation and lifecycle of the OS and should treat it like any +other software development lifecycle. Below are some pointers: + +* Thoroughly understand the custom software packages that you will need to + integrate with |CL| and maintain along with their dependencies. + +* Setup a path to production for building |CL| based images. At minimum this + should include: + + * A development clr-on-clr environment to test building packages and + bundles for |CL| systems. + + * A pre-production environment to deploy |CL| versions to before + production + +* Employ a continuous integration and continuous deployment (CI/CD) + philosophy in order to: + + - Automatically pull custom packages as they are updated from their + upstream projects or vendors. + + - Generate |CL| bundles and potentially bootable images with your + customizations, if any. + + - Measure against metrics and indicators which are relevant to your + business (e.g. performance, power, etc) from release to release. + + - Integrate with your organization's governance processes, such as change + control. + +Versioning infrastructure +========================= + +|CL| version numbers are very important as they apply to the whole +infrastructure stack from OS components to libraries and applications. + +Good record keeping is important, so you should keep a detailed registry and +history of previously deployed versions and their contents. + +With a glance at the |CL| version numbers deployed, you should be able to +tell if your Clear systems are patched against a particular security +vulnerability or incorporate a critical new feature. + +Pick an image distribution strategy +*********************************** + +Once you have decided on a usage and update strategy, you should understand +*how* |CL| will be deployed to your endpoints. In a large scale deployment, +interactive installers should be avoided in favor of automated installations +or prebuilt images. + +There are many well-known ways to install an operating system at scale. Each +have their own benefits, and one may lend itself easier in your environment +depending on the resources available to you. + +See the available :ref:`image-types`. + +Below are some common ways to install |CL| to systems at scale: + +Bare metal +========== + +Preboot Execution Environments (PXE) or other out-of-band booting options are +one way to distribute |CL| to physical bare metal systems on a LAN. + +This option works well if your customizations are fairly small in size +and infrastructure can be stateless. + +The |CL| `Downloads`_ page offers a live image that can be deployed as +a PXE boot server if one doesn't already exist in your environment. Also see +documentation on how to :ref:`bare-metal-install-server`. + +Cloud instances or virtual machines +=================================== + +Image templates in the form of cloneable disks are an effective way to +distribute |CL| for virtual machine environments, whether on-premises or +hosted by a Cloud Solution Provider (CSP). + +When used in concert with cloud VM migration features, this can be a good option +for allowing your applications a degree of high availability and workload +mobility; VMs can be restarted on a cluster of hypervisor host or moved between +datacenters transparently. + +The |CL| `Downloads`_ page offers example prebuilt VM images and is readily +available on popular CSPs. Also see documentation on how to +:ref:`virtual-machine-install`. + +Containers +========== + +Containerization platforms allow images to be pulled from a repository and +deployed repeatedly as isolated containers. + +Containers with a |CL| image can be a good option to blueprint and ship +your application, including all its dependencies, as an artifact while +allowing you or your customers to dynamically orchestrate and scale +applications. + +|CL| is capable of running a Docker host, has a container image which can +be pulled from DockerHub, or can be built as a customized container. +For more information visit the `Containers`_ page. + +Considerations with stateless systems +************************************* + +An important |CL| concept is statelessness and partitioning of system data +from user data. This concept can change the way you think about an at scale +deployment. + +Backup strategy +=============== + +A |CL| system and its infrastructure should be considered a commodity and +be easily reproducible. Avoid focusing on backing up the operating system +itself or default values. + +Instead, focus on backing up what's important and unique - the application +and data. In other words, only focus on backing up critical areas like +:file:`/home`, :file:`/etc`, and :file:`/var`. + +Meaningful logging & telemetry +============================== + +Offload logging and telemetry from endpoints to external servers, so it is +persistent and can be accessed on another server when an issue occurs. + +* Remote syslogging in |CL| is available through the + `systemd-journal-remote.service`_ + +* |CL| offers a :ref:`telem-guide`, which can be a powerful tool + for a large deployment to quickly crowdsource issues of interest. Take + advantage of this feature with careful consideration of the target audience + and the kind of data that would be valuable, and expose events + appropriately. + + Like any web server, the telemetry server should be appropriately scaled and + resilient. Specific implementation details for a scalable, resilient web + server are beyond the scope of this document. + +Orchestration and configuration management +========================================== + +In cloud environments, where systems can be ephemeral, being able to +configure and maintain generic instances is valuable. + +|CL| offers an efficient cloud-init style solution, `micro-config-drive`_, +through the *os-cloudguest* bundles which allow you to configure many Day 1 +tasks such as setting hostname, creating users, or placing +SSH keys in an automated way at boot. For more information on +automating configuration during deployment of |CL| endpoints see the +:ref:`bulk-provision` guide. + +A configuration management tool is useful for maintaining consistent system +and application-level configuration. Ansible\* is offered through the +*sysadmin-hostmgmt* bundle as a configuration management and automation +tool. + +Cloud-native applications +========================= + +An Infrastructure OS can design for good behavior, but it is ultimately up +to applications to make agile design choices. Applications deployed +on |CL| should aim to be host-aware but not depend on any specific host to +run. References should be relative and dynamic when possible. + +The application architecture should incorporate an appropriate tolerance for +infrastructure outages. Don't just keep stateless design as a noted feature. +Continuously test its use; Automate its use by redeploying |CL| and +application on new hosts. This naturally minimizes configuration drift, +challenges your monitoring systems, and business continuity plans. + +.. _`Downloads`: https://clearlinux.org/downloads/ +.. _`Containers`: https://clearlinux.org/downloads/containers +.. _`systemd-journal-remote.service`: https://www.freedesktop.org/software/systemd/man/systemd-journal-remote.service.html +.. _`micro-config-drive`: https://github.com/clearlinux/micro-config-drive + +.. |WEB-SERVER-SCALE| replace:: + There are many well-known ways to achieve a scalable and resilient web + server for this purpose, however implementation details are not in the + scope of this document. In general, they should be close to your + endpoints, highly available, and easy to scale with a load balancer when + necessary. \ No newline at end of file diff --git a/zh_CN/_sources/guides/maintenance/developer-workstation.rst.txt b/zh_CN/_sources/guides/maintenance/developer-workstation.rst.txt new file mode 100644 index 000000000..2e4875361 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/developer-workstation.rst.txt @@ -0,0 +1,112 @@ +.. _developer-workstation: + +Developer Workstation +##################### + +This guide helps you find the minimum set of bundles needed to start your +|CL-ATTR| development project. + +Before continuing, review the :ref:`swupd ` guide to learn more +about the swupd tool and how |CL| simplifies software versioning compared to +other Linux\* distributions. + +.. contents:: + :local: + :depth: 1 + +Workstation Setup +***************** + +After installing the minimum set of bundles required to get started, you can add +more bundles relevant to your specific use case. + +To run any process required for |CL| development, you can add the large bundle +:ref:`*os-clr-on-clr* `. However, given how many packages this +bundle contains, you may want to deploy a leaner OS with only bundles relevant to +your project. + +Use Table 1, *Developer Profiles*, to identify the *minimum +required bundles* to get started developing based on your role or project. +While your role may not neatly fit in one of these categories, consider +Table 1 as a starting point. + +.. list-table:: **Table 1. Developer Profiles** + :widths: 20, 20, 20, 20 + :header-rows: 1 + + * - |CL| Bundle + - *Internet of Things (IoT)* + - *System Administrator* + - *Client/Cloud/Web Developer* + + * - :command:`editors` + - ✓ + - ✓ + - ✓ + + * - :command:`network-basic` + - ✓ + - ✓ + - ✓ + + * - :command:`openssh-server` + - ✓ + - ✓ + - ✓ + + * - :command:`webserver-basic` + - + - ✓ + - ✓ + + * - :command:`application-server` + - + - ✓ + - ✓ + + * - :command:`database-basic` + - + - ✓ + - ✓ + + * - :command:`desktop-autostart` + - ✓ + - ✓ + - ✓ + + * - :command:`dev-utils` + - + - + - ✓ + +swupd search +************ + +We recommend learning about :ref:`swupd `, to learn the +commands to search for and add bundles relevant to your project. + +The guide provides an :ref:`example ` +that shows you how to: + +* Use swupd to search for bundles +* Use swupd to add bundles + +Core Concepts +************* + +We recommend that you understand these core concepts in |CL| *before* +developing your project. + +* :ref:`Software update ` +* :ref:`Mixer ` +* :ref:`Autospec ` + +Other resources for developers +----------------------------------- + +* `Developer Tooling Framework`_ for |CL| +* `Bundle Definition Files`_ + +.. _Bundle Definition Files: https://github.com/clearlinux/clr-bundles + +.. _Developer Tooling Framework: https://github.com/clearlinux/common diff --git a/zh_CN/_sources/guides/maintenance/download-verify-decompress.rst.txt b/zh_CN/_sources/guides/maintenance/download-verify-decompress.rst.txt new file mode 100644 index 000000000..1dc74083c --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/download-verify-decompress.rst.txt @@ -0,0 +1,176 @@ +.. _download-verify-decompress: + +Download, verify, and decompress a |CL-ATTR| image +################################################## + +This guide describes the available types of |CL| images, where to +download them, how to verify their integrity, and how to decompress them. +Follow the steps for your OS. + +.. contents:: + :local: + :depth: 1 + + +.. include:: ../../reference/image-types.rst + :start-after: image-types-content: + :end-before: incl-image-filename-end: + +.. _download-verify-decompress-linux: + +Linux OS steps +************** + +.. _verify-linux: + +Verify the integrity of the |CL| image +====================================== + +Before you use a downloaded |CL| image, verify its integrity. This action +eliminates the small chance of a corrupted image due to download issues. To +support verification, each released |CL| image has a corresponding SHA512 +checksum file designated with the suffix `-SHA512SUMS`. + +#. Download the corresponding SHA512 checksum file of your |CL| `image`_. +#. Open a Terminal. +#. Go to the directory with the downloaded image and checksum files. +#. Verify the integrity of the image and compare it to its original checksum + with the command: + + .. code-block:: bash + + sha512sum -c ./clear-[version number]-[image type].[compression type]-SHA512SUMS + +If the checksum of the downloaded image is different than the original +checksum, a warning is displayed with a message indicating the computed +checksum does **not** match. Otherwise, the name of the image is printed on +the screen followed by `OK`. + +For a more in-depth discussion of image verification including checking the +certificate see :ref:`image-content-validation`. + +.. incl-decompress-image: + +Decompress the |CL| image +========================= + +Released |CL| images are compressed with either GNU zip (*.gz*) or XZ +(*.xz*). The compression type depends on the target platform or +environment. To decompress the image, follow these steps: + +#. Open a Terminal. +#. Go to the directory with the downloaded image. + + To decompress an XZ image, enter: + + .. code-block:: bash + + unxz clear-[version number]-[image type].xz + + To decompress a GZ image, enter: + + .. code-block:: bash + + gunzip clear-[version number]-[image type].gz + +.. incl-decompress-image-end: + +.. _download-verify-decompress-mac: + +macOS\* steps +************* + +.. _verify-mac: + +Verify the integrity of the |CL| image +====================================== + +Before you use a downloaded |CL| image, verify its integrity. This action +eliminates the small chance of a corrupted image due to download issues. To +support verification, each released |CL| image has a corresponding SHA512 +checksum file designated with the suffix `-SHA512SUMS`. + +#. Download the corresponding SHA512 checksum file of your |CL| `image`_. +#. Open a Terminal. +#. Go to the directory with the downloaded image and checksum files. +#. Verify the integrity of the image and compare it to its original checksum + with the command: + + .. code-block:: bash + + shasum -a512 clear-[version number]-[image type].[compression type] | diff clear-[version number]-[image type].[compression type]-SHA512SUMS - + +If the checksum of the downloaded image is different than the original +checksum, the differences will be displayed. Otherwise, an empty output indicates +a match and your downloaded image is good. + +Decompress the |CL| image +========================= + +We compress all released |CL| images by default with either GNU zip +(`.gz`) or xz (`.xz`). The compression type we use depends on the target +platform or environment. To decompress the image, follow these steps: + +#. Open a Terminal. +#. Go to the directory with the downloaded image. +#. Use the :command:`gunzip` command to decompress either compression type. For example: + + .. code-block:: bash + + gunzip clear-[version number]-[image type].xz + gunzip clear-[version number]-[image type].gz + +.. _download-verify-decompress-windows: + +Windows\* OS steps +****************** + +.. _verify-windows: + +Verify the integrity of the |CL| image +====================================== + +Before you use a downloaded |CL| image, verify its integrity. This action +eliminates the small chance of a corrupted image due to download issues. To +support verification, each released |CL| image has a corresponding SHA512 +checksum file designated with the suffix `-SHA512SUMS`. + +#. Download the corresponding SHA512 checksum file of your |CL| `image`_. +#. Start Command Prompt. +#. Go to the directory with the downloaded image and checksum files. +#. Get the SHA512 checksum of the image with the command: + + .. code-block:: bash + + CertUtil -hashfile ./clear-[version number]-[image type].[compression type] sha512 + +#. Manually compare the output with the original checksum value shown in + the downloaded checksum file and make sure they match. + +Decompress the |CL| image +========================= + +Released |CL| images are compressed with either GNU zip (*.gz*) or XZ +(*.xz*). The compression type depends on the target platform or +environment. To decompress the image, follow these steps: + +#. Download and install `7-Zip`_. +#. Go to the directory with the downloaded image and right-click it. +#. From the pop-up menu, select :guilabel:`7-Zip` and select + :guilabel:`Extract Here` as shown in Figure 1. + + .. figure:: figures/download-verify-decompress-windows-fig-1.png + :scale: 80 % + :alt: 7-Zip extract file + + Figure 1: Windows 7-Zip extract file. + +.. _7-Zip: http://www.7-zip.org/ + +Image types +*********** + +.. include:: ../../reference/image-types.rst + :start-after: incl-image-filename-end: + +.. _image: https://clearlinux.org/downloads \ No newline at end of file diff --git a/zh_CN/_sources/guides/maintenance/enable-user-space.rst.txt b/zh_CN/_sources/guides/maintenance/enable-user-space.rst.txt new file mode 100644 index 000000000..e51fa59e6 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/enable-user-space.rst.txt @@ -0,0 +1,103 @@ +.. _enable-user-space: + +Create and enable a new user space +################################## + +This guide provides steps to complete the following basic setup tasks for +a newly installed |CL-ATTR| system: + +.. contents:: + :local: + :depth: 1 + +Create a new user +***************** + +To create a new user and set a password for that user, enter the following +commands as a root user: + +.. code-block:: bash + + useradd + passwd + +Replace the with the name of the user account you want to create +including the password for that user. The :command:`passwd` command prompts +you to enter a new password. Retype the new password for the new user +account just created. + +Add the new user to the *wheel* group +************************************* + +Before logging off as root and logging into your new user account, +enable the :command:`sudo` command for your new . + +To be able to execute all applications with root privileges, add the + to the `wheel group`_. + +#. Add to the wheel group: + + .. code-block:: bash + + usermod -G wheel -a + +#. Log out of root and into the new . + + To log off as root, enter :command:`exit`. + +#. Enter the new and the password created earlier. + + You will now be in the home directory of . + +Install and update the OS software to its current version +********************************************************* + +The |CL| software utility :ref:`swupd ` allows you to perform +system updates while reaping the benefits of upstream development. + +To update your newly installed OS, run: + +.. code-block:: bash + + sudo swupd update + +Add a bundle +************ + +Software applications are installed as bundles using the command +:command:`swupd bundle-add`. Experienced Linux users might compare swupd +to running :command:`apt-get` or :command:`yum install` for package +management. However |CL| manages packages at the level of bundles, which +are integrated stacks of packages. + +For example, the :command:`sysadmin-basic` bundle installs the majority of +applications useful to a system administrator. To install it, enter: + +.. code-block:: bash + + swupd bundle-add sysadmin-basic + +View a full list of bundles and packages installed with the `sysadmin-basic`_ +bundle. You can also view all `bundles`_ for |CL|, active or deprecated. + +Expand your knowledge of :command:`swupd` and check out our developer resources: + +* :ref:`swupd-guide` +* :ref:`developer-workstation` + +Next steps +********** + +Check out our guides and tutorials. + +* :ref:`guides` +* :ref:`tutorials` + +.. _`sysadmin-basic`: + https://github.com/clearlinux/clr-bundles/blob/master/bundles/sysadmin-basic + +.. _`bundles`: + https://github.com/clearlinux/clr-bundles/tree/master/bundles + +.. _`wheel group`: + https://en.wikipedia.org/wiki/Wheel_(Unix_term) diff --git a/zh_CN/_sources/guides/maintenance/fix-broken-install.rst.txt b/zh_CN/_sources/guides/maintenance/fix-broken-install.rst.txt new file mode 100644 index 000000000..5515b6972 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/fix-broken-install.rst.txt @@ -0,0 +1,91 @@ +.. _fix-broken-install: + +Fix a broken installation +######################### + +This guide explains how to fix a broken installation of |CL-ATTR| using a live +desktop image on a USB. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +This guide assumes you have installed |CL| on a target system, but the OS +does not boot or function properly. + +The process described in this guide can only verify and fix files that +:ref:`swupd` owns in :file:`/usr`. Files outside of this path, such +as :file:`/home/`, :file:`/etc`, :file:`/var`, etc., cannot be repaired by this +process. + +Prerequisites +************* + +* Download and install the live desktop image on a USB. See + :ref:`bare-metal-install-desktop` for install instructions. + +Boot a live desktop image to fix target system +********************************************** + +#. Boot the |CL| live desktop image. + +.. include:: ../../get-started/bare-metal-install-desktop.rst + :start-after: install-on-target-start: + :end-before: install-on-target-end: + +Mount root partition, verify, and fix +************************************* + +#. Open a Terminal window. + +#. Ensure the system is connected to the network. + +#. Mount the system’s root partition. + + #. To find the root partition, run: + + .. code-block:: bash + + lsblk + + We'll use :file:`/dev/sda3/` as the root partition example. + + #. Next, mount the partition to the :file:`/mnt` folder. + + .. code-block:: bash + + sudo mount /dev/sda3 /mnt + +#. Verify that you mounted the correct root partition by checking for some + files commonly found on |CL| systems. + + .. code-block:: bash + + cat /mnt/usr/lib/os-release + ls /mnt/usr/share/clear/bundles + +#. Next, run swupd to fix any issues on the target system. + + .. code-block:: bash + + sudo swupd repair --picky --path=/mnt + + :ref:`Learn more about how swupd works `. + +#. After the process is complete, unmount the root partition: + + .. code-block:: bash + + sudo umount /mnt + +#. Reboot the system, remove the live desktop USB drive, + and boot into the repaired system. + + .. code-block:: bash + + sudo reboot + +**Congratulations!** You successfully restored |CL|. diff --git a/zh_CN/_sources/guides/maintenance/hostname.rst.txt b/zh_CN/_sources/guides/maintenance/hostname.rst.txt new file mode 100644 index 000000000..ce0c225ca --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/hostname.rst.txt @@ -0,0 +1,81 @@ +.. _hostname: + +Modify hostname +############### + +This guide describes how to modify and view the hostname of your |CL-ATTR| +system. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +By default, |CL| installations have a machine generated name, which is a +long string of letters and numbers. The generated name is fine for computers +but is not human-friendly. Administrators and users will often want to rename +their machines with a name that is easier to remember, type, and search +for. Renaming a machine also makes it easier to identify, by including +meaningful data in the name. The following examples show human-friendly machine +names: + +* *regression-test* +* *sally-test-box1* +* *az-bldg2-lab* + +Set your hostname +***************** + +|CL| uses the :command:`hostnamectl` command to display and modify the machine +name. :command:`hostnamectl` is part of the :command:`os-core` bundle, which +provides a basic Linux\* user space and utilities. + +This example sets the hostname to *telemetry-test-2-h15*, to identify a +|CL| telemetry test machine on the second floor at grid location H15. +Make sure to reboot after setting a new hostname. + +.. code-block:: bash + + sudo hostnamectl set-hostname telemetry-test-2-h15 + sudo reboot + +.. note:: + + There are three types of hostname: *static*, *transient*, and *pretty*. + The most common is the static hostname. Static hostnames must be between + two and 63 characters long, must start and end with a letter or number, + and may contain letters (case-insensitive), numbers, dashes, or dots. + + If the static hostname exists, it is used to generate the transient hostname, + which is maintained by the kernel. The transient hostname can be changed + by DHCP or mDNS at runtime. + + The pretty hostname is a free-form UTF8 name used for presentation to the user. + +View your hostname +****************** + +View your current hostname using the following command: + +.. code-block:: bash + + hostnamectl + +You should see output similar to: + +.. code-block:: console + + Static hostname : telemetry-test-2-h15 + Pretty hostname : telemetry-test-2-h15 + Icon name : computer-desktop + Chassis : desktop + Machine ID : 4d0d60207a904ebbab96680a51ac1339 + Boot ID : 98d3514e5a984e8cbbdf46a2f0d6b397 + Operating System : Clear Linux OS + Kernel : Linux 4.18.8-632.native + Architecture : x86-64 + + +**Congratulations!** You successfully modified the hostname of your |CL| system. diff --git a/zh_CN/_sources/guides/maintenance/increase-virtual-disk-size.rst.txt b/zh_CN/_sources/guides/maintenance/increase-virtual-disk-size.rst.txt new file mode 100644 index 000000000..e633f5063 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/increase-virtual-disk-size.rst.txt @@ -0,0 +1,174 @@ +.. _increase-virtual-disk-size: + +Increase virtual disk size of an image +###################################### + +This guide describes how to increase the disk size of your prebuilt |CL-ATTR| +image if you need more capacity. + +.. contents:: + :local: + :depth: 1 + +Determine the partition order and sizes of the prebuilt image +************************************************************* + +|CL| prebuilt images come in different sizes, ranging from 300 MB to 20 +GB. + +There are two methods to find the order and sizes of partitions virtual disk +of your prebuilt |CL| image. + +In both examples, the prebuilt Hyper-V image has a disk size of 8.5 GB with +:file:`/dev/sda3` being the partition for the root filesystem (/) + +Checking :command:`lsblk` on the VM +=================================== + +The first method is to boot up your :abbr:`VM (Virtual Machine)` and +execute the :command:`lsblk` command as shown below: + +.. code-block:: bash + + sudo lsblk + +An example output of the :command:`lsblk` command: + +.. code-block:: console + + NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT + sda 8:0 0 8.5G 0 disk + ├─sda1 8:1 0 512M 0 part + ├─sda2 8:2 0 32M 0 part [SWAP] + └─sda3 8:3 0 8G 0 part / + +An example of this can also be seen in Figure 1. + +Checking :file:`config.json` used to build the image +==================================================== + +The second method to determine partition to check the :file:`config.json` +file used to create prebuilt image, located in the `releases`_ repository. +For example, to find the size of the Hyper-V\* image version number 20450, +follow these steps: + +#. Go to the `releases`_ repository. +#. Drill down into the `20450 > clear > config > image` directory. +#. Open the :file:`hyperv-config.json` file. +#. Locate the `PartitionLayout` key. + + The example shows 512 MB for the EFI partition, 32 MB for the swap + partition, and 8 GB for the root partition. + + + .. code-block:: console + + "PartitionLayout" : [ { "disk" : "hyperv.img", + "partition" : 1, + "size" : "512M", + "type" : "EFI" }, + { "disk" : "hyperv.img", + "partition" : 2, + "size" : "32M", + "type" : "swap" }, + { "disk" : "hyperv.img", + "partition" : 3, + "size" : "8G", + "type" : "linux" } ], + +Increase virtual disk size +************************** +Once you have determined the disk and partition to be increased, you are +ready to perform the actual increase of the disk, partition, and filesystem. + +Power off VM and increase virtual disk size +=========================================== + +To increase the virtual disk size for a prebuilt image, perform the steps +below: + +#. Shut down your VM if it is running. +#. Use the process defined by your hypervisor or cloud provider to increase + the virtual disk size of your |CL| VM. +#. Power up the VM. + + +Resize the partition of the virtual disk +======================================== + +#. Log in to an account with root privileges. +#. Open a terminal emulator. +#. Add the :command:`storage-utils` bundle to install the + :command:`parted` and :command:`resize2fs` tools. + + .. code-block:: bash + + sudo swupd bundle-add storage-utils + +#. Launch the `parted` tool. + + .. code-block:: bash + + sudo parted + +#. In the `parted` tool, perform these steps: + + #. Press :command:`p` to print the partitions table. + #. If the warning message below is displayed, enter :command:`Fix`. + + .. code-block:: console + + Warning: Not all of the space available to :file:`/dev/sda` appears to be + used, you can fix the GPT to use all of the space (an extra ... + blocks) or continue with the current setting? + + Fix/Ignore? + + #. Enter :command:`resizepart [partition number]` where + *[partition number]* is the partition number of the partition to modify. + #. Enter :command:`yes` when prompted. + #. Enter the new End size. + + .. note:: + + If you want a partition to take up the remaining disk space, then + enter the total size of the disk. When you print the partitions + table with the :command:`p` command, the total disk size is shown + after the :guilabel:`Disk` label. + + An example of this can be seen in Figure 1. + + #. Enter :command:`q` to exit `parted` when you are finished resizing the + image. + + Figure 1 depicts the described steps to resize the partition of the virtual disk from 8.5GB to 20GB. + + .. figure:: figures/increase-virtual-disk-size-1.png + :scale: 100 % + :alt: Increase root partition size + + Figure 1: Increase root partition size. + +Resize the filesystem +===================== + +#. Enter :command:`sudo resize2fs -p /dev/[modified partition name]` where + *[modified partition name]* is the partition that was changed in the `parted` + tool. + +#. Run the :command:`df -h` to verify that the filesystem size has + increased. + + Figure 2 depicts the described steps to resize the partition of the virtual + disk from 8.5GB to 20GB. + + .. figure:: figures/increase-virtual-disk-size-2.png + :scale: 100 % + :alt: Increase root filesystem with resize2fs + + Figure 2: Increase root filesystem size after partition has been expanded. + +**Congratulations!** You have resized the disk, partition, and filesystem. At +this point, the increase in disk capacity is usable. + +.. _releases: https://cdn.download.clearlinux.org/releases/ \ No newline at end of file diff --git a/zh_CN/_sources/guides/maintenance/query-upstream.rst.txt b/zh_CN/_sources/guides/maintenance/query-upstream.rst.txt new file mode 100644 index 000000000..65bd614f9 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/query-upstream.rst.txt @@ -0,0 +1,226 @@ +.. _query-upstream: + +Query package info from upstream repository +########################################### + +This guide describes how to query package information from the |CL| upstream +repositories. This guide is intended for developers and advanced users. + +.. contents:: + :local: + :depth: 1 + :backlinks: top + +Overview +******** + +In |CL-ATTR|, the :ref:`swupd` tool manages software +dependencies and installs bundles instead of packages. Although a bundle is +a collection of one or more packages, |CL| does not work with packages on +the client side. However, on the upstream/factory side, |CL| does work with +packages using a process called *mixing*. + +Currently, :command:`swupd` does not report which packages are installed, +provide package version information, or return other package details. This +guide describes a method for retrieving package information from the |CL| +upstream repositories using :abbr:`DNF(Dandified Yum)` commands. + +Prerequisites +************* + +This guide assumes you have installed |CL| on your host system. +For detailed instructions on installing |CL| on a bare metal system, visit +the :ref:`bare metal installation guide `. + +Before you install any new packages, update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +Configure DNF +************* + +#. Install the DNF bundle with the command: + + .. code-block:: bash + + sudo swupd bundle-add dnf + +#. Create a :file:`dnf.conf` file with the commands: + + .. code-block:: bash + + sudo mkdir -p /etc/dnf + sudo curl -L https://github.com/clearlinux/common/raw/master/conf/dnf.conf --output /etc/dnf/dnf.conf + + +#. Edit the :file:`/etc/dnf/dnf.conf` file and set the **baseurl** variable + for binary and source RPMs as shown in lines 3 and 9 in the following + example. + + .. code-block:: bash + :linenos: + :emphasize-lines: 3,9 + + [clear] + name=Clear + baseurl=https://cdn.download.clearlinux.org/releases/$releasever/clear/x86_64/os/ + enabled=1 + gpgcheck=0 + [clear-source] + name=Clear sources + failovermethod=priority + baseurl=https://cdn.download.clearlinux.org/releases/$releasever/clear/source/SRPMS/ + enabled=1 + gpgcheck=0 + +#. Initialize the RPM database with the command: + + .. code-block:: bash + + sudo rpm --initdb + + +DNF command usage examples +************************** + +.. contents:: :local: + :depth: 1 + :backlinks: top + +List all binary and source RPMs in the current release +====================================================== + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=current + +Sample output: + +.. code-block:: console + + Clear 5.1 MB/s | 13 MB 00:02 + Clear sources 1.8 MB/s | 1.7 MB 00:00 + AVB-AudioModules-0:4.1.0-1.src + AVB-AudioModules-0:4.1.0-1.x86_64 + AVB-AudioModules-data-0:4.1.0-1.x86_64 + AVB-AudioModules-dev-0:4.1.0-1.x86_64 + AVB-AudioModules-lib-0:4.1.0-1.x86_64 + AVB-AudioModules-license-0:4.1.0-1.x86_64 + AVBStreamHandler-0:1.1.0-21.src + AVBStreamHandler-0:1.1.0-21.x86_64 + AVBStreamHandler-abi-0:1.1.0-21.x86_64 + AVBStreamHandler-bin-0:1.1.0-21.x86_64 + AVBStreamHandler-data-0:1.1.0-21.x86_64 + AVBStreamHandler-dev-0:1.1.0-21.x86_64 + AVBStreamHandler-lib-0:1.1.0-21.x86_64 + AVBStreamHandler-license-0:1.1.0-21.x86_64 + ... + + +Show version information for a package in current release +========================================================= + +This example queries version information for the zstd package. + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=current zstd + +Sample output: + +.. code-block:: console + + Last metadata expiration check: 0:02:30 ago on Tue 16 Jul 2019 03:03:34 PM PDT. + zstd-0:1.4.0-46.src + zstd-0:1.4.0-46.x86_64 + + +Show version information for a package in a specific release +============================================================ + +This example queries version information for the zstd package in release +21000. + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=21000 zstd + +Sample output: + +.. code-block:: console + + Clear + 2.7 MB/s | 3.9 MB 00:01 + Clear sources + 628 kB/s | 559 kB 00:00 + zstd-0:1.3.3-20.src + zstd-0:1.3.3-20.x86_64 + +Show only version and release information for a package in a specific release +============================================================================= + +This example queries version and release information for the zstd package in +release 15000. + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=15000 --qf="%{VERSION}\n%{RELEASE}" zstd + +Sample output: + +.. code-block:: console + + Clear + 3.4 MB/s | 3.9 MB 00:01 + Clear sources + 345 kB/s | 528 kB 00:01 + 1.1.4 + 5 + +Show the binary package for a specified binary file +=================================================== + +This example returns the binary package that contains the +:file:`/usr/bin/zip` binary file. + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=current --whatprovides /usr/bin/zip + +Sample output: + +.. code-block:: console + + Last metadata expiration check: 0:04:47 ago on Tue 16 Jul 2019 03:03:34 PM PDT. + zip-bin-0:3.0-23.x86_64 + +Show the source package for a specified binary file +=================================================== + +This example returns the source package that contains the +:file:`/usr/bin/zip` binary file. + +Command: + +.. code-block:: bash + + dnf repoquery --releasever=current --whatprovides /usr/bin/zip --srpm + +Sample output: + +.. code-block:: console + + Last metadata expiration check: 0:05:50 ago on Tue 16 Jul 2019 03:03:34 PM PDT. + zip-0:3.0-23.src diff --git a/zh_CN/_sources/guides/maintenance/resource-limits.rst.txt b/zh_CN/_sources/guides/maintenance/resource-limits.rst.txt new file mode 100644 index 000000000..c753992f1 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/resource-limits.rst.txt @@ -0,0 +1,123 @@ +.. _resource-limits: + +Resource limits +############### + +Linux systems employ limiting or quota mechanisms to provide quality of +service for system resources and contain rogue processes. + +These limits are layered at the system-level and user-level. If these limits +need to be modified, it is useful to understand the different limit +configurations. + +.. contents:: :local: + :depth: 2 + + +System-wide limits +================== + +Some global resource limits are implemented in the Linux kernel and are +controllable with kernel parameters. + +For example, a global limit for the maximum number of open files is set with +the *fs.file-max* parameter. This limit applies to all processes and users an +cannot be exceeded other limit values. + +Checking limit +************** + +You can check a current value with :command:`sysctl -n `. For +example: + +.. code:: bash + + sysctl -n fs.file-max + + +This *fs.file-max* value is set intentionally high on |CL| systems by +default. You can check the maximum value supported by the system with: + +.. code:: + + cat /proc/sys/fs/file-max + + +Overriding limit +**************** + +You can override a value with :command:`sysctl -w `. For +example: + +.. code:: bash + + sudo sysctl -w fs.file-max= + +If needed permanently, the value can be set by creating a +:file:`/etc/sysctl.d/*.conf` file (see :command:`man sysctl.d` for details). +For example: + +.. code:: bash + + sudo mkdir -p /etc/sysctl.d/ + + sudo tee /etc/sysctl.d/fs-file-max.conf > /dev/null <<'EOF' + fs.file-max= + EOF + + + + + +Per-user limits +=============== + +For processes not managed by systemd, resource limits can be set for PAM +logins on a per-user basis with upper and lower limits in the +:file:`/etc/security/limits.conf` file. + +You can set temporary values and check the current values with the +:command:`ulimit` command. For example, to change the soft limit of maximum +number of open file descriptors for the current user: + +.. code:: + + ulimit -S -n + +See :command:`man limits.conf` for details. + + +Service limits +============== + +Resource limits for services started with systemd units do not follow normal +user limits because the process is started in a seperate `Linux control group +(cgroup) `_ Linux +cgroups associate related process groups and provide resource accounting. + +Resource limits for individual systemd services can be controlled inside their +unit files or its configuration drop-in directory with the resource Limit +directives. See `process properties section of the systemd.exec man page +`_. + +Resource limits for all systemd services can be controlled with a file in the +:file:`/etc/systemd/system.conf.d/` directory. For example, to have no +restriction on the number of open files: + +.. code:: + + sudo mkdir -p /etc/systemd/system.conf.d/ + + sudo tee /etc/systemd/system.conf.d/50-nfiles.conf > /dev/null <<'EOF' + [Manager] + DefaultLimitNOFILE=infinity + EOF + + + + + + + + + diff --git a/zh_CN/_sources/guides/maintenance/restart.rst.txt b/zh_CN/_sources/guides/maintenance/restart.rst.txt new file mode 100644 index 000000000..ddd4a17ce --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/restart.rst.txt @@ -0,0 +1,164 @@ +.. _restart: + +Restart system services after an OS update +########################################## + +This guide describes how to use the :command:`clr-service-restart` tool. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +|CL-ATTR| includes a :command:`clr-service-restart` tool that shows which +system daemons require a restart. + +:command:`clr-service-restart` reads various files in the :file:`procfs` +filesystem provided by the kernel and relies on :command:`systemd` to +determine which services to restart. + + +How it works +************ + +:command:`clr-service-restart` implements a whitelist to identify which +daemons can be restarted. As a system administrator, you can customize the +default |CL| OS whitelist using :command:`allow` or :command:`disallow` options +for restarting system services. When a software update occurs, +:command:`clr-service-restart` consults the whitelist to see if a service daemon +is allowed to be restarted or not. + + +Basic options +************* + +:command:`clr-service-restart` has three basic options: :command:`allow`, +:command:`disallow`, and :command:`default`. + +allow +===== + +The :command:`allow` option identifies a daemon to restart after an OS software +update. The :command:`clr-service-restart` daemon creates a symlink in +:file:`/etc/clr-service-restart` as a record. The example below tells +:command:`clr-service-restart` to restart the *tallow* daemon after an +OS software update. + +.. code-block:: bash + + sudo clr-service-restart allow tallow.service + +disallow +======== + +The :command:`disallow` option tells :command:`clr-service-restart` not to +restart the specified daemon even if the OS defaults permit the daemon to be +restarted. The :command:`clr-service-restart` daemon creates a symlink in +:file:`/etc/clr-service-restart` that points to :file:`/dev/null` as a +record. The example below tells :command:`clr-service-restart` not to +restart the *rngd* daemon after an OS software update. + +.. code-block:: bash + + sudo clr-service-restart disallow rngd + +default +======= + +The :command:`default` option makes :command:`clr-service-restart` revert back +to the OS defaults and delete any symlink in :file:`/etc/clr-service-restart`. +The example below tells :command:`clr-service-restart` to restart *rngd* +automatically again, because *rngd* is whitelisted for automatic service +restarts by default in |CL|. + +.. code-block:: bash + + sudo clr-service-restart default rngd + +Monitor options +*************** + +:command:`clr-service-restart` works in the background and is invoked with +:command:`swupd` automatically. Review the journal output to verify that +services are restarted after an OS software update. + +If you pass both options (:command:`-a` and :command:`-n`) described below, +:command:`clr-service-restart` displays a complete list of system services +that require a restart. Use both options to verify that all desired daemons +are restarted. + + +-n option +========= + +The :command:`-n` option makes :command:`clr-service-restart` perform no restarts. +Instead it displays the services that could potentially be restarted. When used, +:command:`clr-service-restart` outputs a list of messages showing: + +* Which service needs a restart. +* What unit it is. +* Why it needs a restart. +* Which command is required to restart the unit. + +-a option +========= + +The :command:`-a` option makes :command:`clr-service-restart` consider all system +services, not only the ones that are whitelisted. Because the default whitelist +in |CL| is relatively short, you can use this option to restart all impacted +services when you log in on the system. + +Example +******* + +In the example below, :command:`clr-service-restart` is invoked with both the +:command:`-a` and :command:`-n` options, which displays a complete list of system +services that require a restart. + +Command: + +.. code-block:: bash + + sudo clr-service-restart -a -n + +Sample output: + +.. code-block:: console + + upower.service: needs a restart (a library dependency was updated) + /usr/bin/systemctl --no-ask-password try-restart upower.service + NetworkManager.service: needs a restart (a library dependency was + updated) + /usr/bin/systemctl --no-ask-password try-restart NetworkManager.service + .... + +Telemetry +********* + +:command:`clr-service-restart` may cause problems such as a short service +outage when a daemon is being restarted, or if a daemon fails to properly +restart. To minimize issues, :command:`clr-service-restart` creates a +telemetry record and sends it to the optional |CL| telemetry service if both +conditions below are met: + +* If a unit fails to automatically restart after an OS update. +* If that unit resides in the system location :file:`/usr/lib/systemd/system`. + +If you do not install the |CL| telemetrics bundle, the data is discarded. If +you install the telemetrics bundle and you opt to send telemetry, then the +system unit name is sent to the |CL| telemetry service. We evaluate the +report and update the whitelist to remove services that are not safe to +restart. + + +Conclusion +********** + +The |CL| team enjoys coming up with simple and efficient solutions to make +your work easier. We made a GitHub\* project of :command:`clr-service-restart` +and we invite you to look at the code, share your thoughts, and work with us +on improving the project. You can find the project at: + +https://github.com/clearlinux/clr-service-restart diff --git a/zh_CN/_sources/guides/maintenance/time.rst.txt b/zh_CN/_sources/guides/maintenance/time.rst.txt new file mode 100644 index 000000000..caa0be164 --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/time.rst.txt @@ -0,0 +1,59 @@ +.. _time: + +Set the time +############ + +This guide describes how to reset the time in your |CL-ATTR| system when +the default :abbr:`NTP (Network Time Protocol)` servers cannot be reached. + +|CL| uses the `systemd-timesyncd.service` daemon to synchronize time. + + +#. Install the :command:`sysadmin-basic` bundle. + + .. code-block:: bash + + sudo swupd bundle-add sysadmin-basic + +#. Set your time zone. This example uses Los Angeles. + + .. code-block:: bash + + timedatectl set-timezone America/Los_Angeles + + .. note:: + + To see a list of time zones, use the command: + :command:`timedatectl list-timezones | grep ` + +#. Create a :file:`/etc/systemd/` directory. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/ + +#. Create a new file named :file:`/etc/systemd/timesyncd.conf` and enter the + following text. + + .. code-block:: console + + [Time] + NTP= + FallbackNTP= + +#. Enable the `systemd-timesyncd` service. + + .. code-block:: bash + + timedatectl set-ntp true + +.. note:: + + To check the service status, use the :command:`timedatectl status` command. + + To restart the `timesyncd` daemon, enter :command:`systemctl restart + systemd-timesyncd` into your terminal emulator. + +**Congratulations!** You successfully set up the time in your |CL| system. + + diff --git a/zh_CN/_sources/guides/maintenance/validate-signatures.rst.txt b/zh_CN/_sources/guides/maintenance/validate-signatures.rst.txt new file mode 100644 index 000000000..f9d2fd21c --- /dev/null +++ b/zh_CN/_sources/guides/maintenance/validate-signatures.rst.txt @@ -0,0 +1,139 @@ +.. _validate-signatures: + +Validate signatures +################### + + +This guide describes how to validate the contents of a |CL-ATTR| image. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Validating the contents of an image is a manual process and is the same process +that :ref:`swupd-guide` performs internally. + +|CL| offers a way to validate the content of an image or an update. All +validation of content works by creating and signing a hash. A valid signature +creates a chain of trust. A broken chain of trust, seen as an invalid +signature, means the content is not valid. + + +.. _image-content-validation: + +Image content validation +************************ + +In the steps below, we used the installer image of the latest release +of |CL|. You may use any image of |CL| you choose. + +#. Download the image, the signature of the SHA512 sum of the image, and the + |CL| certificate used for signing the SHA512 sum. + + .. code-block:: console + + # Image + curl -O https://cdn.download.clearlinux.org/current/clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz + # Signature of SHA512 sum of image + curl -O https://cdn.download.clearlinux.org/current/clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz-SHA512SUMS.sig + # Certificate + curl -O https://cdn.download.clearlinux.org/releases/$(curl https://cdn.download.clearlinux.org/latest)/clear/ClearLinuxRoot.pem + +#. Generate the SHA256 sum of the |CL| certificate. + + .. code-block:: console + + sha256sum ClearLinuxRoot.pem + +#. Ensure the generated SHA256 sum of the |CL| certificate matches the + following SHA256 sum to verify the integrity of the certificate. + + .. code-block:: console + + 4b0ca67300727477913c331ff124928a98bcf2fb12c011a855f17cd73137a890 ClearLinuxRoot.pem + +#. Generate the SHA512 sum of the image and save it to a file. + + .. code-block:: console + + sha512sum clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz > sha512sum.out + +#. Ensure the signature of the SHA512 sum of the image was created using the + |CL| certificate. This confirms that the image is trusted and has not + been modified. + + .. code-block:: console + + openssl smime -verify -purpose any -in clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz-SHA512SUMS.sig -inform der -content sha512sum.out -CAfile ClearLinuxRoot.pem + + .. note:: + + The :command:`-purpose any` option is required when using OpenSSL 1.1. + If you use an earlier version of OpenSSL, omit this option to perform + signature validation. The :command:`openssl version` command may be used + to determine the version of OpenSSL in use. + +#. The output should contain "Verification successful". If the output + contains "bad_signature" anywhere, then the image is not trustworthy. + +Update content validation +************************* + +**swupd** validates all update content automatically before applying the +update content. The process swupd follows internally is illustrated here +with manual steps using the latest |CL| release. There is no need to perform +these steps manually when performing a :command:`swupd update`. + +#. Download the :abbr:`MoM (top-level manifest)`, the signature of the MoM, + and the Swupd certificate used for signing the signature of the MoM. + + .. code-block:: console + + # MoM + curl -O https://cdn.download.clearlinux.org/update/$(curl https://cdn.download.clearlinux.org/latest)/Manifest.MoM + # Signature of MoM + curl -O https://cdn.download.clearlinux.org/update/$(curl https://cdn.download.clearlinux.org/latest)/Manifest.MoM.sig + # Swupd certificate + curl -O https://cdn.download.clearlinux.org/releases/$(curl https://cdn.download.clearlinux.org/latest)/clear/Swupd_Root.pem + +#. Generate the SHA256 sum of the swupd certificate. + + .. code-block:: console + + sha256sum Swupd_Root.pem + +#. Confirm that the generated SHA256 sum of the swupd certificate matches the + SHA256 sum shown below to verify the integrity of the certificate. + + .. code-block:: console + + ff06fc76ec5148040acb4fcb2bc8105cc72f1963b55de0daf3a4ed664c6fe72c Swupd_Root.pem + +#. Confirm that the signature of the MoM was created using the Swupd + certificate. This signature validates the update content is trustworthy and + has not been modified. + + .. code-block:: console + + openssl smime -verify -purpose any -in Manifest.MoM.sig -inform der -content Manifest.MoM -CAfile Swupd_Root.pem + + .. note:: + + The :command:`-purpose any` option is required when using OpenSSL 1.1. + If you use an earlier version of OpenSSL, omit this option to perform + signature validation. The :command:`openssl version` command may be used + to determine the version of OpenSSL in use. + + .. note:: + + The SHA512 sum of the MoM is not generated and then signed. Instead, the + MoM is signed directly because it is small in size compared to an image of + |CL|. + +#. The output should contain "Verification successful". If the output + contains "bad_signature" anywhere, then the MoM cannot be trusted. + Because the MoM contains a list of hashes for bundle manifests, if the MoM + cannot be trusted, then the bundle content cannot be trusted. diff --git a/zh_CN/_sources/guides/network/custom-clear-container.rst.txt b/zh_CN/_sources/guides/network/custom-clear-container.rst.txt new file mode 100644 index 000000000..d3657c10a --- /dev/null +++ b/zh_CN/_sources/guides/network/custom-clear-container.rst.txt @@ -0,0 +1,326 @@ +.. _custom-clear-container: + +Build a custom |CL-ATTR| based Docker container image +####################################################### + +This guide contains the steps to build a custom container image. The official +base |CL-ATTR| container image is published on Docker\* Hub and is updated on a +regular basis. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +* You must perform these steps on a |CL| system because the + :abbr:`swupd (software updater)` is used to manage bundles in the + container. +* You must install the :file:`containers-basic` bundle on the |CL| system + or Docker will not work. +* You have a basic understanding of Docker. + +Build the base container image +****************************** + +#. Log in and get root privileges. + + .. code-block:: bash + + sudo -s + +#. Verify Docker is installed and running. + + .. code-block:: bash + + docker info + + If Docker is installed and running, the output is similar to + this example: + + .. code-block:: console + + Containers: 0 + Running: 0 + Paused: 0 + Stopped: 0 + Images: 4 + Server Version: 17.05.0-ce + Storage Driver: overlay + Backing Filesystem: extfs + Supports d_type: true + Logging Driver: json-file + Cgroup Driver: cgroupfs + Plugins: + Volume: local + Network: bridge host macvlan null overlay + Swarm: inactive + Runtimes: runc + Default Runtime: runc + Init Binary: docker-init + containerd version: (expected: 9048e5e50717ea4497b757314bad98ea3763c145) + runc version: N/A (expected: 9c2d8d184e5da67c95d601382adf14862e4f2228) + init version: N/A (expected: ) + Kernel Version: 4.12.7-377.native + Operating System: Clear Linux OS for Intel Architecture + OSType: linux + Architecture: x86_64 + CPUs: 4 + Total Memory: 15.62GiB + Name: clr-os + ID: XQHJ:DYEM:3Q4D:DKLM:JOA4:RUSF:GAFR:DLPA:HOJP:W5FF:ULEE:7HZ3 + Docker Root Dir: /var/lib/docker + Debug Mode (client): false + Debug Mode (server): false + Registry: https://index.docker.io/v1/ + Experimental: false + Insecure Registries: + 127.0.0.0/8 + Live Restore Enabled: false + + If Docker is not installed, enter the commands: + + .. code-block:: bash + + swupd bundle-add containers-basic + systemctl start docker + +#. Use :command:`os-install` to download and install the bundles. + + .. code-block:: bash + + swupd os-install --url https://cdn.download.clearlinux.org/update --statedir "$PWD"/swupd-state --no-boot-update --version 29790 -B os-core-update,editors,network-basic base + + + The swupd example uses the following flags: + + * :command:`os-install` tells swupd to download and install. + * :command:`-V / --version` specifies the version of the |CL| bundles. + * :command:`--url` specifies the URL of the bundles repository. + * :command:`--statedir` specifies the state directory where downloaded bundles + and any state information are stored. + * :command:`--no-boot-update` tells swupd to skip updating boot files because + boot files are not required for a container. + + For more information on swupd flags, enter the :command:`swupd os-install -h` + command. + + Example output: + + .. code-block:: console + + swupd-client software verify 3.12.2 + Copyright (C) 2012-2017 Intel Corporation + + Verifying version 17870 + Attempting to download version string to memory + Downloading packs... + + Extracting python-basic pack for version 17820 + ...14% + Extracting perl-basic pack for version 17790 + ...28% + Extracting openssh-server pack for version 17660 + ...42% + Extracting editors pack for version 17850 + ...57% + Extracting network-basic pack for version 17650 + ...71% + Extracting os-core pack for version 17870 + ...85% + Extracting os-core-update pack for version 17870 + ...100% + Adding any missing files + ...88% + Inspected 33982 files + 33974 files were missing + 33974 of 33974 missing files were replaced + 0 of 33974 missing files were not replaced + Calling post-update helper scripts. + WARNING: boot files update skipped due to --no-boot-update argument + Fix successful + + .. note:: + + The WARNING message is expected and can be ignored. + +#. Create a tarball and compress it. + + .. code-block:: bash + + tar -C base -cf base.tar . + xz -v -T0 base.tar + +#. Create the Dockerfile to build the image. + + .. code-block:: bash + + cat > Dockerfile << EOF + FROM scratch + MAINTAINER First Last + ADD base.tar.xz / + CMD ["/bin/bash"] + EOF + +#. Build the |CL| container image. + + .. code-block:: bash + + docker build -t my-custom-clear-linux-container . + + Example output: + + .. code-block:: console + + Sending build context to Docker daemon 806.5MB + Step 1/4 : FROM scratch + ---> + Step 2/4 : MAINTAINER First Last + ---> Running in 7238f35abcd0 + ---> ec5064287c60 + Removing intermediate container 7238f35abcd0 + Step 3/4 : ADD base.tar.xz / + ---> 2723b7d20716 + Removing intermediate container 16e3ed0df8da + Step 4/4 : CMD /bin/bash + ---> Running in efa893350647 + ---> 5414c3a12993 + Removing intermediate container efa893350647 + Successfully built 5414c3a12993 + Successfully tagged my-custom-clear-linux-container:latest + +#. List the newly created |CL| container image. + + .. code-block:: bash + + docker images + + Example output: + + .. code-block:: console + + REPOSITORY TAG IMAGE ID CREATED SIZE + my-custom-clear-linux-container latest 5414c3a12993 About a minute ago 616MB + +#. Launch the built |CL| container. + + .. code-block:: bash + + docker run -it my-custom-clear-linux-container + +Manage bundles in a container +***************************** + +You can add and remove bundles from a |CL| container using the +:command:`RUN swupd` command in the Dockerfile. + +Add a bundle +============ + +This example Dockerfile adds the :file:`pxe-server` bundle to an existing |CL| +Docker image: + +.. code-block:: bash + + cat > Dockerfile << EOF + FROM my-customer-clear-linux-container + MAINTAINER First Last + RUN swupd bundle-add pxe-server + CMD ["/bin/bash/bash"] + EOF + +Example output: + +.. code-block:: console + + docker build -t my-clearlinux-with-pxe-server-bundle . + + Sending build context to Docker daemon 806.5MB + Step 1/4 : FROM my-custom-clear-linux-container + ---> 5414c3a12993 + Step 2/4 : MAINTAINER First Last + ---> Running in 19b4411cf4bd + ---> 08d400baffde + Removing intermediate container 19b4411cf4bd + Step 3/4 : RUN swupd bundle-add pxe-server + ---> Running in 3e634d6e0792 + swupd-client bundle adder 3.12.2 + Copyright (C) 2012-2017 Intel Corporation + + Attempting to download version string to memory + Downloading packs... + + Extracting pxe-server pack for version 17820 + . + Installing bundle(s) files... + .............................................................................. + .............................................................................. + .............................................................................. + .............................................................................. + .............................................................................. + .............................................................................. + Calling post-update helper scripts. + WARNING: systemctl not operable, unable to run systemd update triggers + Bundle(s) installation done. + ---> 8ead5f2c0c33 + Removing intermediate container 3e634d6e0792 + Step 4/4 : CMD /bin/bash + ---> Running in 0ceae320279b + ---> dcd9adb40611 + Removing intermediate container 0ceae320279b + Successfully built dcd9adb40611 + Successfully tagged my-clearlinux-with-pxe-server-bundle:latest + +.. note:: + + The WARNING message can be ignored because systemd does not run inside + a container. + +Remove a bundle +=============== + +This example Dockerfile removes the :file:`pxe-server` bundle from an existing +|CL| Docker image: + +.. code-block:: bash + + cat > Dockerfile << EOF + FROM my-clearlinux-with-pxe-server-bundle + MAINTAINER First Last + RUN swupd bundle-remove pxe-server + CMD ["/bin/bash/bash"] + EOF + +Example output: + +.. code-block:: console + + docker build -t my-clearlinux-remove-pxe-server-bundle . + + Sending build context to Docker daemon 806.5MB + Step 1/4 : FROM my-clearlinux-with-pxe-server-bundle + ---> dcd9adb40611 + Step 2/4 : MAINTAINER First Last + ---> Running in 71b60f15003e + ---> 742192751c1a + Removing intermediate container 71b60f15003e + Step 3/4 : RUN swupd bundle-remove pxe-server + ---> Running in ad28a3390ecc + swupd-client bundle remover 3.12.2 + Copyright (C) 2012-2017 Intel Corporation + + Removing bundle: pxe-server + Deleting bundle files... + Total deleted files: 92 + Untracking bundle from system... + Success: Bundle removed + 1 bundle(s) were removed successfully + ---> d6ee7903e14d + Removing intermediate container ad28a3390ecc + Step 4/4 : CMD /bin/bash + ---> Running in 7694989e97de + ---> ec23189ef954 + Removing intermediate container 7694989e97de + Successfully built ec23189ef954 + Successfully tagged my-clearlinux-remove-pxe-server-bundle:latest \ No newline at end of file diff --git a/zh_CN/_sources/guides/network/dpdk.rst.txt b/zh_CN/_sources/guides/network/dpdk.rst.txt new file mode 100644 index 000000000..5b1ccc653 --- /dev/null +++ b/zh_CN/_sources/guides/network/dpdk.rst.txt @@ -0,0 +1,352 @@ +.. _dpdk: + +Use DPDK to send packets between platforms +########################################## + +This guide describes how to send packets between two platforms. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Figure 1 shows how to send packets between two platforms in a simple +configuration. The example uses the :abbr:`Data Plane Development Kit (DPDK)`, +which is a set of libraries, drivers, sample applications, and tools for fast +packet processing. + +.. figure:: ./figures/pktgen_lw3fd.png + :align: center + :alt: Platform A and B + + Figure 1: Environment for l3fwd DPDK application + +This example uses the following DPDK components: + +* pktgen: Traffic generator. See `pktgen`_ documentation for details. +* l3fwd: Layer 3 forwarding example application. See + `l3fwd`_ documentation for details. + +Prerequisites +************* + +* Two platforms using |CL-ATTR| release `13330`_ or higher. +* Both images must include the :command:`kernel-native` bundle. +* Install the :command:`network-basic-dev` bundle with the command: + + .. code-block:: bash + + sudo swupd bundle-add network-basic-dev + +* Each platform must have at least one :abbr:`NIC (Network Interface Card)`. + Check the `DPDK project`_ for the list of supported `dpdk.org NICs`_. + +* Two network cables. + +Install dpdk and build l3fwd example (Platform B) +************************************************* + +#. Change to the :file:`l3fwd` example directory. + + .. code-block:: bash + + sudo cd /usr/share/dpdk/examples/l3fwd + +#. Assign :envvar:`RTE_SDK` variable to the makefiles path. + + .. code-block:: bash + + sudo export RTE_SDK=/usr/share/dpdk/ + +#. Assign :envvar:`RTE_TARGET` variable to the location of the gcc\* config + file. + + .. code-block:: bash + + sudo export RTE_TARGET=x86_64-native-linuxapp-gcc + +#. Build the `l3fwd` application and add the configuration header to + the :makevar:`CFLAGS` variable. + + .. code-block:: bash + + sudo make CFLAGS+="-include /usr/include/rte_config.h" + + +Build pktgen (Platform A) +************************* + +#. Download the `pktgen tar package`_ v3.1.2 or newer. + +#. Decompress packages and move to uncompressed source directory. + +#. Assign :envvar:`RTE_SDK` variable to the path where makefiles are located. + + .. code-block:: bash + + sudo export RTE_SDK=/usr/share/dpdk/ + +#. Assign :envvar:`RTE_TARGET` to the location of the gcc config file. + + .. code-block:: bash + + sudo export RTE_TARGET=x86_64-native-linuxapp-gcc + +#. Build the `pktgen` project and set the :makevar:`CONFIG_RTE_BUILD_SHARED_LIB` variable + to "n". + + .. code-block:: bash + + sudo make CONFIG_RTE_BUILD_SHARED_LIB=n + +Bind NICs to DPDK kernel drivers (Platforms A and B) +**************************************************** + +The `l3fwd` application uses two NICs. The DPDK includes tools for binding +NICs to DPDK modules to run DPDK applications. + +#. Load the DPDK I/O kernel module. + + .. code-block:: bash + + sudo modprobe vfio-pci + +#. Check the NIC status to determine which network cards are not + busy. When another application is using them, the status shows "Active", + and those NICs cannot be bound. + + .. code-block:: bash + + sudo dpdk-devbind --status + +#. Bind two available NICs. The general syntax for binding is: + :command:`dpdk-devbind --bind=vfio-pci `. + A working example is shown below: + + .. code-block:: bash + + sudo dpdk-devbind --bind=vfio-pci 01:00.0 + +#. Check the NIC status to verify that the NICs are bound correctly. If + successful, `drv` displays the value `igb_uio`, which confirms + that the NICs are using the DPDK modules. + + +Set hugepages (Platforms A and B) +********************************* + +|CL| supports `hugepages` for the large memory pool allocation used for +packet buffers. + +#. Set the number of hugepages. + + .. code-block:: bash + + sudo echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages + +#. Allocate pages on NUMA machines. + + .. code-block:: bash + + sudo echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages + sudo echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages + +#. Make memory available for DPDK. + + .. code-block:: bash + + sudo mkdir -p /mnt/huge $ mount -t hugetlbfs nodev /mnt/huge + + For more information, refer to the `DPDK guide`_ System Requirements + section. + + +Set up the physical environment (Platforms A and B) +*************************************************** + +Connect the NICs on Platform A to the NICs on Platform B using the network +cables as shown in figure 2. + +.. figure:: ./figures/pyshical_net.png + + Figure 2: Physical network environment + + +Run l3fwd application (Platform B) +********************************** + +The `l3fwd` application is one of the DPDK examples available when you +install the :file:`dpdk-dev` bundle. `l3fwd` forwards packets from one +NIC to another. For details, refer to the `l3fwd`_ documentation. + +#. Open the l3fwd example directory. + + .. code-block:: bash + + sudo cd /usr/share/dpdk/examples/l3fwd + +#. **This step is very important.** + + #. DPDK needs poll mode drivers to operate. + #. Poll mode drivers are shared objects in :file:`/usr/lib64`. + #. See the full list of supported NICs at `dpdk.org NICs`_. + #. You must know which kernel module each NIC is using and choose a poll + mode driver that corresponds to your NICs. + +#. NIC binding and `pktgen` configuration depends upon network use cases and + available system resources. Use the :command:`-d` flag to set the poll mode + driver. + + The following example assumes that the NICs use the `e1000` network driver + and the `e1000` poll mode driver. The :file:`librte_pmd_e1000.so` is + located in :file:`/usr/lib64` in |CL|. + + .. code-block:: bash + + sudo ./build/l3fwd -c 0x3 -n 2 -d librte_pmd_e1000.so -- -p 0x3 --config="(0,0,0),(1,0,1)" + +#. The `l3fwd` application shows port initialization details at startup. + After port 0 initialization completes, `l3fwd` shows a MAC address and + information for port 1. + + Save the MAC address for configuring the `pktgen` project. + +Run pktgen application (Platform A) +*********************************** + +`pktgen` is a network traffic generator included in the DPDK. + +#. `pktgen` configuration depends upon the network setup and the + available system resources. The following example shows a basic + configuration. + + .. code-block:: bash + + sudo ./app/app/x86_64-native-linuxapp-gcc/pktgen -c 0xf -n 4 -- -p 0xf -P -m "1.0, 2.1" + +#. Enable active colorful output (optional). + + .. code-block:: bash + + Pktgen> theme enable + +#. Use the MAC addresses shown by the `l3fwd` application during initialization. + The command to set the MAC addresses in `pktgen` has the format: + + .. code-block:: bash + + set mac + + Here is a working example: + + .. code-block:: bash + + Pktgen> set mac 0 00:1E:67:CB:E8:C9 + Pktgen> set mac 1 00:1E:67:CB:E8:C9 + +#. Send packets. + + .. code-block:: bash + + Pktgen> start 0-1 + +For more details, see the `pktgen`_ documentation. + +Appendix A: Use pass-through for virtual machines +************************************************* + +This section explains how to set up a virtual environment where virtual +machines control the NICs on the host. + +#. Create a new directory and move to it. + +#. Download or create a :file:`start_qemu.sh` script for running a kvm virtual + machine: + + .. code-block:: bash + + sudo curl -O https://cdn.download.clearlinux.org/image/start_qemu.sh + +#. Download a bare-metal image of |CL| and rename it as :file:`clear.img`. + +#. Look for an Ethernet\* device entry that contains vendor and device ID: + + .. code-block:: bash + + sudo lspci -nn | grep Ethernet + + An example output: + + .. code-block:: console + + 03:00.0 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] + + where `03:00.0` is the device entry and `8086:1521` is the `vendor:device + ID`. Record this information, because you need it to unbind the NICs from a + host. + + +#. Unbind the NICs from the host to do pass-through with virtual machines. |CL| + supports this action. The commands take the format: + + .. code-block:: bash + + echo "vendor device_ID" > /sys/bus/pci/drivers/pci-stub/new_id + echo "entry for device" > /sys/bus/pci/drivers/igb/unbind + echo "entry for device" > /sys/bus/pci/drivers/pci-stub/bind + echo "vendor device_ID" > /sys/bus/pci/drivers/pci-stub/remove_id + + Here is a working example: + + .. code-block:: bash + + sudo echo "8086 1521" > /sys/bus/pci/drivers/pci-stub/new_id + sudo echo "0000:03:00.0" > /sys/bus/pci/drivers/igb/unbind + sudo echo "0000:03:00.0" > /sys/bus/pci/drivers/pci-stub/bind + sudo echo "8086 1521" > /sys/bus/pci/drivers/pci-stub/remove_id + +#. Assign the unbound NICs to the KVM virtual machine (guest). + Modify the :file:`start_qemu.sh` script in `qemu-system-x86_64` arguments, and + add the lines with the host's NICs information in the format: + + .. code-block:: bash + + -device pci-assign,host="",id=passnic0,addr=03.0 + -device pci-assign,host="",id=passnic1,addr=04.0 + + Here is a working example: + + .. code-block:: bash + + -device pci-assign,host=03:00.0,id=passnic0,addr=03.0 \ + -device pci-assign,host=03:00.3,id=passnic1,addr=04.0 \ + +#. Add more NUMA machines to the virtual machine by adding lines to the + Makefile boot target in the format: + + .. code-block:: bash + + -numa node,mem=,cpus= + + Here is a working example for a virtual machine with 4096 memory and four + CPUs: + + .. code-block:: bash + + -numa node,mem=2048,cpus=0-1 \ + -numa node,mem=2048,cpus=2-3 \ + + .. note:: Each NUMA machine must use the same quantity of memory. + +#. Run the :file:`start_qemu.sh` script. + + +.. _13330: https://cdn.download.clearlinux.org/releases/13330/ +.. _DPDK project: http://dpdk.org +.. _dpdk.org NICs: http://dpdk.org/doc/nics +.. _pktgen tar package: http://dpdk.org/browse/apps/pktgen-dpdk/refs +.. _DPDK guide: http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html +.. _l3fwd: http://dpdk.org/doc/guides/sample_app_ug/l3_forward.html +.. _pktgen: http://pktgen-dpdk.readthedocs.io/en/latest/index.html diff --git a/zh_CN/_sources/guides/network/ipxe-install.rst.txt b/zh_CN/_sources/guides/network/ipxe-install.rst.txt new file mode 100644 index 000000000..70e6e7fa1 --- /dev/null +++ b/zh_CN/_sources/guides/network/ipxe-install.rst.txt @@ -0,0 +1,340 @@ +.. _ipxe-install: + +Install over the network with iPXE +################################## + +This guide describes how to install |CL-ATTR| using :abbr:`PXE (Pre-boot +Execution Environment)` over the network. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +PXE is an industry standard that describes client-server interaction with +network-boot software and uses the DHCP and TFTP protocols. This guide shows one +method of using the PXE environment to install |CL|. + +The PXE extension called `iPXE`_ adds support for additional protocols such as +HTTP, :abbr:`iSCSI (Internet Small Computer Systems Interface)`, :abbr:`AoE +(ATA over Ethernet\*)`, and :abbr:`FCoE (Fiber Channel over Ethernet\*)`. iPXE +enables network booting on computers with no built-in PXE support. + +To install |CL| through iPXE, you must create a PXE client. Figure 1 depicts +the flow of information between a PXE server and a PXE client. + +.. figure:: ./figures/network-boot-flow.png + :alt: PXE information flow + + Figure 1: PXE information flow. + +.. caution:: + + The |CL| image that boots through the PXE process automatically erases all + data and partitions on the PXE client system and creates 3 new partitions + to install onto. + +Prerequisites +************* + +Before booting with iPXE, make the following preparations. + +Connect the PXE server and PXE clients to a switch on a private network, as +shown in figure 2. + +.. figure:: ./figures/network-boot-setup.png + :alt: Network topology + + Figure 2: Network topology. + +Your PXE client must have a boot order where the network boot option is +prioritized before the disk boot option. + +Your PXE server must have: + +* Ethernet/LAN boot option. +* At least two network adapters. +* Connection to a public network. +* Secure boot option disabled. + +.. note:: + + You must disable the secure boot option in the BIOS because the UEFI + binaries used to boot |CL| are not signed. + + +Configuration +************* + +To set up |CL| using iPXE automatically, use the :file:`configure-ipxe.sh` +script included with :abbr:`ICIS (Ister Cloud Init Service)`. For additional +instructions on the script, refer to the guide on the `ister-cloud-init-svc`_ +GitHub\* repository. + +To set up |CL| manually, perform the steps below. + +#. Define the variables used for iPXE boot configuration. + + .. code-block:: console + + ipxe_app_name=ipxe + ipxe_port=50000 + web_root=/var/www + ipxe_root=$web_root/$ipxe_app_name + tftp_root=/srv/tftp + external_iface=eno1 + internal_iface=eno2 + pxe_subnet=192.168.1 + pxe_internal_ip=$pxe_subnet.1 + pxe_subnet_mask_ip=255.255.255.0 + pxe_subnet_bitmask=16 + +#. Log in and get root privilege. + + .. code-block:: bash + + sudo -s + +#. Add the :command:`pxe-server` bundle to your |CL| system. The bundle contains all + files needed to run a PXE server. + + .. code-block:: bash + + sudo swupd bundle-add pxe-server + +#. Download the latest network-bootable release of |CL| and extract the + files. + + .. code-block:: bash + + sudo mkdir -p $ipxe_root + sudo curl -o /tmp/clear-pxe.tar.xz \ + https://cdn.download.clearlinux.org/current/clear-$(curl \ + https://cdn.download.clearlinux.org/latest)-pxe.tar.xz + sudo tar -xJf /tmp/clear-pxe.tar.xz -C $ipxe_root + sudo ln -sf $(ls $ipxe_root | grep 'org.clearlinux.*') $ipxe_root/linux + + .. note:: + + Ensure that the initial ramdisk file is named :file:`initrd` and + the kernel file is named :file:`linux`, which is a symbolic link to the + actual kernel file. + +#. Create an iPXE boot script with the following contents. During an iPXE + boot, the iPXE boot script directs the PXE client to download the files to + boot and install |CL|. Use the names previously given to the initial + ramdisk and kernel files. + + .. code-block:: console + + sudo cat > $ipxe_root/ipxe_boot_script.ipxe << EOF + #!ipxe + kernel linux quiet init=/usr/lib/systemd/systemd-bootchart \ + initcall_debug tsc=reliable no_timer_check noreplace-smp rw \ + initrd=initrd + initrd initrd + boot + EOF + +#. The :command:`pxe-server` bundle contains a lightweight web-server known as + nginx. Create a configuration file for nginx to serve |CL| to PXE + clients with the following contents: + + .. code-block:: console + + sudo mkdir -p /etc/nginx/conf.d + sudo cat > /etc/nginx/conf.d/$ipxe_app_name.conf << EOF + server { + listen $ipxe_port; + server_name localhost; + location /$ipxe_app_name/ { + root $web_root; + autoindex on; + } + } + EOF + + sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf + + .. note:: + + Create a separate nginx configuration file to serve network-bootable + images on a non-standard port number. This action saves existing nginx + configurations. + +#. Start nginx and enable the startup on boot option. + + .. code-block:: bash + + sudo systemctl start nginx + sudo systemctl enable nginx + +#. The :command:`pxe-server` bundle contains a lightweight DNS server which + conflicts with the DNS stub listener provided in `systemd-resolved`. + Disable the DNS stub listener and temporarily stop `systemd-resolved`. + + .. code-block:: console + + sudo mkdir -p /etc/systemd + sudo cat > /etc/systemd/resolved.conf << EOF + [Resolve] + DNSStubListener=no + EOF + + sudo systemctl stop systemd-resolved + +#. Assign a static IP address to the network adapter for the private network + and restart `systemd-networkd` with the following commands: + + .. code-block:: console + + sudo mkdir -p /etc/systemd/network + sudo cat > /etc/systemd/network/70-internal-static.network << EOF + [Match] + Name=$internal_iface + [Network] + DHCP=no + Address=$pxe_internal_ip/$pxe_subnet_bitmask + EOF + + sudo systemctl restart systemd-networkd + +#. Configure :abbr:`NAT (Network Address Translation)` to route traffic from + the private network to the public network. This action makes the PXE + server act as a router. To make these changes persistent during reboots, save the + changes to the firewall with the following commands: + + .. code-block:: bash + + sudo iptables -t nat -F POSTROUTING + sudo iptables -t nat -A POSTROUTING -o $external_iface -j MASQUERADE + sudo systemctl enable iptables-save.service + sudo systemctl restart iptables-save.service + sudo systemctl enable iptables-restore.service + sudo systemctl restart iptables-restore.service + + .. note:: + + The firewall masks packets to make them appear as coming from the PXE + server and hides PXE clients from the public network. + +#. Configure the kernel to forward network packets to different + interfaces. Otherwise, NAT will not work. + + .. code-block:: bash + + sudo mkdir -p /etc/sysctl.d + sudo echo net.ipv4.ip_forward=1 > /etc/sysctl.d/80-nat-forwarding.conf + sudo echo 1 > /proc/sys/net/ipv4/ip_forward + +#. The :command:`pxe-server` bundle contains iPXE firmware images that allow computers + without an iPXE implementation to perform an iPXE boot. Create a TFTP + hosting directory and populate the directory with the iPXE firmware images + with the following commands: + + .. code-block:: bash + + sudo mkdir -p $tftp_root + sudo ln -sf /usr/share/ipxe/undionly.kpxe $tftp_root/undionly.kpxe + +#. The :command:`pxe-server` bundle contains a lightweight TFTP, DNS, and DHCP + server known as `dnsmasq`. Create a configuration file for `dnsmasq` + to listen on a dedicated IP address for those functions. PXE clients on + the private network will use this IP address. + + .. code-block:: console + + sudo cat > /etc/dnsmasq.conf << EOF + listen-address=$pxe_internal_ip + EOF + +#. Add the options to serve iPXE firmware images to PXE clients over TFTP to + the `dnsmasq` configuration file. + + .. code-block:: console + + sudo cat >> /etc/dnsmasq.conf << EOF + enable-tftp + tftp-root=$tftp_root + EOF + +#. Add the options to host a DHCP server for PXE clients to the :file:`dnsmasq` + configuration file. + + .. code-block:: console + + sudo cat >> /etc/dnsmasq.conf << EOF + dhcp-leasefile=/var/db/dnsmasq.leases + + dhcp-authoritative + dhcp-option=option:router,$pxe_internal_ip + dhcp-option=option:dns-server,$pxe_internal_ip + + dhcp-match=set:pxeclient,60,PXEClient* + dhcp-range=tag:pxeclient,$pxe_subnet.2,$pxe_subnet.253,$pxe_subnet_mask_ip,15m + dhcp-range=tag:!pxeclient,$pxe_subnet.2,$pxe_subnet.253,$pxe_subnet_mask_ip,6h + + dhcp-match=set:ipxeboot,175 + dhcp-boot=tag:ipxeboot,http://$pxe_internal_ip:$ipxe_port/$ipxe_app_name/ipxe_boot_script.ipxe + dhcp-boot=tag:!ipxeboot,undionly.kpxe,$pxe_internal_ip + EOF + + + The configuration provides the following important functions: + + * Directs PXE clients without an iPXE implementation to the TFTP server + to acquire architecture-specific iPXE firmware images that allow them + to perform an iPXE boot. + * Activates only on the network adapter that has an IP address on the + defined subnet. + * Directs PXE clients to the DNS server. + * Directs PXE clients to the PXE server for routing via NAT. + * Divides the private network into two pools of IP addresses. One pool + is for network boot and one pool is used after boot. Each pool has + their own lease times. + +#. Create a file for `dnsmasq` to record the IP addresses it provides + to PXE clients. + + .. code-block:: bash + + sudo mkdir -p /var/db + sudo touch /var/db/dnsmasq.leases + +#. Start `dnsmasq` and enable startup on boot. + + .. code-block:: bash + + sudo systemctl enable dnsmasq + sudo systemctl restart dnsmasq + +#. Start `systemd-resolved`. + + .. code-block:: bash + + sudo systemctl start systemd-resolved + + .. note:: + + `systemd-resolved` dynamically updates the list of DNS servers for the + private network if you use the `dnsmasq` DNS server. The setup creates a + pass-through DNS server that relies on the DNS servers listed in + :file:`/etc/resolv.conf`. + +#. Power on the PXE client and watch the client boot and install |CL|. + + After booting, |CL| automatically partitions the hard drive, + installs itself, updates to the latest version, and reboots. + + +**Congratulations!** You have successfully installed and configured a PXE +server that enables PXE clients to boot and install |CL| over the network. + + +.. _iPXE: + http://ipxe.org/ + +.. _ister-cloud-init-svc: + https://github.com/clearlinux/ister-cloud-init-svc diff --git a/zh_CN/_sources/guides/network/network-bonding.rst.txt b/zh_CN/_sources/guides/network/network-bonding.rst.txt new file mode 100644 index 000000000..41ba15b9f --- /dev/null +++ b/zh_CN/_sources/guides/network/network-bonding.rst.txt @@ -0,0 +1,130 @@ +.. _network-bonding: + +Combine multiple interfaces with network bonding +################################################ + +This guide describes how to configure systemd to use the :command:`bonding` +driver. + +Network bonding combines multiple network interfaces into a single logical +interface to provide redundancy and bandwidth aggregation. + +|CL-ATTR| includes the Linux `Bonding driver`_ and `Team driver`_ . + +The example demonstrates how to: + +* Bond all four ports of a quad-port NIC in 802.3ad mode. + +* Enable jumbo frames to optimize large data transfers on the local network. + +Your NICs and network switch must support 802.3ad mode and jumbo frames. The +example explains how to configure your NICs for both features. Your switch may +require additional configuration. See your switch documentation for details. + +.. note:: + + You must run all commands in this guide as root. + +#. Log in and get root privileges. + + .. code-block:: console + + sudo -s + +#. Create the :file:`/etc/systemd/network` directory. + + .. code-block:: bash + + mkdir -p /etc/systemd/network + + The :file:`/etc/systemd/network` directory contains configuration files and + network settings for the virtual device and its underlying physical + interfaces. + +#. Configure systemd to create a virtual network device called `bond1`. Use a + text editor to create a file named :file:`30-bond1.netdev`. + + .. code-block:: console + + [NetDev] + Name=bond1 + Kind=bond + + [Bond] + Mode=802.3ad + TransmitHashPolicy=layer3+4 + MIIMonitorSec=1s + LACPTransmitRate=fast + + Refer to the `systemd.netdev`_ manpage for :file:`30-bond1.netdev` file + syntax. This example is based on Example 9 on the manpage. Modify the + example for your configuration. + +#. Configure the slave interfaces. Create a text file named + :file:`30-bond1-enp1s0.network`. Assign the slave interfaces to the virtual + `bond1` device and use the syntax shown in `systemd.network`_. + + .. code-block:: console + + [Match] + Name=enp1s0f* + + [Network] + Bond=bond1 + + [Link] + MTUBytes=9000 + + The example bonds all four ports of a quad-port NIC as a slave of `bond1`. + The example uses a wildcard match because the NIC names are in the range + `enp1s0f0-enp1s0f3`. If your NIC names are not wildcard-compatible, create + a separate :file:`.network` file for each NIC. + + For best results, do not assign addresses or DHCP support to the individual + NICs. + + The `MTUBytes` setting enables jumbo frames of up to 9000 bytes. Your + switch may require additional configuration to support this setting. + +#. Configure the bonded interface in a file named :file:`30-bond1.network`. + + .. code-block:: console + + [Match] + Name=bond1 + + [Network] + BindCarrier=enp1s0f0 enp1s0f1 enp1s0f2 enp1s0f3 + Address=192.168.1.201/24 + + [Link] + MTUBytes=9000 + + `bond1` is a virtual interface with no physical link status. + + `BindCarrier` indicates that the `bond1` link status is determined by the + status of the listed slave devices. + + `Address` contains an IP address that you assign to the logical interface. + DHCP bonded interfaces are complex and outside the scope of this example. + + `MTUBytes` must be set to 9000 on all slave interfaces and on the bonded + interface for successful jumbo frames operation. If `MTUBytes` is not the + same on all interfaces, then the lowest value is used. + +#. Apply the new network configuration with the command: + + .. code-block:: bash + + systemctl restart systemd-networkd + + The `MTUBytes` settings do not take effect until you reboot or manually + apply the settings with a utility such as ifconfig. + +.. _Bonding driver: https://www.kernel.org/doc/Documentation/networking/bonding.txt + +.. _Team driver: https://www.kernel.org/doc/Documentation/networking/team.txt + +.. _systemd.netdev: https://www.freedesktop.org/software/systemd/man/systemd.netdev.html + +.. _systemd.network: https://www.freedesktop.org/software/systemd/man/systemd.network.html diff --git a/zh_CN/_sources/guides/network/openssh-server.rst.txt b/zh_CN/_sources/guides/network/openssh-server.rst.txt new file mode 100644 index 000000000..a21032bab --- /dev/null +++ b/zh_CN/_sources/guides/network/openssh-server.rst.txt @@ -0,0 +1,178 @@ +.. _openssh-server: + +Enable and configure SSH service +################################ + +This guide describes how to set up SSH service. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +The :command:`openssh-server` bundle provides the OpenSSH package that +enables an SSH service in |CL-ATTR|. Remote users require an SSH service to be +able to use an encrypted login shell. + +|CL| enables the `sshd.socket` unit, which listens on port 22 by default +and starts the OpenSSH service as required. The first time OpenSSH starts, it +generates the server SSH keys needed for the service. + +Prerequisites +************* + +Ensure the :command:`openssh-server` bundle is installed. + +To list all bundles on your host, enter: + +.. code-block:: bash + + sudo swupd bundle-list + +To add the :command:`openssh-server` bundle, enter: + +.. code-block:: bash + + sudo swupd bundle-add openssh-server + +Change default port +******************* + +Perform the following steps to change the default listening port for the +OpenSSH service. + +#. Open the :file:`sshd.socket` file: + + .. code-block:: bash + + sudo systemctl edit sshd.socket + +#. Add the `[Socket]` section and `ListenStream` option to the sshd.socket + file as shown below. The first `ListenStream` entry removes the |CL| + default listen port value. The second `ListenStream` entry sets the new + default listen port value. In this example, we set the new default port + to 4200: + + .. code-block:: console + + [Socket] + ListenStream= + ListenStream=4200 + + + Make sure to include a new line after the last line of text in the :file:`sshd.socket` file. + +#. Verify your changes: + + .. code-block:: bash + + cat /etc/systemd/system/sshd.socket.d/override.conf + + The following output is displayed: + + .. code-block:: console + + [Socket] + ListenStream= + ListenStream=4200 + +#. Reload the systemd daemon configurations: + + .. code-block:: bash + + sudo systemctl daemon-reload + +#. Restart the sshd.socket unit: + + .. code-block:: bash + + sudo systemctl restart sshd.socket + +#. Confirm the sshd.socket unit is listening on your new port: + + .. code-block:: bash + + sudo systemctl status sshd.socket + + .. note:: + + Output should show :guilabel:`Active:` as `active(listening)`. + +Enable SFTP +*********** + +|CL| *disables* the :abbr:`SFTP (SSH File Transfer Protocol)` subsystem by +default due to security considerations. To enable the SFTP subsystem, you must +configure the :abbr:`SSHD (SSH Daemon)` service file. + +#. Create a systemd drop-in directory for the SSHD service: + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/system/sshd@.service.d + +#. Create the following file: + :file:`/etc/systemd/system/sshd@.service.d/sftp.conf` + +#. Add the OPTIONS environment variable to the :file:`sftp.conf` file. + + .. code-block:: console + + [Service] + Environment="OPTIONS=-o Subsystem=\"sftp /usr/libexec/sftp-server\"" + +#. Reload systemd configuration: + + .. code-block:: bash + + sudo systemctl daemon-reload + +Congratulations! The SFTP subsystem is enabled. + +Enable root login +***************** + +To enable root login via SSH, perform the following steps: + +#. Create an *ssh* directory in :file:`/etc`, if it does not already exist. + + .. code-block:: bash + + mkdir /etc/ssh + +#. Create the following file, if it does not already exist: + :file:`/etc/ssh/sshd_config` + +#. Set the configuration variable in :file:`/etc/ssh/sshd_config`: + + .. code-block:: console + + PermitRootLogin yes + +Enable X11-forwarding +********************* + +X11 forwarding allows you to securely run graphical applications (that is, X +clients) over the SSH conection. This enables remote GUI apps without the need +for full VNC or remote desktop setup. To enable X11-forwarding via SSH, +perform the following steps: + +#. Create an *ssh* directory in :file:`/etc`, if it does not already exist. + + .. code-block:: bash + + mkdir /etc/ssh + +#. Create the following file, if it does not already exist: + :file:`/etc/ssh/sshd_config` + +#. Set the following configuration variables. + + .. code-block:: bash + + AllowTcpForwarding yes + X11UseLocalhost yes + X11DisplayOffset 10 + X11Forwarding yes diff --git a/zh_CN/_sources/guides/network/vnc.rst.txt b/zh_CN/_sources/guides/network/vnc.rst.txt new file mode 100644 index 000000000..a734a7825 --- /dev/null +++ b/zh_CN/_sources/guides/network/vnc.rst.txt @@ -0,0 +1,791 @@ +.. _vnc: + +Remote-desktop to a host using VNC +################################## + +This guide describes how to use :abbr:`VNC (Virtual Network Computing)` to +connect to a remote |CL-ATTR| host. + +VNC is a client-server GUI-based tool that allows you to connect via +remote-desktop to your |CL| host. + +.. contents:: + :local: + :depth: 1 + +Install the VNC server and misc. components on your host +******************************************************** + +To configure VNC to work on your |CL| host, install these bundles: + +* :command:`desktop-autostart`: Installs :abbr:`GDM (Gnome Desktop Manager)`, sets + it to start automatically on boot, and installs TigerVNC Viewer. +* :command:`vnc-server`: Installs the TigerVNC server. + +Follow these steps: + +#. Log into your |CL| host and get root privileges. + + .. code-block:: bash + + sudo -s + +#. Install the |CL| bundles. + + .. code-block:: bash + + swupd bundle-add desktop-autostart vnc-server + +#. Reboot your |CL| host. + +Configure a VNC-server-start method on your host +************************************************ + +There are three methods you can use to configure and start the VNC server on +your |CL| host: + +.. list-table:: Table 1: VNC-server-start Configuration Methods + :widths: 10,20,20,20 + :header-rows: 1 + + * - Attribute + - Method 1: Manually start a VNC session + - Method 2: Automatically start a VNC session via a systemd service script + - Method 3: Create multi-user logins with authentication through GDM + * - Description + - This is the traditional method where you SSH into the |CL| host, manually + start a VNC session to get a display ID, and connect to it by + supplying the display ID. + - The system administrator sets up a systemd service script for you with + a pre-assigned display ID. You make a VNC connection and supply + your pre-assigned display ID. + - The system adminstrator configures GDM to accept connection requests. + When you make a VNC connection to the |CL| host, you see + the GDM login screen and authenticate as if you are local. + * - Who configures VNC settings? + - You + - System adminstrator + - System adminstrator + * - Who starts VNC session? + - You + - Set to start automatically on boot by system administrator + - Set to start automatically on boot by system administrator + * - Who ends VNC sesssion? + - You + - You + - System administrator can disable VNC service altogether + * - Requires VNC password to authenticate? + - Yes + - Yes + - No. Use |CL| account username and password through GDM + + +Although all three methods can coexist on the same |CL| host, we recommend +you pick a method that suits your needs. + +For simplicity, the rest of this guide refers to these methods as +Method 1, Method 2, and Method 3. + +Method 1: Manually start a VNC session +====================================== + +You (and each user) must perform these steps to initialize your VNC settings. + +#. Log in. +#. Open a terminal emulator. +#. Start VNC with the :command:`vncserver` command. Since this is your + first time starting VNC, it adds default configuration files and asks you + to set a VNC password. + + .. code-block:: bash + + vncserver + + Example output: + + .. code-block:: console + + You will require a password to access your desktops. + + Password: + Verify: + Would you like to enter a view-only password (y/n)? n + xauth: file /home/vnc-user-a/.Xauthority does not exist + + New 'clr-linux:2 (vnc-user-a)' desktop is clr-linux:2 + + Creating default startup script /home/vnc-user-a/.vnc/xstartup + Creating default config /home/vnc-user-a/.vnc/config + Starting applications specified in /home/vnc-user-a/.vnc/xstartup + Log file is /home/vnc-user-a/.vnc/clr-linux:2.log + + Upon completion, you can find the default configuration files and the + password file hidden in the :file:`.vnc` directory in your home directory. + + A VNC session starts and shows a unique display ID, which is the + number following the hostname and the colon ":". In the above example, the + display ID is 2. In a later step, you will supply the display ID to + your VNC viewer app for connection. + +#. Kill the active VNC session for the time being with the + :command:`vncserver -kill :[display ID]` command. Substitute [display ID] + with your active VNC session display ID. For example: + + .. code-block:: bash + + vncserver -kill :2 + + .. note:: + + If you do not recall the active session display ID, use the + :command:`vncserver -list` command to find it. + +#. Optional configurations: + + * To customize settings such as screen size, security type, etc., + modify the :file:`$HOME/.vnc/config` file. + * To customize the applications to run at startup, modify the + :file:`$HOME/.vnc/xstartup` file. + +Method 2: Automatically start a VNC session via a systemd service script +======================================================================== + +To configure VNC for this method, you must have root privileges. You will +set up a systemd service file for all intended VNC users with their own +preassigned unique display ID. + +#. Log in and get root privileges. + + .. code-block:: bash + + sudo -s + +#. Make sure the user accounts already exist. Use the following command to + list all users. + + + .. code-block:: bash + + cut -d: -f1 /etc/passwd + +#. Create the path :file:`/etc/systemd/system`. + + .. code-block:: bash + + mkdir -p /etc/systemd/system + +#. Create a systemd service script file :file:`vncserver@:[X].service`, + where [X] is the display ID, for each user in :file:`/etc/systemd/system` + Each user must be assigned a unique display ID. Be sure the correct + username is entered in the :guilabel:`User` field. The example below shows user + vnc-user-b who is assigned the display ID 5. + + .. code-block:: console + + # cat > /etc/systemd/system/vncserver@:5.service << EOF + + [Unit] + Description=VNC Remote Desktop Service for "vnc-user-b" with display ID "5" + After=syslog.target network.target + + [Service] + Type=simple + User=vnc-user-b + PAMName=login + PIDFile=/home/%u/.vnc/%H%i.pid + ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' + ExecStart=/usr/bin/vncserver %i -geometry 2000x1200 -alwaysshared -fg + ExecStop=/usr/bin/vncserver -kill %i + + [Install] + WantedBy=multi-user.target + + EOF + +#. Have each user log into their account and set a VNC password with + the :command:`vncpasswd` command before proceeding to the next step. + +#. Start the VNC service script and set it to start automatically on + boot for each user. Replace the [X] with the display ID. + + .. code-block:: bash + + systemctl daemon-reload + systemctl start vncserver@:[X].service + systemctl enable vncserver@:[X].service + +#. After starting the services, verify they are running. + + .. code-block:: bash + + systemctl | grep vnc + + The example below shows 2 VNC sessions that were successfully started for + users vnc-user-b with display ID 5 and vnc-user-c with display ID 6. + + .. code-block:: console + + # systemctl | grep vnc + + vncserver@:5.services loaded active running VNC Remote Desktop Service for "vnc-user-b" with display ID "5" + vncserver@:6.services loaded active running VNC Remote Desktop Service for "vnc-user-c" with display ID "6" + system-vncserver.slice loaded active active system-vncserver.slice + +Method 3: Multi-user logins with authentication through GDM +=========================================================== + +For this method, VNC is configured as a systemd service that listens on port +5900 and GDM is configured to accept access requests from VNC. When you +make a VNC connection to your |CL| host, you are presented with the GDM login +screen and you authenticate as if you are local. You must have root privileges +to perform this configuration. + +#. Log in and get root privileges. + + .. code-block:: bash + + sudo -s + +#. Create the path :file:`/etc/systemd/system`. + + .. code-block:: bash + + mkdir -p /etc/systemd/system + +#. Create a systemd socket file :file:`xvnc.socket` and add the following: + + .. code-block:: console + + # cat > /etc/systemd/system/xvnc.socket << EOF + + [Unit] + Description=XVNC Server on port 5900 + + [Socket] + ListenStream=5900 + Accept=yes + + [Install] + WantedBy=sockets.target + + EOF + +#. Create a systemd service file :file:`xvnc@.service` and add the following: + + .. code-block:: console + + # cat > /etc/systemd/system/xvnc@.service << EOF + + [Unit] + Description=Daemon for each XVNC connection + + [Service] + ExecStart=-/usr/bin/Xvnc -inetd -query localhost -geometry 2000x1200 -once -SecurityTypes=None + User=nobody + StandardInput=socket + StandardError=syslog + + EOF + +#. Create the path :file:`/etc/gdm`. + + .. code-block:: bash + + mkdir -p /etc/gdm + + +#. Create a GDM :file:`custom.conf` file and add the following: + + .. code-block:: console + + # cat > /etc/gdm/custom.conf << EOF + + [xdmcp] + Enable=true + Port=177 + + EOF + +#. Start the VNC socket script and set it to start automatically on boot. + + .. code-block:: bash + + systemctl daemon-reload + systemctl start xvnc.socket + systemctl enable xvnc.socket + +#. After starting the socket, verify it is running. + + .. code-block:: bash + + systemctl | grep vnc + + The example below shows the xvnc.socket is running. + + .. code-block:: console + + # systemctl | grep vnc + + xvnc.socket loaded active listening XVNC Server on port 5900 + system-xvnc.slice loaded active active system-xvnc.slice + +See the vncserver Man page for additional information. + +Install a VNC viewer app and an SSH client on your client system +**************************************************************** + +You need a VNC viewer app on your client system to connect to your |CL| host. +An SSH client is only needed if you chose to use Method 1 or you plan to +encrypt your VNC traffic, which is discussed later in this guide. + +Perform the steps below to add these apps to your client system. + +Install a VNC viewer app +======================== + +On |CL|: + +.. code-block:: bash + + swupd bundle-add desktop-autostart + +On Ubuntu\*, Mint\*: + +.. code-block:: bash + + apt-get install xtightvncviewer + +On Fedora\*: + +.. code-block:: bash + + dnf install tigervnc + +On Windows\*: + +* Install `RealVNC for Windows`_ + +On macOS\*: + +* Install `RealVNC for macOS`_ + +Install an SSH client +===================== + +* On most Linux distros (|CL|, Ubuntu, Mint, Fedora, etc.) and macOS, + SSH is built-in so you don't need to install it. +* On Windows, you can install `Putty`_. + +Establish a VNC connection to your host +*************************************** + +Depending on the VNC-server-configuration method chosen, use the appropriate VNC +connection: + +* If you chose Method 1, you must take a few extra steps by using SSH to connect + to your |CL| host and then manually launching VNC. + +* If you chose Method 2, get your preassigned VNC display ID from your system + administrator first and then proceed to the :ref:`connect-to-vnc-session` + section below. + +* If you chose Method 3, proceed to the :ref:`connect-to-vnc-session` below. + + +SSH into your host and launch VNC +================================= + +#. SSH into your |CL| host + + #. On Linux distros and macOS: + + .. code-block:: bash + + ssh [username]@[clear-linux-host-ip-address] + + #. On Windows: + + #. Launch Putty. + #. Under the :guilabel:`Category` section, select :guilabel:`Session`. + See Figure 1. + #. Enter the IP address of your |CL| host in the + :guilabel:`Host Name (or IP address)` field. + #. Set the :guilabel:`Connection type` option to :guilabel:`SSH`. + #. Click the :guilabel:`Open` button. + + .. figure:: figures/vnc/vnc-1.png + :scale: 90 % + :alt: Putty - configure SSH session settings + + Figure 1: Putty - configure SSH session settings + +#. Log in with your |CL| username and password. Do not use your VNC password. +#. Start a VNC session. + + .. code-block:: bash + + vncserver + + Example output: + + .. code-block:: console + + New 'clr-linux:3 (vnc-user-c)' desktop is clr-linux:3 + + Starting applications specified in /home/vnc-user-c/.vnc/xstartup + Log file is /home/vnc-user-c/.vnc/clr-linux:3.log + +#. Take note of the generated display ID because you will input it into + the VNC viewer app to establish the connection. The above example shows + the display ID is 3. + + .. note:: + + VNC automatically picks a unique display ID unless you specify one. + To specify a display ID, enter a unique number that is not already + in use after the colon. For example: + + .. code-block:: bash + + vncserver :8 + +#. You can now end the SSH connection by logging out. This does + not terminate your active VNC session. + +.. _connect-to-vnc-session: + +Connect to your VNC session +=========================== + +For Method 1 and Method 2, you must connect to a specific active session +or display ID using one of two options: + +* Use a fully-qualified VNC port number, which consists of the default VNC + server port (5900) plus the display ID +* Use the display ID + +For example, if the display ID is 3, it can be specified as 5903 or just +as 3. For Method 3, VNC does not expect a display ID. Use 5900. For simplicity, +the instructions below use the fully-qualified VNC port number. + +**On Linux distros:** + +#. Open a terminal emulator and enter: + + .. code-block:: bash + + vncviewer [clear-linux-host-ip-address]:[fully-qualified VNC port number] + +#. Enter your credentials. + + * For Method 1 and Method 2, enter your VNC password. No username is + required. + * For Method 3, enter your |CL| account username and password through + GDM. + + .. note:: + + With Method 3, you cannot remotely log into your |CL| host through + VNC if you are logged in locally and vice versa. + +**On Windows and macOS using RealVNC app:** + +#. Start the RealVNC viewer app. See Figure 2. +#. Enter the IP address of the |CL| host and the fully-qualified + VNC port number. + + The following screenshot shows connecting to |CL| host + 192.168.25.54 with a fully-qualified VNC port number 5902. + + .. figure:: figures/vnc/vnc-2.png + :scale: 90 % + :alt: RealVNC Viewer + + Figure 2: RealVNC Viewer + +#. Press the :kbd:`Enter` key. + +#. Enter your credentials. + + * For Method 1 and Method 2, enter your VNC password. No username is + required. + * For Method 3, enter your |CL| account username and password through + GDM. + + .. note:: + + With Method 3, you cannot remotely log into your |CL| host through + VNC if you are logged in locally and vice versa. + +Optional: Configure RealVNC Image Quality +----------------------------------------- + +To increase the RealVNC viewer image quality, manually change the :guilabel:`ColorLevel` +value. Follow these steps: + +#. Right-click a connection node and select :guilabel:`Properties...`. + See Figure 3. + + .. figure:: figures/vnc/vnc-3.png + :scale: 90 % + :alt: RealVNC Viewer - change connection node properties + + Figure 3: RealVNC Viewer - change connection node properties + +#. Select the :guilabel:`Expert` tab. See Figure 4. + +#. Select the :guilabel:`ColorLevel` setting and change it to your + preferred setting. + + .. figure:: figures/vnc/vnc-4.png + :scale: 90 % + :alt: RealVNC Viewer - change ColorLevel + + Figure 4: RealVNC Viewer - change :guilabel:`ColorLevel` + +Terminate a VNC connection to your host +*************************************** + +For Method 1 and Method 2, once started, a VNC session remains active +on your |CL| host even if you close your VNC viewer app. If you want to +truly terminate an active VNC session, follow these steps: + +#. SSH into your |CL| host. +#. Open a terminal emulator. +#. Find the active VNC session display ID with the command + :command:`vncserver -list`. + + .. code-block:: bash + + vncserver -list + +#. Terminate it with the :command:`vncserver -kill` command followed by a + colon and the display ID. + + .. code-block:: bash + + vncserver -kill :[display ID] + +#. For Method 3, only the system administrator can stop and disable the + VNC service by using these commands: + + .. code-block:: bash + + systemctl stop xvnc.socket + systemctl disable xnvc.socket + + +Encrypt VNC traffic through an SSH tunnel +***************************************** + +By default, VNC traffic is not encrypted. Figure 6 shows an example warning +from RealVNC Viewer. + +.. figure:: figures/vnc/vnc-6.png + :scale: 90 % + :alt: RealVNC Viewer - Connection not encrypted warning + + Figure 6: RealVNC Viewer - Connection not encrypted warning + +To add security, VNC traffic can be routed through an SSH tunnel. This is +accomplished by following these steps: + +#. Configure the VNC server to only accept connection from localhost by + adding the :command:`-localhost` option. +#. Set up an SSH tunnel between your client system and your |CL| host. + Your client system will forward traffic from the localhost (the client) + destined for a specified fully-qualified VNC port number (on the client) + to your |CL| host with the same port number. +#. The VNC viewer app on your client system will now connect to localhost, + instead of the IP address of your |CL| host. + +Configure VNC to only accept connection from localhost +====================================================== + +For Method 1: + +#. Edit the :file:`config` file located in :file:`$HOME/.vnc` and uncomment + the `# localhost` line. It should look like this: + + .. code-block:: console + + ## Supported server options to pass to vncserver upon invocation can be listed + ## in this file. See the following manpages for more: vncserver(1) + Xvnc(1). + ## Several common ones are shown below. Uncomment and modify to your liking. + ## + # securitytypes=vncauth,tlsvnc + # desktop=sandbox + # geometry=2000x1200 + localhost + # alwaysshared + +#. If an active session exists, kill it, and then restart it. + +For Method 2: + +#. Edit the systemd service script :file:`vncserver@:[X].service` located in + :file:`/etc/systemd/system` and add :command:`-localhost` to the `ExecStart` + line. The example below uses vncserver@:5.service: + + .. code-block:: console + + [Unit] + Description=VNC Remote Desktop Service for "vnc-user-b" with display ID "5" + After=syslog.target network.target + + [Service] + Type=simple + User=vnc-user-b + PAMName=login + PIDFile=/home/%u/.vnc/%H%i.pid + ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' + ExecStart=/usr/bin/vncserver %i -geometry 2000x1200 -localhost -alwaysshared -fg + ExecStop=/usr/bin/vncserver -kill %i + + [Install] + WantedBy=multi-user.target + +#. Restart the service script: + + .. code-block:: bash + + systemctl daemon-load + systemctl restart vncserver@:5.service + +For Method 3: + +#. No change is needed to the :file:`xvnc@service` script. + + After you have restarted your VNC session, you can verify that it only + accepts connections from localhost by using the :command:`netstat` + command like this: + + .. code-block:: bash + + netstat -plant + + .. note:: + + Add the |CL| :command:`network-basic` bundle to get the :command:`netstat` + command. + +Figure 7 shows two VNC sessions (5901 and 5905) accepting connections from +any host as specified by the `0.0.0.0`'s. This is before the +:command:`-localhost` option was used. + +.. figure:: figures/vnc/vnc-7.png + :scale: 100 % + :alt: VNC session accepting connection from any host + + Figure 7: VNC sessions (5901 and 5905) accepting connections from any host + +Figure 8 shows two VNC sessions (5901 and 5905) only accepting connections from +localhost as specified by `127.0.0.1`'s. This is after the +:command:`-localhost` option was used. + +.. figure:: figures/vnc/vnc-8.png + :scale: 100 % + :alt: VNC session only accepting connection from localhost + + Figure 8: VNC sessions (5901 and 5905) only accepting connections from localhost + +Set up an SSH tunnel from your client system to your |CL| host +============================================================== + +**On Linux distros and macOS:** + +#. Open terminal emulator and enter: + + .. code-block:: bash + + ssh -L [client port number]:localhost:[fully-qualified VNC port number] \ + -N -f -l [username] [clear-linux-host-ip-address] + +#. Enter your |CL| account password (not your VNC password). + + .. note:: + + * `-L` specifies that [client port number] on the localhost (on the + client side) is forwarded to [fully-qualified VNC port number] + (on the server side). + * Replace `[client port number]` with an available client port number + (for example: 1234). For simplicity, you can make the + `[client port number]` the same as the `[fully-qualified VNC port number]`. + * Replace `[fully-qualified VNC port number]` with 5900 (default VNC + port) plus the display ID. For example, if the display ID is 2, + the fully-qualified VNC port number is is 5902. + * `-N` tells SSH to only forward ports and not execute a remote + command. + * `-f` tells SSH to go into the background before command execution. + * `-l` specifies the username to log in as. + +**On Windows:** + +#. Launch Putty. +#. Specify the |CL| VNC host to connect to. + + #. Under the :guilabel:`Category` section, select :guilabel:`Session`. + See Figure 1. + #. Enter the IP address of your |CL| host in the + :guilabel:`Host Name (or IP address)` field. + #. Set the :guilabel:`Connection type` option to :guilabel:`SSH`. + +#. Configure the SSH tunnel. See Figure 9 for an example. + + #. Under the :guilabel:`Category` section, go to + :guilabel:`Connection` > :guilabel:`SSH` > :guilabel:`Tunnels`. + + #. In the :guilabel:`Source port` field, enter an available client + port number (for example: 1234). For simplicity, you can make the + `Source port` the same as the fully-qualified VNC port number. + + #. In the :guilabel:`Destination` field, enter + `localhost:` plus the fully-qualified VNC port number. + + #. Click the :guilabel:`Add` button. + + .. figure:: figures/vnc/vnc-9.png + :scale: 100 % + :alt: Putty - configure SSH tunnel + + Figure 9: Putty - configure SSH tunnel + +#. Click the :guilabel:`Open` button. +#. Enter your |CL| account password (not your VNC password). + +Connect to a VNC session through an SSH tunnel +============================================== + +After you have set up an SSH tunnel, follow these instructions to connect to +your VNC session. + +**On Linux distros:** + +#. Open terminal emulator and enter: + + .. code-block:: bash + + vncviewer localhost:[client port number] + +**On Windows and macOS using `RealVNC`:** + +#. Start the RealVNC viewer app. +#. Enter `localhost` and the fully-qualified VNC port number. See Figure 10 + for an example. + + .. figure:: figures/vnc/vnc-10.png + :scale: 100 % + :alt: RealVNC viewer app connecting to localhost:1234 + + Figure 10: RealVNC viewer app connecting to `localhost:1234` + + .. note:: + + RealVNC will still warn that the connection is not encrypted even + though its traffic is going through the SSH tunnel. You can ignore + this warning. + +.. _RealVNC for Windows: https://www.realvnc.com/en/connect/download/viewer/windows/ +.. _RealVNC for macOS: https://www.realvnc.com/en/connect/download/viewer/macos/ +.. _Putty: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html diff --git a/zh_CN/_sources/guides/stacks/dars.rst.txt b/zh_CN/_sources/guides/stacks/dars.rst.txt new file mode 100644 index 000000000..396dbefe5 --- /dev/null +++ b/zh_CN/_sources/guides/stacks/dars.rst.txt @@ -0,0 +1,133 @@ +.. _dars: + +Data Analytics Reference Stack +############################## + +This guide explains how to use the :abbr:`DARS (Data Analytics Reference Stack)`, +and to optionally build your own DARS container image. + +Any system that supports Docker\* containers can be used with DARS. This steps +in this guide use |CL-ATTR| as the host system. + +.. contents:: + :local: + :depth: 1 + +The Data Analytics Reference Stack release +****************************************** + +The Data Analytics Reference Stack (DARS) provides developers and enterprises a straightforward, highly optimized software stack for storing and processing large +amounts of data. More detail is available on the +`DARS architecture and performance benchmarks`_. + +The Data Analytics Reference Stack provides two pre-built Docker images, +available on `Docker Hub`_: + +* A |CL|-derived `DARS with OpenBlas`_ stack optimized for `OpenBLAS`_ +* A |CL|-derived `DARS with Intel® MKL`_ stack optimized for `MKL`_ + +We recommend you view the latest component versions for each image in the +:file:`README` found in the `Data Analytics Reference Stack`_ GitHub\* +repository. Because |CL| is a rolling distribution, the package version numbers +in the |CL|-based containers may not be the latest released by |CL|. + +.. note:: + + The Data Analytics Reference Stack is a collective work, and each piece + of software within the work has its own license. Please see the + `DARS Terms of Use`_ for more details about licensing and usage of the Data + Analytics Reference Stack. + +Using the Docker images +*********************** + +#. To immediately start using the latest stable DARS images, pull an image + directly from `Docker Hub`_. This example uses the + `DARS with Intel® MKL`_ Docker image. + +#. Once you have downloaded the image, you can run it with + + .. code-block:: bash + + docker run -it --ulimit nofile=1000000:1000000 --name mkl + + This will launch the image and drop you into a bash shell inside the + container. You will see output similar to the following: + + .. code-block:: console + + root@fd5155b89857 /root # spark-shell + spark-shell + Config directory: /usr/share/defaults/spark/ + Welcome to + ____ __ + / __/__ ___ _____/ /__ + _\ \/ _ \/ _ `/ __/ '_/ + /___/ .__/\_,_/_/ /_/\_\ version 2.4.0 + /_/ + + Using Scala version 2.12.7 (OpenJDK 64-Bit Server VM, Java 1.8.0-internal) + Type in expressions to have them evaluated. + Type :help for more information. + + scala> + + The :command:`--ulimit nofile` parameter is currently required in order to + increase the number of open files opened at certain point by the spark + engine. + +Building DARS images +******************** + +If you choose to build your own DARS container images, you can customize +them as needed. Use the provided Dockerfile as a baseline. + +To construct images with |CL|, start with a |CL| development platform that +has the :command:`containers-basic-dev` bundle installed. Learn more about +bundles and installing them by using :ref:`swupd-guide`. + +#. Clone the `Data Analytics Reference Stack`_ GitHub\* repository. + + .. code-block:: bash + + git clone https://github.com/clearlinux/dockerfiles/tree/master/stacks/dars -b master + +#. Inside the DARS directory, run :command:`make` to build OpenBLAS and MKL images. + + .. code-block:: bash + + make + + Run :command:`make baseline` to build the baseline CentOS image. Depending on + the system, it may take a while to finish building. + + .. code-block:: bash + + make baseline + +#. Once completed, check the resulting images with :command:`Docker` + + .. code-block:: bash + + docker images | grep dars + +#. You can use any of the resulting images to launch fully functional containers. + If you need to customize the containers, you can edit the provided :file:`Dockerfile`. + +.. _Data Analytics Reference Stack: https://github.com/clearlinux/dockerfiles/tree/master/stacks/dars + +.. _Docker Hub: https://hub.docker.com/ + +.. _OpenBLAS: http://www.openblas.net/ + +.. _MKL: https://software.intel.com/en-us/mkl + +.. _CentOS: https://www.centos.org/ + +.. _DARS with OpenBLAS: https://hub.docker.com/r/clearlinux/stacks-dars-openblas/ + +.. _DARS with Intel® MKL: https://hub.docker.com/r/clearlinux/stacks-dars-mkl/ + +.. _DARS architecture and performance benchmarks: https://clearlinux.org/stacks/data-analytics-stack-v1 + +.. _DARS Terms of Use: https://clearlinux.org/stacks/data-analytics/terms-of-use diff --git a/zh_CN/_sources/guides/stacks/dlrs/dlrs.rst.txt b/zh_CN/_sources/guides/stacks/dlrs/dlrs.rst.txt new file mode 100644 index 000000000..60912d8cd --- /dev/null +++ b/zh_CN/_sources/guides/stacks/dlrs/dlrs.rst.txt @@ -0,0 +1,592 @@ +.. _dlrs2: + +Deep Learning Reference Stack +############################# + +This guide describes how to run benchmarking workloads for TensorFlow\*, +PyTorch\*, and Kubeflow in |CL-ATTR| using the Deep Learning Reference Stack. + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +We created the Deep Learning Reference Stack to help AI developers deliver +the best experience on Intel® Architecture. This stack reduces complexity +common with deep learning software components, provides flexibility for +customized solutions, and enables you to quickly prototype and deploy Deep +Learning workloads. Use this guide to run benchmarking workloads on your +solution. + +The Deep Learning Reference Stack is available in the following versions: + +* `Intel MKL-DNN-VNNI`_, which is optimized using Intel® Math Kernel Library + for Deep Neural Networks (Intel® MKL-DNN) primitives and introduces support + for Intel® AVX-512 Vector Neural Network Instructions (VNNI). +* `Intel MKL-DNN`_, which includes the TensorFlow framework optimized using + Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN) + primitives. +* `Eigen`_, which includes `TensorFlow`_ optimized for Intel® architecture. +* `PyTorch with OpenBLAS`_, which includes PyTorch with OpenBlas. +* `PyTorch with Intel MKL-DNN`_, which includes PyTorch optimized using Intel® + Math Kernel Library (Intel® MKL) and Intel MKL-DNN. + +.. important:: + + To take advantage of the Intel® AVX-512 and VNNI functionality with the Deep + Learning Reference Stack, you must use the following hardware: + + * Intel® AVX-512 images require an Intel® Xeon® Scalable Platform + * VNNI requires a 2nd generation Intel® Xeon® Scalable Platform + +Stack features +============== + +* `DLRS V3.0`_ release announcement. +* Deep Learning Reference Stack v2.0 including current + `PyTorch benchmark`_. +* Deep Learning Reference Stack v1.0 including current + `TensorFlow benchmark`_ results. +* `DLRS Release notes`_ on Github\* for the latest release of Deep Learning + Reference Stack. + +.. note:: + + The Deep Learning Reference Stack is a collective work, and each piece of + software within the work has its own license. Please see the `DLRS Terms of Use`_ + for more details about licensing and usage of the Deep Learning Reference Stack. + +Prerequisites +============= + +* :ref:`Install ` |CL| on your host system +* :command:`containers-basic` bundle +* :command:`cloud-native-basic` bundle + +In |CL|, :command:`containers-basic` includes Docker\*, which is required for +TensorFlow and PyTorch benchmarking. Use the :command:`swupd` utility to +check if :command:`containers-basic` and :command:`cloud-native-basic` are +present: + +.. code-block:: bash + + sudo swupd bundle-list + +To install the :command:`containers-basic` or :command:`cloud-native-basic` +bundles, enter: + +.. code-block:: bash + + sudo swupd bundle-add containers-basic cloud-native-basic + +Docker is not started upon installation of the :command:`containers-basic` +bundle. To start Docker, enter: + +.. code-block:: bash + + sudo systemctl start docker + +To ensure that Kubernetes is correctly installed and configured, follow the +instructions in :ref:`kubernetes`. + +Version compatibility +===================== + +We validated these steps against the following software package versions: + +* |CL| 26240 (Minimum supported version) +* Docker 18.06.1 +* Kubernetes 1.11.3 +* Go 1.11.12 + + +.. note:: + + The Deep Learning Reference Stack was developed to provide the best user + experience when executed on a |CL| host. However, as the stack runs in a + container environment, you should be able to complete the following sections of this guide on other Linux* distributions, provided they comply with the Docker*, Kubernetes* and Go* package versions listed above. Look for your distribution documentation on how to update packages and manage Docker services. + +TensorFlow single and multi-node benchmarks +******************************************* + +This section describes running the `TensorFlow Benchmarks`_ in single node. +For multi-node testing, replicate these steps for each node. These steps +provide a template to run other benchmarks, provided that they can invoke +TensorFlow. + +.. note:: + + Performance test results for the Deep Learning Reference Stack and for this + guide were obtained using `runc` as the runtime. + +#. Download either the `Eigen`_ or the `Intel MKL-DNN`_ Docker image + from `Docker Hub`_. + +#. Run the image with Docker: + + .. code-block:: bash + + docker run --name --rm -i -t bash + + .. note:: + + Launching the Docker image with the :command:`-i` argument starts + interactive mode within the container. Enter the following commands in + the running container. + +#. Clone the benchmark repository in the container: + + .. code-block:: bash + + git clone http://github.com/tensorflow/benchmarks -b cnn_tf_v1.12_compatible + +#. Execute the benchmark script: + + .. code-block:: bash + + python benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --device=cpu --model=resnet50 --data_format=NHWC + +.. note:: + + You can replace the model with one of your choice supported by the + TensorFlow benchmarks. + + If you are using an FP32 based model, it can be converted to an int8 model + using `Intel® quantization tools`_. + +PyTorch single and multi-node benchmarks +**************************************** + +This section describes running the `PyTorch benchmarks`_ for Caffe2 in +single node. + +#. Download either the `PyTorch with OpenBLAS`_ or the `PyTorch with Intel + MKL-DNN`_ Docker image from `Docker Hub`_. + +#. Run the image with Docker: + + .. code-block:: bash + + docker run --name --rm -i -t bash + + .. note:: + + Launching the Docker image with the :command:`-i` argument starts + interactive mode within the container. Enter the following commands in + the running container. + +#. Clone the benchmark repository: + + .. code-block:: bash + + git clone https://github.com/pytorch/pytorch.git + +#. Execute the benchmark script: + + .. code-block:: bash + + cd pytorch/caffe2/python + python convnet_benchmarks.py --batch_size 32 \ + --cpu \ + --model AlexNet + +Kubeflow multi-node benchmarks +****************************** + +The benchmark workload runs in a Kubernetes cluster. The guide uses +`Kubeflow`_ for the Machine Learning workload deployment on three nodes. + +.. warning:: + + If you choose the Intel® MKL-DNN or Intel® MKL-DNN-VNNI image, your platform + must support the Intel® AVX-512 instruction set. Otherwise, an + *illegal instruction* error may appear, and you won’t be able to complete this guide. + + +Kubernetes setup +================ + +Follow the instructions in the :ref:`kubernetes` tutorial to get set up on +|CL|. The Kubernetes community also has instructions for creating a cluster, +described in `Creating a single control-plane cluster with kubeadm`_. + +Kubernetes networking +===================== + +We used `flannel`_ as the network provider for these tests. If you +prefer a different network layer, refer to the Kubernetes network documentation +described in `Creating a single control-plane cluster with kubeadm`_ for setup. + +Kubectl +======= + +You can use kubectl to run commands against your Kubernetes cluster. Refer to +the `Overview of kubectl`_ for details on syntax and operations. Once you have a +working cluster on Kubernetes, use the following YAML script to start a pod with +a simple shell script, and keep the pod open. + +#. Copy this example.yaml script to your system: + + .. code-block:: console + + apiVersion: v1 + kind: Pod + metadata: + name: example-pod + labels: + app: ex-pod + spec: + containers: + - name: ex-pod-container + image: clearlinux/stacks-dlrs-mkl:latest + command: ['/bin/bash', '-c', '--'] + args: [ "while true; do sleep 30; done" ] + +#. Execute the script with kubectl: + + .. code-block:: bash + + kubectl apply –f /example.yaml + +This script opens a single pod. More robust solutions would create a deployment +or inject a python script or larger shell script into the container. + +Images +====== + +You must add `launcher.py`_ to the Docker image to include the Deep +Learning Reference Stack and put the benchmarks repo in the correct +location. Note that this guide uses Kubeflow v0.4.0, and cannot guarantee results if you use a different version. + +From the Docker image, run the following: + +.. code-block:: bash + + mkdir -p /opt + git clone https://github.com/tensorflow/benchmarks.git /opt/tf-benchmarks + cp launcher.py /opt + chmod u+x /opt/* + +Your entry point becomes: :file:`/opt/launcher.py`. + +This builds an image that can be consumed directly by TFJob from Kubeflow. + +ksonnet\* +========= + +Kubeflow uses ksonnet\* to manage deployments, so you must install it +before setting up Kubeflow. + +ksonnet was added to the :command:`cloud-native-basic` bundle in |CL| version +27550. If you are using an older |CL| version (not recommended), you must +manually install ksonnet as described below. + +On |CL|, follow these steps: + +.. code-block:: bash + + swupd bundle-add go-basic-dev + export GOPATH=$HOME/go + export PATH=$PATH:$GOPATH/bin + go get github.com/ksonnet/ksonnet + cd $GOPATH/src/github.com/ksonnet/ksonnet + make install + +After the ksonnet installation is complete, ensure that binary `ks` is +accessible across the environment. + +Kubeflow +======== + +Once you have Kubernetes running on your nodes, set up `Kubeflow`_ by +following these instructions from the `Getting Started with Kubeflow`_ guide. + +.. code-block:: bash + + export KUBEFLOW_SRC=$HOME/kflow + export KUBEFLOW_TAG="v0.4.1" + export KFAPP="kflow_app" + export K8S_NAMESPACE="kubeflow" + + mkdir ${KUBEFLOW_SRC} + cd ${KUBEFLOW_SRC} + ks init ${KFAPP} + cd ${KFAPP} + ks registry add kubeflow github.com/kubeflow/kubeflow/tree/${KUBEFLOW_TAG}/kubeflow + ks pkg install kubeflow/common + ks pkg install kubeflow/tf-training + +Next, deploy the primary package for our purposes: tf-job-operator. + +.. code-block:: bash + + ks env rm default + kubectl create namespace ${K8S_NAMESPACE} + ks env add default --namespace "${K8S_NAMESPACE}" + ks generate tf-job-operator tf-job-operator + ks apply default -c tf-job-operator + +This creates the CustomResourceDefinition (CRD) endpoint to launch a TFJob. + +Run a TFJob +=========== + +#. Get the ksonnet registries for deploying TFJobs from `dlrs-tfjob`_. + +#. Install the TFJob components as follows: + + .. code-block:: bash + + ks registry add dlrs-tfjob github.com/clearlinux/dockerfiles/tree/master/stacks/dlrs/kubeflow/dlrs-tfjob + + ks pkg install dlrs-tfjob/dlrs-bench + +#. Export the image name to use for the deployment: + + .. code-block:: bash + + export DLRS_IMAGE= + + .. note:: + + Replace with the image name you specified in previous steps. + +#. Generate Kubernetes manifests for the workloads and apply them using these + commands: + + .. code-block:: bash + + ks generate dlrs-resnet50 dlrsresnet50 --name=dlrsresnet50 --image=${DLRS_IMAGE} + ks generate dlrs-alexnet dlrsalexnet --name=dlrsalexnet --image=${DLRS_IMAGE} + ks apply default -c dlrsresnet50 + ks apply default -c dlrsalexnet + +This replicates and deploys three test setups in your Kubernetes cluster. + +Results of running this guide +============================= + +You must parse the logs of the Kubernetes pod to retrieve performance +data. The pods will still exist post-completion and will be in +‘Completed’ state. You can get the logs from any of the pods to inspect the +benchmark results. More information about Kubernetes logging is available +in the Kubernetes `Logging Architecture`_ documentation. + +Use Jupyter Notebook +******************** + +This example uses the `PyTorch with OpenBLAS`_ container image. After it is +downloaded, run the Docker image with :command:`-p` to specify the shared port +between the container and the host. This example uses port 8888. + +.. code-block:: bash + + docker run --name pytorchtest --rm -i -t -p 8888:8888 clearlinux/stacks-pytorch-oss bash + +After you start the container, launch the Jupyter Notebook. This +command is executed inside the container image. + +.. code-block:: bash + + jupyter notebook --ip 0.0.0.0 --no-browser --allow-root + +After the notebook has loaded, you will see output similar to the following: + +.. code-block:: console + + To access the notebook, open this file in a browser: file:///.local/share/jupyter/runtime/nbserver-16-open.html + Or copy and paste one of these URLs: + http://(846e526765e3 or 127.0.0.1):8888/?token=6357dbd072bea7287c5f0b85d31d70df344f5d8843fbfa09 + +From your host system, or any system that can access the host's IP address, +start a web browser with the following. If you are not running the browser on +the host system, replace :command:`127.0.0.1` with the IP address of the host. + +.. code-block:: bash + + http://127.0.0.1:8888/?token=6357dbd072bea7287c5f0b85d31d70df344f5d8843fbfa09 + +Your browser displays the following: + +.. figure:: figures/dlrs-fig-1.png + :scale: 50 % + :alt: Jupyter Notebook + +Figure 1: :guilabel:`Jupyter Notebook` + + +To create a new notebook, click :guilabel:`New` and select :guilabel:`Python 3`. + +.. figure:: figures/dlrs-fig-2.png + :scale: 50% + :alt: Create a new notebook + +Figure 2: Create a new notebook + +A new, blank notebook is displayed, with a cell ready for input. + +.. figure:: figures/dlrs-fig-3.png + :scale: 50% + :alt: New blank notebook + + +To verify that PyTorch is working, copy the following snippet into the blank +cell, and run the cell. + +.. code-block:: console + + from __future__ import print_function + import torch + x = torch.rand(5, 3) + print(x) + +.. figure:: figures/dlrs-fig-4.png + :scale: 50% + :alt: Sample code snippet + +When you run the cell, your output will look something like this: + +.. figure:: figures/dlrs-fig-5.png + :scale: 50% + :alt: code output + +You can continue working in this notebook, or you can download existing +notebooks to take advantage of the Deep Learning Reference Stack's optimized +deep learning frameworks. Refer to `Jupyter Notebook`_ for details. + +Uninstallation +************** + +To uninstall the Deep Learning Reference Stack, you can choose to stop the +container so that it is not using system resources, or you can stop the +container and delete it to free storage space. + +To stop the container, execute the following from your host system: + +#. Find the container's ID + + .. code-block:: bash + + docker container ls + + This will result in output similar to the following: + + .. code-block:: console + + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + e131dc71d339 clearlinux/stacks-dlrs-oss "/bin/sh -c 'bash'" 23 seconds ago Up 21 seconds oss + +#. You can then use the ID or container name to stop the container. This example + uses the name "oss": + + .. code-block:: bash + + docker container stop oss + + +#. Verify that the container is not running + + .. code-block:: bash + + docker container ls + + +#. To delete the container from your system you need to know the Image ID: + + .. code-block:: bash + + docker images + + This command results in output similar to the following: + + .. code-block:: console + + REPOSITORY TAG IMAGE ID CREATED SIZE + clearlinux/stacks-dlrs-oss latest 82757ec1648a 4 weeks ago 3.43GB + clearlinux/stacks-dlrs-mkl latest 61c178102228 4 weeks ago 2.76GB + +#. To remove an image use the image ID: + + .. code-block:: bash + + docker rmi 82757ec1648a + + .. code-block:: console + + # docker rmi 827 + Untagged: clearlinux/stacks-dlrs-oss:latest + Untagged: clearlinux/stacks-dlrs-oss@sha256:381f4b604537b2cb7fb5b583a8a847a50c4ed776f8e677e2354932eb82f18898 + Deleted: sha256:82757ec1648a906c504e50e43df74ad5fc333deee043dbfe6559c86908fac15e + Deleted: sha256:e47ecc039d48409b1c62e5ba874921d7f640243a4c3115bb41b3e1009ecb48e4 + Deleted: sha256:50c212235d3c33a3c035e586ff14359d03895c7bc701bb5dfd62dbe0e91fb486 + + + Note that you can execute the :command:`docker rmi` command using only the first few characters of the image ID, provided they are unique on the system. + +#. Once you have removed the image, you can verify it has been deleted with: + + .. code-block:: bash + + docker images + + +Related topics +************** + +* `DLRS V3.0`_ release announcement +* `TensorFlow Benchmarks`_ +* `PyTorch benchmarks`_ +* `Kubeflow`_ +* :ref:`kubernetes` tutorial +* `Jupyter Notebook`_ + +.. _TensorFlow: https://www.tensorflow.org/ + +.. _Kubeflow: https://www.kubeflow.org/ + +.. _Docker Hub: https://hub.docker.com/ + +.. _TensorFlow Benchmarks: https://www.tensorflow.org/guide/performance/benchmarks + +.. _PyTorch benchmarks: https://github.com/pytorch/pytorch/blob/master/caffe2/python/convnet_benchmarks.py + +.. _Creating a single control-plane cluster with kubeadm: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/ + +.. _flannel: https://github.com/coreos/flannel + +.. _Getting Started with Kubeflow: https://www.kubeflow.org/docs/started/getting-started/ + +.. _Eigen: https://hub.docker.com/r/clearlinux/stacks-dlrs-oss/ + +.. _Intel MKL-DNN: https://hub.docker.com/r/clearlinux/stacks-dlrs-mkl/ + +.. _PyTorch with OpenBLAS: https://hub.docker.com/r/clearlinux/stacks-pytorch-oss + +.. _PyTorch with Intel MKL-DNN: https://hub.docker.com/r/clearlinux/stacks-pytorch-mkl + +.. _Intel MKL-DNN-VNNI: https://hub.docker.com/r/clearlinux/stacks-dlrs-mkl-vnni + +.. _DLRS V3.0: https://clearlinux.org/stacks/deep-learning-reference-stack-v3 + +.. _dlrs-tfjob: https://github.com/clearlinux/dockerfiles/tree/master/stacks/dlrs/kubeflow/dlrs-tfjob + +.. _Logging Architecture: https://kubernetes.io/docs/concepts/cluster-administration/logging/ + +.. _TensorFlow benchmark: https://clearlinux.org/stacks/deep-learning-reference-stack + +.. _PyTorch benchmark: https://clearlinux.org/stacks/deep-learning-reference-stack-pytorch + +.. _Jupyter Notebook: https://jupyter.org/ + +.. _Overview of kubectl: https://kubernetes.io/docs/reference/kubectl/overview/ + +.. _launcher.py: https://github.com/clearlinux/dockerfiles/tree/master/stacks/dlrs/kubeflow + +.. _DLRS Terms of Use: https://clearlinux.org/stacks/deep-learning/terms-of-use + +.. _DLRS Release notes: https://github.com/clearlinux/dockerfiles/blob/master/stacks/dlrs/releasenote.md + +.. _Intel® quantization tools: https://github.com/IntelAI/tools/blob/master/tensorflow_quantization/README.md#quantization-tools \ No newline at end of file diff --git a/zh_CN/_sources/guides/stacks/greengrass.rst.txt b/zh_CN/_sources/guides/stacks/greengrass.rst.txt new file mode 100644 index 000000000..d2b3f4166 --- /dev/null +++ b/zh_CN/_sources/guides/stacks/greengrass.rst.txt @@ -0,0 +1,423 @@ +.. _greengrass: + +Enable AWS Greengrass\* and OpenVINO™ toolkit +############################################# + +This guide explains how to enable AWS Greengrass\* and OpenVINO™ toolkit. +Specifically, the guide demonstrates how to: + +* Set up the Intel® edge device with |CL-ATTR| +* Install the OpenVINO™ toolkit and Amazon Web Services\* (AWS\*) + Greengrass\* software stacks +* Use AWS Greengrass\* and AWS Lambda\* to deploy the FaaS samples from + the cloud + +.. contents:: + :local: + :depth: 1 + +Overview +******** + +Hardware accelerated Function-as-a-Service (FaaS) enables cloud developers to +deploy inference functionalities [1] on Intel® IoT edge devices with +accelerators (CPU, Integrated GPU, Intel® FPGA, and Intel® Movidius™ +technology). These functions provide a great developer experience and +seamless migration of visual analytics from cloud to edge in a secure manner +using a containerized environment. Hardware-accelerated FaaS provides the +best-in-class performance by accessing optimized deep learning libraries on +Intel® IoT edge devices with accelerators. + +Supported platforms +******************* + +* Operating System: |CL| latest release +* Hardware: Intel® core platforms (that support inference on CPU only) + +Sample description +================== + +The AWS Greengrass samples are located at `Edge-Analytics-FaaS`_. This +guide uses the 1.0 version of the source code. + +|CL| provides the following AWS Greengrass samples: + +* `greengrass_classification_sample.py`_ + + This AWS Greengrass sample classifies a video stream using classification + networks such as AlexNet and GoogLeNet and publishes top-10 results on AWS\* + IoT Cloud every second. + +* `greengrass_object_detection_sample_ssd.py`_ + + This AWS Greengrass sample detects objects in a video stream and + classifies them using single-shot multi-box detection (SSD) networks such + as SSD Squeezenet, SSD Mobilenet, and SSD300. This sample publishes + detection outputs such as class label, class confidence, and bounding box + coordinates on AWS IoT Cloud every second. + + +Install the OS on the edge device +********************************* + +Start with a clean installation of |CL| on a new system, using the +:ref:`bare-metal-install-desktop`, found in :ref:`get-started`. + +Create user accounts +==================== + +After |CL| is installed, create two user accounts. Create an administrative +user in |CL| and create a user account for the Greengrass services to use ( +see Greengrass user below). + +#. Create a new user and set a password for that user. Enter the following + commands as ``root``: + + .. code-block:: bash + + useradd + passwd + +#. Next, enable the :command:`sudo` command for your new . Add + to the `wheel` group: + + .. code-block:: bash + + usermod -G wheel -a + +#. Create a :file:`/etc/fstab` file. + + .. code-block:: bash + + touch /etc/fstab + + .. note:: + + By default, |CL| does not create an :file:`/etc/fstab` file. + You must create this file before the Greengrass service runs. + +Add required bundles +==================== + +Use the :command:`swupd` software updater utility to add the prerequisite bundles +for the OpenVINO software stack: + +.. code-block:: bash + + swupd bundle-add os-clr-on-clr desktop-autostart computer-vision-basic + +.. note:: + + Learn more about how to :ref:`swupd-guide`. + +The :command:`computer-vision-basic` bundle installs the OpenVINO™ toolkit, +and the sample models optimized for Intel® edge platforms. + +Convert deep learning models +============================ + +Locate sample models +-------------------- + +There are two types of provided models that can be used in conjunction with +AWS Greengrass for this guide: classification or object detection. + +To complete this guide using an image classification model, +download the BVLC AlexNet model files `bvlc_alexnet.caffemodel`_ and +`deploy.prototxt`_ to the default model_location at +:file:`/usr/share/openvino/models`. Any custom pre-trained classification models +can be used with the classification sample. + +For object detection, the sample models optimized for Intel® edge platforms +are included with the computer-vision-basic bundle installation at +:file:`/usr/share/openvino/models`. These models are provided as an example; +you may also use a custom SSD model with the Greengrass object detection sample. + +Run model optimizer +------------------- + +Follow the instructions in the `Model Optimizer Developer Guide`_ for converting +deep learning models to Intermediate Representation using Model Optimizer. To +optimize either of the sample models described above, run one of the following commands. + +For classification using BVLC AlexNet model: + +.. code-block:: bash + + python3 mo.py --framework caffe --input_model + /bvlc_alexnet.caffemodel --input_proto + /deploy.prototxt --data_type --output_dir + --input_shape [1,3,227,227] + +For object detection using SqueezeNetSSD-5Class model: + +.. code-block:: bash + + python3 mo.py --framework caffe --input_model + /'SqueezeNet 5-Class detection'/SqueezeNetSSD-5Class.caffemodel + --input_proto /'SqueezeNet 5-Class detection'/SqueezeNetSSD-5Class.prototxt + --data_type --output_dir + +In these examples: + +* `` is :file:`/usr/share/openvino/models`. + +* `` is FP32 or FP16, depending on target device. + +* `` is the directory where the Intermediate Representation + (IR) is stored. IR contains .xml format corresponding to the network + structure and .bin format corresponding to weights. This .xml file should be + passed to :command:``. + +* In the BVLC AlexNet model, the prototxt defines the input shape with + batch size 10 by default. In order to use any other batch size, the + entire input shape must be provided as an argument to the model + optimizer. For example, to use batch size 1, you must provide: + `--input_shape [1,3,227,227]` + + +Configure AWS Greengrass group +****************************** + +For each Intel® edge platform, you must create a new AWS Greengrass group +and install AWS Greengrass core software to establish the connection between +cloud and edge. + +#. To create an AWS Greengrass group, follow the instructions in + `Configure AWS IoT Greengrass on AWS IoT`_. + +#. To install and configure AWS Greengrass core on edge platform, follow + the instructions in `Start AWS Greengrass on the Core Device`_. In + step 8(b), download the x86_64 Ubuntu\* configuration of the AWS Greengrass + core software. + + .. note:: + + You do not need to run the :file:`cgroupfs-mount.sh` script in step #6 + of Module 1 of the `AWS Greengrass Developer Guide`_ because this is + enabled already in |CL|. + +#. Be sure to download both the security resources and the AWS Greengrass + core software. + + .. note:: + + Security certificates are linked to your AWS account. + + +Create and package Lambda function +********************************** + +#. Complete steps 1-4 of the AWS Greengrass guide at + `Create and Package a Lambda Function`_. + + .. note:: + + This creates the tarball needed to create the AWS Greengrass + environment on the edge device. + + +#. In step 5, replace :file:`greengrassHelloWorld.py` with the classification or + object detection Greengrass sample from `Edge-Analytics-Faas`_: + + * Classification: `greengrass_classification_sample.py`_ + + * Object Detection: `greengrass_object_detection_sample_ssd.py`_ + +#. Zip the selected Greengrass sample with the extracted Greengrass SDK folders + from the previous step into :file:`greengrass_sample_python_lambda.zip`. + + The zip should contain: + + * greengrasssdk + + * greengrass classification or object detection sample + + For example: + + .. code-block:: bash + + zip -r greengrass_lambda.zip greengrasssdk + greengrass_object_detection_sample_ssd.py + +#. Return to the AWS documentation section called + `Create and Package a Lambda Function`_ and complete the procedure. + + .. note:: + + In step 9(a) of the AWS documentation, while uploading the zip file, + make sure to name the handler to one of the following, depending on the + AWS Greengrass sample you are using: + + * greengrass_object_detection_sample_ssd.function_handler + * greengrass_classification_sample.function_handler + + +Configure Lambda function +************************* + +After creating the Greengrass group and the Lambda function, start +configuring the Lambda function for AWS Greengrass. + +#. Follow steps 1-8 in `Configure the Lambda Function for AWS IoT Greengrass`_ + in the AWS documentation. + +#. In addition to the details mentioned in step 8, change the Memory limit + to 2048 MB to accommodate large input video streams. + +#. Add the following environment variables as key-value pairs when editing + the Lambda configuration and click on update: + + .. list-table:: **Table 1. Environment variables: Lambda configuration** + :widths: 20 80 + :header-rows: 1 + + * - Key + - Value + * - PARAM_MODEL_XML + - /, where is user specified and + contains IR.xml, the Intermediate Representation file from Intel® Model Optimizer. + For this guide, should be set to '/usr/share/openvino/models' + or one of its subdirectories. + * - PARAM_INPUT_SOURCE + - /input.webm to be specified by user. Holds both input and + output data. For webcam, set PARAM_INPUT_SOURCE to ‘/dev/video0’ + * - PARAM_DEVICE + - "CPU" + * - PARAM_CPU_EXTENSION_PATH + - /usr/lib64/libcpu_extension.so + * - PARAM_OUTPUT_DIRECTORY + - to be specified by user. Holds both input and output + data + * - PARAM_NUM_TOP_RESULTS + - User specified for classification sample. + (e.g. 1 for top-1 result, 5 for top-5 results) + +#. Add subscription to subscribe, or publish messages from AWS Greengrass + Lambda function by completing the procedure in `Configure the Lambda Function for AWS IoT Greengrass`_. + + .. note:: + + The optional topic filter field is the topic mentioned inside the Lambda function. In this guide, sample topics include the following: + :command:`openvino/ssd` or :command:`openvino/classification` + +Add local resources +=================== + +Refer to the AWS documentation `Access Local Resources with Lambda Functions and Connectors`_ +for details about local resources and access privileges. + +The following table describes the local resources needed for the CPU: + +.. list-table:: **Local resources** + :widths: 20, 20, 20, 20 + :header-rows: 1 + + * - Name + - Resource type + - Local path + - Access + + * - ModelDir + - Volume + - to be specified by user + - Read-Only + + * - Webcam + - Device + - /dev/video0 + - Read-Only + + * - DataDir + - Volume + - to be specified by user. Holds both input and output + data. + - Read and Write + +Deploy Lambda function +********************** + +Refer to the AWS documentation `Deploy Cloud Configurations to an AWS IoT Greengrass Core Device`_ for instructions on how to deploy the lambda function to AWS +Greengrass core device. Select *Deployments* on the group page and follow the instructions. + +Output consumption +================== + +There are four options available for output consumption. These options are +used to report, stream, upload, or store inference output at an interval +defined by the variable :command:`reporting_interval` in the AWS Greengrass samples. + +#. IoT cloud output: + + This option is enabled by default in the AWS Greengrass samples using the + :command:`enable_iot_cloud_output` variable. You can use it to verify the lambda + running on the edge device. It enables publishing messages to IoT cloud + using the subscription topic specified in the lambda. (For example, topics + may include :command:`openvino/classification` for classification and :command:`openvino/ssd` + for object detection samples.) For classification, top-1 result with class + label are published to IoT cloud. For SSD object detection, detection + results such as bounding box coordinates of objects, class label, and + class confidence are published. + + Refer to the AWS documentation + `Verify the Lambda Function Is Running on the Device`_ for instructions on + how to view the output on IoT cloud. + +#. Kinesis streaming: + + This option enables inference output to be streamed from the edge device + to cloud using Kinesis [3] streams when :command:`enable_kinesis_output` is set + to True. The edge devices act as data producers and continually push + processed data to the cloud. You must set up and specify + Kinesis stream name, Kinesis shard, and AWS region in the AWS Greengrass + samples. + +#. Cloud storage using AWS S3 bucket: + + When the :command:`enable_s3_jpeg_output` variable is set to True, it enables + uploading and storing processed frames (in jpeg format) in an AWS S3 + bucket. You must set up and specify the S3 bucket name in the AWS + Greengrass samples to store the JPEG images. The images are named using the + timestamp and uploaded to S3. + +#. Local storage: + + When the :command:`enable_s3_jpeg_output` variable is set to True, it enables + storing processed frames (in jpeg format) on the edge device. The images + are named using the timestamp and stored in a directory specified by + :command:`PARAM_OUTPUT_DIRECTORY`. + +References +********** + +#. AWS Greengrass: https://aws.amazon.com/greengrass/ +#. AWS Lambda: https://aws.amazon.com/lambda/ +#. AWS Kinesis: https://aws.amazon.com/kinesis/ + +.. _Edge-Analytics-FaaS: https://github.com/intel/Edge-Analytics-FaaS/tree/v1.0/AWS%20Greengrass + +.. _bvlc_alexnet.caffemodel: http://dl.caffe.berkeleyvision.org/bvlc_alexnet.caffemodel + +.. _deploy.prototxt: https://github.com/BVLC/caffe/blob/master/models/bvlc_alexnet/deploy.prototxt + +.. _greengrass_classification_sample.py: https://github.com/intel/Edge-Analytics-FaaS/blob/v1.0/AWS%20Greengrass/greengrass_classification_sample.py + +.. _greengrass_object_detection_sample_ssd.py: https://github.com/intel/Edge-Analytics-FaaS/blob/v1.0/AWS%20Greengrass/greengrass_object_detection_sample_ssd.py + +.. _Model Optimizer Developer Guide: https://software.intel.com/en-us/articles/OpenVINO-ModelOptimizer + +.. _AWS Greengrass Developer Guide: https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html + +.. _Configure AWS IoT Greengrass on AWS IoT: https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-config.html + +.. _Start AWS Greengrass on the Core Device: https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-device-start.html + +.. _Configure the Lambda Function for AWS IoT Greengrass: https://docs.aws.amazon.com/greengrass/latest/developerguide/config-lambda.html + +.. _Access Local Resources with Lambda Functions and Connectors: https://docs.aws.amazon.com/greengrass/latest/developerguide/access-local-resources.html + +.. _Deploy Cloud Configurations to an AWS IoT Greengrass Core Device: https://docs.aws.amazon.com/greengrass/latest/developerguide/configs-core.html + +.. _Verify the Lambda Function Is Running on the Device: https://docs.aws.amazon.com/greengrass/latest/developerguide/lambda-check.html + +.. _Create and Package a Lambda Function: https://docs.aws.amazon.com/greengrass/latest/developerguide/create-lambda.html diff --git a/zh_CN/_sources/index.rst.txt b/zh_CN/_sources/index.rst.txt new file mode 100644 index 000000000..aa28a5295 --- /dev/null +++ b/zh_CN/_sources/index.rst.txt @@ -0,0 +1,58 @@ +.. _clear-linux: + +|CL-PRJ| +############################################# + +Welcome to the |CL-ATTR| documentation pages, the source for |CL| documentation. + +Our documentation is divided into the following sections: + + +:ref:`get-started` + + If you are new to |CL|, get started quickly with step-by-step instructions + for installing |CL| on bare metal, in a virtual environment, or as a live + image on a USB stick. + +:ref:`about` + + |CL| is different from other Linux distributions. + + Updates, ease of use, and custom derivatives are a few of the differences + this section explains. Orient yourself to these differences and why they + matter to you. + + .. raw:: html + + + +:ref:`guides` + + Guides cover a range of topics from |CL| features and tooling, to system + maintenance, network, and stacks. + +:ref:`Use case tutorials ` + + Sample use cases, with step-by-step instructions, show how to set up + third-party tools and software with |CL|. + +:ref:`reference` + + This section provides additional reference information on the |CL| project. + +:ref:`faq` + + The FAQ section provides answers to commonly asked questions about |CL|. + + + +.. toctree:: + :maxdepth: 2 + :hidden: + + get-started/index + about + guides/index + tutorials/index + reference/index + FAQ/index diff --git a/zh_CN/_sources/reference/bundles/bundles.rst.txt b/zh_CN/_sources/reference/bundles/bundles.rst.txt new file mode 100644 index 000000000..7572e4a6f --- /dev/null +++ b/zh_CN/_sources/reference/bundles/bundles.rst.txt @@ -0,0 +1,18 @@ +.. _bundles: + +Available bundles +################# + +This document provides a current list of available bundles. View the `clr-bundles repo`_ on GitHub\*, or select the bundle +:file:`Name` for more details. + +To learn more about how |CL-ATTR| uses bundles for software deployment, visit +:ref:`bundles-guide`. + +Bundle list +=========== + +.. raw:: html + :file: bundles.html.txt + +.. _clr-bundles repo: https://github.com/clearlinux/clr-bundles/tree/master/bundles diff --git a/zh_CN/_sources/reference/collaboration/collaboration.rst.txt b/zh_CN/_sources/reference/collaboration/collaboration.rst.txt new file mode 100644 index 000000000..fb7b53696 --- /dev/null +++ b/zh_CN/_sources/reference/collaboration/collaboration.rst.txt @@ -0,0 +1,83 @@ +.. _collaboration: + +Documentation guidelines +######################## + +See a missing topic in the documentation? Find an existing document that could +be improved? Help us out by contributing! If you haven't contributed before, +take a moment to review our `Contribution guidelines`_. + +Do you have questions about the documentation that were not answered by these +guidelines? Send your question to the `mailing list`_. + +Contribution guidelines +*********************** + +The |CL| documentation is hosted in GitHub and is written using +reStructuredText. Use our guidelines and best practices to write consistent, +readable documentation. + +.. toctree:: + :maxdepth: 1 + + Writing guide: Describes the style we use to keep our documents clear and concise. + Structure and formatting guide: Explains how we organize and format content, using reStructuredText and Sphinx. + +How to contribute +***************** + +There are multiple ways to contribute and help improve our documentation: + +* **Make a suggestion**: Have a documentation suggestion but no time to write it + yourself? Send your suggestion to the `mailing list`_. +* **Log an issue**: If you find a problem in our documentation (such as typos or + out-of-date information), log an issue in the `documentation repository`_. +* **Contribute directly via GitHub**: Whether you've found a typo, have better + instructions or examples, or have a new page to add, submit your improvement + or addition as a pull request on the `documentation repository`_. +* **Test documentation**: Step through our instructional guides and tutorials to + verify the instructions. Log or correct any out-of-date information. + +All contributions must follow our `code of conduct`_. + +Contribute via GitHub +********************* + +Our documentation is hosted in GitHub and we follow the standard `GitHub flow`_: + +#. Clone the `documentation repository`_. + +#. Create your own fork of the repository. + +#. Create a branch for your contribution. + +#. Add your commits. + +#. Open a pull request. + +#. Discuss, review, and update your contributions. + +#. Once the maintainer approves, your contribution is merged and published as + part of the documentation. + +.. _references: + +References +********** + +We use the following references to guide the grammar, style, and formatting of +our documentation: + +* `Microsoft Writing Style Guide`_ +* `Merriam-Webster Dictionary`_ +* The Chicago Manual of Style (15th edition), The University of Chicago Press +* Microsoft Press Computer Dictionary, Microsoft Press +* Read Me First!, Oracle Technical Publications + + +.. _`code of conduct`: https://clearlinux.org/community/code-of-conduct +.. _mailing list: https://lists.clearlinux.org/mailman/listinfo/dev +.. _GitHub flow: https://guides.github.com/introduction/flow/ +.. _documentation repository: https://github.com/clearlinux/clear-linux-documentation +.. _Microsoft Writing Style Guide: https://docs.microsoft.com/en-us/style-guide/welcome/ +.. _Merriam-Webster Dictionary: https://www.merriam-webster.com/ \ No newline at end of file diff --git a/zh_CN/_sources/reference/collaboration/structure-formatting.rst.txt b/zh_CN/_sources/reference/collaboration/structure-formatting.rst.txt new file mode 100644 index 000000000..6391dccb5 --- /dev/null +++ b/zh_CN/_sources/reference/collaboration/structure-formatting.rst.txt @@ -0,0 +1,482 @@ +.. _structure-formatting: + +Structure and formatting +######################## + +Content should be organized to support scanning. Consistent organization, +formatting, and writing style helps readers quickly find what they need and to +understand the content more effectively. This document describes our +organization and formatting guidelines. + +Refer to :ref:`writing-guide` to learn how we keep our documents clear and +concise. + +.. contents:: :local: + :depth: 1 + +Markup +****** + +Our documentation is written in the reStructuredText markup language, using +Sphinx roles and directives. We use Sphinx to generate the final documentation. +You can read more about reStructuredText and Sphinx on their respective +websites: + +* `Sphinx documentation`_ +* `reStructuredText Primer`_ + +You can view the content directly in the .rst markup files, or generate the HTML +content by installing and building the documentation locally. To run the +documentation locally, follow the instructions found in the +`documentation repository`_ README. + +New pages +========= + +There are a few additional steps to consider when adding a new page to the +documentation. First, identify where your new page should be located within the +existing `Documentation organization`_. Second, make sure the new page is picked +up in the Sphinx build and easily linkable from other content. + +Each page must be included in a `Sphinx toctree`_ in order to be included in the +documentation content tree. Typically, pages are added to the section landing +page toctree. + +For example, the :ref:`collaboration` page toctree looks like: + +.. code-block:: rest + + .. toctree:: + :maxdepth: 1 + + writing-guide + structure-formatting + +Additionally, each page must include a uniquely named reST label directly before +the page title, to enable the `Sphinx ref role`_ for linking to a page. + +For example, this page "Structure and formating" has the label +``.. _structure-formatting``: + +.. code-block:: rest + + .. _structure-formatting: + + Structure and formatting + ######################## + +This page can then be referenced from other pages in the documentation using the +`:ref:` role: + +.. code-block:: rest + + :ref:`structure-formatting` + +Documentation organization +************************** + +The documentation is organized into five general sections: + +#. **Concepts**: Introduction and overview of |CL| specific concepts or + features. +#. **Get started**: Information about getting started with |CL|. +#. **Guides**: Detailed information and instruction on using |CL| features. +#. **Tutorials**: Step-by-step instruction for using |CL| in specific use cases. +#. **Reference**: Supplementary and reference information for |CL|. + +Page structure +============== + +Each page in the documentation should follow the basic format of: + +* Overview: 1-2 sentences describing what this page shows and why it matters +* Prerequisites: Describe any pre-work necessary to the content (if appropriate) +* Content +* Next steps: List links to next steps (if appropriate) +* Related topics: List links to related content (if appropriate) + +Headings +======== + +Use headings to section and organize your content for better readability and +clarity. + +* All files must have a top level heading, which is the title for the page. +* Up to three additional levels of headings are allowed under the title heading. +* Each heading should be followed by at least one paragraph of content. Avoid + two or more consecutive headings. + +Refer to the :ref:`writing-guide` for tips on using headings to create +:ref:`scannable content `. + +To mark up headings in the .rst file: + +* Use hash-tags to underline the file's main title: + + .. code-block:: rest + + Main title + ########## + +* Use asterisks to underline the file's first level headings: + + .. code-block:: rest + + First level heading + ******************* + +* Use equal signs to underline the file's second level of headings: + + .. code-block:: rest + + Second level heading + ==================== + +* Use dashes to underline the file's third level of headings: + + .. code-block:: rest + + Third level heading + ------------------- + +In-page navigation +================== + +If a page has three or more sections, provide quick links to each section. Place +the quick links after the overview section. + +Use the standard `reST contents directive`_ with depth: 1 for quick links. + +Inline text formatting +********************** + +We use the `Microsoft Writing Style Guide`_ as our starting point for text +formatting. We apply the formatting using reST and Sphinx markup. + +Use our quick reference for the most commonly used inline text elements: + ++--------------------------------+---------------------------------------+-----------------------------+ +| **Element** | **Convention** | **reST/Sphinx** | ++--------------------------------+---------------------------------------+-----------------------------+ +| Acronyms | Define acronym when first used. After | Use the ``:abbr:`` role, in | +| | first use and definition, use the | the following format: | +| | acronym only. | | +| | | ``:abbr:`Acronym (Def)``` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Bundle names | Bold | Use the ``:command:`` role. | ++--------------------------------+---------------------------------------+-----------------------------+ +| Callouts | | Use ``.. note::`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Code/command examples | Monospace, visually distinct | Use ``.. code-block::`` | +| | from rest of text. Use an | with the correct language | +| | indented call-out box. | setting. | ++--------------------------------+---------------------------------------+-----------------------------+ +| Commands | Bold | Use the ``:command:`` role. | ++--------------------------------+---------------------------------------+-----------------------------+ +| Command flags | Bold | Use the ``:command:`` role. | ++--------------------------------+---------------------------------------+-----------------------------+ +| Console output | Monospace, visual distinction | Use ``.. code-block::`` | +| | from rest of text. Use an | with console as the | +| | indented call-out box. | language setting. | ++--------------------------------+---------------------------------------+-----------------------------+ +| Emphasis | Italic | ``*strong*`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Environment variables | Use the case format of the | Use ``:envvar:`` | +| | environment variable. | | ++--------------------------------+---------------------------------------+-----------------------------+ +| Example commands with | Use angle brackets for swapping | | +| optional or replaceable | in the specific name, | | +| parts | e.g. . | | +| | | | +| | Use square brackets for optional | | +| | parts, | | +| | e.g. [--build]. | | ++--------------------------------+---------------------------------------+-----------------------------+ +| Example URLs (not linked) | Plain text | | ++--------------------------------+---------------------------------------+-----------------------------+ +| File extensions | Lowercase | | ++--------------------------------+---------------------------------------+-----------------------------+ +| File names, directories, paths | Title style capitalization | Use the ``:file:`` role. | ++--------------------------------+---------------------------------------+-----------------------------+ +| GUI labels | | Use ``:guilabel:`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Inline comments | | Use ``..`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Keystrokes | | Use ``:kbd:`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| Local navigation | | ``.. contents:: :local:`` | +| | | with a depth of 1 | ++--------------------------------+---------------------------------------+-----------------------------+ +| Menu selection | | Use ``:menuselection:`` | ++--------------------------------+---------------------------------------+-----------------------------+ +| New terms | Italic for first use, normal for all | ``*term*`` | +| | subsequent uses. | | +| | | | +| | If it is used outside of the source | | +| | of definition, link the term. | | ++--------------------------------+---------------------------------------+-----------------------------+ +| Product name | Follow correct trademark and | | +| | attribution guidelines. | | ++--------------------------------+---------------------------------------+-----------------------------+ +| Tool names | Correctly capitalized, no quotes, | | +| | bold, or italics as the basic rule. | | +| | | | +| | If the tool name is the command, like | | +| | most Linux tools, treat it like a | | +| | command. | | +| | | | +| | If the tool name is lowercase and | | +| | used at the start of a sentence, use | | +| | bold. | | ++--------------------------------+---------------------------------------+-----------------------------+ + +White space and line length +=========================== + +Limit line length to 78 characters. The GitHub web interface forces this +limitation for readability. + +Remove trailing whitespace from your documents. + +Code blocks and examples +************************ + +When providing example code or commands use the `Sphinx code-block directive`_. +Select the appropriate syntax highlighting for the example command or code. + +For example, if showing console output, use console highlighting: + +.. code-block:: rest + + .. code-block:: console + +Sphinx provides other ways of `marking up example code`_ if needed. + +Lists and instructions +********************** + +Use a numbered list when the order or priority of the items is important, such +as step-by-step instructions. + +Use a bulleted list when the order of the items is not important. + +For both list types, keep all items in the list parallel. See +:ref:`parallelism`. + +Use standard `reST list markup`_. + +Numbered lists +============== + +Numbered lists are most frequently used for procedures. Use numbered lists to +show sequence for the items. Follow our guidelines for numbered lists: + +* Make sure the list is sequential and not just a collection of items. +* Introduce a numbered list with a sentence. End the setup text with a + colon. Example: "To configure the unit, perform the following steps:" +* Each item in the list should be parallel. +* Treat numbered list items as full sentences with correct ending + punctuation. +* You may interrupt numbered lists with other content, if relevant, + e.g. explanatory text, commands, or code. +* Second-level steps are acceptable; avoid third-level steps. +* Avoid single-step procedures; the minimum number of steps in a procedure + is two. +* Do not create numbered lists that emulate flowcharts. The reader should be + able to execute the list of steps from first to last without branching or + looping. +* Avoid over-using numbered lists, except in procedural documents such as + tutorials and step-by-step guides. + +Bulleted lists +============== + +Use bulleted lists to reduce wordiness and paragraph density, especially when +a sequence is not required. Here are some guidelines for bulleted lists: + +* Introduce a bulleted list with a sentence. End the setup text with a + colon. Example: "To repair the unit, you will need the following items:" +* Each item in the list should be parallel. +* Avoid interrupting bulleted lists with other paragraph styles. +* Second-level bullets are acceptable; avoid third-level bullets. + +Use the correct ending punctuation for sentence style bullet lists. For example: + +**Use this:** + +:: + + When setting the user code, remember: + + * Use a number that has a meaning for you. + * Change the code once a month. + * Do not disclose the user code to anyone, including the security company. + +**Not this:** + +:: + + When setting the user code remember: + + * make the user code easy to remember. Use a number that has a meaning for you + * change the code once a month + * do not disclose the user code to anyone else. This includes the security + company + +Instructions +============ + +When presenting instructions, such as in a tutorial, present them in a numbered +list according to these guidelines: + +* Each step (list item) should describe one action. + +* If the same steps are repeated, refer to the earlier steps rather than + repeating them. + +* When a step includes a command or code block as an example, put the command + or code block after the step that includes them. + +* Use supporting images where appropriate. If the series of steps is supported + by one figure, refer to the figure in the introductory text. + + For example: "See Figure 15 and do the following:" + + When a series of steps is supported by two or more figures, refer to the + specific figure in the relevant step and show the figure immediately after + the reference. **Do not write**: "See figures 15 through 22 and do the + following:" + +Notices +******* + +We use four special types of notices: notes, cautions, warnings, and dangers. +Here are some specific rules and tips regarding use of these notices: + +* Do not use a notice directly after a heading. Notices must follow a variant of + body text. +* Do not include more than one notice in a single notice block. +* Avoid back-to-back notices. +* If back-to-back notices are not avoidable, make sure each distinct notice in + the notice block is clearly defined. + +Use the standard `reST admonition directive`_. + +Notes, cautions, and warnings +============================= + +Use notes sparingly. Avoid having more than one note per section. If you exceed +this number consistently, consider rewriting the notes as main body text. + +Use cautions and warnings to alert readers of potential problems or pitfalls. +Use conditional phrases in cautions and warnings, such as "If you do X, then Y +will occur." + +These are examples of typical notices and the conditions for their usage: + +.. note:: + Notes are extra bits of information that supplement the main content. Notes + should be relatively short. + +.. caution:: + Cautions are low-level hazard messages that alert the user of possible + equipment, product, and software damage, including loss of data. + +.. warning:: + Warnings are mid-level hazards that are likely to cause product damage. + +Links +***** + +Use the standard `reST markup for links`_. + +To add a cross-reference to another documentation page, use the `:ref:` role: + +.. code-block:: rest + + :ref:`structure-formatting` + +To add an external link, we use named references that refer to a defined +link/label at the bottom of the page. + +For example, an external link is defined at the bottom of the page like this: + +.. code-block:: rest + + .. _wiki about dogs: https://en.wikipedia.org/wiki/Dog + +The defined link is then used in the content like this: + +.. code-block:: rest + + Check out the great `wiki about dogs`_. + +Images +****** + +Use images or figures to convey information that may be difficult to explain +using words alone. Well-planned graphics reduce the amount of text required to +explain a topic or example. + +Follow these guidelines when using graphics in support of your documentation: + +* Keep it simple. Use images that serve a specific purpose in your document, + and contain only the information the reader needs. + +* Avoid graphics that will need frequent updating. Don't include information in + a graphic that might change with each release, such as product versions. + +* Use either PNG or JPEG bitmap files for screenshots and SVG files for vector + graphics. + +* Place the image immediately after the text it helps clarify, or as close as + possible. + +* Use the `Sphinx figure directive`_ to insert images and figures into the + document. Include both alt text, a figure name, and caption. + + For example: + + .. code-block:: rest + + .. figure:: figures/topic-1.png + :alt: An image supporting the topic. + + Figure 1: This is the figure 1 caption. + +* Include at least one direct reference to an image from the main text, using + the figure number. For example: + + **Use this:** :: + + Figure 1 + + **Not this:** :: + + The figure above or below + +Images should follow these naming and location conventions: + +* Save the image files in a :file:`figures` folder at the same level as the file + that will reference the image. +* Name image files according to the following rules: + + * Use only lower case letters. + * Separate multiple words in filenames using dashes. + * Name images using the filename of the file they appear on and add a number + to indicate their place in the file. For example, the third figure added to + the :file:`welcome.rst` file must be named :file:`welcome-3.png`. + +.. _Sphinx documentation: http://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html +.. _reStructuredText Primer: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html +.. _documentation repository: https://github.com/clearlinux/clear-linux-documentation +.. _Sphinx toctree: https://www.sphinx-doc.org/en/master/usage/quickstart.html?highlight=toctree#defining-document-structure +.. _Sphinx ref role: https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-ref +.. _reST contents directive: http://docutils.sourceforge.net/docs/ref/rst/directives.html#table-of-contents +.. _Microsoft Writing Style Guide: https://docs.microsoft.com/en-us/style-guide/welcome/ +.. _Sphinx code-block directive: http://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-code-block +.. _marking up example code: http://www.sphinx-doc.org/en/1.6/markup/code.html +.. _reST list markup: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#lists-and-quote-like-blocks +.. _reST admonition directive: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#directives +.. _reST markup for links: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#hyperlinks +.. _Sphinx figure directive: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#directives diff --git a/zh_CN/_sources/reference/collaboration/writing-guide.rst.txt b/zh_CN/_sources/reference/collaboration/writing-guide.rst.txt new file mode 100644 index 000000000..f69a03446 --- /dev/null +++ b/zh_CN/_sources/reference/collaboration/writing-guide.rst.txt @@ -0,0 +1,410 @@ +.. _writing-guide: + +Writing guide +############# + +We want our documentation to be easy to read and understand. This document +describes guidelines for writing documentation that is clear, concise, +confident, and courteous. + +Refer to :ref:`structure-formatting` for details on organizing content and how +we use reStructuredText and Sphinx. + +.. contents:: :local: + :depth: 1 + +Use simple English +****************** + +Write using simple English: Be brief and communicate only the information that +is needed. Be friendly and informative. Emphasize clarity and avoid +unecessary complicated or technical terms. Make the content accessible to +non-native speakers. + +Be brief +======== + +Use short sentences and paragraphs. Stick to the principle of one main +idea per sentence, plus one additional point if needed. Each paragraph +should address one main idea. Remember the basic structure of a paragraph: +Introduction, body, and conclusion. + +Be friendly +=========== + +We write for our peers and want to be familiar. Take a personal tone as if you +were speaking directly to the reader. Use "you" to address the reader and "we" +to refer to our view. Be professional, respectful, and cooperative. + +Assume your audience has the same level of technical understanding and expertise +as you did when you first started collaborating. Do not talk down to our +readers, but also do not assume they know everything about the subject. Offer +brief explanations or summaries of common knowledge if a significant portion of +readers might benefit. + +Use simple words +================ + +Use simple words to increase reader comprehension and reduce ambiguity. Follow +our tips for making good word choices: + +* **Avoid jargon**: Write for your audience, using everyday language where + possible, and technical terms where appropriate. Avoid clichés, idioms, and + metaphors. +* **Be consistent**: Use one term for each concept or action and use it + consistently. +* **Avoid "fancy" words and phrases**: If there is a simpler word or phrase, + use it. + + For example: + + =================== =================== + Use this Not this + =================== =================== + start, begin commence + so consequently + more than in excess of + if in the event of + before prior to + if you want should one wish + use utilize + example instance + =================== =================== + +Avoid overuse of product name +============================= + +Use product names only when necessary. Typically, you can rewrite sentences to +remove the product name with no change in meaning, which keeps the content +concise and scannable. + +Avoid using the product name in page titles and headings. + +.. _scannable-content: + +Make content scannable +********************** + +Organize your content to make it scannable for the reader, which helps them find +what they need quickly, and to understand the information more efficiently. + +* **Put the most important content first.** Make sure your introduction clearly + communicates what the reader can find on the page. Present the point of the + document first, and organize supporting information towards the end of the + page. +* **Write scannable headings.** Expect readers of documentation to skim and scan + the content, and to leave if they dont find what they need quickly. Good + headings add organization to your content and help the reader to find and + understand content more effectively. Follow our guidelines for writing + effective `Headings`_. +* **Write great link text.** Great link text tells the reader what they can + expect when they click on a link. It also helps make the page more scannable. + Follow our guidelines for writing `Link text`_. + +Headings +======== + +Use these guidelines to write effective headings: + +* **Be concise and descriptive.** Use only the words necessary to describe the + section. +* **Use sentence case.** Capitalize only the first word and proper nouns in a + heading. +* **Avoid punctuation.** Unless your heading is a question, don't use sentence + punctuation in headings. +* **Use parallel structure.** Headings at the same level should use the same + grammatical pattern. This provides structure to the document and helps users + find information more easily. See :ref:`parallelism`. +* **Use strong verbs.** Strong, active verbs get to the point. Avoid -ing verbs, + such as *Running*, *Testing*, etc. + +For example, two headings at the same level: + +**Use this:** :: + + Install software + + Configure software + +**Not this:** :: + + Installing the Software on the Platform + + Software Configuration. + +Link text +========= + +All links in content should follow these guidelines: + +* **Write descriptive link text**: Link text should describe where the link + goes, without having to read the surrounding text. +* **Keep link text concise**: Use only the words needed to accurately describe + the destination. +* **Use unique link text**: Each link on a page should be unique. If users see + the same link text twice on a page, they'll assume it goes to the same place. +* **Start link text with keywords**: Frontload the link text with the most + important words to help users scan the text. +* **Avoid generic text**: Don't use generic, uninformative link text such as + "click here" or "read more". + +For example: + +**Use this:** :: + + For more information about dogs, read the `dog wiki article`_. + +**Not this:** :: + + For more information about dogs, `click here`_. + +Use strong verbs +**************** + +Passive verbs make writing stuffy and formal. Use strong verbs to get to the +point and avoid unnecessary words and phrases. + +Use imperatives +=============== + +Commands, also called imperatives, are the fastest and most direct way of giving +someone instructions. For example: + +**Use this:** :: + + Send it to me. + +**Not this:** :: + + I would appreciate it if you would send it to me. + +Use present tense +================= + +Use simple present tense instead of future tense for most text. Search for the +words "will" or "shall" to find future tense instances. Future tense is +acceptable for conditional statements, such as in a caution or a warning. For +example: + +**Use this:** :: + + The system operates at a nominal temperature of 180 degrees Fahrenheit. + +**Not this:** :: + + The system will operate at a nominal temperature of 180 degrees Fahrenheit. + +Avoid nominalizations +===================== + +Avoid nominalizations, which are nouns formed from verbs. + +For example: + +===================== ===================== + Verb Nominalization +===================== ===================== + complete completion + provide provision + fail failure + install installation +===================== ===================== + +For example: + +**Use this:** :: + + We discussed the matter. + +**Not this:** :: + + We had a discussion about the matter. + +Or: + +**Use this:** :: + + IT has installed the software. + +**Not this:** :: + + IT has completed the installation of the software. + +Avoid words ending in -ing +========================== + +Avoid using words ending in -ing unless they are part of a technical name. For +example: + +**Use this:** :: + + There is no way to verify this. + +**Not this:** :: + + There is no way of verifying this. + +Use the active voice +==================== + +Use active voice whenever possible to show who or what is performing an +action. + +* Active voice follows standard English word order: SUBJECT–VERB–OBJECT + (where the OBJECT is optional). +* Passive voice reverses the order and weakens the verb: OBJECT–be VERB–by + SUBJECT (where the OBJECT is optional). + +For example: + +**Use this:** :: + + I made a mistake. + +**Not this:** :: + + A mistake was made. *(By whom?)* + +Or: + +**Use this:** :: + + We released version 2.0 in June. + +**Not this:** :: + + Version 2.0 was released in June. + +Avoid long noun phrases +*********************** + +Noun phrases (a noun and other words that describe or modify it) can be +difficult to understand. Try to limit the number of modifiers in a noun phrase +to two. For example: + +**Use this:** :: + + Integration policies for power management mechanisms. + +**Not this:** :: + + Power management mechanism integration policies. + +.. _parallelism: + +Parallelism +*********** + +Parallelism refers to the practice of using similar patterns of grammar, and +sometimes length, to coordinate words, phrases, and clauses. + +Use parallel construction in lists. The table below shows some unparallel +structures and how they can be made parallel with a little rewording. + ++----------------------------------+----------------------------------+ +| Parallel (do) | Unparallel (don't) | ++==================================+==================================+ +| 1. Mount the panel. | 1. Mount the panel. | +| 2. Install the battery. | 2. Battery installation. | +| 3. Wire the keypad. | 3. Wiring the keypad. | ++----------------------------------+----------------------------------+ +| I like practicing my accordion, | I like practicing my accordion, | +| reading sci-fi, and eating | reading sci-fi, and to eat | +| peanut butter and pickle | peanut butter and pickle | +| sandwiches. | sandwiches. | ++----------------------------------+----------------------------------+ +| For breakfast he likes coffee | For breakfast he likes coffee | +| and bacon. | and to fry bacon. | ++----------------------------------+----------------------------------+ +| Apples or bananas are a good | Apples or a banana are a good | +| snack. | snack. | ++----------------------------------+----------------------------------+ + +Grammar and punctuation +*********************** + +This section covers common grammatical topics relevant to our +documentation. For detailed explanations of correct grammar and punctuation, +use one of our :ref:`preferred references `. + +Capitalization +============== + +The capitalization style for all documentation is sentence case. Words should +only be capitalized when they are proper nouns or refer to trademarked product +names. + +.. note:: + Do not capitalize a word to indicate it is more important than other + words. Never change the case of variable, function or file names - always + keep the original case. + +Menu capitalization +------------------- + +When referring to software menu items by name, use the same capitalization as +seen in the actual menu. + +A few other tips when referring to menu items: + +* Reference the specific menu item using "Select :menuselection:`File --> New`." + +* Put the option to be selected last. "Select + :menuselection:`View --> Side Bar --> Hide Side Bar`" + +* Do not include more than 3 navigation steps in a menu selection. If + more than three steps are needed, divide the steps using + ``:guilabel:`` or ``:menuselection:``. + + For example: "Go to :guilabel:`File` and select + :menuselection:`Print --> Print Preview --> Set Up`." + +Software version capitalization +------------------------------- + +When listing software or hardware version numbers, the word “version” or letter +"v" are lowercase. The v is closed with the number (no period). + +For example: + +* Widget Pro version 5.0 +* Widget Master v2.1.12 + +Contractions +============ + +Avoid using contractions, such as it's, they're, and you're, because they may be +unclear to non-native English-speaking audiences. + +Quotation marks +=============== + +Follow these guidelines for quotation marks: + +* Restrict use of quotation marks to terms as terms. +* Do not use quotation marks for emphasis; use *italics* for emphasis. +* Avoid using single-quote marks. + +Commas and colons +================= + +This section addresses common use of commas, semicolons, and colons in our +documentation. Refer to one of our :ref:`preferred references ` +for further details. + +Use the serial comma +-------------------- + +When writing a series of items, use the serial comma before the final *and* and +*or* to avoid confusion and ambiguity. For example: + +**Use this:** :: + + Mom, Dad, and I are going to the game. + +**Not this:** :: + + Mom, Dad and I are going to the game. + +.. _click here: https://en.wikipedia.org/wiki/Dog +.. _dog wiki article: https://en.wikipedia.org/wiki/Dog diff --git a/zh_CN/_sources/reference/compatible-hardware.rst.txt b/zh_CN/_sources/reference/compatible-hardware.rst.txt new file mode 100644 index 000000000..3f8b23a33 --- /dev/null +++ b/zh_CN/_sources/reference/compatible-hardware.rst.txt @@ -0,0 +1,113 @@ +.. _compatible-hardware: + +Compatible Hardware +################### + +This document describes hardware that has been tested and confirmed as +compatible with |CL-ATTR|. This list is not comprehensive and will continue to +grow. + +.. list-table:: **Table 1. Compatible Hardware** + :widths: 20, 20 + :header-rows: 1 + + * - Processor SKU + - Platform + + * - Intel® Core™ i5-6260U + - + + * - Intel® Core™ i5-6560U + - Dell XPS\* 13 9350 + + * - Intel® Celeron® J3455 + - NUC6CAYS + + * - Intel® Core™ i5-4250U + - + + * - Intel® Core™ i7-5557U + - + + * - Intel® Core™ i9-7900X + - Gigabyte\* X299 + + * - Intel® Core™ i3-4130 + - Lenovo Thinkserver\* TS140 + + * - Intel® Core™ i7-7567U + - NUC7i7BNH + + * - Intel® Core™ i7-8809G + - NUC8i7HVK + + * - Intel® Core™ i5-7260U + - NUC7i5BNH + + * - Intel® Core™ i7-8650U + - NUC7i7DNKE + + * - Intel® Core™ i5-7300U + - NUC7i5DNHE + + * - Intel® Xeon® Gold 6138 + - + + * - Intel® Xeon® E5-2699A v4 + - Dell PowerEdge\* R630 + + * - Intel® Xeon® E5-2620 v3 + - + + * - Intel® Core™ i5-6600 + - Gigabyte\* Z170X-UD5 + + * - Intel® Core™ i5-4250U + - D54250WYK + + * - Intel® Xeon® E5-2699 v3 + - S2600WT2 + + * - Intel® Atom™ J3455 + - NUC6CAYB + + * - Intel® Xeon® Bronze 3104 + - 0W23H8 + + * - Intel® Atom™ C2750 + - SuperMicro\* A1SAi + + * - Intel® Atom™ E3825 + - CircuitCo MinnowBoard MAX\* + + * - Intel® Core™ i7-8700 + - Gigabyte\* H370 WIFI + + * - Intel® Core™ i7-3667U + - Lenovo ThinkPad\* X1 Carbon laptop + + * - Intel® Core™ i5-4210U + - Dell XPS\* 13 laptop + + * - Intel® Celeron® J3455 + - NUC6CAYB + + * - Intel® Core™ i7-4790 + - Gigabyte\* desktop + + * - Intel® Core™ i5-6260U + - NUC6I6SYH + + * - Intel® Core™ i7-5557U + - NUC5I7RYH + + * - Intel® Core™ i7-4700MQ + - Lenovo ThinkPad\* T540p + + * - Intel® Core™ i7-5557U + - NUC5I7RYB + + * - Intel® Core™ i5-6260U + - NUC6I5SYH + +\* Other names and brands may be claimed as the property of others. \ No newline at end of file diff --git a/zh_CN/_sources/reference/image-types.rst.txt b/zh_CN/_sources/reference/image-types.rst.txt new file mode 100644 index 000000000..cc5d13258 --- /dev/null +++ b/zh_CN/_sources/reference/image-types.rst.txt @@ -0,0 +1,87 @@ +.. _image-types: + +|CL-ATTR| image types +######################### + +.. _image-types-content: + +|CL-ATTR| offers many types of `images`_ for different platforms and environments. + +.. _incl-image-filename: + +The naming convention of a |CL| image filename is: + +.. code-block:: console + + clear-[version number]-[image type].[compression type] + +* The *[version number]* field specifies the version number. + +* The *[image type]* field specifies the type of image and its corresponding + file format. + +* The *[compression type]* field specifies the compression type. Two types of + compressions are used: GNU\* zip (*.gz*) and XZ (*.xz*). + +.. _incl-image-filename-end: + +Table 1 lists the currently available images that are platform independent. +Table 2 lists the currently available images that are platform specific. + +.. list-table:: Table 1: Types of platform-independent |CL| images + :widths: 15, 85 + :header-rows: 1 + + * - Image Type + - Description + + * - live-desktop.img or live-desktop.iso + - Image for booting to GNOME\* desktop to preview or install the OS. + + * - live-server.img or live-server.iso + - Image for booting to server command prompt to preview or install the OS. + +.. list-table:: Table 2: Types of platform-specific |CL| images + :widths: 15, 85 + :header-rows: 1 + + * - Image Type + - Description + + * - aws.img + - Image suitable for use with Amazon\* AWS\*. + + * - azure.vhd + - Virtual Hard Disk for use on Microsoft\* Azure\* cloud platform. + + * - azure-docker.vhd + - Virtual Hard Disk for use on Microsoft Azure cloud platform with Docker\* pre-installed. + + * - azure-machine-learning.vhd + - Virtual Hard Disk for use on Microsoft Azure cloud platform with the `machine-learning-basic` bundle installed. + + * - cloudguest.img + - Image with generic cloud guest virtual machine (VM) requirements installed. + + * - gce.tar + - Image with the Google Compute Engine (GCE) specific kernel. + + * - hyperv.vhdx + - Virtual Hard Disk for use with Microsoft Hyper-V\* hypervisor. Includes `optimized kernel`_ for Hyper-V. + + * - kvm.img + - Image for booting in a simple VM with start_qemu.sh. Includes + `optimized kernel`_ for KVM. + + * - kvm-legacy.img + - Image for booting in a simple VM using legacy BIOS, if using start_qemu.sh make sure to remove -bios parameter. + + * - pxe.tar + - Image suitable for use with PXE server. + + * - vmware.vmdk + - Virtual Machine Disk for VMware\* platforms inclduing Player, Workstation, and ESXi. + +.. _images: https://clearlinux.org/downloads +.. _`optimized kernel`: https://clearlinux.org/documentation/clear-linux/reference/compatible-kernels + diff --git a/zh_CN/_sources/reference/index.rst.txt b/zh_CN/_sources/reference/index.rst.txt new file mode 100644 index 000000000..27e2088b4 --- /dev/null +++ b/zh_CN/_sources/reference/index.rst.txt @@ -0,0 +1,16 @@ +.. _reference: + +Reference +######### + +This section provides additional information on the |CL| project and +features. + +.. toctree:: + :maxdepth: 1 + + compatible-hardware + bundles/bundles + collaboration/collaboration + system-requirements + image-types diff --git a/zh_CN/_sources/reference/system-requirements.rst.txt b/zh_CN/_sources/reference/system-requirements.rst.txt new file mode 100644 index 000000000..c0974923d --- /dev/null +++ b/zh_CN/_sources/reference/system-requirements.rst.txt @@ -0,0 +1,79 @@ +.. _system-requirements: + +Recommended minimum system requirements +####################################### + +|CL-ATTR| can run on most modern hardware and is capable of running with +modest hardware resources. Out of the box, |CL| can run on a single CPU core, 1 +GB RAM, and 2 GB of disk space. + +For use cases requiring minimal resources, |CL| :ref:`about ` can +be used to create a highly customized installation that can even run on a +system with a 128MB of memory and 600MB of disk space, for example. + + +Installer requirements +********************** + +The *live desktop* installer requires at least 1 GB of RAM because more +resources are required to run in live mode than after |CL| is installed onto +persistent storage. + +For hardware with less resources, use the *live server* installer because it +has a smaller memory footprint. + +See https://clearlinux.org/downloads for more download options. + + +System requirements +******************* + +|CL| requires an x86 64-bit processor which supports Intel® Streaming SIMD +Extensions 4.1 (Intel® SSE 4.1), and it requires a system that supports UEFI. + +The |CL| installer performs a system compatibility check upon booting. To +manually verify system compatibility with |CL|, run the :ref:`compatibility +check tool` or go to http://ark.intel.com and check for +these features: + +* Instruction Set: + + - 64-bit + +* Instruction Set Extensions: + + - Supplemental Streaming SIMD Extension 3 (Intel® SSSE3) + - Intel® Streaming SIMD Extensions 4.1 (Intel® SSE 4.1) + - Intel® Streaming SIMD Extensions 4.2 (Intel® SSE 4.2) + - Intel® Advanced Encryption Standard New Instructions (Intel® AES-NI) + - Carry-less Multiplication (PCLMUL) + +The following processor families have been verified to run |CL|: + +* Intel® Core™ Processor Family (2nd generation or greater) +* Intel® Xeon® E3-xxxx processor +* Intel® Xeon® E5-xxxx processor +* Intel® Xeon® E7-xxxx processor +* Intel® Atom® processor C Series +* Intel® Atom® processor E Series + + +Recommended configurations +************************** + +For general |CL| desktop use the recommended minimum requirements include: + +========= =============================== +Component Configuration +--------- ------------------------------- +Processor Compatible x86 64-bit processor +--------- ------------------------------- +Memory 4GB RAM +--------- ------------------------------- +Disk 20 GB +--------- ------------------------------- +Graphics Device with openGL support (e.g. Intel HD/UHD Graphics) +--------- ------------------------------- +Network Active Internet connection +========= =============================== + diff --git a/zh_CN/_sources/tutorials/apache-hadoop.rst.txt b/zh_CN/_sources/tutorials/apache-hadoop.rst.txt new file mode 100644 index 000000000..7f443891d --- /dev/null +++ b/zh_CN/_sources/tutorials/apache-hadoop.rst.txt @@ -0,0 +1,256 @@ +.. _hadoop: + +Apache\* Hadoop\* +################# + +This tutorial walks you through the process of installing, configuring, and +running Apache Hadoop on |CL-ATTR|. The Apache Hadoop software library is a +framework for distributed processing of large data sets across clusters of +computers using simple programming models. It is designed to scale up from +single servers to thousands of machines, with each machine offering local +computation and storage. + +Prerequisites +************* + +Before following this tutorial, you should follow the +:ref:`bare-metal-install-desktop` to ensure you have installed |CL|. + +Before you install any new packages, update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +For the purposes of this tutorial, we will install Hadoop in a single machine +running both the master and slave daemons. + +Install Apache Hadoop +********************* + +Apache Hadoop is included in the `big-data-basic` bundle. To install the +framework, enter the following command: + +.. code-block:: bash + + sudo swupd bundle-add big-data-basic + +Configure Apache Hadoop +*********************** + +#. To create the configuration directory, enter the following command: + + .. code-block:: bash + + sudo mkdir /etc/hadoop + +#. Copy the defaults from :file:`/usr/share/defaults/hadoop` to + :file:`/etc/hadoop` with the following command: + + .. code-block:: bash + + $ sudo cp /usr/share/defaults/hadoop/* /etc/hadoop + + .. note:: Since |CL| is a stateless system, you should never modify the + files under the :file:`/usr/share/defaults` directory. The software + updater will overwrite those files. + +Once all the configuration files are in :file:`/etc/hadoop`, we must edit +them to fit our needs. The `NameNode` server is the master server. It manages +the namespace of the files system and regulates the clients' access to files. +The first file we edit, :file:`/etc/hadoop/core-site.xml`, informs the Hadoop +daemon where `NameNode` is running. + +In this tutorial, our `NameNode` runs in our `localhost`. Follow these steps +to set it up correctly: + +#. Open the :file:`/etc/hadoop/core-site.xml` file using the editor of your + choice and modify the file as follows: + + .. code-block:: xml + + + + + + fs.default.name + hdfs://localhost:9000 + + + +#. Edit the :file:`/etc/hadoop/hdfs-site.xml` file. This file configures the + :abbr:`HDFS (Hadoop Distributed File System)` daemons. This configuration + includes the list of permitted and excluded data nodes and the size of + said blocks. In this example, we are setting the number of block + replication to 1 from the default of 3 as follows: + + .. code-block:: xml + :emphasize-lines: 6 + + + + + + dfs.replication + 1 + + + dfs.permission + false + + + +#. Edit the :file:`/etc/hadoop/mapred-site.xml` file. This file configures + all daemons related to `MapReduce`: `JobTracker` and `TaskTrackers`. With + `MapReduce`, Hadoop can process big amounts of data in multiple systems. In + our example, we set :abbr:`YARN (Yet Another Resource Manager)` as our + runtime framework for executing `MapReduce` jobs as follows: + + .. code-block:: xml + :emphasize-lines: 5,6 + + + + + + mapreduce.framework.name + yarn + + + +#. Edit the :file:`/etc/hadoop/yarn-site.xml` file. This file configures all + daemons related to `YARN`: `ResourceManager` and `NodeManager`. In our + example, we implement the `mapreduce_shuffle` service, which is the + default as follows: + + .. code-block:: xml + :emphasize-lines: 4,5,8,9 + + + + + yarn.nodemanager.aux-services + mapreduce_shuffle + + + yarn.nodemanager.auxservices.mapreduce.shuffle.class + org.apache.hadoop.mapred.ShuffleHandler + + + +Configure your SSH key +********************** + +#. Create a SSH key. If you already have one, skip this step. + + .. code-block:: bash + + sudo ssh-keygen -t rsa + + +#. Copy the key to your authorized keys. + + .. code-block:: bash + + sudo cat /root/.ssh/id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys + +#. Log into the localhost. If no password prompt appears, you are ready to + run the Hadoop daemons. + + .. code-block:: bash + + sudo ssh localhost + +Run the Hadoop daemons +********************** + +With all the configuration files properly edited, we are ready to start the +daemons. + +When we format the `NameNode` server, it formats the meta-data related to +data nodes. Thus, all the information on the data nodes is lost and the nodes +can be reused for new data. + +#. Format the `NameNode` server with the following command: + + .. code-block:: bash + + sudo hdfs namenode -format + +#. Start the DFS in `NameNode` and `DataNodes` with the following command: + + .. code-block:: bash + + sudo start-dfs.sh + +#. The console output should be similar to: + + .. code-block:: console + + Starting namenodes on [localhost] + The authenticity of host 'localhost (::1)' can't be established. + ECDSA key fingerprint is + SHA256:97e+7TnomsS9W7GjFPjzY75HGBp+f1y6sA+ZFcOPIPU. + Are you sure you want to continue connecting (yes/no)? + + Enter `yes` to continue. + +#. Start the `YARN` daemons `ResourceManager` and `NodeManager` with the + following command: + + .. code-block:: bash + + sudo start-yarn.sh + +#. Ensure everything is running as expected with the following command: + + .. code-block:: bash + + sudo jps + +#. The console output should be similar to: + + .. code-block:: console + + 22674 DataNode + 26228 Jps + 22533 NameNode + 23046 ResourceManager + 22854 SecondaryNameNode + 23150 NodeManager + +Run the MapReduce wordcount example +*********************************** + +#. Create the input directory. + + .. code-block:: bash + + sudo hdfs dfs -mkdir -p /user/root/input + +#. Copy a file from the local file system to the HDFS. + + .. code-block:: bash + + sudo hdfs dfs -copyFromLocal local-file /user/root/input + +#. Run the `wordcount` example. + + .. code-block:: bash + + sudo hadoop jar /usr/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar wordcount input output + +#. Read output file "part-r-00000". This file contains the number of times + each word appears in the file. + + .. code-block:: bash + + sudo hdfs dfs -cat /user/root/output/part-r-00000 + +**Congratulations!** + +You successfully installed and setup a single node Hadoop cluster. +Additionally, you ran a simple wordcount example. + +Your single node Hadoop cluster is up and running! + diff --git a/zh_CN/_sources/tutorials/apache-spark.rst.txt b/zh_CN/_sources/tutorials/apache-spark.rst.txt new file mode 100644 index 000000000..0624fd5b8 --- /dev/null +++ b/zh_CN/_sources/tutorials/apache-spark.rst.txt @@ -0,0 +1,134 @@ + .. _spark: + +Apache\* Spark\* +################ + +This tutorial describes how to install, configure, and run Apache Spark on +|CL-ATTR|. Apache Spark is a fast general-purpose cluster computing system with +the following features: + +* Provides high-level APIs in Java\*, Scala\*, Python\*, and R\*. +* Includes an optimized engine that supports general execution graphs. +* Supports high-level tools including Spark SQL, MLlib, GraphX, and Spark + Streaming. + +In this tutorial, you will install Spark on a single machine running the +master daemon and a worker daemon. + +Prerequisites +************* + +This tutorial assumes you have installed |CL| on your host system. +For detailed instructions on installing |CL| on a bare metal system, visit +the :ref:`bare metal installation guide `. + +Before you install any new packages, update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +Install Apache Spark +******************** + +Apache Spark is included in the :file:`big-data-basic` bundle. To install the +framework, enter: + +.. code-block:: bash + + sudo swupd bundle-add big-data-basic + +Configure Apache Spark +********************** + +#. Create the configuration directory with the command: + + .. code-block:: bash + + sudo mkdir /etc/spark + +#. Copy the default templates from :file:`/usr/share/defaults/spark` to + :file:`/etc/spark` with the command: + + .. code-block:: bash + + sudo cp /usr/share/defaults/spark/* /etc/spark + + .. note:: Since |CL| is a stateless system, you should never modify the + files under the :file:`/usr/share/defaults` directory. The software + updater overwrites those files. + + +#. Copy the template files below to create custom configuration files: + + .. code-block:: bash + + sudo cp /etc/spark/spark-defaults.conf.template /etc/spark/spark-defaults.conf + sudo cp /etc/spark/spark-env.sh.template /etc/spark/spark-env.sh + sudo cp /etc/spark/log4j.properties.template /etc/spark/log4j.properties + +#. Edit the :file:`/etc/spark/spark-env.sh` file and add the + :envvar:`SPARK_MASTER_HOST` variable. Replace the example address below + with your localhost IP address. View your IP address using the + :command:`hostname -I` command. + + .. code-block:: bash + + SPARK_MASTER_HOST="10.300.200.100" + + .. note:: This optional step enables the master's web user interface to + view information needed later in this tutorial. + +#. Edit the :file:`/etc/spark/spark-defaults.conf` file and update the + `spark.master` variable with the `SPARK_MASTER_HOST` address and port `7077`. + + .. code-block:: bash + + spark.master spark://10.300.200.100:7077 + +Start the master server and a worker daemon +******************************************* + +#. Start the master server using: + + .. code-block:: bash + + sudo /usr/share/apache-spark/sbin/./start-master.sh + +#. Start one worker daemon and connect it to the master using the + `spark.master` variable defined earlier: + + .. code-block:: bash + + sudo /usr/share/apache-spark/sbin/./start-slave.sh spark://10.300.200.100:7077 + +#. Open an internet browser and view the worker daemon information using + the master's IP address and port `8080`: + + .. code-block:: bash + + http://10.300.200.100:8080 + +Run the Spark wordcount example +******************************* + +#. Run the wordcount example using a file on your local host and output the + results to a new file with the following command: + + .. code-block:: bash + + sudo spark-submit /usr/share/apache-spark/examples/src/main/python/wordcount.py ~/Documents/example_file > ~/Documents/results + +#. Open an internet browser and view the application information using + the master's IP address and port `8080`: + + .. code-block:: bash + + http://10.300.200.100:8080 + +#. View the results of the wordcount application in the :file:`~/Documents/results` file. + +**Congratulations!** + +You successfully installed and set up a standalone Apache Spark cluster. +Additionally, you ran a simple wordcount example. diff --git a/zh_CN/_sources/tutorials/archive/kata_migration.rst.txt b/zh_CN/_sources/tutorials/archive/kata_migration.rst.txt new file mode 100644 index 000000000..41440a1b9 --- /dev/null +++ b/zh_CN/_sources/tutorials/archive/kata_migration.rst.txt @@ -0,0 +1,91 @@ +.. _kata_migration: + +Migrate Clear Containers to Kata Containers\* +############################################# + +`Clear Containers`_ and `Kata Containers`_ can co-exist in the same system. +Both can be installed through the :file:`containers-virt bundle`. However, we +recommend that you migrate to Kata Containers because Clear Containers is no +longer maintained_ and will soon be deprecated on |CL-ATTR|. + +This guide describes how to migrate to Kata Containers and assumes that: + +* Clear Containers is on a Docker\* system. +* Kata Containers is installed. See :ref:`kata`. + + +Stop Clear Containers instances +******************************* + +As an unprivileged user, stop all running instances of Clear Containers: + +.. code-block:: bash + + for container in $(sudo docker ps -q); do sudo docker stop $container; done + + +Manually migrate customized configuration files +*********************************************** + +If you have made changes to your `Clear Containers configuration`_, review +those changes and decide whether to manually apply those changes to your +`Kata Containers configuration`_. + +Make any required changes before continuing this process. + +.. note:: + + You do not need to manually remove any Clear Containers packages. + + +Enable Kata Containers as default +********************************* + +#. Configure Docker to use the Kata Containers runtime by default. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/system/docker.service.d/ + cat <` |CL| on your host system +* :command:`containers-basic` bundle +* :command:`cloud-native-basic` bundle + +In |CL|, :command:`containers-basic` includes Docker\*, which is required for +TensorFlow and PyTorch benchmarking. Use the :command:`swupd` utility to +check if :command:`containers-basic` and :command:`cloud-native-basic` are +present: + +.. code-block:: bash + + sudo swupd bundle-list + +To install the :command:`containers-basic` or :command:`cloud-native-basic` +bundles, enter: + +.. code-block:: bash + + sudo swupd bundle-add containers-basic cloud-native-basic + +Docker is not started upon installation of the :command:`containers-basic` +bundle. To start Docker, enter: + +.. code-block:: bash + + sudo systemctl start docker + +To ensure that Kubernetes is correctly installed and configured, follow the +instructions in :ref:`kubernetes`. + +Version compatibility +===================== + +We validated these steps against the following software package versions: + +* |CL| 26240 (Minimum supported version) +* Docker 18.06.1 +* Kubernetes 1.11.3 +* Go 1.11.12 + + +.. note:: + + The Deep Learning Reference Stack was developed to provide the best user + experience when executed on a |CL| host. However, as the stack runs in a + container environment, you should be able to complete the following sections of this guide on other Linux* distributions, provided they comply with the Docker*, Kubernetes* and Go* package versions listed above. Look for your distribution documentation on how to update packages and manage Docker services. + +TensorFlow single and multi-node benchmarks +******************************************* + +This section describes running the `TensorFlow Benchmarks`_ in single node. +For multi-node testing, replicate these steps for each node. These steps +provide a template to run other benchmarks, provided that they can invoke +TensorFlow. + +.. note:: + + Performance test results for the Deep Learning Reference Stack and for this + guide were obtained using `runc` as the runtime. + +#. Download either the `Eigen`_ or the `Intel MKL-DNN`_ Docker image + from `Docker Hub`_. + +#. Run the image with Docker: + + .. code-block:: bash + + docker run --name --rm -i -t bash + + .. note:: + + Launching the Docker image with the :command:`-i` argument starts + interactive mode within the container. Enter the following commands in + the running container. + +#. Clone the benchmark repository in the container: + + .. code-block:: bash + + git clone http://github.com/tensorflow/benchmarks -b cnn_tf_v1.12_compatible + +#. Execute the benchmark script: + + .. code-block:: bash + + python benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --device=cpu --model=resnet50 --data_format=NHWC + +.. note:: + + You can replace the model with one of your choice supported by the + TensorFlow benchmarks. + + If you are using an FP32 based model, it can be converted to an int8 model + using `Intel® quantization tools`_. + +PyTorch single and multi-node benchmarks +**************************************** + +This section describes running the `PyTorch benchmarks`_ for Caffe2 in +single node. + +#. Download either the `PyTorch with OpenBLAS`_ or the `PyTorch with Intel + MKL-DNN`_ Docker image from `Docker Hub`_. + +#. Run the image with Docker: + + .. code-block:: bash + + docker run --name --rm -i -t bash + + .. note:: + + Launching the Docker image with the :command:`-i` argument starts + interactive mode within the container. Enter the following commands in + the running container. + +#. Clone the benchmark repository: + + .. code-block:: bash + + git clone https://github.com/pytorch/pytorch.git + +#. Execute the benchmark script: + + .. code-block:: bash + + cd pytorch/caffe2/python + python convnet_benchmarks.py --batch_size 32 \ + --cpu \ + --model AlexNet + +Kubeflow multi-node benchmarks +****************************** + +The benchmark workload runs in a Kubernetes cluster. The guide uses +`Kubeflow`_ for the Machine Learning workload deployment on three nodes. + +.. warning:: + + If you choose the Intel® MKL-DNN or Intel® MKL-DNN-VNNI image, your platform + must support the Intel® AVX-512 instruction set. Otherwise, an + *illegal instruction* error may appear, and you won’t be able to complete this guide. + + +Kubernetes setup +================ + +Follow the instructions in the :ref:`kubernetes` tutorial to get set up on +|CL|. The Kubernetes community also has instructions for creating a cluster, +described in `Creating a single control-plane cluster with kubeadm`_. + +Kubernetes networking +===================== + +We used `flannel`_ as the network provider for these tests. If you +prefer a different network layer, refer to the Kubernetes network documentation +described in `Creating a single control-plane cluster with kubeadm`_ for setup. + +Kubectl +======= + +You can use kubectl to run commands against your Kubernetes cluster. Refer to +the `Overview of kubectl`_ for details on syntax and operations. Once you have a +working cluster on Kubernetes, use the following YAML script to start a pod with +a simple shell script, and keep the pod open. + +#. Copy this example.yaml script to your system: + + .. code-block:: console + + apiVersion: v1 + kind: Pod + metadata: + name: example-pod + labels: + app: ex-pod + spec: + containers: + - name: ex-pod-container + image: clearlinux/stacks-dlrs-mkl:latest + command: ['/bin/bash', '-c', '--'] + args: [ "while true; do sleep 30; done" ] + +#. Execute the script with kubectl: + + .. code-block:: bash + + kubectl apply –f /example.yaml + +This script opens a single pod. More robust solutions would create a deployment +or inject a python script or larger shell script into the container. + +Images +====== + +You must add `launcher.py`_ to the Docker image to include the Deep +Learning Reference Stack and put the benchmarks repo in the correct +location. Note that this guide uses Kubeflow v0.4.0, and cannot guarantee results if you use a different version. + +From the Docker image, run the following: + +.. code-block:: bash + + mkdir -p /opt + git clone https://github.com/tensorflow/benchmarks.git /opt/tf-benchmarks + cp launcher.py /opt + chmod u+x /opt/* + +Your entry point becomes: :file:`/opt/launcher.py`. + +This builds an image that can be consumed directly by TFJob from Kubeflow. + +ksonnet\* +========= + +Kubeflow uses ksonnet\* to manage deployments, so you must install it +before setting up Kubeflow. + +ksonnet was added to the :command:`cloud-native-basic` bundle in |CL| version +27550. If you are using an older |CL| version (not recommended), you must +manually install ksonnet as described below. + +On |CL|, follow these steps: + +.. code-block:: bash + + swupd bundle-add go-basic-dev + export GOPATH=$HOME/go + export PATH=$PATH:$GOPATH/bin + go get github.com/ksonnet/ksonnet + cd $GOPATH/src/github.com/ksonnet/ksonnet + make install + +After the ksonnet installation is complete, ensure that binary `ks` is +accessible across the environment. + +Kubeflow +======== + +Once you have Kubernetes running on your nodes, set up `Kubeflow`_ by +following these instructions from the `Getting Started with Kubeflow`_ guide. + +.. code-block:: bash + + export KUBEFLOW_SRC=$HOME/kflow + export KUBEFLOW_TAG="v0.4.1" + export KFAPP="kflow_app" + export K8S_NAMESPACE="kubeflow" + + mkdir ${KUBEFLOW_SRC} + cd ${KUBEFLOW_SRC} + ks init ${KFAPP} + cd ${KFAPP} + ks registry add kubeflow github.com/kubeflow/kubeflow/tree/${KUBEFLOW_TAG}/kubeflow + ks pkg install kubeflow/common + ks pkg install kubeflow/tf-training + +Next, deploy the primary package for our purposes: tf-job-operator. + +.. code-block:: bash + + ks env rm default + kubectl create namespace ${K8S_NAMESPACE} + ks env add default --namespace "${K8S_NAMESPACE}" + ks generate tf-job-operator tf-job-operator + ks apply default -c tf-job-operator + +This creates the CustomResourceDefinition (CRD) endpoint to launch a TFJob. + +Run a TFJob +=========== + +#. Get the ksonnet registries for deploying TFJobs from `dlrs-tfjob`_. + +#. Install the TFJob components as follows: + + .. code-block:: bash + + ks registry add dlrs-tfjob github.com/clearlinux/dockerfiles/tree/master/stacks/dlrs/kubeflow/dlrs-tfjob + + ks pkg install dlrs-tfjob/dlrs-bench + +#. Export the image name to use for the deployment: + + .. code-block:: bash + + export DLRS_IMAGE= + + .. note:: + + Replace with the image name you specified in previous steps. + +#. Generate Kubernetes manifests for the workloads and apply them using these + commands: + + .. code-block:: bash + + ks generate dlrs-resnet50 dlrsresnet50 --name=dlrsresnet50 --image=${DLRS_IMAGE} + ks generate dlrs-alexnet dlrsalexnet --name=dlrsalexnet --image=${DLRS_IMAGE} + ks apply default -c dlrsresnet50 + ks apply default -c dlrsalexnet + +This replicates and deploys three test setups in your Kubernetes cluster. + +Results of running this section +=============================== + +You must parse the logs of the Kubernetes pod to retrieve performance +data. The pods will still exist post-completion and will be in +‘Completed’ state. You can get the logs from any of the pods to inspect the +benchmark results. More information about Kubernetes logging is available +in the Kubernetes `Logging Architecture`_ documentation. + + +TensorFlow Training (TFJob) with Kubeflow and DLRS +************************************************** + +A `TFJob`_ is Kubeflow's custom resource used to run TensorFlow training jobs on Kubernetes. This example shows how to use a TFJob within the DLRS container. + +Pre-requisites: + +* A running :ref:`kubernetes` cluster + +#. Deploying Kubeflow with kfctl/kustomize in |CL| + +.. note:: + + This example proposes a Kubeflow installation with the binary kfctl maintained by `Arrikto`_. Please download the `kfctl tarball`_ to complete the following steps + +#. Download, untar and add to your PATH if necessary + + .. code-block:: bash + + KFCTL_URL="https://github.com/kubeflow/kubeflow/releases/download/v0.6.1/kfctl_v0.6.1_linux.tar.gz" + wget -P ${KFCTL_URL} ${KFCTL_PATH} + tar -C ${KFCTL_PATH} -xvf ${KFCTL_PATH}/kfctl_v${kfctl_ver}_linux.tar.gz + export PATH=$PATH:${KFCTL_PATH} + +#. Install `MetalLB`_ + + .. code-block:: bash + + kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.1/manifests/metallb.yaml + +#. Install Kubeflow resource and TFJob operators + + .. code-block:: bash + + # Env variables needed for your deployment + export KFAPP="" + export CONFIG="https://raw.githubusercontent.com/kubeflow/kubeflow/master/bootstrap/config/kfctl_existing_arrikto.yaml" + + kfctl init ${KFAPP} --config=${CONFIG} -V + cd ${KFAPP} + + # deploy Kubeflow: + kfctl generate k8s -V + kfctl apply k8s -V + +#. List the resources + + Deployment takes around 15 minutes (or more depending on the hardware) to be ready to use. After that you can use kubectl to list all the Kubeflow resources deployed and monitor their status. + + .. code-block:: bash + + kubectl get pods -n kubeflow + +Submitting TFJobs +================= + +We provide several `DLRS TFJob`_ examples that use the Deep Learning Reference Stack as the base image for creating the containers to run training workloads in your Kubernetes cluster. + + + +Customizing a TFJob +=================== + +A TFJob is a resource with a YAML representation like the one below. Edit to use the DLRS image containing the code to be executed and modify the command for your own training code. + +If you'd like to modify the number and type of replicas, resources, persistent volumes and environment variables, please refer to the `Kubeflow documentation`_ + +.. code-block:: console + + apiVersion: kubeflow.org/v1beta2 + kind: TFJob + metadata: + generateName: tfjob + namespace: kubeflow + spec: + tfReplicaSpecs: + PS: + replicas: 1 + restartPolicy: OnFailure + template: + spec: + containers: + - name: tensorflow + image: dlrs-image + command: + - python + - -m + - trainer.task + - --batch_size=32 + - --training_steps=1000 + Worker: + replicas: 3 + restartPolicy: OnFailure + template: + spec: + containers: + - name: tensorflow + image: dlrs-image + command: + - python + - -m + - trainer.task + - --batch_size=32 + - --training_steps=1000 + Master: + replicas: 1 + restartPolicy: OnFailure + template: + spec: + containers: + - name: tensorflow + image: dlrs-image + command: + - python + - -m + - trainer.task + - --batch_size=32 + - --training_steps=1000 + +For more information, please refer to: +* `Distributed TensorFlow`_ +* `TFJobs`_ + + +PyTorch Training (PyTorch Job) with Kubeflow and DLRS +***************************************************** + +A `PyTorch Job`_ is Kubeflow's custom resource used to run PyTorch training jobs on Kubernetes. This example builds on the framework set up in the previous example. + +Pre-requisites: + +* A running :ref:`kubernetes` cluster +* Please follow steps 1 - 5 of the previous example to set up your environment. + + +Submitting PyTorch Jobs +======================= + +We provide several `DLRS PytorchJob`_ examples that use the Deep Learning Reference Stack as the base image for creating the container(s) that will run training workloads in your Kubernetes cluster. +Select one form the list below: + + + + + +Using Kubeflow Seldon and OpenVINO* with the Deep Learning Reference Stack +************************************************************************** + +`Seldon Core`_ is an open source platform for deploying machine learning models on a Kubernetes cluster. Seldon Core is supported in the `DLRS V4.0`_ release. + +Pre-requisites +============== +* A running :ref:`kubernetes` cluster + +.. note:: + + Instead of using Arrikto's configuration manifest as shown in the preceeding example, you should use the manifest provided by `Istio`_, for this example, as Seldon deployments depend on it. + +#. Install deployment tools + + .. code-block:: bash + + INSTALL_DIR=$HOME/install_dir + BIN_DIR=${INSTALL_DIR}/bin + SRC_DIR=${INSTALL_DIR}/source + export PATH=${BIN_DIR}:$PATH + + mkdir -p ${BIN_DIR} && mkdir ${SRC_DIR} + cd ${SRC_DIR} + +#. Install Helm* + + .. code-block:: bash + + wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz && tar xf helm-v2.14.3-linux-amd64.tar.gz + mv linux-amd64/helm ${BIN_DIR}/helm + + +#. Clean the environment + + .. code-block:: bash + + rm -rf ${SRC_DIR}/* + +#. Prepare the DLRS image + + The DLRS base image needs to be rebuilt with the `Dockerfile_openvino_base`_ to add Seldon and the OpenVINO inference engine. + + .. code-block:: bash + + docker build -f Dockerfile_openvino_base -t dlrs_openvino_base:0.1 . + +#. Mount pre-trained models into a persistent volume + + This will also apply all PV manifests to the cluster + + .. code-block:: bash + + kubectl apply -f storage/pv-volume.yaml + kubectl apply -f storage/model-store-pvc.yaml + kubectl apply -f storage/pv-pod.yaml + +#. Start a shell for the container used as pv: + + .. code-block:: bash + + kubectl exec -it hostpath-pvc -- /bin/bash + +#. Save pre-trained models + + Now that you're inside the running container, fetch your pre-trained models and save them at `/opt/ml` + + .. code-block:: bash + + root@hostpath-pvc:/# cd /opt/ml + root@hostpath-pvc:/# # Copy your models here + root@hostpath-pvc:/# # exit + +#. Deploy the model server + + Now you're ready to deploy the model server using the Helm chart provided. + + .. code-block:: bash + + helm install -- name=seldonov-model-server \ + --namespace kubeflow \ + --set openvino.image=dlrs_openvino_base:0.1 \ + --set openvino.model.path=/opt/ml/ \ + --set openvino.model.name= \ + --set openvino.model.input=data \ + --set openvino.model.output=prob + dlrs-seldon/helm/seldon-model-server + + +Using the Intel® OpenVINO Model Optimizer +***************************************** + +The Intel OpenVINO toolkit has two primary tools for deep learning, the inference engine and the model optimizer. The inference engine is integrated into the Deep Learning Reference Stack. It is better to use the model optimizer after training the model, and before inference begins. This example will explain how to use the model optimizer by going through a test case with a pre-trained TensorFlow model. + +This example uses resources found in the following OpenVino Toolkit documentation. + +`Converting a TensorFlow Model`_ + +`Converting TensorFlow Object Detection API Models`_ + +In this example, you will: + +* Download a TensorFlow model +* Clone the Model Optimizer +* Install Prerequisites +* Run the Model Optimizer + +#. Download a TensorFlow model + + We will be using an OpenVINO supported topology with the Model Optimizer. We will use a TensorFlow Inception V2 frozen model. + + Navigate to the `OpenVINO TensorFlow Model page`_. Then scroll down to the second section titled "Supported Frozen Topologies from TensorFlow Object Detection Models Zoo" and download "SSD Inception V2 COCO." + + Unpack the file into your chosen working directory. For example, if the tar file is in your Downloads folder and you have navigated to the directory you want to extract it into, run: + + .. code-block:: bash + + tar -xvf ~/Downloads/ssd_inception_v2_coco_2018_01_28.tar.gz + + +#. Clone the Model Optimizer + + Next we need the model optimizer directory, named `dldt`_. This example assumes the parent directory is on the same level as the model directory, ie: + + .. code-block:: console + + +--Working_Directory + +-- ssd_inception_v2_coco_2018_01_28 + +-- dldt + + + To clone the Model Optimizer, run this from inside the working directory: + + .. code-block:: bash + + git clone https://github.com/opencv/dldt.git + + + If you explore the :file:`dldt` directory, you'll see both the inference engine and the model optimizer. We are only concerned with the model optimizer at this stage. Navigating into the model optimizer folder you'll find several python scripts and text files. These are the scripts you call to run the model optimizer. + + +#. Install Prerequisites for Model Optimizer + + Install the Python packages required to run the model optimizer by running the script dldt/model-optimizer/install_prerequisites/install_prerequisites_tf.sh. + + .. code-block:: bash + + cd dldt/model-optimizer/install_prerequisites/ + ./install_prerequisites_tf.sh + cd ../../.. + + + +#. Run the Model Optimizer + + Running the model optimizer is as simple as calling the appropriate script, however there are many configuration options that are explainedin the documentation + + .. code-block:: bash + + python dldt/model-optimizer/mo_tf.py \ + --input_model=ssd_inception_v2_coco_2018_01_28/frozen_inference_graph.pb \ + --tensorflow_use_custom_operations_config dldt/model-optimizer/extensions/front/tf/ssd_v2_support.json \ + --tensorflow_object_detection_api_pipeline_config ssd_inception_v2_coco_2018_01_28/pipeline.config \ + --reverse_input_channels + + + You should now see three files in your working directory, :file:`frozen_inference_graph.bin`, :file:`frozen_inference_graph.mapping`, and :file:`frozen_inference_graph.xml`. These are your new models in the Intermediate Representation (IR) format and they are ready for use in the OpenVINO Inference Engine. + +Using the OpenVino Inference Engine +*********************************** + +This example walks through the basic instructions for using the inference engine. + +#. Starting the Model Server + + The process is similar to how we start `Jupter notebooks` on our containers + + Run this command to spin up a OpenVino model fetched from GCP + + .. code-block:: bash + + docker run -p 8000:8000 stacks-tensorflow-mkl:latest bash -c ". /workspace/scripts/serve.sh && ie_serving model --model_name resnet --model_path gs://intelai_public_models/resnet_50_i8 --port 8000" + + + Once the server is setup, use a :command:`grpc` client to communicate with served model: + + .. code-block:: bash + + git clone https://github.com/IntelAI/OpenVINO-model-server.git + cd OpenVINO-model-server + pip install -q -r OpenVINO-model-server/example_client/client_requirements.txt + pip install --user -q -r OpenVINO-model-server/example_client/client_requirements.txt + cat OpenVINO-model-server/example_client/client_requirements.txt + cd OpenVINO-model-server/example_client + + python jpeg_classification.py --images_list input_images.txt --grpc_address localhost --grpc_port 8000 --input_name data --output_name prob --size 224 --model_name resnet + + + The results of these commands will look like this: + + .. code-block:: console + + start processing: + Model name: resnet + Images list file: input_images.txt + images/airliner.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0 + Processing time: 97.00 ms; speed 2.00 fps 10.35 + Detected: 404 Should be: 404 + images/arctic-fox.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0 + Processing time: 16.00 ms; speed 2.00 fps 63.89 + Detected: 279 Should be: 279 + images/bee.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0 + Processing time: 14.00 ms; speed 2.00 fps 69.82 + Detected: 309 Should be: 309 + images/golden_retriever.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0 + Processing time: 13.00 ms; speed 2.00 fps 75.22 + Detected: 207 Should be: 207 + images/gorilla.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0 + Processing time: 11.00 ms; speed 2.00 fps 87.24 + Detected: 366 Should be: 366 + images/magnetic_compass.jpeg (1, 3, 224, 224) ; data range: 0.0 : 247.0 + Processing time: 11.00 ms; speed 2.00 fps 91.07 + Detected: 635 Should be: 635 + images/peacock.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0 + Processing time: 9.00 ms; speed 2.00 fps 110.1 + Detected: 84 Should be: 84 + images/pelican.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0 + Processing time: 10.00 ms; speed 2.00 fps 103.63 + Detected: 144 Should be: 144 + images/snail.jpeg (1, 3, 224, 224) ; data range: 0.0 : 248.0 + Processing time: 10.00 ms; speed 2.00 fps 104.33 + Detected: 113 Should be: 113 + images/zebra.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0 + Processing time: 12.00 ms; speed 2.00 fps 83.04 + Detected: 340 Should be: 340 + Overall accuracy= 100.0 % + Average latency= 19.8 ms + + + +Use Jupyter Notebook +******************** + +This example uses the `PyTorch with OpenBLAS`_ container image. After it is +downloaded, run the Docker image with :command:`-p` to specify the shared port +between the container and the host. This example uses port 8888. + +.. code-block:: bash + + docker run --name pytorchtest --rm -i -t -p 8888:8888 clearlinux/stacks-pytorch-oss bash + +After you start the container, launch the Jupyter Notebook. This +command is executed inside the container image. + +.. code-block:: bash + + jupyter notebook --ip 0.0.0.0 --no-browser --allow-root + +After the notebook has loaded, you will see output similar to the following: + +.. code-block:: console + + To access the notebook, open this file in a browser: file:///.local/share/jupyter/runtime/nbserver-16-open.html + Or copy and paste one of these URLs: + http://(846e526765e3 or 127.0.0.1):8888/?token=6357dbd072bea7287c5f0b85d31d70df344f5d8843fbfa09 + +From your host system, or any system that can access the host's IP address, +start a web browser with the following. If you are not running the browser on +the host system, replace :command:`127.0.0.1` with the IP address of the host. + +.. code-block:: bash + + http://127.0.0.1:8888/?token=6357dbd072bea7287c5f0b85d31d70df344f5d8843fbfa09 + +Your browser displays the following: + +.. figure:: ../_figures/stacks/dlrs-fig-1.png + :scale: 50% + :alt: Jupyter Notebook + +Figure 1: :guilabel:`Jupyter Notebook` + + +To create a new notebook, click :guilabel:`New` and select :guilabel:`Python 3`. + +.. figure:: ../_figures/stacks/dlrs-fig-2.png + :scale: 50% + :alt: Create a new notebook + +Figure 2: Create a new notebook + +A new, blank notebook is displayed, with a cell ready for input. + +.. figure:: ../_figures/stacks/dlrs-fig-3.png + :scale: 50% + :alt: New blank notebook + + +To verify that PyTorch is working, copy the following snippet into the blank +cell, and run the cell. + +.. code-block:: console + + from __future__ import print_function + import torch + x = torch.rand(5, 3) + print(x) + +.. figure:: ../_figures/stacks/dlrs-fig-4.png + :scale: 50% + :alt: Sample code snippet + +When you run the cell, your output will look something like this: + +.. figure:: ../_figures/stacks/dlrs-fig-5.png + :scale: 50% + :alt: code output + +You can continue working in this notebook, or you can download existing +notebooks to take advantage of the Deep Learning Reference Stack's optimized +deep learning frameworks. Refer to `Jupyter Notebook`_ for details. + +Uninstallation +************** + +To uninstall the Deep Learning Reference Stack, you can choose to stop the +container so that it is not using system resources, or you can stop the +container and delete it to free storage space. + +To stop the container, execute the following from your host system: + +#. Find the container's ID + + .. code-block:: bash + + docker container ls + + This will result in output similar to the following: + + .. code-block:: console + + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + e131dc71d339 clearlinux/stacks-dlrs-oss "/bin/sh -c 'bash'" 23 seconds ago Up 21 seconds oss + +#. You can then use the ID or container name to stop the container. This example + uses the name "oss": + + .. code-block:: bash + + docker container stop oss + + +#. Verify that the container is not running + + .. code-block:: bash + + docker container ls + + +#. To delete the container from your system you need to know the Image ID: + + .. code-block:: bash + + docker images + + This command results in output similar to the following: + + .. code-block:: console + + REPOSITORY TAG IMAGE ID CREATED SIZE + clearlinux/stacks-dlrs-oss latest 82757ec1648a 4 weeks ago 3.43GB + clearlinux/stacks-dlrs-mkl latest 61c178102228 4 weeks ago 2.76GB + +#. To remove an image use the image ID: + + .. code-block:: bash + + docker rmi 82757ec1648a + + .. code-block:: console + + # docker rmi 827 + Untagged: clearlinux/stacks-dlrs-oss:latest + Untagged: clearlinux/stacks-dlrs-oss@sha256:381f4b604537b2cb7fb5b583a8a847a50c4ed776f8e677e2354932eb82f18898 + Deleted: sha256:82757ec1648a906c504e50e43df74ad5fc333deee043dbfe6559c86908fac15e + Deleted: sha256:e47ecc039d48409b1c62e5ba874921d7f640243a4c3115bb41b3e1009ecb48e4 + Deleted: sha256:50c212235d3c33a3c035e586ff14359d03895c7bc701bb5dfd62dbe0e91fb486 + + + Note that you can execute the :command:`docker rmi` command using only the first few characters of the image ID, provided they are unique on the system. + +#. Once you have removed the image, you can verify it has been deleted with: + + .. code-block:: bash + + docker images + +Compiling AIXPRT with OpenMP on DLRS +************************************ + +To compile AIXPRT for DLRS, you will have to get the community edition of AIXPRT and update the `compile_AIXPRT_source.sh` file.AIXPRT utilizes +build configuration files, so to build AIXPRT on the image, copy, the build files from the base image, this can be done by adding these commands +to the end of the stacks-tensorflow-mkl dockerfile: + + .. code-block:: console + + COPY --from=base /dldt/inference-engine/bin/intel64/Release/ /usr/local/lib/openvino/tools/ + COPY --from=base /dldt/ /dldt/ + COPY ./airxprt/ /workspace/aixprt/ + RUN ./aixprt/install_deps.sh + RUN ./aixprt/install_aixprt.sh + + +AIXPRT requires OpenCV. On |CL|, the OpenCV bundle also installs the DLDT components. To use AIXPRT in the DLRS environment you need to either remove the shared libraries for DLDT from :file:`/usr/lib64` before you run the tests, or ensure that the DLDT components in the :file:`/usr/local/lib` are being used for AIXPRT. This can be achieved using adding LD_LIBRARY_PATH environment variable before testing. + + .. code-block:: bash + + export LD_LIBRARY_PATH=/usr/local/lib + + +The updates to the AIXPRT community edition have been captured in the diff file :file:`compile_AIXPRT_source.sh.patch`. The core of these changes relate to the version of model files(2019_R1) we download from the `OpenCV open model zoo`_ and location of the build files, which in our case is `/dldt`. Please refer to the patch files and make changes as necessary to the compile_AIXPRT_source.sh file as required for your environment. + + +Related topics +************** + +* `DLRS V3.0`_ release announcement +* `TensorFlow Benchmarks`_ +* `PyTorch benchmarks`_ +* `Kubeflow`_ +* :ref:`kubernetes` tutorial +* `Jupyter Notebook`_ + +.. _TensorFlow: https://www.tensorflow.org/ + +.. _Kubeflow: https://www.kubeflow.org/ + +.. _Docker Hub: https://hub.docker.com/ + +.. _TensorFlow Benchmarks: https://www.tensorflow.org/guide/performance/benchmarks + +.. _PyTorch benchmarks: https://github.com/pytorch/pytorch/blob/master/caffe2/python/convnet_benchmarks.py + +.. _Creating a single control-plane cluster with kubeadm: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/ + +.. _flannel: https://github.com/coreos/flannel + +.. _Getting Started with Kubeflow: https://www.kubeflow.org/docs/started/getting-started/ + +.. _Eigen: https://hub.docker.com/r/clearlinux/stacks-dlrs-oss/ + +.. _Intel MKL-DNN: https://hub.docker.com/r/clearlinux/stacks-dlrs-mkl/ + +.. _PyTorch with OpenBLAS: https://hub.docker.com/r/clearlinux/stacks-pytorch-oss + +.. _PyTorch with Intel MKL-DNN: https://hub.docker.com/r/clearlinux/stacks-pytorch-mkl + +.. _Intel MKL-DNN-VNNI: https://hub.docker.com/r/clearlinux/stacks-dlrs-mkl-vnni + +.. _DLRS V3.0: https://clearlinux.org/stacks/deep-learning-reference-stack-v3 + +.. _DLRS V4.0: https://clearlinux.org/news-blogs/deep-learning-reference-stack-v4 + +.. _dlrs-tfjob: https://github.com/clearlinux/dockerfiles/tree/master/stacks/dlrs/kubeflow/dlrs-tfjob + +.. _Logging Architecture: https://kubernetes.io/docs/concepts/cluster-administration/logging/ + +.. _TensorFlow benchmark: https://clearlinux.org/stacks/deep-learning-reference-stack + +.. _PyTorch benchmark: https://clearlinux.org/stacks/deep-learning-reference-stack-pytorch + +.. _Jupyter Notebook: https://jupyter.org/ + +.. _Overview of kubectl: https://kubernetes.io/docs/reference/kubectl/overview/ + +.. _launcher.py: https://github.com/clearlinux/dockerfiles/tree/master/stacks/dlrs/kubeflow + +.. _DLRS Terms of Use: https://clearlinux.org/stacks/deep-learning/terms-of-use + +.. _DLRS Release notes: https://github.com/clearlinux/dockerfiles/blob/master/stacks/dlrs/releasenote.md + +.. _Seldon Core: https://docs.seldon.io/projects/seldon-core/en/latest/ + +.. _Istio: https://raw.githubusercontent.com/kubeflow/kubeflow/master/bootstrap/config/kfctl_k8s_istio.yaml + +.. _Dockerfile_openvino_base: https://github.com/clearlinux/dockerfiles/blob/master/stacks/dlrs/kubeflow/dlrs-seldon/docker/Dockerfile_openvino_base + +.. _TFJob: https://www.kubeflow.org/docs/components/tftraining + +.. _Arrikto: https://www.kubeflow.org/docs/started/k8s/kfctl-existing-arrikto/ + +.. _kfctl tarball: https://github.com/kubeflow/kubeflow/releases/download/v0.6.1/kfctl_v0.6.1_linux.tar.gz + +.. _MetalLB: https://metallb.universe.tf/ + +.. _Kubeflow documentation: https://www.kubeflow.org/docs/components/tftraining/#what-is-tfjob + +.. _Distributed TensorFlow: https://www.tensorflow.org/deploy/distributed +.. _TFJobs: https://www.kubeflow.org/docs/components/tftraining/ + +.. _Intel® quantization tools: https://github.com/IntelAI/tools/blob/master/tensorflow_quantization/README.md#quantization-tools + +.. _OpenCV open model zoo: https://github.com/opencv/open_model_zoo + +.. _PyTorch Job: https://www.kubeflow.org/docs/components/pytorch/ + +.. _Converting a TensorFlow Model: https://docs.openvinotoolkit.org/latest/_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_TensorFlow.html + +.. _Converting TensorFlow Object Detection API Models: https://docs.openvinotoolkit.org/latest/_docs_MO_DG_prepare_model_convert_model_tf_specific_Convert_Object_Detection_API_Models.html + +.. _OpenVINO TensorFlow Model page: https://docs.openvinotoolkit.org/latest/_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_TensorFlow.html + +.. _dldt: https://github.com/opencv/dldt + +.. _DLRS TFJob: https://github.com/clearlinux/dockerfiles/tree/master/stacks/dlrs/kubeflow/dlrs-tfjob + +.. _DLRS PytorchJob: https://github.com/clearlinux/dockerfiles/tree/master/stacks/dlrs/kubeflow/dlrs-pytorchjob diff --git a/zh_CN/_sources/tutorials/docker.rst.txt b/zh_CN/_sources/tutorials/docker.rst.txt new file mode 100644 index 000000000..d1868234b --- /dev/null +++ b/zh_CN/_sources/tutorials/docker.rst.txt @@ -0,0 +1,242 @@ +.. _docker: + +Docker\* +######### + +|CL-ATTR| supports multiple containerization platforms, including a Docker +solution. |CL| has many unique features including a minimal default +installation, which makes it compelling to use as a host for container +workloads, management, and orchestration. + +This tutorial covers: + +.. contents:: :local: + :depth: 1 + +.. note:: + + This tutorial focuses on the installaton of the Docker ecosystem. + If you want to use |CL| as a Docker container image, refer to the + official |CL| container image + `published on Docker* Hub `_ + and our guide to :ref:`custom-clear-container`. + +Prerequisites +************* + +This tutorial assumes you have installed |CL| on your host system. +For detailed instructions on installing |CL| on a bare metal system, follow +the :ref:`bare metal installation instructions`. + +Before you install any new packages, update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +Additionally, you should have: + +* A basic understanding of Linux\* and Docker. + +* |CL| environment that has transparent network access to the Internet. + If you are behind a HTTP proxy server, in a corporate setting for example, + please refer to the `Docker proxy instructions`_ . + +Install the containers-basic bundle +*********************************** + +Software in |CL| is offered in the form of :ref:`bundles` to provide a +complete function. The *containers-basic* provides all the required software +packages to run Docker images as containers. + +#. First, install the *containers-basic* bundle by running this + :command:`swupd` command: + + .. code-block:: bash + + sudo swupd bundle-add containers-basic + +#. Start the Docker daemon through systemd manager by running this command: + + .. code-block:: bash + + sudo systemctl start docker + + If you want Docker to start automatically on boot, enable the + systemd service by running this command: + + .. code-block:: bash + + sudo systemctl enable docker + +#. Finally, verify :command:`docker` has been installed by running this + command and checking the version output for both *client* and *server*: + + .. code-block:: bash + + sudo docker version + +Congratulations! At this point, you have a working installation of Docker +on |CL|. You are ready to start using container images on your system. + +Integration with Kata Containers\* (optional) +********************************************* + +`Kata Containers`_, is an open source project aiming to increase security +of containers by using a hardware-backed virtual machine container runtime +rather than software namespace containers that are provided by the standard +Docker *runc* runtime. + +|CL| provides easy integration of the *kata-runtime* with Docker. +More information on installing and using the *kata-runtime* may be found at :ref:`kata`. + + +.. note:: + + The remaining sections of this tutorial are standard to Docker setup + and configuration. If you are familiar with Docker basics, you do not + need to continue reading. The following sections are provided here for + sake of completeness. + +.. _additional-docker-configuration: + +Additional Docker configuration +******************************* + +Perform additional Docker daemon configuration via a configuration file +typically located at :file:`/etc/docker/daemon.json`. |CL| features a +:ref:`stateless` system so the configuration file :file:`daemon.json` does +*NOT* exist by default. + +#. Create the :file:`daemon.json` by running this command: + + .. code-block:: bash + + sudo touch /etc/docker/daemon.json + + .. note:: + + Refer to the `Docker documentation on daemon configuration`_ for the + full list of available configuration options and examples. + +#. For production systems, we follow Docker's recommendation to use the + `OverlayFS storage driver`_ `overlay2`, shown below: + + .. code-block:: json + + { + "storage-driver": "overlay2" + } + + .. note:: + + A testing version is found in `Docker Device Mapper storage driver`_. + If using this storage driver, a warning message may appear: "usage of + loopback devices is strongly discouraged for production use". + +#. Save and close :file:`daemon.json`. + +#. Once you've made any required changes, be sure to restart the + Docker daemon through systemd manager by running this command: + + .. code-block:: bash + + sudo systemctl restart docker + +Pulling and running an image from Docker Hub +******************************************** + +`Docker Hub`_ is a publically available container image repository which +comes pre-configured with Docker. In the example below we will pull and run +an the official Docker image for nginx\*, an open source reverse proxy server. + +#. First, pull a container image from Docker Hub using the + :command:`docker pull` command. Download the latest nginx\* Docker + container image by running this command: + + .. code-block:: bash + + sudo docker pull nginx + +#. Create and launch a new container using the :command:`docker run` + command. Launch a nginx container by running this command: + + .. code-block:: bash + + sudo docker run --name test-nginx -d -p 8080:80 nginx + + .. note:: + + Below is an explanation of switches used in the command above. For + detailed :command:`docker run` switches and syntax, refer to the + `Docker Documentation`_ . + + * The *--name* switch lets you provide a friendly name to + target the container for future operations + + * The *-d* switch launches the container in the background + + * The *-p* switch allows the container's HTTP port (80) to be + accessible from the |CL| host on port 8080 + +#. You can access the Welcome to Nginx! splash page running in the container + by browsing to \http://127.0.0.1:8080 or by running this :command:`curl` + command from your |CL| machine: + + .. code-block:: bash + + curl 127.0.0.1:8080 + +#. Finally, stop and delete the nginx container by running the + :command:`docker stop` and :command:`docker rm` commands. + + .. code-block:: bash + + sudo docker stop test-nginx + sudo docker rm test-nginx + +Congratulations! At this point, you have successfully pulled a nginx +container image from `Docker Hub`_ and have run an example container. + +Creating a Docker swarm cluster +******************************* + +Clusters of Docker hosts are referred to as *swarms*. + +The process in this tutorial can be repeated to install Docker on multiple +|CL| hosts with the intent to form a Docker swarm cluster. + +The `Docker documentation on swarm key concepts`_ and +`Docker documentation on creating a swarm`_ can be referenced +for further instructions on setting up a swarm. + +Related topics +************** + +* `Docker Home`_ +* `Docker Documentation`_ +* `Docker Hub`_ +* `Kata Containers`_ + + +.. _Docker proxy instructions: https://docs.docker.com/config/daemon/systemd/#httphttps-proxy + +.. _Docker documentation on daemon configuration: https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file + +.. _Kata Containers: https://katacontainers.io/ + +.. _Docker Home: https://www.docker.com/ + +.. _Docker Documentation: https://docs.docker.com/ + +.. _Docker Hub: https://hub.docker.com/ + +.. _Docker documentation on swarm key concepts: https://docs.docker.com/engine/swarm/key-concepts/ + +.. _Docker documentation on creating a swarm: https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/ + +.. _Configure direct lvm mode for production: https://docs.docker.com/storage/storagedriver/device-mapper-driver/ + +.. _OverlayFS storage driver: https://docs.docker.com/storage/storagedriver/overlayfs-driver/ + +.. _Docker Device Mapper storage driver: https://docs.docker.com/storage/storagedriver/device-mapper-driver/ \ No newline at end of file diff --git a/zh_CN/_sources/tutorials/flatpak.rst.txt b/zh_CN/_sources/tutorials/flatpak.rst.txt new file mode 100644 index 000000000..8cf313313 --- /dev/null +++ b/zh_CN/_sources/tutorials/flatpak.rst.txt @@ -0,0 +1,128 @@ +.. _flatpak-tutorial: + +Flatpak\* +######### + +`Flatpak`_ is a framework for building and distributing desktop apps on +Linux\*. It allows you to build a single app and install it on different +distributions of Linux. Flatpak apps are available through `Flathub`_ or the +`Clear Linux Store`_. + +This tutorial shows how to install a Flatpak app on |CL| using Gnome\* Software +and the command line. + +Prerequisites +************* + +* |CL| installed on host system + + Refer to :ref:`Get started ` for installation instructions. + +* `desktop-autostart` bundle installed + + Flatpak is included via `desktop`, which is included in the + `desktop-autostart` bundle. The Flathub repository is pre-configured when + the `desktop-autostart` bundle is installed. + + Install the `desktop-autostart` bundle with the following command: + + .. code-block:: bash + + sudo swupd bundle-add desktop-autostart + +Install a Flatpak app with Gnome Software +***************************************** + +|CL| desktop comes with `Gnome Software` installed. Flatpak apps can be +installed from within `Gnome Software`. + +#. Launch `Gnome Software` from your desktop. + +#. Search for the Flatpak app that you want to install, as shown in Figure 1. + + .. figure:: /_figures/flatpak/flatpak-01.png + :scale: 50% + :alt: Searching for Filezilla app in Gnome Software + + Figure 1: Searching for Filezilla app in Gnome Software + +#. When you find the app you want to install, click it to view application + details. + +#. On the app detail page, click the :guilabel:`Install` button, as shown in + Figure 2. + + .. figure:: /_figures/flatpak/flatpak-02.png + :scale: 50% + :alt: Filezilla Flatpak detail page in Gnome Software + + Figure 2: Filezilla Flatpak detail page in Gnome Software + +#. After installation is complete, you will see the new application in your + Gnome applications list, as shown in Figure 3. + + .. figure:: /_figures/flatpak/flatpak-03.png + :scale: 50% + :alt: Newly installed Filezilla application + + Figure 3: Newly installed Filezilla application + +#. Click the application icon to launch the application. + +Install a Flatpak with the command line +*************************************** + +Both Flathub and the Clear Linux Store provide the command line instructions for +installing a Flatpak. Figure 4 shows the command line instructions to install +Filezilla from the Clear Linux Store: + +.. figure:: /_figures/flatpak/flatpak-04.png + :scale: 50% + :alt: Command line instructions to install Filezilla from the Clear Linux Store + + Figure 4: Command line instructions to install Filezilla from the Clear Linux Store + +In this example, we install Filezilla. + +#. Open a terminal and enter the install command for the desired app: + + .. code-block:: bash + + flatpak install flathub org.filezillaproject.Filezilla + + You may be prompted to select which repository to use: + + .. code-block:: bash + + Looking for matches… + Remote ‘flathub’ found in multiple installations: + + 1) system + 2) user + + Which do you want to use (0 to abort)? [0-2]: 2 + + org.filezillaproject.Filezilla permissions: + ipc network ssh-auth wayland x11 + dri file access [1] dbus access [2] + + [1] host, xdg-run/dconf, ~/.config/dconf:ro + [2] ca.desrt.dconf, org.freedesktop.Notifications, org.freedesktop.PowerManagement, + org.gnome.SessionManager + + + ID Arch Branch Remote Download + 1. [✓] org.filezillaproject.Filezilla x86_64 stable flathub 11.5 MB / 11.5 MB + 2. [✓] org.filezillaproject.Filezilla.Locale x86_64 stable flathub 4.6 kB / 3.8 MB + + Installation complete. + +#. After installation, run the application with the following command: + + .. code-block:: bash + + flatpak run org.filezillaproject.Filezilla + +.. _Flatpak: https://flatpak.org +.. _Flathub: https://flathub.org +.. _Clear Linux Store: https://clearlinux.org/software diff --git a/zh_CN/_sources/tutorials/fmv.rst.txt b/zh_CN/_sources/tutorials/fmv.rst.txt new file mode 100644 index 000000000..9b2853f07 --- /dev/null +++ b/zh_CN/_sources/tutorials/fmv.rst.txt @@ -0,0 +1,273 @@ +.. _fmv: + +Function multi-versioning +######################### + +CPU architectures often gain interesting new instructions as they evolve but +application developers find it difficult to take advantage of those +instructions. The reluctance to lose backward-compatibility is one of the +main roadblocks slowing developers from using advancements in newer computing +architectures. :abbr:`FMV (Function Multi-Versioning)`, which first appeared +in `GCC`_ 4.8, is a way to have multiple implementations of a function, each +using a different architecture specialized instruction-set extensions. GCC +6 introduces changes to FMV to make it even easier to bring architecture- +based optimizations to the application code. + +In this tutorial we will use FMV on general code and on +:abbr:`FFT (Fast Fourier Transform)` library code (FFTW). Upon completing the +tutorial, you will be able to use this technology on your code and use the +libraries to deploy architecture-based optimizations to your application code. + +Install and configure a |CL| host on bare metal +*********************************************** +First, follow our guide to :ref:`bare-metal-install-desktop`. Once the bare +metal installation and initial configuration are complete, add the +`desktop-dev` bundle to the system. `desktop-dev`: contains the necessary +development tools like GCC and Perl\*. + +To install the bundles, run the following command in the :file:`$HOME` +directory: + +.. code-block:: bash + + sudo swupd bundle-add desktop-dev + +Detect loop vectorization candidates +************************************ + +Now, we need to detect the loop vectorization candidates to be cloned for +multiple platforms with FMV. As an example, we will use the following +simple C code: + +.. code-block:: c + :linenos: + + #include + #include + #include + #define MAX 1000000 + + int a[256], b[256], c[256]; + + void foo(){ + int i,x; + for (x=0; x log + +To generate the patch files, execute: + +.. code-block:: bash + + perl ./make-fmv-patch/make-fmv-patch.pl log . + +The :file:`make-fmv-patch.pl` script takes two arguments: `` and +``. Replace `` and `` with the proper +values and execute: + +.. code-block:: bash + + perl make-fmv-patch.pl + +The command generates the following :file:`example.c.patch` patch: + +.. code-block:: console + + --- ./example.c 2017-09-27 16:05:42.279505430 +0000 + +++ ./example.c~ 2017-09-27 16:19:11.691544026 +0000 + @@ -5,6 +5,7 @@ + + int a[256], b[256], c[256]; + + +__attribute__((target_clones("avx2","arch=atom","default"))) + void foo(){ + int i,x; + for (x=0; x + #include + #include + #define MAX 1000000 + + int a[256], b[256], c[256]; + + __attribute__((target_clones("avx2","arch=atom","default"))) + void foo(){ + int i,x; + for (x=0; x y) ? x : y; } + + +__attribute__((target_clones("avx2","arch=atom","default"))) + static double aerror(C *a, C *b, int n) + { + if (n > 0) { + @@ -111,6 +112,7 @@ + } + + /* make array hermitian */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void mkhermitian(C *A, int rank, const bench_iodim *dim, int stride) + { + if (rank == 0) + @@ -148,6 +150,7 @@ + } + + /* C = A + B */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void aadd(C *c, C *a, C *b, int n) + { + int i; + @@ -159,6 +162,7 @@ + } + + /* C = A - B */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void asub(C *c, C *a, C *b, int n) + { + int i; + @@ -170,6 +174,7 @@ + } + + /* B = rotate left A (complex) */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void arol(C *b, C *a, int n, int nb, int na) + { + int i, ib, ia; + @@ -192,6 +197,7 @@ + } + } + +With these patches, we can select where to apply the FMV technology making +bringing architecture-based optimizations to application code even easier. + +**Congratulations!** + +You have successfully installed an FMV development environment on |CL|. +Furthermore, you used cutting edge compiler technology to improve the +performance of your application based on Intel Architecture technology and +profiling of the specific execution of your application. + +.. _GCC: https://gcc.gnu.org +.. _make-fmv-patch: https://github.com/clearlinux/make-fmv-patch diff --git a/zh_CN/_sources/tutorials/index.rst.txt b/zh_CN/_sources/tutorials/index.rst.txt new file mode 100644 index 000000000..7ec9665a0 --- /dev/null +++ b/zh_CN/_sources/tutorials/index.rst.txt @@ -0,0 +1,23 @@ +.. _tutorials: + +Tutorials +######### + +Explore our tutorials to discover what you can do with |CL|! + +.. toctree:: + :maxdepth: 1 + :glob: + + * + +Archive +******* + +Older tutorials that may still be relevant to some users. + +.. toctree:: + :maxdepth: 1 + :glob: + + archive/* \ No newline at end of file diff --git a/zh_CN/_sources/tutorials/kata.rst.txt b/zh_CN/_sources/tutorials/kata.rst.txt new file mode 100644 index 000000000..23c8eb4ab --- /dev/null +++ b/zh_CN/_sources/tutorials/kata.rst.txt @@ -0,0 +1,125 @@ + .. _kata: + +Kata Containers\* +################# + +This tutorial describes how to install, configure, and run `Kata Containers`_ +on |CL-ATTR|. + +.. contents:: + :local: + :depth: 1 + +Description +*********** + +Kata Containers is an open source project developing a lightweight +implementation of :abbr:`VMs (Virtual Machines)` that offer the speed of +containers and the security of VMs. + +Prerequisites +************* + +This tutorial assumes you have installed |CL| on your host system. +For detailed instructions on installing |CL| on a bare metal system, follow +the :ref:`bare metal installation tutorial`. + +If you have Clear Containers installed on your |CL| system, then follow the +:ref:`migrate Clear Containers to Kata Containers tutorial`. + +Before you install any new packages, update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +Install Kata Containers +*********************** + +Kata Containers is included in the :file:`containers-virt` bundle. +To install the framework, enter the following command: + +.. code-block:: bash + + sudo swupd bundle-add containers-virt + +Restart the Docker\* and Kata Containers systemd services. + +.. code-block:: bash + + sudo systemctl daemon-reload + sudo systemctl restart docker + +Run Kata Containers +******************* + +.. code-block:: bash + + sudo docker run -ti busybox sh + +.. note:: + + If you use a proxy server and your proxy environment variables are already + set, run the following commands as a shell script to configure Docker: + + .. code-block:: bash + + docker_service_dir="/etc/systemd/system/docker.service.d/" + sudo mkdir -p "$docker_service_dir" + cat <`. +Learn about the benefits of having an up-to-date system for cloud +orchestration on the :ref:`swupd-guide` page. + +Before you install any new packages, update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +Install Kubernetes and CRI runtimes +*********************************** + +Kubernetes, a set of supported :abbr:`CRI (Container Runtime Interface)` +runtimes, and networking plugins, are included in the `cloud-native-basic`_ +bundle. + +To install this framework, enter the following command: + +.. code-block:: bash + + sudo swupd bundle-add cloud-native-basic + +.. note:: + + For more on networking plugins, see `Install pod network add-on`_. + +Configure Kubernetes +******************** + +This tutorial uses the basic default Kubernetes configuration for simplicity. +You must define your Kubernetes configuration according to your specific +deployment and your security needs. + +#. Enable IP forwarding to avoid kubeadm `preflight check`_ errors: + + Create (or edit if it exists) the file :file:`/etc/sysctl.d/60-k8s.conf` + and include the following line: + + .. code-block:: bash + + net.ipv4.ip_forward = 1 + + Apply the change: + + .. code-block:: bash + + sudo systemctl restart systemd-sysctl + +#. Enable the kubelet service: + + .. code-block:: bash + + sudo systemctl enable kubelet.service + +#. Disable swap using one of the following methods, either: + + a) Temporarily: + + .. code-block:: bash + + sudo swapoff -a + + .. note:: + + Swap will be enabled at next reboot, causing failures in + your cluster. + + or: + + b) Permanently: + + Mask the swap partition: + + .. code-block:: bash + + sudo systemctl mask $(sed -n -e 's#^/dev/\([0-9a-z]*\).*#dev-\1.swap#p' /proc/swaps) 2>/dev/null + sudo swapoff -a + + .. note:: + + On systems with limited resources, some performance degradation may + be observed while swap is disabled. + +#. Switch to root to modify the `hosts` file: + + .. code-block:: bash + + sudo -s + +#. Create (or edit if it exists) the hosts file that Kubernetes will read to + locate the master's host: + + .. code-block:: bash + + echo "127.0.0.1 localhost `hostname`" >> /etc/hosts + +#. Exit root: + + .. code-block:: bash + + exit + +Configure and run Kubernetes +**************************** + +This section describes how to configure and run Kubernetes with CRI-O and +kata-runtime. + +Configure and run CRI-O + kata-runtime +====================================== + +#. Enable the CRI-O service: + + .. code-block:: bash + + sudo systemctl enable crio.service + +#. Enter the commands: + + .. code-block:: bash + + sudo systemctl daemon-reload + sudo systemctl restart crio + +#. Initialize the master control plane with the command below and follow the + displayed instructions to set up `kubectl`: + + .. code-block:: bash + + sudo kubeadm init --cri-socket=/run/crio/crio.sock + +#. Register kata-runtime as a RuntimeClass handler: + + .. code-block:: bash + + cat << EOF | kubectl apply -f - + kind: RuntimeClass + apiVersion: node.k8s.io/v1beta1 + metadata: + name: native + handler: runc + --- + kind: RuntimeClass + apiVersion: node.k8s.io/v1beta1 + metadata: + name: kata-containers + handler: kata + EOF + +Install pod network add-on +************************** + +You must choose and install a `pod network add-on`_ to allow your pods to +communicate. Check whether or not your add-on requires special flags when you +initialize the master control plane. + +**Notes about flannel add-on** + +If you choose the `flannel` add-on, then you must add the following to the +`kubeadm init` command: + +.. code-block:: bash + + --pod-network-cidr 10.244.0.0/16 + +Furthermore, if you are using CRI-O and `flannel` and you want to use +Kata Containers, edit the :file:`/etc/crio/crio.conf` file to add: + +.. code-block:: bash + + [crio.runtime] + manage_network_ns_lifecycle = true + +Use your cluster +**************** + +Once your master control plane is successfully initialized, instructions on +how to use your cluster and its *IP*, *token*, and *hash* values are +displayed. It is important that you record the cluster values because they +are needed when joining worker nodes to the cluster. Some values have a valid +period. The values are presented in a format similar to: + +.. code-block:: bash + + kubeadm join : --token --discovery-token-ca-cert-hash + +**Congratulations!** + +You've successfully installed and set up Kubernetes in |CL| using CRI-O and +kata-runtime. You are now ready to follow on-screen instructions to deploy a +pod network to the cluster and join worker nodes with the displayed token +and IP information. + +Related topics +************** + +Read the Kubernetes documentation to learn more about: + +* Deploying Kubernetes with a `cloud-native-setup`_ + +* :ref:`Kubernetes best practices ` + +* `Understanding basic Kubernetes architecture`_ + +* `Deploying an application to your cluster`_ + +* Installing a `pod network add-on`_ + +* `Joining your nodes`_ + +Cloud native setup automation +***************************** + +Optional: Clone the `cloud-native-setup`_ repository on your system and +follow the instructions. This repository includes helper scripts to automate +configuration. + +Package configuration customization (optional) +********************************************** + +|CL| is a stateless system that looks for user-defined package configuration +files in the :file:`/etc/` directory to be used as default. If +user-defined files are not found, |CL| uses the distribution-provided +configuration files for each package. + +If you customize any of the default package configuration files, you **must** +store the customized files in the :file:`/etc/` directory. If you edit any of +the distribution-provided default files, your changes will be lost in the +next system update. + +For example, to customize CRI-O configuration in your system, run the +following commands: + +.. code-block:: bash + + sudo mkdir /etc/crio + sudo cp /usr/share/defaults/crio/crio.conf /etc/crio/ + sudo $EDITOR /etc/crio/crio.conf + +Learn more about :ref:`stateless` in |CL|. + +Proxy configuration (optional) +****************************** + +If you use a proxy server, you must set your proxy environment variables and +create an appropriate proxy configuration file for both CRI-O services. Consult +your IT department if you are behind a corporate proxy for the appropriate +values. Ensure that your local IP is **explicitly included** in the environment +variable *NO_PROXY*. (Setting *localhost* is not enough.) + +If you have already set your proxy environment variables, run the following +commands as a shell script to configure all of these services in one step: + +.. code-block:: bash + + services=('crio') + for s in "${services[@]}"; do + sudo mkdir -p "/etc/systemd/system/${s}.service.d/" + cat << EOF | sudo tee "/etc/systemd/system/${s}.service.d/proxy.conf" + [Service] + Environment="HTTP_PROXY=${http_proxy}" + Environment="HTTPS_PROXY=${https_proxy}" + Environment="SOCKS_PROXY=${socks_proxy}" + Environment="NO_PROXY=${no_proxy}" + EOF + done + +Troubleshooting +*************** + +* not found in message. + + Your DNS server may not be appropriately configured. Try adding an + entry to the :file:`/etc/hosts` file with your host's IP and Name. + + For example: 100.200.50.20 myhost + + Use the commands :command:`hostname` and :command:`hostname -I` + to retrieve them. + +* Images cannot be pulled. + + You may be behind a proxy server. Try configuring your proxy settings, + using the environment variables *HTTP_PROXY*, *HTTPS_PROXY*, and *NO_PROXY* + as required in your environment. + +* Connection refused error. + + If you are behind a proxy server, you may need to add the master's IP to + the environment variable *NO_PROXY*. + +* Connection timed-out or Access Refused errors. + + You must ensure that the appropriate proxy settings are available from the + same terminal where you will initialize the control plane. To verify the + proxy settings that Kubernetes will actually use, run the commands: + + .. code-block:: bash + + echo $HTTP_PROXY + echo $HTTPS_PROXY + echo $NO_PROXY + + If the displayed proxy values are different from your assigned values, the + cluster initialization will fail. Contact your IT support team to learn how + to set the proxy variables permanently, and how to make them available for + all the types of access that you will use, such as remote SSH access. + + If the result of the above commands is blank, you may need to add a + ``profile`` to the :file:`/etc` directory. To do so, follow these steps. + + #. Create a `profile` in :file:`/etc` + + .. code-block:: bash + + sudo touch profile + + #. With your preferred editor, open `profile`, and enter your proxy settings. + An example is shown below. + + .. code-block:: bash + + export "HTTP_PROXY=http://proxy.example.com:443" + export "HTTPS_PROXY=http://proxy.example.com:445" + export "SOCKS_PROXY=http://proxy.example.com:1080" + export "NO_PROXY= site.com,.site.com,localhost,127.0.0.1, + + .. note:: + + can be obtained by running :command:`ifconfig`. + + #. Save and exit the `profile`. + + #. Update your system's environment settings by executing the following + command: + + .. code-block:: bash + + sudo source profile + + #. To ensure your system isn't running previous session variables, run: + + .. code-block:: bash + + sudo kubeadm reset --cri-socket=/run/crio/crio.sock + + #. Continue below while passing `-E` in the command as shown. + +* Missing environment variables. + + If you are behind a proxy server, pass environment variables by adding *-E* + to the command that initializes the master control plane. + + .. code-block:: bash + + /* Kubernetes with CRI-O + kata-runtime */ + sudo -E kubeadm init --cri-socket=/run/crio/crio.sock + + + +.. _Kubernetes container orchestration system: https://kubernetes.io/ + +.. _Kata Containers: https://katacontainers.io/ + +.. _cloud-native-basic: https://github.com/clearlinux/clr-bundles/blob/master/bundles/cloud-native-basic + +.. _preflight check: https://kubernetes.io/docs/reference/setup-tools/kubeadm/implementation-details/#preflight-checks + +.. _Understanding basic Kubernetes architecture: https://kubernetes.io/docs/user-journeys/users/application-developer/foundational/#section-3 + +.. _Deploying an application to your cluster: https://kubernetes.io/docs/user-journeys/users/application-developer/foundational/#section-2 + +.. _pod network add-on: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network + +.. _Joining your nodes: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#join-nodes + +.. _cloud-native-setup: https://github.com/clearlinux/cloud-native-setup/tree/master/clr-k8s-examples diff --git a/zh_CN/_sources/tutorials/nvidia-cuda.rst.txt b/zh_CN/_sources/tutorials/nvidia-cuda.rst.txt new file mode 100644 index 000000000..ef16d3042 --- /dev/null +++ b/zh_CN/_sources/tutorials/nvidia-cuda.rst.txt @@ -0,0 +1,276 @@ +.. _nvidia-cuda: + +NVIDIA\* CUDA Toolkit +##################### + +NVIDIA is a manufacturer of graphics processing units (GPU), also known as +graphics cards. + +CUDA is a parallel computing platform and application programming interface +model created by NVIDIA. It allows software developers and software engineers +to use a CUDA-enabled graphics processing unit + +These instructions show how to install the CUDA Toolkit on |CL| after the +:ref:`proprietary NVIDIA drivers ` have been installed. + +.. note:: + + Software installed outside of :ref:`swupd ` is not updated with |CL| + updates and must be updated and maintained manually. + + + +.. contents:: :local: + :depth: 2 + + + +Prerequisites +************* + +* A |CL| system with a `CUDA-Enabled NVIDIA device `_ +* The :ref:`proprietary NVIDIA drivers ` have been installed. + + + + +Compatibility +************* + +Check compatibility of NVIDIA components +======================================== + +To install the appropriate NVIDIA CUDA Toolkit version, it is important to +understand the compute capability and compatible driver versions of your +NVIDIA hardware. + +Information about NVIDIA compute capability, driver, and toolkit compatibility +can be found at: https://developer.nvidia.com/cuda-gpus and +https://docs.nvidia.com/deploy/cuda-compatibility/ + + + +Check GCC compatibility +======================= + +.. note:: + + This is only required for the development or compilation of CUDA + applications. It is not required to run pre-built applications that have a + dependency on CUDA. + +From the NVIDIA documentation: + + The CUDA development environment relies on tight integration with the host + development environment, including the host compiler and C runtime + libraries, and is therefore only supported on distribution versions that + have been qualified for this CUDA Toolkit release. + +Refer to the `NVIDIA documentation on CUDA system requirements +`_ +for the latest kernel and compiler compatibility. + +For example, CUDA 10.1 on a system with the latest Linux kernel requires GCC7, +which is older than the default GCC version for |CL|. + +Install the compatible version of GCC, if required: + +#. Install the :ref:`bundle ` with the appropriate GCC version. + + .. code:: bash + + sudo swupd bundle-add c-extras-gcc7 + +#. Create the directory :file:`/usr/local/cuda/bin`: + + .. code:: bash + + sudo mkdir -p /usr/local/cuda/bin + + +#. Add symlinks to the older GCC version in the + :file:`/usr/local/cuda/bin` directory. This will cause the older version of + GCC to be used when :file:`/usr/local/cuda/bin` is in the $PATH environment + variable. + + .. code:: bash + + sudo ln -s /usr/bin/gcc7 /usr/local/cuda/bin/gcc + sudo ln -s /usr/bin/g++7 /usr/local/cuda/bin/g++ + + +Downloading and Installation +**************************** + + +Download the NVIDIA CUDA Toolkit +================================ + +#. Go to the `NVIDIA CUDA downloads website`_ to get the latest CUDA Toolkit. + If an older version of the CUDA Toolkit is required, go to the `CUDA + Toolkit Archive `_. + + Choose the following settings and click *Download*. + + - Operating System: *Linux* + - Architecture: *x86_64* + - Distribution: *any* + - Version: *any* + - Installer Type: *runfile(local)* + + + +#. Open a terminal and navigate to where the + :file:`cuda__linux.run` file was saved. In this + example, it was saved in the Downloads folder. + + .. code-block:: bash + + cd ~/Downloads/ + +#. Make the :file:`cuda__linux.run` file executable: + + .. code-block:: bash + + chmod +x cuda__linux.run + + + +Install the NVIDIA CUDA Toolkit +=============================== + +The NVIDIA CUDA installer will be directed to install files under +:file:`/opt/cuda` as much as possible to keep its contents isolated from the +rest of the |CL| files under :file:`/usr`. + +The CUDA installer automatically creates a symbolic link that allows the CUDA +Toolkit to be accessed from :file:`/usr/local/cuda` regardless of where it was +installed. + + +#. Configure the dynamic linker to look for and cache shared libraries under + :file:`/opt/cuda/lib64` where the NVIDIA installer will place libraries. + + .. code-block:: bash + + sudo mkdir -p /etc/ld.so.conf.d + echo "include /etc/ld.so.conf.d/*.conf" | sudo tee --append /etc/ld.so.conf + + + The CUDA installer will automatically create a file + :file:`/etc/ld.so.conf.d/cuda-.conf` + +#. Navigate into the directory where the NVIDIA installer was downloaded: + + .. code-block:: bash + + cd ~/Downloads/ + + +#. Run the installer with the advanced options below: + + .. code-block:: bash + + sudo ./cuda__linux.run \ + --toolkit \ + --samples \ + --installpath=/opt/cuda \ + --no-man-page \ + --override \ + --silent + +#. Validate the CUDA Toolkit was installed by checking the NVIDIA CUDA + compiler version: + + .. code-block:: bash + + /usr/local/cuda/bin/nvcc --version + + +The CUDA Toolkit is now installed and can be used to compile and run CUDA +applications. + + +Using the NVIDIA CUDA Toolkit +***************************** + +#. Verify that the NVIDIA device characters files /dev/nvidia* exist and have + the correct (0666) file permissions. The character devices should be + automatically created on system with the NVIDIA driver loaded through X + server, but will not be on systems that do not automatically load the + NVIDIA driver. + + .. code:: + + ls -l /dev/nvidia* + + +#. If your system does not have the NVIDIA character devices created + automatically, run the `script from NVIDIA documentation + `_ + with root privileges. + + + Alternatively a setuid utility, :command:`nvidia-modprobe`, can be compiled + and installed to automatically create the device character files on-demand. + + + .. code:: + + wget https://download.nvidia.com/XFree86/nvidia-modprobe/nvidia-modprobe-.tar.bz2 + tar -xvf nvidia-modprobe-.tar.bz2 + cd nvidia-modprobe-/ + make + sudo make install PREFIX=/usr/local/cuda/ + + +#. When the CUDA toolkit is needed, export PATH variables pointing to the CUDA + directories. This will temporarily add CUDA files to the PATH and use the + specified linked version of GCC for the terminal session. + + .. code:: bash + + export PATH=/usr/local/cuda/bin:$PATH + export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH + + +Source code for CUDA sample located at +:file:`/usr/local/cuda/NVIDIA_CUDA-_Samples`. See the `CUDA +documentation on compiling samples +`_ +to learn more. + + +Uninstalling +************ + +The NVIDIA drivers and associated software can be uninstalled and nouveau +driver restored by: + +#. Run the :command:`sudo /usr/local/cuda/bin/cuda-uninstaller`. + +#. Follow the prompts on the screen and reboot the system. + + +Debugging +********* + +* The NVIDIA CUDA installer places logs under + :file:`/tmp/cuda-installer.log`. + + +Additional resources +******************** +* `NVIDIA CUDA Toolkit Documentation `_ + +* `Why aren't the NVIDIA Linux drivers open source? `_ + +* `Where can I get support for NVIDIA Linux drivers? `_ + +* `NVIDIA Accelerated Linux Graphics Driver Installation Guides `_ + +.. _`nouveau project`: https://nouveau.freedesktop.org/wiki/ + +.. _`NVIDIA CUDA downloads website`: https://developer.nvidia.com/cuda-downloads + + diff --git a/zh_CN/_sources/tutorials/nvidia.rst.txt b/zh_CN/_sources/tutorials/nvidia.rst.txt new file mode 100644 index 000000000..3ca526945 --- /dev/null +++ b/zh_CN/_sources/tutorials/nvidia.rst.txt @@ -0,0 +1,292 @@ +.. _nvidia: + +NVIDIA\* Drivers +################ + +NVIDIA manufactures graphics processing units (GPU), also known as +graphics cards. + +NVIDIA devices on Linux\* have two popular device driver options: the +opensource drivers from the `nouveau project`_ or the proprietary drivers +published by NVIDIA. The nouveau drivers are built into the |CL-ATTR| +kernel and are loaded automatically at system boot if a compatible card +is detected. + +These instructions show how to use the proprietary NVIDIA drivers, which +require a manual installation. + +.. warning:: + + Software installed outside of :ref:`swupd ` is not updated + with |CL| updates and must be updated and maintained manually. + + For example, the file :file:`/usr/lib/libGL.so` conflicts with the file + provided by the mesa package in |CL| and the file NVIDIA provides. If a |CL| + update overwrites these files, a reinstallation of the NVIDIA driver might + be required. + +.. contents:: :local: + :depth: 1 + +Prerequisites +************* + +* A |CL| system with a desktop installed +* An NVIDIA device installed + +Install DKMS +************ + +The :ref:`Dynamic Kernel Module System (DKMS) +` allows the NVIDIA kernel modules to be automatically +integrated when kernel updates occur in |CL|. + +Install the appropriate DKMS bundle using the instructions below: + +.. note:: + The Long Term Support (LTS) kernel variant is more likely to remain + compatible between updates with NVIDIA drivers. + +.. include:: /guides/kernel/kernel-modules-dkms.rst + :start-after: kernel-modules-dkms-install-begin: + :end-before: kernel-modules-dkms-install-end: + +Download and install the NVIDIA drivers +*************************************** + +Download the NVIDIA drivers for Linux +===================================== + +#. Identify the NVIDIA GPU model that is installed. + + .. code-block:: bash + + sudo lshw -C display + +#. Go to the `NVIDIA Driver Downloads website`_ . Search for and download the + appropriate driver based on the NVIDIA GPU model you have with *Linux + 64-bit* selected as the Operating System . + +#. Open a terminal and navigate to where the + :file:`NVIDIA-Linux-x86_64-.run` file was saved. In this + example, it was saved in the Downloads folder. + + .. code-block:: bash + + cd ~/Downloads/ + +#. Make the :file:`NVIDIA-Linux-x86_64-.run` file executable. + + .. code-block:: bash + + chmod +x :file:`NVIDIA-Linux-x86_64-.run` + +Disable the nouveau driver +========================== + +The proprietary NVIDIA driver is incompatible with the nouveau driver and +must be disabled before installation can continue. + +#. Disable the nouveau driver by creating a blacklist file under + :file:`/etc/modprobe.d` and reboot. + + .. code-block:: bash + + sudo mkdir /etc/modprobe.d + + printf "blacklist nouveau \noptions nouveau modeset=0 \n" | sudo tee --append /etc/modprobe.d/disable-nouveau.conf + +#. Reboot the system and log back in. It is normal for the graphical + environment not to start without the NVIDIA driver loaded. + +Configure alternative software paths +==================================== + +The NVIDIA installer is directed to install files under +:file:`/opt/nvidia` as much as possible to keep its contents isolated from the +rest of the |CL| system files under :file:`/usr`. The dynamic linker and X +server must be configured to use the content under +:file:`/opt/nvidia`. + +#. Configure the dynamic linker to look for and to cache shared libraries under + :file:`/opt/nvidia/lib` and :file:`/opt/nvidia/lib32` in addition to the + default paths. + + .. code-block:: bash + + echo "include /etc/ld.so.conf.d/*.conf" | sudo tee --append /etc/ld.so.conf + + sudo mkdir /etc/ld.so.conf.d + printf "/opt/nvidia/lib \n/opt/nvidia/lib32 \n" | sudo tee --append /etc/ld.so.conf.d/nvidia.conf + +#. Reload the dynamic linker run-time bindings and library cache. + + .. code-block:: bash + + sudo ldconfig + +#. Create a Xorg configuration file to search for modules under + :file:`/opt/nvidia` in addition to the default path. + + .. code-block:: bash + + sudo mkdir -p /etc/X11/xorg.conf.d/ + + sudo tee /etc/X11/xorg.conf.d/nvidia-files-opt.conf > /dev/null <<'EOF' + Section "Files" + ModulePath "/usr/lib64/xorg/modules" + ModulePath "/opt/nvidia/lib64/xorg/modules" + EndSection + EOF + +Install the NVIDIA drivers +========================== + +#. A terminal not running on */dev/tty1* is useful to view uninterrupted + installation progress. Switch to a secondary virtual terminal by pushing + :command:`CTRL + ALT + F2` or remotely login over SSH. + +#. Navigate to the directory where the NVIDIA installer was downloaded. + + .. code-block:: bash + + cd ~/Downloads/ + +#. Run the installer with the advanced options below. + + .. code-block:: bash + + sudo ./NVIDIA-Linux-x86_64-.run \ + --utility-prefix=/opt/nvidia \ + --opengl-prefix=/opt/nvidia \ + --compat32-prefix=/opt/nvidia \ + --compat32-libdir=lib32 \ + --x-prefix=/opt/nvidia \ + --x-module-path=/opt/nvidia/lib64/xorg/modules \ + --x-library-path=/opt/nvidia/lib64 \ + --x-sysconfig-path=/etc/X11/xorg.conf.d \ + --documentation-prefix=/opt/nvidia \ + --application-profile-path=/etc/nvidia \ + --no-precompiled-interface \ + --no-nvidia-modprobe \ + --no-distro-scripts \ + --force-libglx-indirect \ + --glvnd-egl-config-path=/etc/glvnd/egl_vendor.d \ + --egl-external-platform-config-path=/etc/egl/egl_external_platform.d \ + --dkms \ + --silent + +#. The graphical interface may automatically start after the NVIDIA driver + is loaded. Return to the working terminal and log back in if necessary. + +#. Confirm that the NVIDIA kernel modules are loaded. + + .. code-block:: bash + + lsmod | grep ^nvidia + +#. Run a |CL| system verification to restore files that the NVIDIA installer + likely deleted. + + .. code-block:: bash + + sudo swupd repair --quick --bundles=lib-opengl + +.. note:: + + The NVIDIA software places some files under the :file:`/usr` subdirectory + that are not managed by |CL| and conflict with the |CL| stateless design. + + Although a limited version of :command:`swupd repair` is run above, + other uses of the :command:`swupd repair` command should be avoided + with the proprietary NVIDIA drivers installed. + +Updating the NVIDIA drivers +*************************** + +The proprietary NVIDIA drivers are installed manually outside of +:ref:`swupd ` and must be updated manually when needed. + +Updating the NVIDIA drivers follows the same steps as initial installation, +however the desktop environment must first be stopped so that the drivers are +not in use. + +#. Follow the steps in the `Download the NVIDIA Drivers for Linux`_ section + to get the latest NVIDIA drivers. + +#. Temporarily set the default boot target to the *multi-user*, which is + a non-graphical runtime. + + .. code-block:: bash + + sudo systemctl set-default multi-user.target + +#. Reboot the system and log back in. It is normal for the graphical + environment not to start. + +#. Follow the steps in the `Install the NVIDIA Drivers`_ section to update + the NVIDIA drivers. This installation will overwrite the previous NVIDIA + drivers and files. + +#. Set the default boot target back to the *graphical* target. + + .. code-block:: bash + + sudo systemctl set-default graphical.target + +#. Reboot the system and log back in. + +#. Trigger a flatpak update that will download the runtime corresponding + with the new NVIDIA drivers for the flatpak apps that require it. + + .. code-block:: bash + + flatpak update + +Uninstalling the NVIDIA drivers +******************************* + +The NVIDIA drivers and associated software can be uninstalled and nouveau +driver restored with the instructions in this section. + +#. Remove the :file:`modprobe.d` file that prevents nouveau from loading. + + .. code-block:: bash + + sudo rm /etc/modprobe.d/disable-nouveau.conf + +#. Remove the :file:`xorg.conf.d` file that adds a search path for X modules. + + .. code:: bash + + sudo rm /etc/X11/xorg.conf.d/nvidia-files-opt.conf + +#. Run the :command:`sudo /opt/nvidia/bin/nvidia-uninstall` + +#. Follow the prompts on the screen and reboot the system. + +Debugging installation of NVIDIA drivers +**************************************** + +* The NVIDIA driver places installer and uninstaller logs under + :file:`/var/log/nvidia-install` and :file:`/var/log/nvidia-uninstall`. + +* :file:`NVIDIA-Linux-x86_64-.run --advanced-options` shows many + parameters to control installation behavior. + +* :file:`NVIDIA-Linux-x86_64-.run --extract-only` extracts + installation files into a directory named + :file:`NVIDIA-Linux-x86_64-`. + +Additional resources +******************** + +* `Why aren't the NVIDIA Linux drivers open source? `_ + +* `Where can I get support for NVIDIA Linux drivers? `_ + +* `NVIDIA Accelerated Linux Graphics Driver Installation Guides `_ + +.. _`nouveau project`: https://nouveau.freedesktop.org/wiki/ + +.. _`NVIDIA Driver Downloads website`: https://www.nvidia.com/download/index.aspx diff --git a/zh_CN/_sources/tutorials/parallels.rst.txt b/zh_CN/_sources/tutorials/parallels.rst.txt new file mode 100644 index 000000000..66d6858e5 --- /dev/null +++ b/zh_CN/_sources/tutorials/parallels.rst.txt @@ -0,0 +1,130 @@ +.. _parallels: + +Parallels\* Desktop for Mac\* +############################# + +This tutorial describes how to run |CL| Server in +:abbr:`CLI (command-line interface)` mode as a guest OS in Parallels Desktop 14 +for Mac. + +Parallels Desktop for Mac is virtualization software that allows other +operating systems, such as Linux, to run side-by-side with macOS\*. + +Prerequisites +************* + +* Install Parallels Desktop 14 for Mac. + +Download ISO image +****************** + +#. Download a live-server ISO installation file from https://clearlinux.org/downloads. + This tutorial uses |CL| Server 30140 as its example. + +#. Unzip the ISO image with the command: + + .. code-block:: bash + + gunzip clear-30140-live-server.iso.xz + +Initialize new VM +***************** + +Start Parallels and initialize your :abbr:`VM (Virtual Machine)` with the +following steps. + +#. Go to :menuselection:`File > New`. + +#. In the opening dialog window, select + :guilabel:`Install Windows or another OS from a DVD or image`, then click + :guilabel:`Continue`. (See Figure 1.) + + .. figure:: /_figures/parallels/parallels-01.png + :alt: Parallels opening dialog + + Figure 1: Parallels opening dialog + +#. On the next screen, select :guilabel:`Image File`, then click + :guilabel:`Select a file...` as shown in Figure 2. + + .. figure:: /_figures/parallels/parallels-02.png + :alt: Dialog to select source for VM + + Figure 2: Dialog to select source for VM + +#. Select your ISO file. The system displays the warning message "Unable to + detect operating system", as shown in Figure 3. This message is expected and + can be ignored. Click :guilabel:`Continue`. + + .. figure:: /_figures/parallels/parallels-03.png + :alt: Warning that OS is not detected + + Figure 3: Warning that OS is not detected + +#. You are prompted to select your OS, as shown in Figure 4. Select + :menuselection:`More Linux > Other Linux` from the drop-down menu and click + :guilabel:`Continue`. + + .. figure:: /_figures/parallels/parallels-04.png + :alt: Select OS from drop-down menu + + Figure 4: Select OS from drop-down menu + +#. Name your VM and check :guilabel:`Customize settings before installation`. + (See Figure 5.) + + .. figure:: /_figures/parallels/parallels-05.png + :alt: Name and Location screen + + Figure 5: Name and Location screen + +#. Click :guilabel:`Create`. The Configuration window for the new VM opens, as + shown in Figure 6. + + Select :menuselection:`Hardware > Boot Order`. + + .. figure:: /_figures/parallels/parallels-06.png + :alt: VM Configuration window + + Figure 6: VM Configuration window + +#. Expand :guilabel:`Advanced Settings`. Set :guilabel:`BIOS` to “EFI 64-bit” + and in the :guilabel:`Boot flags` field, enter “vm.bios.efi=1” as shown in + Figure 7. + + .. figure:: /_figures/parallels/parallels-07.png + :alt: Advanced configuration settings + + Figure 7: Advanced configuration settings + +#. Close the Configuration window and click :guilabel:`Continue`. + + If camera and microphone access restriction warnings are displayed, you can + ignore them. + +Install |CL| on VM +****************** + +#. Follow the prompts and install |CL| using the text-based installer as shown + in Figure 8. + + Refer to :ref:`bare-metal-install-server` for additional installation + instructions. + + .. figure:: /_figures/parallels/parallels-08.png + :alt: On screen instructions from text-based installer + + Figure 8: On screen instructions from text-based installer + +#. After installation, reboot the VM. You are prompted to log in, as shown + in Figure 9. Log in with the credentials you used when you installed |CL| + on the VM. + + .. figure:: /_figures/parallels/parallels-09.png + :alt: Log in prompt + + Figure 9: Log in prompt + + +Congratulations! You have successfully set up a |CL| VM using Parallels +Desktop for Mac. diff --git a/zh_CN/_sources/tutorials/proxy.rst.txt b/zh_CN/_sources/tutorials/proxy.rst.txt new file mode 100644 index 000000000..d266f77dc --- /dev/null +++ b/zh_CN/_sources/tutorials/proxy.rst.txt @@ -0,0 +1,115 @@ +.. _tutorial-proxy: + +Proxy configuration +################### + +This tutorial shows you how to configure your system for use behind an +outbound proxy to access the Internet. + +|CL| applications already benefit from the :ref:`autoproxy` +feature. + +.. contents:: + :local: + :depth: 1 + +Prerequisites +************* + +This tutorial assumes you have installed |CL| on your host system. +For detailed instructions on installing |CL| on a bare metal system, visit +the :ref:`bare metal installation guide `. + +Shells and programs in a desktop session +**************************************** + +Terminal +======== + +Add the following to your ~/.bashrc: + +.. code-block:: bash + + export http_proxy=http://your.http-proxy.url:port + export https_proxy=http://your.https-proxy.url:port + export ftp_proxy=http://your.ftp-proxy.url:port + export socks_proxy=http://your.socks-proxy.url:port + export no_proxy=".your-company-domain.com,localhost" + export HTTP_PROXY=$http_proxy + export HTTPS_PROXY=$https_proxy + export FTP_PROXY=$ftp_proxy + export SOCKS_PROXY=$socks_proxy + export NO_PROXY=$no_proxy + +wget +**** + +Run this command to enable downloading from websites from the terminal: + +.. code-block:: bash + + echo >> ~/.wgetrc <`. + +Before you install any new packages, update |CL| with the following command: + +.. code-block:: bash + + sudo swupd update + +After your system is updated, add the following bundles to your system: + +* :command:`machine-learning-web-ui`: This bundle contains the Jupyter application. + +* :command:`machine-learning-basic`: This bundle contains TensorFlow + and other useful tools. + +To install the bundles, run the following commands in your :file:`$HOME` +directory: + +.. code-block:: bash + + sudo swupd bundle-add machine-learning-web-ui + + sudo swupd bundle-add machine-learning-basic + +Set up a Jupyter Notebook +************************* + +With all required packages and libraries installed, set up the file structure +for the Jupyter Notebook. + +#. In the :file:`$HOME` directory, create a directory for the Jupyter + Notebooks named :file:`Notebooks`. + + .. code-block:: bash + + mkdir Notebooks + +#. Within :file:`Notebooks`, create a directory named :file:`Handwriting`. + + .. code-block:: bash + + mkdir Notebooks/Handwriting + +#. Change to the new directory. + + .. code-block:: bash + + cd Notebooks/Handwriting + +#. Copy the :file:`MNIST_example.ipynb` file into the :file:`Handwriting` + directory. + + .. note:: + + After installing the :command:`machine-learning basic` bundle, you can find the example code under + :file:`/usr/share/doc/tensorflow/MNIST_example.ipynb`. + + +The example code downloads and decompresses the MNIST data directly into the +:file:`./mnist` directory. Alternatively, download the four files directly +from the Yann LeCun’s `MNIST Database website`_ and save them into a +:file:`mnist` directory within the :file:`Handwriting` directory. + +The files needed are: + +* `train-images-idx3-ubyte.gz`_: Training set images (9912422 bytes) + +* `train-labels-idx1-ubyte.gz`_: Training set labels (28881 bytes) + +* `t10k-images-idx3-ubyte.gz`_: Test set images (1648877 bytes) + +* `t10k-labels-idx1-ubyte.gz`_: Test set labels (4542 bytes) + +Run the Jupyter machine learning example code +********************************************* + +With |CL|, Jupyter, and TensorFlow installed and configured, you can +run the example code. + +#. Go to the :file:`($HOME)/Notebooks` directory and start Jupyter with the + following commands: + + .. code-block:: bash + + cd ~/Notebooks + + jupyter notebook + + The Jupyter server starts and opens a web browser showing the Jupyter file + manager with a list of files in the current directory, as shown in + Figure 1. + + .. figure:: /_figures/tensorflow/machine-learning-1.png + :alt: Jupyter file manager + + Figure 1: The Jupyter file manager shows the list of available files. + +#. Click on the :file:`Handwriting` directory. The :file:`MNIST_example.ipynb` + file created earlier should be listed there, as shown in Figure 2. + + .. figure:: /_figures/tensorflow/machine-learning-2.png + :alt: Example file within the Jupyter file manager + + Figure 2: The example file within the Jupyter file manager. + +#. To run the handwriting example, click on the :file:`MNIST_example.ipynb` + file to load the notebook, as shown in Figure 3. + + .. figure:: /_figures/tensorflow/machine-learning-3.png + :alt: The loaded MNIST_example notebook + + Figure 3: The loaded MNIST_example notebook within the Jupyter file + manager. + +#. Click the |run-cell| button to execute the code in the current cell and + move to the next. + +#. Select the :guilabel:`In [2]` cell and click the |run-cell| button to load + the MNIST data. The successful output is shown on Figure 4. + + .. figure:: /_figures/tensorflow/machine-learning-4.png + :alt: Successful import of MNIST data + + Figure 4: Output after successfully importing the MNIST data. + + + After the MNIST data is successfully downloaded and extracted into the + :file:`mnist` directory within the :file:`($HOME)/Notebooks/Handwriting` + directory, four .gz files are present and the four data sets are created: + `trainX`, `trainY`, `testX` and `testY`. + +#. To inspect the imported data, the function in :guilabel:`In [3]` first + instructs Jupyter to reshape the data into an array of 28 x 28 images and to + plot the area in a 28 x 28 grid. Click the |run-cell| button twice to show + the first two digits in the `trainX` dataset. An example is shown in + Figure 5. + + .. figure:: /_figures/tensorflow/machine-learning-5.png + :alt: Function to reshape data. + + Figure 5: A function reshapes the data and displays the first two + digits in the `trainX` dataset. + +#. The :guilabel:`In [4]` cell defines the neural network. It provides the + inputs, defines the hidden layers, runs the training model, and sets up + the output layer, as shown in Figure 6. Click the |run-cell| button four + times to perform these operations. + + .. figure:: /_figures/tensorflow/machine-learning-6.png + :alt: Defining, building and training the neural network model + + Figure 6: Defining, building, and training the neural network model. + +#. To test the accuracy of the prediction that the system makes, select the + :guilabel:`In [8]` cell and click the |run-cell| button. In this example, + the number 6 was predicted with a 99% accuracy, as shown in Figure 7. + + .. figure:: /_figures/tensorflow/machine-learning-7.png + :alt: Prediction example + + Figure 7: The system predicts a number providing the accuracy of the + prediction. + + .. note:: + + To retest the accuracy of a random data point's prediction, run the + cell :guilabel:`In [8]` again. It will take another random data point + and predict its value. + +#. To check the accuracy for the whole dataset, select the :guilabel:`In [10]` + cell and click the |run-cell| button. Our example's accuracy is + calculated as 97.17%, as shown in Figure 8. + + .. figure:: /_figures/tensorflow/machine-learning-8.png + :alt: System's accuracy + + Figure 8: The system's accuracy for the entire data set. + +For more in-depth information on the model used and the mathematics it entails, +visit the TensorFlow tutorials +`TensorFlow MNIST beginners demo`_ and `TensorFlow MNIST pros demo`_. + +**Congratulations!** + +You have successfully installed a Jupyter kernel on |CL|. In addition, you +trained a neural network to successfully predict the values contained in a +data set of hand-written number images. + +Related topics +************** + +* `MNIST Database website`_ +* `TensorFlow MNIST beginners demo`_ +* `TensorFlow MNIST pros demo`_ +* `Jupyter main website`_ +* `Jupyter documentation`_ +* `MNIST at Wikipedia`_ + +.. _MNIST Database website: + http://yann.lecun.com/exdb/mnist/ + +.. _train-images-idx3-ubyte.gz: + http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz + +.. _train-labels-idx1-ubyte.gz: + http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz + +.. _t10k-images-idx3-ubyte.gz: + http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz + +.. _t10k-labels-idx1-ubyte.gz: + http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz + +.. _Jupyter main website: http://jupyter.org/ + +.. _Jupyter documentation:  https://jupyter.readthedocs.io/en/latest/index.html + +.. _TensorFlow MNIST beginners demo: + https://www.tensorflow.org/get_started/mnist/beginners + +.. _TensorFlow MNIST pros demo: + https://www.tensorflow.org/get_started/mnist/pros + +.. _MNIST at Wikipedia: + https://en.wikipedia.org/wiki/MNIST_database + +.. |run-cell| image:: /_figures/tensorflow/run-cell-button.png diff --git a/zh_CN/_sources/tutorials/wordpress.rst.txt b/zh_CN/_sources/tutorials/wordpress.rst.txt new file mode 100644 index 000000000..da6c9c03c --- /dev/null +++ b/zh_CN/_sources/tutorials/wordpress.rst.txt @@ -0,0 +1,27 @@ +.. _wordpress: + +WordPress\* +########### + +This tutorial describes how to setup a web server to host a WordPress\* site on a +|CL-ATTR| system. The tutorial is split into two sections: + +#. :ref:`web-server-install` + +#. :ref:`wp-install` + +If you already have a |CL| based :abbr:`LAMP (Linux, Apache, MySQL, PHP)` web server, +you can skip ahead to the second section of this tutorial. + +.. note:: + + This tutorial is for development and testing purposes only. Additional steps + are required to secure production systems. Those steps are beyond the scope + of this tutorial. + +.. toctree:: + :maxdepth: 1 + :hidden: + + wordpress/web-server-install.rst + wordpress/wp-install.rst diff --git a/zh_CN/_sources/tutorials/wordpress/web-server-install.rst.txt b/zh_CN/_sources/tutorials/wordpress/web-server-install.rst.txt new file mode 100644 index 000000000..bd5de10bd --- /dev/null +++ b/zh_CN/_sources/tutorials/wordpress/web-server-install.rst.txt @@ -0,0 +1,504 @@ +.. _web-server-install: + +Set up a LAMP web server on |CL-ATTR| +##################################### + +This tutorial provides instructions on how to set up a +:abbr:`LAMP (Linux, Apache\*, MySQL, PHP)` web server on |CL-ATTR| and how +to use phpMyAdmin\* to manage an associated database. Note that this +tutorial installs MariaDB\*, which is a drop-in replacement for MySQL\*. + +In order to create a web server using |CL| as the host OS, your host system +must be running |CL|. This tutorial assumes you have installed |CL| on your +host system. For detailed instructions on installing |CL| on a bare metal +system, visit :ref:`bare-metal-install-desktop`. + +This tutorial covers: + +.. contents:: :local: + :depth: 1 + +Install Apache +************** + +Apache is an open source HTTP web server application that can run on several +operating systems, including |CL|. Go to the `Apache HTTP Server Project`_ +for more information. + +Install the web-server-basic bundle +=================================== + +The **web-server-basic** bundle contains the packages needed to install the +Apache software bundle on |CL|. + +.. note:: + + Before you install new packages, update the |CL| with the following + console command: + + .. code-block:: bash + + sudo swupd update + +#. To install the bundle, enter the following command: + + .. code-block:: bash + + sudo swupd bundle-add web-server-basic + + +#. To start the Apache service, enter the following commands: + + .. code-block:: bash + + sudo systemctl enable httpd.service + sudo systemctl start httpd.service + +#. To verify that the Apache server application is running, open a web + browser and navigate to: \http://localhost. + + If the service is running, a confirmation message will appear, similar to the + message shown in figure 1. + + .. figure:: /_figures/wordpress/web-server-install-1.png + :alt: This web server is operational from host. + :scale: 50% + + `Figure 1: Confirmation that the Apache service is running.` + + .. note:: + + The :file:`index.html` file is located in the :file:`/var/www/html` directory + of your host system. You will copy this file into a new location after you + modify the configuration in the next step. + +Change the default configuration and data directory +*************************************************** + +|CL| is designed to be a :ref:`stateless` operating system which means that you +must create an optional configuration file to override the default values. +The default location of the Apache configuration file, :file:`httpd.conf`, +is located in the :file:`/usr/share/defaults/httpd` directory. |CL| can +override this directory as part of the stateless paradigm. This default +:file:`.conf` file includes the following directives that allow for additional +locations of configuration definitions: + +.. code-block:: console + + # Virtual hosts + IncludeOptional /usr/share/defaults/httpd/conf.d/*.conf + IncludeOptional /usr/share/defaults/httpd/conf.modules.d/*.conf + IncludeOptional /etc/httpd/conf.d/*.conf + IncludeOptional /etc/httpd/conf.modules.d/*.conf + +In this section you will define your own httpd.conf file to override the +default values, and define a custom DocumentRoot for your web server. + +#. Create the directory structure for :file:`/etc/httpd/conf.d`. + + .. code-block:: bash + + sudo mkdir -p /etc/httpd/conf.d + +#. Create and open the :file:`httpd.conf` file in your new :file:`/etc/httpd/conf.d` + directory. + + .. code-block:: bash + + sudo nano /etc/httpd/conf.d/httpd.conf + +#. Add the ``DocumentRoot`` variable to :file:`httpd.conf`. Copy the content + listed below into the new :file:`/etc/httpd/conf.d/httpd.conf` file. + + .. code-block:: console + + # + # Set a new location for DocumentRoot + # + DocumentRoot "/var/www/tutorial" + + # + # Relax access to content within /var/www/tutorial for this example + # + + AllowOverride none + Require all granted + + +#. Create a new ``DocumentRoot`` directory structure and copy the + :file:`index.html` file from :file:`/var/www/html` directory to + :file:`/var/www/tutorial`. + + .. code-block:: bash + + sudo mkdir –p /var/www/tutorial + cd /var/www/tutorial + sudo cp /var/www/html/index.html . + +#. To ensure a successful setup, edit the new :file:`index.html` file with an + obvious change. + + .. code-block:: bash + + sudo nano index.html + + For example, we changed the default message + + "It works!" + + to + + "It works from its new location!" + +#. Stop and then restart ``httpd.service``. + + .. code-block:: bash + + sudo systemctl stop httpd.service + sudo systemctl start httpd.service + +#. Go to \http://localhost to view the new screen. You should see your updated + default message from step 5. + +#. Change the configuration back to the default :file:`/var/www/html` + location. To do this, edit the :file:`/etc/httpd/conf.d/httpd.conf` file + again and replace any instance of /var/www/tutorial with /var/www/html. + + .. code-block:: bash + + sudo nano /etc/httpd/conf.d/httpd.conf + +#. Stop and then restart ``httpd.service``. + + .. code-block:: bash + + sudo systemctl stop httpd.service + sudo systemctl start httpd.service + +#. Go to \http://localhost and verify that you can see the default screen + again. + +#. Optionally, remove the /var/www/tutorial directory you previously created. + + .. code-block:: bash + + sudo rm /var/www/tutorial/index.html + sudo rmdir /var/www/tutorial + +Install PHP +*********** + +An Apache installation allows you to display static web pages. Enabling PHP +allows you to generate and display dynamic web pages. To add this +functionality to your web server, install PHP on your system. + +#. To get the php components, enter the following command: + + .. code-block:: bash + + sudo swupd bundle-add php-basic + +#. To enable PHP, enter the following commands: + + .. code-block:: bash + + sudo systemctl enable php-fpm.service + sudo systemctl start php-fpm.service + sudo systemctl restart httpd.service + + After restarting the Apache service, test your PHP installation. + +#. Create and open a file named :file:`phpinfo.php` in the :file:`/var/www/html/` + directory using a text editor. + + .. code-block:: bash + + sudo nano /var/www/html/phpinfo.php + +#. Add the following line to the file: + + .. code-block:: php + + + +#. Go to \http://localhost/phpinfo.php. + +#. Verify that the PHP information screen appears, similar to figure 2: + + .. figure:: /_figures/wordpress/web-server-install-2.png + :alt: PHP information screen + :width: 600 + + `Figure 2: The PHP information screen.` + +If the PHP information screen is displayed, you have successfully installed +the PHP components and are now ready to add your database application to +complete your LAMP server implementation. + +Install MariaDB +*************** + +Install MariaDB to store content. MariaDB is a drop-in replacement for MySQL +and is available in the database-basic |CL| bundle. + +#. To install the database-basic bundle, enter the following command: + + .. code-block:: bash + + sudo swupd bundle-add database-basic + +#. To start MariaDB after it is installed, enter the following commands: + + .. code-block:: bash + + sudo systemctl enable mariadb + sudo systemctl start mariadb + +#. To check the status of MariaDB, enter the following command: + + .. code-block:: bash + + sudo systemctl status mariadb + + Press :kbd:`Ctrl` + :kbd:`c` or :kbd:`q` to exit. + +Security hardening +================== + +With the MariaDB service running, we can perform some basic security +hardening. + +#. To add a basic layer of security, enter the following command: + + .. code-block:: bash + + sudo mysql_secure_installation + +#. Respond to the questions that appear in the script below. + + .. note:: + + Our suggested responses follow each question. + + .. code-block:: bash + + Enter current password for root (enter for none): + + In order to secure MariaDB, we need the current password for the root + user. For a newly installed MariaDB without a set root password, the + password is blank. Thus, press enter to continue. + + .. code-block:: bash + + OK, successfully used password, moving on... + + Set root password? [Y/n] + + .. _set-password: + + Set the root password to prevent unauthorized MariaDB root user logins. + To set a root password, type 'y'. + + .. code-block:: bash + + New password: + + Type the desired password for the root user. + + .. code-block:: bash + + Re-enter new password: + + Re-type the desired password for the root user. + + .. code-block:: bash + + Password updated successfully! + Reloading privilege tables.. + ... Success! + + Remove anonymous users? [Y/n] + + By default, a MariaDB installation includes an anonymous user that allows + anyone to log in to MariaDB without a user account. This anonymous user + is intended only for testing and for a smoother installation. To remove + the anonymous user and make your database more secure, type 'y'. + + .. code-block:: bash + + ... Success! + Disallow root login remotely? [Y/n] + + Normally, root should only be allowed to connect from the 'localhost'. This + ensures that someone cannot guess the root password from the network. To + block any remote root login, type 'y'. + + .. code-block:: bash + + ... Success! + Remove test database and access to it? [Y/n] + + By default, MariaDB includes a database named 'test' which anyone can access. + This database is also intended only for testing and should be removed. To + remove the test database, type 'y'. + + .. code-block:: bash + + - Dropping test database... + ... Success! + - Removing privileges on test database... + ... Success! + Reload privilege tables now? [Y/n] + + Reloading the privilege tables ensures all changes made so far take + effect immediately. To reload the privilege tables, type 'y'. + + .. code-block:: bash + + ... Success! + + Cleaning up... + + All done! If you've completed all of the above steps, your MariaDB + installation should now be secure. + + Thanks for using MariaDB! + +The MariaDB installation is complete, and we can now install phpMyAdmin to +manage the databases. + +Install phpMyAdmin +****************** + +The web-based tool phpMyAdmin is a straightforward way to manage MySQL or +MariaDB databases. Visit the `phpMyAdmin`_ website for the complete +discussion regarding phpMyAdmin, its documentation, the latest downloads, +and other useful information. + +In this tutorial, we use the latest English version of phpMyAdmin. + +#. Download the :file:`phpMyAdmin--english.tar.gz` file to your + :file:`~/Downloads` directory. Here, refers to the current + version available at https://www.phpmyadmin.net/downloads. + + .. note:: + + This example downloads and uses version 4.6.4. + +#. Once the file has been successfully downloaded and verified, decompress + the file and directories into the Apache web server document root + directory. Use the following commands: + + .. code-block:: bash + + cd /var/www/html + sudo tar –xzvf ~/Downloads/phpMyAdmin-4.6.4-english.tar.gz + +#. To keep things simple, rename the newly created + :file:`phpMyAdmin-4.6.4-english` directory to :file:`phpMyAdmin` with the + following command: + + .. code-block:: bash + + sudo mv phpMyAdmin-4.6.4-english phpMyAdmin + +Use phpMyAdmin to manage a database +*********************************** + +You can use the phpMyAdmin web-based tool to manage your databases. Follow the +steps below for setting up a database called "WordPress". + +#. Verify that a successful installation of all LAMP server components by + going to \http://localhost/phpMyAdmin. See figure 3. + +#. Log in with your root userid and the password you set up when you ran the + :ref:`mysql_secure_installation command `. Enter your + credentials and select :guilabel:`Go` to log in: + + .. figure:: /_figures/wordpress/web-server-install-3.png + :alt: phpMyAdmin login page + :width: 600 + + `Figure 3: The phpMyAdmin login page.` + +#. Verify a successful login by confirming that the main phpMyAdmin page + displays, as shown in figure 4: + + .. figure:: /_figures/wordpress/web-server-install-4.png + :alt: phpMyAdmin dashboard + :width: 600 + + `Figure 4: The phpMyAdmin dashboard.` + +#. Set up a database by selecting the :guilabel:`Databases` tab, as shown in + figure 5. + +#. Enter `WordPress` in the text field below the :guilabel:`Create database` + label. + +#. Select the :guilabel:`utf8_unicode_ci` option from the + :guilabel:`Collation` drop-down menu beside the text field. + +#. Click :guilabel:`Create`. + + .. figure:: /_figures/wordpress/web-server-install-5.png + :alt: Databases tab + :width: 600 + + `Figure 5: The Databases tab.` + +#. Set up user permissions by selecting the :guilabel:`WordPress` database + located in the left panel. See figure 6. + +#. Select the :guilabel:`Privileges` tab. Figure 6 shows its contents. + + .. figure:: /_figures/wordpress/web-server-install-6.png + :alt: Privileges tab + :width: 600 + + `Figure 6: The Privileges tab.` + +#. Click :guilabel:`Add user account` located at the bottom of the + :guilabel:`Privileges` tab. The `Add user account` page appears, as shown + in figure 7. + + .. figure:: /_figures/wordpress/web-server-install-7.png + :alt: User accounts tab + :width: 600 + + `Figure 7: The User accounts tab.` + +#. Enter the following information in the corresponding fields that appear + in figure 7 above: + + * User name: wordpressuser + + * Password: wp-example + + * Re-type: wp-example + +#. In the `Database for user account` section, select + :guilabel:`Grant all privileges on database “WordPress”.` + +#. At the bottom of the page, click :guilabel:`Go`. + +If successful, you should see the screen shown in figure 8: + +.. figure:: /_figures/wordpress/web-server-install-8.png + :alt: User added successfully + :width: 600 + + `Figure 8: The user wordpressuser is successfully added.` + +**Congratulations!** + +You have now created a fully functional LAMP server along with a +WordPress\*-ready database using |CL|. + +Next steps +********** + +Next, add the WordPress components needed to host a WordPress website with :ref:`wp-install`. + +.. _Apache HTTP Server Project: https://httpd.apache.org/ +.. _phpMyAdmin: https://www.phpmyadmin.net/ diff --git a/zh_CN/_sources/tutorials/wordpress/wp-install.rst.txt b/zh_CN/_sources/tutorials/wordpress/wp-install.rst.txt new file mode 100644 index 000000000..e5fcd1eb3 --- /dev/null +++ b/zh_CN/_sources/tutorials/wordpress/wp-install.rst.txt @@ -0,0 +1,198 @@ +.. _wp-install: + +Set up WordPress\* on a LAMP web server +####################################### + +This tutorial shows you how to install the WordPress\* components on your |CL| +:abbr:`LAMP (Linux, Apache, MySQL, PHP)` server. At the end of +:ref:`web-server-install`, you created a WordPress-ready database using +phpMyAdmin\* and MariaDB\*. Now that the LAMP server is up and running, you +can add the WordPress components needed to host a WordPress website on your system. + +Before you begin +**************** + +This tutorial assumes that you have successfully completed +:ref:`bare-metal-install-desktop` and you have :ref:`web-server-install`. + +Create a WordPress server +************************* + +WordPress can be installed in a variety of ways. These instructions are +written for users who have followed our instructions for installing phpMyAdmin +when they :ref:`set up a LAMP web server `. Note that +all steps in this tutorial have been tested using a NUC6i5SYH Intel® NUC. +Visit the `NUC6i5SYH product page`_ for detailed information. + +Numerous online articles are available to help you name your website and +acquire the necessary certificates. Those tasks are beyond the scope of this tutorial. + +You can take several actions to harden your website from attacks. The security +of your website and the data it contains are complex and ever-evolving tasks. +Prioritize security if you plan to expose your website to the outside world. +This tutorial does not address security measures that you can take to harden +your site but we strongly encourage you to take action. + +.. note:: + + Throughout this tutorial, we reference your website name as . + + +Download WordPress and manage directories +========================================= + +For this tutorial, you will create a WordPress blog that can be accessed at: +\http:///blog. + +To accomplish this setup, you must add WordPress components to the :file:`/var/www/html/blog` +directory. + +Follow these steps: + + +#. Navigate to the top level of the website’s root directory: + + .. code-block:: bash + + cd /var/www/html + +#. Download the latest version of WordPress: + + .. code-block:: bash + + sudo curl -O https://wordpress.org/latest.tar.gz + +#. Extract all files and directories from the downloaded file: + + .. code-block:: bash + + sudo tar –xzvf latest.tar.gz + +#. Rename the top-level WordPress directory to “blog”: + + .. code-block:: bash + + sudo mv wordpress blog + +#. Remove the downloaded tar file: + + .. code-block:: bash + + sudo rm latest.tar.gz + +Set up WordPress with web-based GUI +=================================== + +Recall that you created a database and user when you installed phpMyAdmin when you +set up a |CL| based :ref:`web server `. Next, you must +connect WordPress to the database and install WordPress. + +To continue with the setup, go to: \http:///blog/wp-admin/install.php. +The WordPress language option screen appears, as shown in figure 1. + +#. Select :guilabel:`English` and click :guilabel:`Continue`. + + .. figure:: /_figures/wordpress/wp-install-1.png + :alt: WordPress language selection + :width: 600 + + `Figure 1: WordPress language selection screen.` + + + The WordPress installation continues until the Welcome screen appears, as shown in + figure 2: + + .. figure:: /_figures/wordpress/wp-install-2.png + :alt: WordPress welcome screen + :width: 600 + + `Figure 2: WordPress Welcome screen.` + +#. Click :guilabel:`Let’s go!`. + +#. Enter database connection specifics in the screen that appears, as shown in figure 3 + below. + + * Database name: WordPress + * Database username: wordpressuser + * Database password: wp-example (asterisks will not appear in the text box) + * Database host: localhost + * Table prefix: wp\_ + + .. figure:: /_figures/wordpress/wp-install-3.png + :alt: Database connection details + :width: 600 + + `Figure 3: Information necessary for WordPress to connect to the database.` + +#. Click :guilabel:`Submit` to complete the setup. + + Figure 4 shows the confirmation screen that verifies a successful setup. WordPress + is connected to the MariaDB database. + + .. figure:: /_figures/wordpress/wp-install-4.png + :alt: Successful database connection. + :width: 600 + + `Figure 4: Successful WordPress connection.` + +#. Click :guilabel:`Run the install`. + The installer runs until WordPress is fully installed on your system. + +Complete successful login +========================= + +Once the installation is complete, you can name your blog and create a WordPress username +and password. See figure 5. + +.. figure:: /_figures/wordpress/wp-install-5.png + :alt: WordPress user creation + :width: 600 + + `Figure 5: WordPress site information screen.` + + +#. Enter all required information. +#. Click :guilabel:`Install WordPress`. +#. Verify that the initial login screen appears once the installation is complete. See figure 6: + + .. figure:: /_figures/wordpress/wp-install-6.png + :alt: WordPress login + :width: 600 + + `Figure 6: The WordPress login screen.` + +#. Enter your WordPress username and password. +#. Check :guilabel:`Remember me` to save your credentials. +#. Click :guilabel:`Log in`. + +Figure 7 shows the WordPress dashboard after a successful login: + +.. figure:: /_figures/wordpress/wp-install-7.png + :alt: WordPress Dashboard + :width: 600 + + `Figure 7: The WordPress dashboard.` + +You are ready to go! + +To check out your blog as it is seen by the outside world, enter: +\http:///blog on your browser. Figure 8 shows the result: + +.. figure:: /_figures/wordpress/wp-install-8.png + :alt: WordPress blog + :width: 600 + + `Figure 8: Your WordPress blog.` + +**Congratulations, your WordPress blog is up and running!** + +You have successfully installed WordPress on a host system. + +Add new entries to your blog and share them with the world using |CL|! + +.. _`step-by-step guide`: + https://codex.wordpress.org/Installing_WordPress#Famous_5-Minute_Install + +.. _`NUC6i5SYH product page`: + http://www.intel.com/content/www/us/en/nuc/nuc-kit-nuc6i5syh.html diff --git a/zh_CN/_sources/tutorials/yubikey-u2f.rst.txt b/zh_CN/_sources/tutorials/yubikey-u2f.rst.txt new file mode 100644 index 000000000..db61e0a0e --- /dev/null +++ b/zh_CN/_sources/tutorials/yubikey-u2f.rst.txt @@ -0,0 +1,126 @@ +.. _yubikey-u2f: + +YubiKey\* Support +################# + +YubiKey\* is a USB security token manufactured by `Yubico`_. Depending on the +model, a YubiKey can support different authentication protocols including: +One-Time Password (OTP), Smart card, FIDO2, and Universal 2nd Factor (U2F). + +These instructions will go over configuring a YubiKey for U2F authentication +through a web browser on a |CL-ATTR| system. + +A list of `websites +accepting U2F authentication with the YubiKey`_ is available on the Yubico +website. See the Yubico website to learn more about the Yubikey: +https://www.yubico.com/getstarted/meet-the-yubikey/ + + + +.. contents:: :local: + :depth: 1 + + + +Prerequisites +************* + +This tutorial assumes you have: + +#. |CL| installed and running. + +#. Mozilla Firefox installed on |CL|. + +#. A YubiKey. + + + +Enable Linux udev rules for YubiKey +*********************************** + +:command:`udev` is the Linux device manager which handles events when USB +devices are added and removed. Custom rules needs to be created to properly +identify the YubiKey and provide applications access. + +These instructions are derived from: `Yubico support article Using Your U2F +YubiKey with Linux +`_ + + +#. Create the udev rules folder under :file:`/etc` + + .. code:: bash + + sudo mkdir -p /etc/udev/rules.d/ + + +#. Download the u2f rules from the Yubico GitHub: + + .. code:: bash + + curl -O https://raw.githubusercontent.com/Yubico/libu2f-host/master/70-u2f.rules + + +#. Move the downloaded :file:`70-u2f.rules` file into the :file:`/etc/udev` + folder + + .. code:: bash + + sudo mv 70-u2f.rules /etc/udev/rules.d/ + + +#. The udev rules should automatically be reloaded. However, they can be + manually reloaded or reboot the system: + + .. code:: bash + + sudo udevadm control --reload-rules && sudo udevadm trigger + + +#. Plugin and validate the YubiKey appears as a USB device: + + .. code:: bash + + lsusb + + + +Enable U2F in Mozilla Firefox +***************************** + +Firefox comes with U2F web authentication support disabled by default. U2F +needs to be enabled in the advanced settings. + +These instructions are derived from: `Yubico support article Enabling U2F +support in Mozilla Firefox +`_ + + +#. Launch Mozilla Firefox + +#. In the URL bar, type :command:`about:config` to access the advanced + settings. + + .. code:: bash + + about:config + +#. Click the *I accept the risk!* button to continue to the advanced settings + +#. Search for the :command:`security.webauth.u2f` and double-click it + so *Value* becomes **true**. + + +Your YubiKey is now usable on |CL| with Mozilla Firefox with websites that +support U2F authentication. + + +Related topics +************** + +- |CL| :ref:`security` + + +.. _`Yubico`: https://www.yubico.com/ + +.. _`websites accepting U2F authentication with the YubiKey`: https://www.yubico.com/works-with-yubikey/catalog/#protocol=universal-2nd-factor-(u2f)&usecase=all&key=all diff --git a/zh_CN/_static/ajax-loader.gif b/zh_CN/_static/ajax-loader.gif new file mode 100644 index 000000000..61faf8cab Binary files /dev/null and b/zh_CN/_static/ajax-loader.gif differ diff --git a/zh_CN/_static/basic.css b/zh_CN/_static/basic.css new file mode 100644 index 000000000..104f076ae --- /dev/null +++ b/zh_CN/_static/basic.css @@ -0,0 +1,676 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist td { + vertical-align: top; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: relative; + left: 0px; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/zh_CN/_static/clearlinux.png b/zh_CN/_static/clearlinux.png new file mode 100644 index 000000000..af518c0ec Binary files /dev/null and b/zh_CN/_static/clearlinux.png differ diff --git a/zh_CN/_static/comment-bright.png b/zh_CN/_static/comment-bright.png new file mode 100644 index 000000000..15e27edb1 Binary files /dev/null and b/zh_CN/_static/comment-bright.png differ diff --git a/zh_CN/_static/comment-close.png b/zh_CN/_static/comment-close.png new file mode 100644 index 000000000..4d91bcf57 Binary files /dev/null and b/zh_CN/_static/comment-close.png differ diff --git a/zh_CN/_static/comment.png b/zh_CN/_static/comment.png new file mode 100644 index 000000000..dfbc0cbd5 Binary files /dev/null and b/zh_CN/_static/comment.png differ diff --git a/zh_CN/_static/css/badge_only.css b/zh_CN/_static/css/badge_only.css new file mode 100644 index 000000000..3c33cef54 --- /dev/null +++ b/zh_CN/_static/css/badge_only.css @@ -0,0 +1 @@ +.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} diff --git a/zh_CN/_static/css/theme.css b/zh_CN/_static/css/theme.css new file mode 100644 index 000000000..aed8cef06 --- /dev/null +++ b/zh_CN/_static/css/theme.css @@ -0,0 +1,6 @@ +/* sphinx_rtd_theme version 0.4.3 | MIT license */ +/* Built 20190212 16:02 */ +*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content .code-block-caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.wy-menu-vertical li span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.rst-content .fa-pull-left.admonition-title,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content dl dt .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.rst-content code.download span.fa-pull-left:first-child,.fa-pull-left.icon{margin-right:.3em}.fa.fa-pull-right,.wy-menu-vertical li span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.rst-content .fa-pull-right.admonition-title,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content dl dt .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.rst-content code.download span.fa-pull-right:first-child,.fa-pull-right.icon{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content .code-block-caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content .code-block-caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content .code-block-caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content table>caption .headerlink,.rst-content table>caption a .headerlink,a .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content table>caption .headerlink,.rst-content table>caption .btn .headerlink,.btn .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content table>caption .headerlink,.rst-content table>caption .nav .headerlink,.nav .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.btn .rst-content .code-block-caption .fa-large.headerlink,.rst-content .code-block-caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.nav .rst-content .code-block-caption .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.btn .rst-content .code-block-caption .fa-spin.headerlink,.rst-content .code-block-caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.nav .rst-content .code-block-caption .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.admonition{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo,.rst-content .wy-alert-warning.admonition{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title,.rst-content .wy-alert-warning.admonition .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.admonition{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.admonition{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.admonition{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 .3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.3576515979%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.3576515979%;width:48.821174201%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.3576515979%;width:31.7615656014%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type="datetime-local"]{padding:.34375em .625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{position:absolute;content:"";display:block;left:0;top:0;width:36px;height:12px;border-radius:4px;background:#ccc;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27AE60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:.3em;display:block}.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:before,.wy-breadcrumbs:after{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#3a7ca8;height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin:12px 0 0 0;display:block;font-weight:bold;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a{color:#404040}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980B9;text-align:center;padding:.809em;display:block;color:#fcfcfc;margin-bottom:.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:gray}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:1em;background:none;border:none;color:gray}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{width:100%}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:before,.rst-breadcrumbs-buttons:after{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-side-scroll{width:auto}.wy-side-nav-search{width:auto}.wy-menu.wy-menu-vertical{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1100px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;display:block;overflow:auto}.rst-content pre.literal-block,.rst-content div[class^='highlight']{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px 0}.rst-content pre.literal-block div[class^='highlight'],.rst-content div[class^='highlight'] div[class^='highlight']{padding:0px;border:none;margin:0}.rst-content div[class^='highlight'] td.code{width:100%}.rst-content .linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;display:block;overflow:auto}.rst-content div[class^='highlight'] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content pre.literal-block,.rst-content div[class^='highlight'] pre,.rst-content .linenodiv pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.4}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^='highlight'],.rst-content div[class^='highlight'] pre{white-space:pre-wrap}}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last,.rst-content .admonition .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .section ol p:last-child,.rst-content .section ul p:last-child{margin-bottom:24px}.rst-content .line-block{margin-left:0px;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink{visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after,.rst-content .code-block-caption .headerlink:after{content:"";font-family:FontAwesome}.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content .toctree-wrapper p.caption:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after,.rst-content .code-block-caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:baseline;position:relative;top:-0.4em;line-height:0;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:gray}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation tt,.rst-content table.docutils.citation code,.rst-content table.docutils.footnote tt,.rst-content table.docutils.footnote code{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}.rst-content table.docutils td .last,.rst-content table.docutils td .last :last-child{margin-bottom:0}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content tt,.rst-content tt,.rst-content code{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;padding:2px 5px}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal{color:#E74C3C}.rst-content tt.xref,a .rst-content tt,.rst-content tt.xref,.rst-content code.xref,a .rst-content tt,a .rst-content code{font-weight:bold;color:#404040}.rst-content pre,.rst-content kbd,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold;margin-bottom:12px}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-weight:normal;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child,.rst-content code.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-regular.eot");src:url("../fonts/Lato/lato-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-regular.woff2") format("woff2"),url("../fonts/Lato/lato-regular.woff") format("woff"),url("../fonts/Lato/lato-regular.ttf") format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-bold.eot");src:url("../fonts/Lato/lato-bold.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-bold.woff2") format("woff2"),url("../fonts/Lato/lato-bold.woff") format("woff"),url("../fonts/Lato/lato-bold.ttf") format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-bolditalic.eot");src:url("../fonts/Lato/lato-bolditalic.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-bolditalic.woff2") format("woff2"),url("../fonts/Lato/lato-bolditalic.woff") format("woff"),url("../fonts/Lato/lato-bolditalic.ttf") format("truetype");font-weight:700;font-style:italic}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-italic.eot");src:url("../fonts/Lato/lato-italic.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-italic.woff2") format("woff2"),url("../fonts/Lato/lato-italic.woff") format("woff"),url("../fonts/Lato/lato-italic.ttf") format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:url("../fonts/RobotoSlab/roboto-slab.eot");src:url("../fonts/RobotoSlab/roboto-slab-v7-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.woff2") format("woff2"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.woff") format("woff"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.ttf") format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:url("../fonts/RobotoSlab/roboto-slab-v7-bold.eot");src:url("../fonts/RobotoSlab/roboto-slab-v7-bold.eot?#iefix") format("embedded-opentype"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.woff2") format("woff2"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.woff") format("woff"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.ttf") format("truetype")} diff --git a/zh_CN/_static/doctools.js b/zh_CN/_static/doctools.js new file mode 100644 index 000000000..ffadbec11 --- /dev/null +++ b/zh_CN/_static/doctools.js @@ -0,0 +1,315 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var bbox = span.getBBox(); + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + var parentOfText = node.parentNode.parentNode; + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { + this.initOnKeyListeners(); + } + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keyup(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box or textarea + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/zh_CN/_static/documentation_options.js b/zh_CN/_static/documentation_options.js new file mode 100644 index 000000000..64b43f2c1 --- /dev/null +++ b/zh_CN/_static/documentation_options.js @@ -0,0 +1,296 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'zh_CN', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SEARCH_LANGUAGE_STOP_WORDS: ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"] +}; + + + +/* Non-minified version JS is _stemmer.js if file is provided */ +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + + + + +var splitChars = (function() { + var result = {}; + var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, + 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, + 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, + 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, + 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, + 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, + 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, + 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, + 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, + 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; + var i, j, start, end; + for (i = 0; i < singles.length; i++) { + result[singles[i]] = true; + } + var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], + [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], + [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], + [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], + [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], + [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], + [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], + [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], + [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], + [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], + [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], + [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], + [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], + [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], + [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], + [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], + [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], + [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], + [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], + [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], + [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], + [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], + [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], + [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], + [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], + [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], + [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], + [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], + [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], + [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], + [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], + [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], + [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], + [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], + [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], + [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], + [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], + [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], + [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], + [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], + [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], + [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], + [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], + [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], + [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], + [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], + [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], + [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], + [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; + for (i = 0; i < ranges.length; i++) { + start = ranges[i][0]; + end = ranges[i][1]; + for (j = start; j <= end; j++) { + result[j] = true; + } + } + return result; +})(); + +function splitQuery(query) { + var result = []; + var start = -1; + for (var i = 0; i < query.length; i++) { + if (splitChars[query.charCodeAt(i)]) { + if (start !== -1) { + result.push(query.slice(start, i)); + start = -1; + } + } else if (start === -1) { + start = i; + } + } + if (start !== -1) { + result.push(query.slice(start)); + } + return result; +} + + diff --git a/zh_CN/_static/down-pressed.png b/zh_CN/_static/down-pressed.png new file mode 100644 index 000000000..5756c8cad Binary files /dev/null and b/zh_CN/_static/down-pressed.png differ diff --git a/zh_CN/_static/down.png b/zh_CN/_static/down.png new file mode 100644 index 000000000..1b3bdad2c Binary files /dev/null and b/zh_CN/_static/down.png differ diff --git a/zh_CN/_static/favicon.ico b/zh_CN/_static/favicon.ico new file mode 100644 index 000000000..73c917b1f Binary files /dev/null and b/zh_CN/_static/favicon.ico differ diff --git a/zh_CN/_static/file.png b/zh_CN/_static/file.png new file mode 100644 index 000000000..a858a410e Binary files /dev/null and b/zh_CN/_static/file.png differ diff --git a/zh_CN/_static/fonts/Inconsolata-Bold.ttf b/zh_CN/_static/fonts/Inconsolata-Bold.ttf new file mode 100644 index 000000000..809c1f582 Binary files /dev/null and b/zh_CN/_static/fonts/Inconsolata-Bold.ttf differ diff --git a/zh_CN/_static/fonts/Inconsolata-Regular.ttf b/zh_CN/_static/fonts/Inconsolata-Regular.ttf new file mode 100644 index 000000000..fc981ce7a Binary files /dev/null and b/zh_CN/_static/fonts/Inconsolata-Regular.ttf differ diff --git a/zh_CN/_static/fonts/Inconsolata.ttf b/zh_CN/_static/fonts/Inconsolata.ttf new file mode 100644 index 000000000..4b8a36d24 Binary files /dev/null and b/zh_CN/_static/fonts/Inconsolata.ttf differ diff --git a/zh_CN/_static/fonts/Lato-Bold.ttf b/zh_CN/_static/fonts/Lato-Bold.ttf new file mode 100644 index 000000000..1d23c7066 Binary files /dev/null and b/zh_CN/_static/fonts/Lato-Bold.ttf differ diff --git a/zh_CN/_static/fonts/Lato-Regular.ttf b/zh_CN/_static/fonts/Lato-Regular.ttf new file mode 100644 index 000000000..0f3d0f837 Binary files /dev/null and b/zh_CN/_static/fonts/Lato-Regular.ttf differ diff --git a/zh_CN/_static/fonts/Lato/lato-bold.eot b/zh_CN/_static/fonts/Lato/lato-bold.eot new file mode 100644 index 000000000..3361183a4 Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-bold.eot differ diff --git a/zh_CN/_static/fonts/Lato/lato-bold.ttf b/zh_CN/_static/fonts/Lato/lato-bold.ttf new file mode 100644 index 000000000..29f691d5e Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-bold.ttf differ diff --git a/zh_CN/_static/fonts/Lato/lato-bold.woff b/zh_CN/_static/fonts/Lato/lato-bold.woff new file mode 100644 index 000000000..c6dff51f0 Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-bold.woff differ diff --git a/zh_CN/_static/fonts/Lato/lato-bold.woff2 b/zh_CN/_static/fonts/Lato/lato-bold.woff2 new file mode 100644 index 000000000..bb195043c Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-bold.woff2 differ diff --git a/zh_CN/_static/fonts/Lato/lato-bolditalic.eot b/zh_CN/_static/fonts/Lato/lato-bolditalic.eot new file mode 100644 index 000000000..3d4154936 Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-bolditalic.eot differ diff --git a/zh_CN/_static/fonts/Lato/lato-bolditalic.ttf b/zh_CN/_static/fonts/Lato/lato-bolditalic.ttf new file mode 100644 index 000000000..f402040b3 Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-bolditalic.ttf differ diff --git a/zh_CN/_static/fonts/Lato/lato-bolditalic.woff b/zh_CN/_static/fonts/Lato/lato-bolditalic.woff new file mode 100644 index 000000000..88ad05b9f Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-bolditalic.woff differ diff --git a/zh_CN/_static/fonts/Lato/lato-bolditalic.woff2 b/zh_CN/_static/fonts/Lato/lato-bolditalic.woff2 new file mode 100644 index 000000000..c4e3d804b Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-bolditalic.woff2 differ diff --git a/zh_CN/_static/fonts/Lato/lato-italic.eot b/zh_CN/_static/fonts/Lato/lato-italic.eot new file mode 100644 index 000000000..3f826421a Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-italic.eot differ diff --git a/zh_CN/_static/fonts/Lato/lato-italic.ttf b/zh_CN/_static/fonts/Lato/lato-italic.ttf new file mode 100644 index 000000000..b4bfc9b24 Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-italic.ttf differ diff --git a/zh_CN/_static/fonts/Lato/lato-italic.woff b/zh_CN/_static/fonts/Lato/lato-italic.woff new file mode 100644 index 000000000..76114bc03 Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-italic.woff differ diff --git a/zh_CN/_static/fonts/Lato/lato-italic.woff2 b/zh_CN/_static/fonts/Lato/lato-italic.woff2 new file mode 100644 index 000000000..3404f37e2 Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-italic.woff2 differ diff --git a/zh_CN/_static/fonts/Lato/lato-regular.eot b/zh_CN/_static/fonts/Lato/lato-regular.eot new file mode 100644 index 000000000..11e3f2a5f Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-regular.eot differ diff --git a/zh_CN/_static/fonts/Lato/lato-regular.ttf b/zh_CN/_static/fonts/Lato/lato-regular.ttf new file mode 100644 index 000000000..74decd9eb Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-regular.ttf differ diff --git a/zh_CN/_static/fonts/Lato/lato-regular.woff b/zh_CN/_static/fonts/Lato/lato-regular.woff new file mode 100644 index 000000000..ae1307ff5 Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-regular.woff differ diff --git a/zh_CN/_static/fonts/Lato/lato-regular.woff2 b/zh_CN/_static/fonts/Lato/lato-regular.woff2 new file mode 100644 index 000000000..3bf984332 Binary files /dev/null and b/zh_CN/_static/fonts/Lato/lato-regular.woff2 differ diff --git a/zh_CN/_static/fonts/RobotoSlab-Bold.ttf b/zh_CN/_static/fonts/RobotoSlab-Bold.ttf new file mode 100644 index 000000000..df5d1df27 Binary files /dev/null and b/zh_CN/_static/fonts/RobotoSlab-Bold.ttf differ diff --git a/zh_CN/_static/fonts/RobotoSlab-Regular.ttf b/zh_CN/_static/fonts/RobotoSlab-Regular.ttf new file mode 100644 index 000000000..eb52a7907 Binary files /dev/null and b/zh_CN/_static/fonts/RobotoSlab-Regular.ttf differ diff --git a/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot new file mode 100644 index 000000000..79dc8efed Binary files /dev/null and b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot differ diff --git a/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf new file mode 100644 index 000000000..df5d1df27 Binary files /dev/null and b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf differ diff --git a/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff new file mode 100644 index 000000000..6cb600001 Binary files /dev/null and b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff differ diff --git a/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 new file mode 100644 index 000000000..7059e2314 Binary files /dev/null and b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 differ diff --git a/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot new file mode 100644 index 000000000..2f7ca78a1 Binary files /dev/null and b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot differ diff --git a/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf new file mode 100644 index 000000000..eb52a7907 Binary files /dev/null and b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf differ diff --git a/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff new file mode 100644 index 000000000..f815f63f9 Binary files /dev/null and b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff differ diff --git a/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 new file mode 100644 index 000000000..f2c76e5bd Binary files /dev/null and b/zh_CN/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 differ diff --git a/zh_CN/_static/fonts/fontawesome-webfont.eot b/zh_CN/_static/fonts/fontawesome-webfont.eot new file mode 100644 index 000000000..e9f60ca95 Binary files /dev/null and b/zh_CN/_static/fonts/fontawesome-webfont.eot differ diff --git a/zh_CN/_static/fonts/fontawesome-webfont.svg b/zh_CN/_static/fonts/fontawesome-webfont.svg new file mode 100644 index 000000000..855c845e5 --- /dev/null +++ b/zh_CN/_static/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/zh_CN/_static/fonts/fontawesome-webfont.ttf b/zh_CN/_static/fonts/fontawesome-webfont.ttf new file mode 100644 index 000000000..35acda2fa Binary files /dev/null and b/zh_CN/_static/fonts/fontawesome-webfont.ttf differ diff --git a/zh_CN/_static/fonts/fontawesome-webfont.woff b/zh_CN/_static/fonts/fontawesome-webfont.woff new file mode 100644 index 000000000..400014a4b Binary files /dev/null and b/zh_CN/_static/fonts/fontawesome-webfont.woff differ diff --git a/zh_CN/_static/fonts/fontawesome-webfont.woff2 b/zh_CN/_static/fonts/fontawesome-webfont.woff2 new file mode 100644 index 000000000..4d13fc604 Binary files /dev/null and b/zh_CN/_static/fonts/fontawesome-webfont.woff2 differ diff --git a/zh_CN/_static/jquery-3.2.1.js b/zh_CN/_static/jquery-3.2.1.js new file mode 100644 index 000000000..d2d8ca479 --- /dev/null +++ b/zh_CN/_static/jquery-3.2.1.js @@ -0,0 +1,10253 @@ +/*! + * jQuery JavaScript Library v3.2.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-20T18:59Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.2.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( ">tbody", elem )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; + + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with computed style + var valueIsBorderBox, + styles = getStyles( elem ), + val = curCSS( elem, name, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Fall back to offsetWidth/Height when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + if ( val === "auto" ) { + val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; + } + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + + // Use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnothtmlwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + 关于 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

关于

+

Clear Linux OS 提供安全的、针对硬件优化的操作系统。它容易更新,这可确保软件依赖项保持相互兼容。

+

Clear Linux OS 通过自定义基础结构组件和流程创新实现这一点。

+ +

有关这些主题的详细信息,请参阅 Clear Linux 指南。

+
+

发行节奏

+

Clear Linux OS 更新基于每周最多发生几次的滚动发行。每个发行版都有唯一的版本号,用于标识操作系统中的每个组件,包括内核、驱动程序、工具和 GUI 应用程序。大部分组件都包含在称为捆绑包的实体中。

+
+
+

更新

+

默认情况下,Clear Linux OS 会自动检查更新,以确保尽快安装可用的最新性能修补程序和安全修补程序。swupd 是设计用于管理更新和捆绑包的自定义工具。

+

Clear Linux OS 无状态,以确保可以更新系统组件而不影响用户设置。

+
+
+

易用性

+

使用 Clear Linux OS 可以更轻松地管理许多难题。

+
    +
  • Autoproxy 使 Clear Linux OS 工具无需进行配置便可在某些代理环境中运行。
  • +
  • 无状态 意味着更新系统软件时,配置设置更容易管理并且保持不变。
  • +
  • swupd 简化了软件管理和兼容性维护。
  • +
+
+
+

自定义衍生工具

+

操作系统中提供了用于生成 Clear Linux OS 的相同工具。这些工具可用于创建自定义分发版,以持续从上游滚动发行获益。

+
+Creating and managing a Clear Linux* OS  version (or derivative) +

图 1:创建和管理 Clear Linux* 操作系统版本(或衍生工具)

+
+
+

创建

+

要创建自定义分发版,您需要了解如何使用 autospecmixer 工具。

+

how-to-clear GitHub* 项目中提供了其他培训材料,可帮助您开始使用 Clear Linux OS 工具。

+
+
+

部署

+

我们还提供有关如何 大规模部署 的培训。

+
+
+

管理

+

Clear Linux OS 提供了用于收集有关部署的有用信息的 遥测 解决方案,还提供了 调试系统 功能。

+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/disclaimers.html b/zh_CN/disclaimers.html new file mode 100644 index 000000000..c03e23a9f --- /dev/null +++ b/zh_CN/disclaimers.html @@ -0,0 +1,1047 @@ + + + + + + + + + + + + + + <no title> — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Disclaimer

+
+

重要

+

This documentation is a work in progress and is being provided for +informative purposes only. Because it is a work in progress, there are +parts that are either missing or will be revised as code development +continues.

+
+ + +
+ +
+
+ + +
+ +
+

+ © Copyright 2019. + + 最后更新于 1月 17, 2020. + + +

+
+ Built with Sphinx using a theme provided by Read the Docs. + +
+ +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/documentation_license.html b/zh_CN/documentation_license.html new file mode 100644 index 000000000..fa4f73fe0 --- /dev/null +++ b/zh_CN/documentation_license.html @@ -0,0 +1,1045 @@ + + + + + + + + + + + + + + <no title> — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
This work is licensed under a Creative Commons +Attribution 4.0 International License + +
+ +
+
+ + +
+ +
+

+ © Copyright 2019. + + 最后更新于 1月 17, 2020. + + +

+
+ Built with Sphinx using a theme provided by Read the Docs. + +
+ +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/genindex-H.html b/zh_CN/genindex-H.html new file mode 100644 index 000000000..242c4cce5 --- /dev/null +++ b/zh_CN/genindex-H.html @@ -0,0 +1,1043 @@ + + + + + + + + + + + + + + + 索引 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • 索引
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ + +

索引 – H

+ + + +
+ + +
+ +
+
+ + +
+ +
+

+ © Copyright 2019. + + 最后更新于 1月 17, 2020. + + +

+
+ Built with Sphinx using a theme provided by Read the Docs. + +
+ +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/genindex-R.html b/zh_CN/genindex-R.html new file mode 100644 index 000000000..2bb0901cb --- /dev/null +++ b/zh_CN/genindex-R.html @@ -0,0 +1,1047 @@ + + + + + + + + + + + + + + + 索引 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • 索引
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ + +

索引 – R

+ + + + +
+ + +
+ +
+
+ + +
+ +
+

+ © Copyright 2019. + + 最后更新于 1月 17, 2020. + + +

+
+ Built with Sphinx using a theme provided by Read the Docs. + +
+ +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/genindex-S.html b/zh_CN/genindex-S.html new file mode 100644 index 000000000..8043f731c --- /dev/null +++ b/zh_CN/genindex-S.html @@ -0,0 +1,1043 @@ + + + + + + + + + + + + + + + 索引 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • 索引
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ + +

索引 – S

+ + + +
+ + +
+ +
+
+ + +
+ +
+

+ © Copyright 2019. + + 最后更新于 1月 17, 2020. + + +

+
+ Built with Sphinx using a theme provided by Read the Docs. + +
+ +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/genindex-all.html b/zh_CN/genindex-all.html new file mode 100644 index 000000000..3ebd77168 --- /dev/null +++ b/zh_CN/genindex-all.html @@ -0,0 +1,1091 @@ + + + + + + + + + + + + + + + 索引 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • 索引
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ + +

索引

+ +
+ H + | R + | S + | + +
+

H

+ + +
+ +

R

+ + + +
+ +

S

+ + +
+ +

+ + +
+ + + +
+ +
+
+ + +
+ +
+

+ © Copyright 2019. + + 最后更新于 1月 17, 2020. + + +

+
+ Built with Sphinx using a theme provided by Read the Docs. + +
+ +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/zh_CN/genindex-\347\216\257.html" "b/zh_CN/genindex-\347\216\257.html" new file mode 100644 index 000000000..9fc266e84 --- /dev/null +++ "b/zh_CN/genindex-\347\216\257.html" @@ -0,0 +1,1054 @@ + + + + + + + + + + + + + + + 索引 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • 索引
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ + +

索引 – 环

+ + + +
+ + +
+ +
+
+ + +
+ +
+

+ © Copyright 2019. + + 最后更新于 1月 17, 2020. + + +

+
+ Built with Sphinx using a theme provided by Read the Docs. + +
+ +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/genindex.html b/zh_CN/genindex.html new file mode 100644 index 000000000..920c5ef18 --- /dev/null +++ b/zh_CN/genindex.html @@ -0,0 +1,1054 @@ + + + + + + + + + + + + + + 索引 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ + +

索引

+ +

按照字母的索引页:

+ + + + +
+ +
+
+ + +
+ +
+

+ © Copyright 2019. + + 最后更新于 1月 17, 2020. + + +

+
+ Built with Sphinx using a theme provided by Read the Docs. + +
+ +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/bare-metal-install-desktop.html b/zh_CN/get-started/bare-metal-install-desktop.html new file mode 100644 index 000000000..ca97de580 --- /dev/null +++ b/zh_CN/get-started/bare-metal-install-desktop.html @@ -0,0 +1,1511 @@ + + + + + + + + + + + + + + 从实时桌面安装 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

从实时桌面安装 Clear Linux* OS

+

本页介绍如何引导 Clear Linux* OS 实时桌面映像,您可以从该映像安装 Clear Linux OS 或查看该映像内容,而不必修改主机系统。

+ +
+

系统要求

+

安装 Clear Linux OS 之前,请确认主机系统满足安装条件:

+ +
+
+

初始步骤

+
    +
  1. 访问我们的 Downloads 页面。

    +
  2. +
  3. 下载 clear-<release number>-live-desktop.iso 文件(该文件也称为 Clear Linux OS 桌面)。

    +
    +

    注解

    +

    <release-number> 是最新的 Clear Linux OS 自动编号版本。

    +
    +
  4. +
  5. 确认该文件是否适合您的操作系统,然后解压缩。

    + +
  6. +
  7. 按照操作系统说明创建一个可引导的 USB 驱动器。

    + +
  8. +
+
+
+

从实时映像安装

+

下载实时桌面映像并将其刻录到 USB 驱动器后,请按照以下步骤操作。

+
    +
  1. 将 USB 驱动器插入可用的 USB 插槽。

    +
  2. +
  3. 打开系统电源。

    +
  4. +
  5. F2 键打开系统 BIOS 设置菜单。您的 BIOS 设置菜单入口点可能会有所不同。

    +
  6. +
  7. 在设置菜单中,启用 UEFI 引导,并在设备引导顺序中将 USB 驱动器设置为第一个选项。

    +
  8. +
  9. 保存这些设置,例如按 F10,然后退出。

    +
  10. +
  11. 重新引导目标系统。

    +
  12. +
  13. 在引导菜单中选择 Clear Linux OS,如图 1 所示。

    +
    +Clear Linux OS in boot menu +

    图 1:引导菜单中的 Clear Linux OS

    +
    +
  14. +
+
+

软件(可选)

+

查看 Clear Linux OS 捆绑包内容和其他软件。双击“Activities”菜单中的 Software 图标,如图 2 所示。启动软件应用程序之前,请确保存在网络连接。

+
+

注解

+

运行 Clear Linux OS 实时桌面映像时,在软件应用程序中只能查看映像的内容。查看映像内容期间,请勿尝试安装应用程序。

+
+
+
+

启动 Clear Linux OS 安装程序

+
    +
  1. 实时桌面映像启动后,在左侧垂直方向滚动至 Activities 菜单。

    +
  2. +
  3. 点击 Clear Linux OS 企鹅图标启动安装程序,如图 2 所示。

    +
    +Install Clear Linux OS icon +

    图 2:Clear Linux OS 安装程序图标

    +
    +
  4. +
  5. 安装程序启动后如图 3 所示。

    +
    +|CL| Desktop Installer +

    图 3:Clear Linux OS 操作系统桌面安装程序

    +
    +
  6. +
  7. Select Language 中,从选项中选择一种语言,或在搜索栏中键入所需的语言。

    +
  8. +
  9. 选择 Next

    +
  10. +
+
+
+

检查是否满足所有先决条件

+

安装程序会自动启动 Checking Prerequisites,检查目标系统的兼容性和网络连接。

+

安装程序显示 Prerequisites passed 后,选择 Next 继续安装。

+
+Checking Prerequisites +

图 4:检查是否满足所有先决条件

+
+
+

网络代理(可选)

+
    +
  1. 配置 Network Proxy 设置。
  2. +
  3. 在右上角的菜单栏中,选择 Power button
  4. +
  5. 选择 Wired Connected,然后选择 Wired Settings
      +
    1. Network Proxy 中,选择 Gear 图标查看选项。
    2. +
    3. AutomaticManualDisabled 中选择一个选项。
    4. +
    5. 关闭 Network Proxy
    6. +
    +
  6. +
  7. 关闭 Settings
  8. +
+
+
+
+
+

最低安装要求

+

要满足最低安装要求,请填写 Required options。我们还建议填写 Advanced options

+
+

注解

+
    +
  • 仅当填写 Required options 后才会高亮显示 安装 按钮。
  • +
  • 勾选标记表示已选择某个选项。
  • +
  • 安装期间需要能访问 Internet。您可能需要在安装前启动浏览器来确认能否访问 Internet。
  • +
+
+
+
+

Clear Linux OS 桌面安装程序

+

出现 Clear Linux OS 桌面安装程序“Main Menu”,如图 5 所示。要满足最低要求,请在 Required options 的所有子菜单中输入值。输入完成后,所选内容将出现在子菜单下方,且右侧会出现一个勾选标记。

+
+Clear Linux OS Desktop Installer - Main Menu +

图 5:Clear Linux OS 桌面安装程序 - 主菜单

+
+
+ +
+

必填选项

+
+

选择时区

+
    +
  1. 从“Main Menu”中,选择 Select Time Zone。默认情况下选择 UTC

    +
  2. +
  3. Select Time Zone 中,导航到所需时区。或者先键入地区,然后键入城市。(例如 America/Los_Angeles)。

    +
  4. +
  5. 选择 Confirm

    +
    +Select System Timezone +

    图 6:选择系统时区

    +
    +
  6. +
+
+
+

选择键盘

+
    +
  1. 从“Main Menu”中,选择 Select Keyboard

    +
  2. +
  3. 导航到所需的键盘布局。我们为美国选择 “us”。

    +
  4. +
  5. 选择 Confirm

    +
    +Select Keyboard menu +

    图 7:选择键盘菜单

    +
    +
  6. +
+
+
+

选择安装媒介

+
    +
  1. 从“Main Menu”中,选择 Select Installation Media

    +
  2. +
  3. 选择安装方法:Safe InstallationDestructive Installation

    +
    +Select Installation Media +

    图 8:选择安装媒介

    +
    +
  4. +
+
+

安全安装

+

使用此方法可将 Clear Linux OS 安全地安装在具有可用空间的媒介上,或者将其与现有分区安装在一起,并接受 Default partition schema。如果有足够的可用空间,则可以执行安全安装。

+
+

注解

+

Clear Linux OS 可与另一个操作系统安装在一起。通常,当您引导系统时,您可以在 BIOS 开机自检阶段按 F 键 查看并所选可引导设备或分区。有些 BIOS 提供 Clear Linux OS 分区,您可以选择该分区并引导。但是,其他 BIOS 可能只显示主分区,在这种情况下,您将无法引导 Clear Linux OS。请注意这一潜在限制。

+
+
+
+

破坏性安装

+

使用此方法会销毁目标设备上的内容,在目标设备上安装 Clear Linux OS 并接受 Default partition schema

+
+
+
+

磁盘加密

+

为了提高安全性,支持使用 LUKS 加密磁盘。加密是可选的。

+
    +
  1. 要加密根分区,请选择 Enable Encryption,如图 9 所示。

    +
    +Enable Encryption +

    图 9:启用加密

    +
    +
  2. +
  3. 出现 Encryption Passphrase 时,输入密码短语。

    +
    +Encryption Passphrase +

    图 10:加密密码短语

    +
    +
    +

    注解

    +

    最小长度为 8 个字符。最大长度为 94 个字符。

    +
    +
  4. +
  5. 在第二个字段中输入相同的密码短语。

    +
  6. +
  7. 在对话框中选择 Confirm

    +
    +

    注解

    +

    Confirm 仅在两个密码短语匹配时高亮显示。

    +
    +
  8. +
  9. 在子菜单中选择 Confirm

    +
  10. +
+
+
+

管理用户

+
    +
  1. 在“必填选项”中,选择 Manage User

    +
  2. +
  3. User Name 中,输入用户名。

    +
    +Manage User +

    图 11:管理用户

    +
    +
  4. +
  5. Login 中,创建一个登录名。登录名必须以字母开头,并可以使用数字、连字符和下划线。最大长度为 31 个字符。

    +
  6. +
  7. Password 中,输入密码。最小长度为 8 个字符。最大长度为 255 个字符。

    +
  8. +
  9. Confirm 中,输入相同的密码。

    +
    +

    注解

    +

    默认情况下会选择 Administrator 权限。出于安全考虑,必须将默认用户分配为管理员。

    +
    +
  10. +
  11. 选择 确认

    +
    +

    注解

    +

    选择 Cancel 会返回“Main Menu”。

    +
    +
  12. +
+
+

修改用户

+
    +
  1. 在“Manager User”中,选择 Manage User

    +
  2. +
  3. 根据需要修改用户详细信息。

    +
  4. +
  5. 选择 Confirm 保存所做的更改。

    +
    +

    注解

    +

    可选:选择 Cancel 会不保存更改并返回“Main Menu”。

    +
    +
  6. +
+

可选:跳到 Finish installation

+
+
+
+

遥测技术

+

选择是否参与`遥测技术`。遥测 是 Clear Linux OS 的一项功能,用来向 Clear Linux OS 开发团队报告故障和崩溃以备改进。有关详细信息,请参阅。

+
    +
  1. Required Options 中选择 Telemetry

    +
  2. +
  3. 选择 Yes

    +
    +Enable Telemetry +

    图 12:启用遥测技术

    +
    +
  4. +
  5. 如果不想参加,请选择 No

    +
  6. +
+
+
+
+

高级选项

+

填写完 Required options 后,我们建议您设置 Advanced options,尽管它们不是必需的。设置高级选项可以定制开发环境,便于在重启后立即开始使用。

+
+

注解

+

日后始终可以使用 swupd 添加更多捆绑包。

+
+
+

捆绑包选择

+
    +
  1. 在“Advanced”菜单中,选择 Bundle Selection

    +
  2. +
  3. 选择所需的捆绑包。

    +
    +Bundle Selection +

    图 13:捆绑包选择

    +
    +
  4. +
  5. 选择 确认

    +
  6. +
  7. 查看已选的捆绑包。

    +
    +Bundle Selections - Advanced Options +

    图 14:捆绑包选择 - 高级选项

    +
    +
  8. +
+

可选:跳到 Finish installation

+
+
+

分配主机名

+
    +
  1. 在“高级选项”中,选择 Assign Hostname

    +
  2. +
  3. Hostname 中,仅输入主机名(不包括域)。

    +
    +Assign Hostname +

    图 15:分配主机名

    +
    +
    +

    注解

    +

    主机名不允许有空格。主机名必须以字母数字字符开头,但也可以包含连字符。最大长度为 63 个字符。

    +
    +
  4. +
  5. 选择 确认

    +
  6. +
+

可选:跳到 Finish installation

+
+
+

内核配置

+
    +
  1. Kernel Configuration 中,通过导航选择所需的内核。默认情况下会选择 Native

    +
    +Kernel Configuration +

    图 16:内核配置

    +
    +
  2. +
  3. 要添加参数,请在 Add Extra Arguments 中输入参数。

    +
  4. +
  5. 要移除参数,请在 Remove Arguments 中输入参数。

    +
  6. +
  7. 选择 确认

    +
  8. +
+
+
+

软件更新程序配置

+
    +
  1. 在“高级选项”中,选择 Software Updater Configuration

    +
  2. +
  3. Mirror URL 中,如需指定不同的安装源,请按照说明操作。

    +
  4. +
  5. 默认情况下会选择 Enable Auto Updates。如果不希望启用软件自动更新,请取消选中该框。

    +
    +Software Updater Configuration +

    图 17:软件更新程序配置

    +
    +
  6. +
  7. 选择 确认

    +
  8. +
+
+
+
+

完成安装

+
    +
  1. 如对安装配置满意,请选择 Install

    +
    +Assign Hostname +

    图 18:完成安装

    +
    +
  2. +
  3. 如果并没有为所有 Required Options 设置选项, Install 按钮将保持禁用状态,如图 19 所示。返回 Required options 并进行选择。

    +
    +Required Options - Incomplete +

    图 19:必填选项 - 不完整

    +
    +
  4. +
  5. 安装完成后,选择 Exit

    +
  6. +
  7. 关闭目标系统。

    +
  8. +
  9. 卸下 USB 或任何安装媒介。

    +
  10. +
  11. 打开系统电源。

    +
    +

    注解

    +

    等待图形登录窗口显示。登录提示会显示您此前创建的管理用户。

    +
    +
  12. +
  13. 以该管理用户身份登录。

    +
  14. +
+

祝贺您。您已成功安装 Clear Linux OS。

+
+

默认分区架构

+

根据表 1 中的要求创建分区。

+ + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + +
表 1.默认分区架构
文件系统标签挂载点默认大小
VFAT (FAT32)引导/boot150MB
linux-swap交换 256MB
ext[234] 或 XFSroot/大小取决于用例/所需的捆绑包。
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/bare-metal-install-server.html b/zh_CN/get-started/bare-metal-install-server.html new file mode 100644 index 000000000..6dc6265fb --- /dev/null +++ b/zh_CN/get-started/bare-metal-install-server.html @@ -0,0 +1,1789 @@ + + + + + + + + + + + + + + 使用实时服务器将 Clear Linux* OS 安装在裸机上 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

使用实时服务器将 Clear Linux* OS 安装在裸机上

+

本页介绍如何使用实时服务器映像从可引导 USB 驱动器将 Clear Linux* OS 安装到裸机上。

+ +
+

系统要求

+

安装 Clear Linux OS 之前,请确认主机系统满足安装条件:

+ +
+
+

下载最新的 Clear Linux OS 实时服务器映像

+

Downloads 页面获取最新的 Clear Linux OS 安装程序映像。查找 clear-[version number]-live-server.iso 文件。

+
    +
  1. 确认该文件是否适合您的操作系统,然后解压缩。 +
  2. +
  3. 按照操作系统说明创建一个可引导的 USB 驱动器。 +
  4. +
+
+
+

在目标系统上安装 Clear Linux OS

+

确保您的系统已配置为引导 UEFI。下述安装方法需要通过有线 Internet 连接与 DHCP 服务器通信。

+
+

注解

+

或者,您也可以首先使用 nmtui,然后通过无线连接安装 Clear Linux OS。按照图 2 所示的 nmtui 说明执行操作。

+
+

按照以下步骤在目标系统上安装 Clear Linux OS:

+
    +
  1. 将 USB 驱动器插入可用的 USB 插槽。

    +
  2. +
  3. 打开系统电源。

    +
  4. +
  5. F2 键打开系统 BIOS 设置菜单。您的 BIOS 设置菜单入口点可能会有所不同。

    +
    +

    注解

    +

    Clear Linux OS 支持 UEFI 引导。某些硬件可能会列出 UEFI 和非 UEFI USB 引导条目。在这种情况下,您应该选择 UEFI 引导选项。

    +
    +
  6. +
  7. 在设置菜单中,启用 UEFI 引导,并在设备引导顺序中将 USB 驱动器设置为第一个选项。

    +
  8. +
  9. 保存这些设置并退出。

    +
  10. +
  11. 重新引导目标系统。

    +
  12. +
  13. 此操作会启动 Clear Linux OS 安装程序引导菜单,如图 1 所示。

    +
    +Clear Linux OS Installer boot menu +

    图 1:Clear Linux OS 安装程序引导菜单

    +
    +
  14. +
  15. Clear Linux OS 高亮显示的情况下,选择 Enter

    +
  16. +
+
+
+

启动 Clear Linux OS 安装程序

+
    +
  1. login 提示符下,输入 root

    +
  2. +
  3. 如图 2 所示,按照屏幕说明执行操作,并输入临时密码。

    +
    +root login +

    图 2:root 登录

    +
    +
  4. +
  5. root 提示符下,输入 clr-installer,然后按 Enter

    +
    +clr-installer command +

    图 3:clr-installer 命令

    +
    +
  6. +
+
+
+

最低安装要求

+

要满足最低安装要求,请填写 Required options。我们建议您选择 Recommended options (非必选)。Advanced options 为可选项 。

+
+

注解

+ +
+
+ + +
+

必填选项

+
+

选择时区

+
    +
  1. 从“Main Menu”中,导航到 Choose Timezone。默认情况下会选择 UTC
  2. +
  3. 选择 Enter
  4. +
  5. Select System Timezone 中,使用 向上/向下 箭头可导航到所需时区。
  6. +
+
    +
  1. Enter 进行确认。

    +
    +Select System Timezone +

    图 5:选择系统时区

    +
    +
  2. +
+
+
+

选择语言

+
    +
  1. 从“Main Menu”中,导航到 Choose Language

    +
  2. +
  3. 选择 Enter

    +
  4. +
  5. Select System Language 中,导航到所需的语言。

    +
  6. +
  7. Enter 进行确认。

    +
    +Select System Language +

    图 6:选择系统语言

    +
    +
  8. +
+
+
+

配置键盘

+
    +
  1. 从“Main Menu”中,选择 Configure the Keyboard

    +
  2. +
  3. 选择 Enter

    +
  4. +
  5. Select Keyboard 中,导航到所需的选项。

    +
  6. +
  7. 选择 Enter 进行 确认

    +
  8. +
  9. 可选:在 Test keyboard 中,键入文本以确保按键映射到您的键盘。

    +
    +Select Keyboard menu +

    图 7:选择键盘菜单

    +
    +
  10. +
+
+
+

配置安装媒介

+
    +
  1. 从“Main Menu”中,选择 Configure Installation Media

    +
  2. +
  3. 选择安装方法: * Safe Installation * Destructive Installation * Advanced Configuration

    +
    +Select Installation Media +

    图 8:选择安装媒介

    +
    +
  4. +
  5. 选择 Rescan Media 显示可用的安装目标。

    +
  6. +
+
+

安全安装

+

使用此方法可将 Clear Linux OS 安全地安装在具有可用空间的媒介上,或者将其与现有分区安装在一起,并接受 Default partition schema。如果有足够的可用空间,则可以执行安全安装。另请参阅下面的 Troubleshooting

+
+
+

破坏性安装

+

使用此方法会销毁目标设备上的内容,在目标设备上安装 Clear Linux OS 并接受 Default partition schema

+
+

注解

+

Select Installation Media 菜单中,选择 Enable Encryption 对上述任一选项的根文件系统进行加密。有关详细信息,另请参阅 Disk encryption

+
+
+
+

高级配置

+

使用此方法可手动配置分区。这些分区必须符合 Default partition schema。您也可以在配置每个分区时选择 Disk encryption

+
+

注解

+

Advanced Configuration 在 1.2.0 和更高版本安装程序中可用。

+
+
    +
  1. 如上图 8 所示,从 Select Installation Media 中,选择 Advanced Configuration

    +
  2. +
  3. Advanced Configuration 中,导航到 /dev/sda,然后按 Enter

    +
    +Advanced configuration menu +

    图 9:高级配置菜单

    +
    +
  4. +
  5. 选择一种分区方法:

    + +
  6. +
+
+
+

手动分区

+

下面我们提供一个简单的例子。

+
    +
  1. 导航到未分配的媒介(例如 /dev/sda),直到其高亮显示,如图 9 所示。

    +
  2. +
  3. Enter 编辑该分区。

    +
  4. +
  5. 出现 Partition Setup 菜单,如图 10 所示。

    +
    +

    注解

    +

    添加第一个分区后,选择 Free Space 添加另一个分区。

    +
    +
  6. +
+
+
+

根分区

+
    +
  1. 如图 10 所示,现在配置 root 分区。root 分区的配置各不相同。

    +
    +root partition +

    图 10:根分区

    +
    +
  2. +
  3. 导航到 Add,然后按 Enter

    +
  4. +
+
+
+

引导分区

+
    +
  1. 如图 11 所示,现在配置 boot 分区。

    +
    +boot partition +

    图 11:引导分区

    +
    +
  2. +
  3. 导航到 Add,然后按 Enter

    +
  4. +
+
+
+

交换分区

+
    +
  1. File System 下拉菜单中,选择 swap,然后输入一个标签。我们输入系统要求的最小大小(例如 256M)。

    +
    +swap partition +

    图 12:交换分区

    +
    +
  2. +
  3. 导航到 Add,然后按 Enter

    +
  4. +
  5. 接下来,导航到 Confirm,然后按 Enter,如图 13 所示。

    +

    现在完成了手动分区设置。

    +
    +Final configuration of disk partitions +

    图 13:磁盘分区的最终配置

    +
    +
  6. +
  7. 您可以跳到下面的 Telemetry 部分。

    +
  8. +
+
+
+
+

磁盘加密

+

为了进一步增强安全,支持使用 LUKS 对 Clear Linux OS 上除 /boot 以外的任何分区进行磁盘加密。要加密根分区,请参阅下面的示例。加密是可选的。

+
+

加密密码

+

Clear Linux OS 使用单一密码短语加密分区。安装后可以使用 cryptsetup 工具配置其他密钥。

+
    +
  1. 可选:选择 [X] Encrypt 可加密根分区,如图 14 所示。

    +
    +Encrypt partition +

    图 14:加密分区

    +
    +
  2. +
  3. 出现 Encryption Passphrase 对话框。

    +
    +

    注解

    +

    最小长度为 8 个字符。最大长度为 94 个字符。

    +
    +
    +Encryption Passphrase +

    图 15:加密密码短语

    +
    +
  4. +
  5. 在第一个和第二个字段中输入相同的密码短语。

    +
  6. +
  7. 导航到 Confirm,然后按 Enter

    +
    +

    注解

    +

    Confirm 仅在两个密码短语匹配时高亮显示。

    +
    +
  8. +
+
+
+
+

遥测技术

+

遥测 是 Clear Linux OS 的一项功能,用来向 Clear Linux OS 开发团队报告故障和崩溃以备改进。有关详细信息,请访问我们的页面。

+

根据是否要参与`遥测技术`,选择所需的选项。

+
    +
  1. 在“Main Menu”中,导航到 Telemetry,并选择 Enter

    +
  2. +
  3. 选择 Tab 高亮显示所需的选项。

    +
  4. +
  5. 选择 Enter 进行确认。

    +
    +Enable Telemetry +

    图 16:启用遥测技术

    +
    +
  6. +
+
+
+ +
+

高级选项

+
+

配置网络接口

+

默认情况下,Clear Linux OS 配置为使用 DHCP 自动检测主机网络接口。但是,如果要使用静态 IP 地址,或者如果网络上没有 DHCP 服务器,请按照以下说明手动配置网络接口。否则,系统将自动应用默认网络接口设置。

+
+

注解

+

如果 DHCP 可用,可能不需要由用户选择这些设置。

+
+
    +
  1. 导航到 Configure Network Interfaces,然后选择 Enter

    +
  2. +
  3. 导航到希望更改的网络 interface

    +
  4. +
  5. 当所需的 interface 高亮显示时,选择 Enter 进行编辑。

    +
    +

    注解

    +

    可能会出现多个网络接口。

    +
    +
    +Configure Network Interfaces +

    图 17:配置网络接口

    +
    +
  6. +
  7. 注意:默认情况下会选择 Automatic / dhcp (位于底部)。

    +

    可选:导航到 Automatic / dhcp 复选框,然后按 空格键 取消选择现有设置。

    +
    +Network interface configuration +

    图 18:网络接口配置

    +
    +
  8. +
  9. 导航到适当的字段,并分配所需的网络配置。

    +
  10. +
  11. 要保存设置,请导航到 Confirm,然后选择 Enter

    +
    +

    注解

    +

    要恢复以前的设置,请导航到 Cancel,然后选择 Enter

    +
    +
  12. +
  13. 确认网络配置后,将出现 Testing Networking 对话框。确保结果显示测试成功。如果测试失败,则不会保存您所做的更改。

    +
  14. +
  15. 确认后,您将返回到 Network interface 设置。

    +
  16. +
  17. 导航到并选择 Main Menu

    +
  18. +
+

可选:跳到 Finish installation

+
+
+

代理

+

Autoproxy 中所述,Clear Linux OS 会自动尝试检测代理设置。如果需要手动分配代理设置,请按照以下说明操作。

+
    +
  1. 从“高级选项”菜单中,导航到 Proxy,并选择 Enter

    +
  2. +
  3. 导航到 HTTPS Proxy 字段。

    +
    +Configure the network proxy +

    图 19:配置网络代理

    +
    +
  4. +
  5. 使用常规语法(例如 http://address:port)输入所需的代理地址和端口。

    +
  6. +
  7. 导航到 Confirm,然后选择 Enter

    +
  8. +
  9. 要恢复以前的设置,请导航到 Cancel,然后选择 Cancel

    +
  10. +
+

可选:跳到 Finish installation

+
+
+

测试网络设置

+

要在安装 Clear Linux OS 之前手动确保网络连通,请选择 Test Network Settings,然后选择 Enter

+

出现一个进度条,如图 20 所示。

+
+Testing Networking dialogue +

图 20:测试网络连接对话框

+
+
+

注解

+

对网络设置所做的任何更改都会在配置过程中自动测试。

+
+

可选:跳到 Finish installation

+
+
+

捆绑包选择

+
    +
  1. 在“Advanced”菜单中,选择 Bundle Selection

    +
  2. +
  3. 使用 Tab向上/向下 箭头导航到所需的捆绑包。

    +
  4. +
  5. 空格键 选择所需的每个捆绑包对应的复选框。

    +
    +Bundle Selection +

    图 21:捆绑包选择

    +
    +
  6. +
  7. 可选:要开始使用 Clear Linux OS 开展开发工作,我们建议添加 os-clr-on-clr

    +
  8. +
  9. 导航到并选择 确认

    +

    您将返回到 Advanced options 菜单。

    +
  10. +
+

可选:跳到 Finish installation

+
+
+

管理用户

+
+

添加新用户

+
    +
  1. 在“高级选项”中,选择 Manage User

    +
  2. +
  3. 选择 Add New User,如图 22 所示。

    +
    +Add New User, User Name +

    图 22:添加新用户

    +
    +
  4. +
  5. 可选:输入一个 User Name

    +
    +User Name +

    图 23:用户名

    +
    +
  6. +
  7. 输入一个 Login

    +
    +

    注解

    +

    用户登录名必须是字母数字字符,并且可以包括连字符和下划线。最大长度为 31 个字符。

    +
    +
  8. +
  9. 输入一个 Password

    +
  10. +
  11. Confirm 中,输入相同的密码。

    +
  12. +
  13. 可选:导航到 Administrative 复选框,然后按 空格键 为用户分配管理权限。

    +
    +

    注解

    +

    选择此选项将为用户启用 sudo 特权。

    +
    +
  14. +
  15. 选择 确认

    +
    +

    注解

    +

    如果需要,选择 Reset 来重置表单。

    +
    +
  16. +
  17. Manage User 中,导航到 Confirm

    +
  18. +
  19. Confirm 高亮显示的情况下,选择 Enter

    +
  20. +
+
+
+

修改/删除用户

+
    +
  1. Manage User 中,导航到要修改的用户,直到其高亮显示,如图 24 所示。

    +
  2. +
  3. 选择 Enter 修改该用户。

    +
    +Modify User +

    图 24:修改用户

    +
    +
  4. +
  5. 根据需要修改用户详细信息。

    +
  6. +
  7. 导航到 确认,直到其高亮显示。

    +
    +

    注解

    +

    可选:选择 Reset 可重置表单。

    +
    +
  8. +
  9. 选择 Confirm 保存所做的更改。

    +
  10. +
  11. 可选:在 Modify User 中,要删除用户,请导航到 Delete 按钮,然后选择 Enter

    +
    +Delete User +

    图 25:删除用户

    +
    +
  12. +
+

您将返回到 Manage User

+
    +
  1. 导航到 确认,直到其高亮显示。
  2. +
  3. 选择 Enter 设置 Manage User 选项。
  4. +
+

可选:跳到 Finish installation

+
+
+
+

内核命令行

+

Clear Linux OS 为高级用户提供了添加或移除内核参数的功能。如果要附加一个新参数,请在此处输入该参数。每当安装或更新新内核时,都会使用此参数。

+
    +
  1. 在“高级选项”中,选择 Tab 高亮显示 Kernel Command Line

    +
  2. +
  3. 选择 Enter

    +
    +kernel command line +

    图 26:内核命令行

    +
    +
  4. +
  5. 从下列选项中选择。

    +
      +
    • 要添加参数,请在 Add Extra Arguments 中输入参数。
    • +
    • 要移除参数,请在 Remove Arguments 中输入参数。
    • +
    +
  6. +
  7. 选择 确认

    +
  8. +
+

可选:跳到 Finish installation

+
+
+

内核选择

+
    +
  1. 选择一个内核选项。默认情况下会选择最新的内核版本。图 27 中显示了原生内核。

    +
  2. +
  3. 要选择不同的内核,请使用 Tab 导航到该内核。

    +
    +Kernel selection +

    图 27:内核选择

    +
    +
  4. +
  5. 空格键 选择所需的选项。

    +
  6. +
  7. 导航到 确认,然后选择 Enter

    +
  8. +
+

可选:跳到 Finish installation

+
+
+

Swupd 镜像

+

如果拥有自己的自定义 Clear Linux OS 镜像,您可以添加它的 URL。

+
    +
  1. 在“高级选项”中,选择 Swupd Mirror

    +
  2. +
  3. 要添加本地 swupd 镜像,请在 Mirror URL: 中输入有效的 URL

    +
  4. +
  5. 选择 确认

    +
    +Swupd Mirror +

    图 28:Swupd 镜像

    +
    +
  6. +
+

可选:跳到 Finish installation

+
+
+

分配主机名

+
    +
  1. 在“高级选项”中,选择 Assign Hostname

    +
  2. +
  3. Hostname 中,仅输入主机名(不包括域)。

    +
    +

    注解

    +

    主机名不允许有空格。主机名必须以字母数字字符开头,但也可以包含连字符。最大长度为 63 个字符。

    +
    +
    +Assign Hostname +

    图 29:分配主机名

    +
    +
  4. +
  5. 导航到 确认,直到其高亮显示。

    +
  6. +
  7. 选择 确认

    +
  8. +
+

可选:跳到 Finish installation

+
+
+

自动更新操作系统

+

默认情况下会启用操作系统自动更新。在极少数情况下,您可能需要禁用自动软件更新,这时可按照屏幕说明进行操作,如图 30 所示。

+
    +
  1. 在“高级选项”中,选择 Automatic OS Updates

    +
  2. +
  3. 选择所需选项。

    +
    +Automatic OS Updates +

    图 30:操作系统自动更新

    +
    +
  4. +
+

您将返回到 Main Menu

+
+
+

保存配置设置

+
    +
  1. 在“高级选项”中,选择 Save Configuration Settings

    +
  2. +
  3. 对话框显示安装配置已保存到 clr-installer.yaml

    +
    +Automatic OS Updates +

    图 31:操作系统自动更新

    +
    +
  4. +
  5. 使用 clr-installer.yaml 文件时,可以使用相同的配置将 Clear Linux OS 安装到多个目标。

    +
  6. +
+
+
+
+

完成安装

+
    +
  1. 如对安装配置满意,请导航到 Install,然后选择 Enter

    +
    +Select Install +

    图 32:选择安装

    +
    +
  2. +
  3. 选择 reboot

    +
    +

    注解

    +

    如果没有分配管理用户,重启后,请输入 root 并立即设置 root 密码。

    +
    +
  4. +
  5. 当系统重启时,移除所有存在的安装媒介。

    +
  6. +
+
+

默认分区架构

+

根据表 1 中的要求创建分区。

+ + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + +
表 1.默认分区架构
文件系统标签挂载点默认大小
VFAT(FAT32)引导/boot150MB
linux-swap交换 256MB
ext[234] XFSroot/大小取决于用例/所需的捆绑包。
+
+
+
+

故障检修

+
+

配置安装媒介时

+

如果在进入 Configure Installation Media 界面后出现警告消息,指出没有媒介或空间:

+
    +
  • 确认目标媒介上有足够的可用空间。
  • +
  • 确认 USB 已正确连接并挂载在目标媒介上。
  • +
  • 查看目标媒介上现有分区的大小:
      +
    • Linux* OS:lsblk -a
    • +
    • Windows* OS:diskpart,然后执行 list disk
    • +
    • macOS* 平台:diskutil list
    • +
    +
  • +
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/bootable-usb.html b/zh_CN/get-started/bootable-usb.html new file mode 100644 index 000000000..1cb7ccbab --- /dev/null +++ b/zh_CN/get-started/bootable-usb.html @@ -0,0 +1,1213 @@ + + + + + + + + + + + + + + 创建可引导 U 盘 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

创建可引导 U 盘

+

按照适用于您的系统的说明创建可引导的 Clear Linux* OS U 盘:

+ +
+

必备条件

+
    +
  • 使用 8 GB 或以上的 U 盘。
  • +
  • Downloads 页下载 Clear Linux OS 实时引导映像或交互式安装程序映像。
  • +
+
+
+

在 Linux* 上创建可引导 U 盘

+

确保完成所有 Prerequisites

+

将映像烧录至 U 盘之前,在 Linux 上 确认 Clear Linux OS 映像的完整性

+
+

将 Clear Linux OS 映像烧录至 U 盘

+
+

警告

+

烧录映像会格式化 U 盘,清除所有已经存在的内容。在继续操作前请备份数据。

+
+
    +
  1. 打开终端模拟器,获取 root 权限。

    +
    sudo -s
    +
    +
    +
  2. +
  3. 转到解压缩映像所在的目录。

    +
  4. +
  5. 插入 U 盘。

    +
  6. +
  7. 利用 lsblk 命令识别 U 盘。此操作会显示所有连接到系统的驱动器,包括主硬盘。在下面的示例输出中,连接了 4 个驱动器(/dev/sda/dev/sdb/dev/sdc/dev/sdd),而 /dev/sda 为主驱动器。其余三个是 U 盘。输出中还显示了为每个驱动器挂载的分区(在 MOUNTPOINT 栏)。

    +
    lsblk
    +
    +
    +

    结果示例:

    +
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    +sdd      8:48   1    15G  0 disk
    +├─sdd2   8:50   1     5G  0 part /run/media/user1/960c184f-3bb7-42b7-bcaf-0c1282
    +├─sdd3   8:51   1     8G  0 part /run/media/user1/704f3382-b26d-4f34-af1b-cb9aab
    +└─sdd1   8:49   1     2G  0 part
    +sdb      8:16   1  14.8G  0 disk
    +└─sdb1   8:17   1  14.8G  0 part /run/media/user1/PATRIOT_USB
    +sdc      8:32   1   7.3G  0 disk
    +└─sdc1   8:33   1   7.3G  0 part /run/media/user1/LINUX MINT
    +sda      8:0    0 335.4G  0 disk
    +├─sda4   8:4    0    28G  0 part
    +├─sda2   8:2    0   3.7G  0 part [SWAP]
    +├─sda7   8:7    0     6G  0 part /home
    +├─sda5   8:5    0     1G  0 part /boot
    +├─sda3   8:3    0   954M  0 part /boot/efi
    +├─sda1   8:1    0    28G  0 part
    +├─sda8   8:8    0    30G  0 part /
    +└─sda6   8:6    0   7.9G  0 part [SWAP]
    +
    +
    +
  8. +
  9. 在烧录映像之前,必须卸载 U 盘。请注意,某些 Linux 操作系统会在 U 盘插入时自动挂载 U 盘。利用 umount 命令卸载 U 盘,命令后面为设备标识符/分区。例如:

    +
    umount /dev/sdd2
    +umount /dev/sdd3
    +
    +
    +
  10. +
  11. 将映像烧录至 U 盘。下例将未压缩的映像烧录至 <your USB device>

    +
    dd if=./clear-[version number]-[image type] of=<your USB device> oflag=sync bs=4M status=progress
    +
    +
    +
  12. +
+
+

警告

+

如果烧录映像前不完全卸载 U 盘,则会导致文件系统校验和错误。如果发生此情况,请再次烧录映像,确保首先卸载所有 U 盘分区。

+
+
+
+
+

在 macOS* 上创建可引导 U 盘

+

确保完成所有 Prerequisites

+

将映像烧录至 U 盘之前,在 macOS 上 确认 Clear Linux OS 映像的完整性

+
+

将 Clear Linux OS 映像烧录至 U 盘

+
+

警告

+

烧录映像会格式化 U 盘,清除所有已经存在的内容。在继续操作前请备份数据。

+
+
    +
  1. 启动终端应用。

    +
  2. +
  3. 转到解压缩映像所在的目录。

    +
  4. +
  5. 插入 U 盘,获取盘符:

    +
    diskutil list
    +
    +
    +

    此操作会列出可用磁盘及其分区,如图 1 所示。

    +
    +Get USB drive identifier +

    图 1:macOS - 获取 U 盘盘符

    +
    +
  6. +
  7. 卸载上一步中识别的 U 盘。例如:

    +
    diskutil umountDisk /dev/disk2
    +
    +
    +
  8. +
  9. 利用 dd 命令将映像烧录至驱动器。下例将未压缩的映像烧录至 <your USB device>

    +
    sudo dd if=./clear-[version number]-[image type] of=<your USB device> bs=4m
    +
    +
    +

    为加速映像烧录过程,在盘符前面添加一个 ‘r’。例如 /dev/rdisk2

    +

    按下 <CTL>-T 查看映像烧录过程。

    +
  10. +
  11. 弹出 U 盘。

    +
    diskutil eject /dev/disk2
    +
    +
    +
  12. +
+
+
+
+

在 Windows* 上创建可引导 U 盘

+

确保完成所有 Prerequisites

+

将映像烧录至 U 盘之前,在 Windows 上 确认 Clear Linux OS 映像的完整性

+
+

将 Clear Linux OS 映像烧录至 U 盘

+
+

警告

+

烧录映像会格式化 U 盘,清除所有已经存在的内容。在继续操作前请备份数据。

+
+
    +
  1. 下载 Rufus 实用程序以便将映像烧录至 U 盘。此处使用 Rufus 3.5。仅使用最新 Rufus 版本。

    +
  2. +
  3. 插入 U 盘,打开 Rufus。

    +
  4. +
  5. Boot selection 中,点击 SELECT 按钮。

    +
  6. +
  7. 找到并选择此前解压缩的 Clear Linux OS 映像文件。

    +
  8. +
  9. 点击 START 按钮。见图 2。

    +
    +Rufus utility +

    图 2: Rufus 实用程序

    +
    +
  10. +
  11. 对话出现时,选择 Write in ISO image mode (Recommended)。见图 3。

    +
    +ISOHybrid image detected +

    图 3:检测到 ISOHybrid 映像

    +
    +
  12. +
  13. 选择 USB 的 Windows 任务栏菜单并选择“弹出”。

    +
  14. +
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/cloud-install/aws-web.html b/zh_CN/get-started/cloud-install/aws-web.html new file mode 100644 index 000000000..c883e2922 --- /dev/null +++ b/zh_CN/get-started/cloud-install/aws-web.html @@ -0,0 +1,1249 @@ + + + + + + + + + + + + + + Amazon Web Services* 上的 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Amazon Web Services* 上的 Clear Linux* OS

+

本教程介绍如何通过 AWS* 控制台创建和启动 Clear Linux OS AMI 实例以及完成以下任务:

+
    +
  1. 在 AWS Marketplace 中找到并选择 Clear Linux OS 操作系统基本 AMI。
  2. +
  3. 创建新的公钥和私钥对,以便可以安全地连接到 Clear Linux OS 实例。
  4. +
  5. 启动新的 Clear Linux OS 实例并连接到该实例。
  6. +
  7. 使用 swupd 命令更新 Clear Linux OS 实例。
  8. +
  9. 停止 Clear Linux OS 实例。
  10. +
+ +
+

必备条件

+

本教程假定以下陈述是正确的:

+
    +
  • 您使用基于 linux 的系统访问 AWS,并且可以运行 SSH 以访问远程 Clear Linux OS AWS 映像。
  • +
  • 您的浏览器将下载的文件放在 $HOME/Downloads 目录中。
  • +
  • 您已设置了 AWS 用户帐户并且已登录到 AWS 控制台。
  • +
+
+

注解

+

本教程使用有资格享受 AWS 免费套餐的 Clear Linux OS AMI t2.micro 实例。要了解有关 AWS 和设置帐户的更多信息,请访问 AWS 网站,网址为:http://aws.amazon.com

+
+
+
+

找到、选择并启动 Clear Linux OS 基本 AMI

+
    +
  1. 在浏览器中从 AWS 服务控制台主菜单开始,然后选择图 1 中所示的 EC2 文本:

    +
    +AWS Console +

    图 1: AWS Console

    +
    +

    选择此选项将调出 EC2 Dashboard 菜单。

    +
  2. +
  3. 要从 EC2 Dashboard 菜单创建新的 Clear Linux OS 实例,请选择图 2 中所示的 Launch Instance 按钮:

    +
    +EC2 Dashboard +

    图 2: EC2 Dashboard

    +
    +

    选择此选项将转到 Step 1: Choose an Amazon Machine Image (AMI) 菜单。

    +
  4. +
  5. 要在 Step 1: Choose an Amazon Machine Image (AMI) 菜单中找到 Clear Linux OS Basic AMI,请执行以下操作:

    +
      +
    1. 在左侧导航窗口中,选择 AWS Marketplace 菜单项以调出搜索栏并转到 Search AWS Marketplace Products

      +
    2. +
    3. 在搜索栏中键入 “clear linux os” 并按 Enter 键,以搜索并找到 Clear Linux OS Basic AMI。

      +
    4. +
    5. 通过点击图 3 中所示的 Select 按钮,选择 Clear Linux OS Basic AMI:

      +
      +Step 1: Choose AMI +

      图 3: Step 1: Choose AMI

      +
      +
    6. +
    7. 此时将出现一个弹出对话框,其中显示有关 Clear Linux OS Basic AMI 的更多信息以及使用图 4 中所示的不同平台配置运行 Clear Linux OS 的定价详细信息。选择 Continue 按钮。

      +
      +Clear Linux OS Basic +

      图 4: Clear Linux OS Basic

      +
      +
    8. +
    +
  6. +
  7. 此时将出现图 5 中所示的 Choose Instance Type 菜单。

    +
    +Choose an Instance Type +

    图 5: Choose an Instance Type

    +
    +

    通过点击实例左侧的框来选择 t2.micro 类型,然后选择 Review and Launch 按钮以转到 Step 7: Review the Instance Launch 菜单。

    +
    +

    注解

    +

    如果要进一步自定义该 Clear Linux OS 实例,您可以在选择 Review and Launch 按钮之前配置实例详细信息,添加其他存储,添加标记以及配置安全组。

    +
    +
  8. +
  9. 图 6 中所示的 Step 7: Review the Instance Launch 菜单可用于 Cancel 进程,以及返回到 Previous 屏幕以更改配置,或者可用于 Launch 已定义的实例。

    +
    +Step 7: Review the Instance Launch +

    图 6: Step 7: Review the Instance Launch

    +
    +
      +
    1. 选择 Launch 按钮。此时将出现图 7 中所示的对话框,要求您 Select an existing key pair or create a new pair

      +
      +Select an existing key pair or create a new pair +

      图 7: Select an existing key pair or create a new pair

      +
      +
        +
      1. 选择 Create a new key pair 选项。

        +
      2. +
      3. 对于 Key pair name 字段,请输入 AWSClearTestKey

        +
      4. +
      5. 选择 Download Key Pair 按钮,以将 AWSClearTestKey.pem 下载到浏览器中定义的 Downloads 目录。

        +
      6. +
      7. 文件下载完成后,选择 Launch Instances 按钮以转到图 8 中所示的 Launch Status 菜单。

        +
        +Launch Status +

        图 8: Launch Status

        +
        +
      8. +
      +
    2. +
    3. Launch Status 页面变为图 9 中所示的页面后,选择 View Instances 按钮以显示 Instances 仪表板。

      +
      +View Instance +

      图 9: View Instance

      +
      +
    4. +
    +
  10. +
+
+
+

连接到 Clear Linux 操作系统基本实例

+

图 10 中显示了 Instances 仪表板和已选择并处于运行状态的新的 Clear Linux OS 操作系统基本实例。同时也会显示其他可用的实例(如有),但不会选择这些实例。

+
+Instance Dashboard +

图 10: Instance Dashboard

+
+
    +
  1. 要连接到正在运行的实例,请点击位于仪表板顶部的 Connect 按钮。AWS 将调出图 11 中显示的弹出对话框,该对话框说明了如何连接到正在运行的实例。
  2. +
+
+Connect to Your Instance +

图 11: Connect to Your Instance

+
+
    +
  1. 在系统中打开终端。当前应该位于 $HOME 目录中。

    +
  2. +
  3. Downloads 目录将先前下载的密钥文件复制到当前目录。

    +
    cp Downloads/AWSClearTestKey.pem .
    +
    +
    +
  4. +
  5. 按照图 11 中显示的对话框中的说明使用 chmod 命令更改 AWSClearTestKey.pem 的属性。

    +
    chmod 400 AWSClearTestKey.pem
    +
    +
    +
  6. +
  7. 复制 图 11 中显示的 Example: 一节中突出显示的文本。将复制的文本粘贴到终端中,将 @ 符号前面的文本更改为用户名 clear,然后按 Enter 键以执行命令。

    +
    ssh -i "AWSClearTestKey.pem" clear@ec2-34-209-39-184.us-west-2.compute.amazonaws.com
    +
    +
    +
  8. +
  9. 终端中会显示一条消息,指明无法确定主机的可靠性,并提示以下消息:

    +
    The authenticity of host 'ec2-34-209-39-184.us-west-2.compute.amazonaws.com (34.209.39.184)' can't be established.
    +ECDSA key fingerprint is SHA256:LrziT5Ar66iBTfia8qmiIsrfBUm/UGam76U8bDR6yJc.
    +Are you sure you want to continue connecting (yes/no)?
    +
    +
    +
  10. +
  11. 键入 yes 并按 Enter 键。另一条警告将输出到终端中,现在您位于新的 Clear Linux OS 实例的命令提示符中。

    +
    Warning: Permanently added 'ec2-34-209-39-184.us-west-2.compute.amazonaws.com,34.209.39.184' (ECDSA) to the list of known hosts.
    +clear@clr-96a8565d0ca54b0c80364a1e5e7b0f88 ~ $
    +
    +
    +
  12. +
+
+
+

更新 Clear Linux OS 实例

+

运行图 12 中显示的 sudo swupd update 命令以更新操作系统:

+
+sudo swupd update +

图 12: sudo swupd update

+
+

在此示例中,我们从版本 18940 更新到版本 19100。

+
+
+

停止 Clear Linux OS 实例

+

完成使用 AWS Clear Linux OS 实例后,您必须使用 Instances 仪表板停止该实例以使费用停止增加。从 Instances 仪表板完成以下步骤以使 AWS Clear Linux OS 实例停止运行。

+
    +
  1. 选择 Actions 按钮以调出下拉菜单。

    +
  2. +
  3. 选择 Instance State 菜单项以展开选项。

    +
  4. +
  5. 选择 Stop 菜单项以关闭正在运行的实例。

    +

    图 13 说明了这些步骤。

    +
    +Stop Instance +

    图 13: Stop Instance

    +
    +
  6. +
  7. 此时将出现一个弹出对话框,警告实例的任何临时存储将丢失。选择 Yes, Stop 按钮以停止 Clear Linux OS 实例。

    +
  8. +
+
+Stop Instances +

图 14: Stop Instances

+
+

恭喜!您已启动并运行基于 AWS 的 Clear Linux OS。要查看可对 Clear Linux OS 实例执行的操作,请参见 教程 一节了解有关使用 Clear Linux OS 系统的示例。

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/cloud-install/azure.html b/zh_CN/get-started/cloud-install/azure.html new file mode 100644 index 000000000..ed8e0a7cf --- /dev/null +++ b/zh_CN/get-started/cloud-install/azure.html @@ -0,0 +1,1429 @@ + + + + + + + + + + + + + + Microsoft* Azure* 上的 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Microsoft* Azure* 上的 Clear Linux* OS

+

Clear Linux* OS 在 Microsoft* Azure* Marketplace 中提供,并且具有三个不同的映像(也称为 SKU(库存单位))。

+
    +
  • Clear Linux OS 基本 - 此 SKU 包含仅具有基本功能的系统,对于想要探索并使用所选的其他软件捆绑包构建系统的用户来说,此 SKU 可用作起点。
  • +
  • Clear Linux OS 容器 - 此 SKU 附带已安装的 containers-basic 软件捆绑包。
  • +
  • Clear Linux OS 机器学习 - 此 SKU 预加载了用于开发机器学习应用程序的流行开源工具。
  • +
+

您可以直接从 Microsoft Azure 仪表板通过 Azure 门户 访问这些映像,也可以使用 Microsoft Azure CLI(命令行接口) 2.0 来访问。如果您尚未设置 Microsoft Azure 帐户,您可以注册 Microsoft Azure 免费帐户 以访问 Clear Linux OS VM(虚拟机) 映像。

+

Azure CLI 提供了通过命令行在 Microsoft Azure 中创建和管理资源的功能。在本教程中,您将学习:

+
    +
  1. 在 Clear Linux OS 计算机上安装最新 Microsoft Azure CLI。
  2. +
  3. 使用 CLI 2.0 接口登录到 Microsoft Azure。
  4. +
  5. 创建 Microsoft Azure 资源组。
  6. +
  7. 找到 Clear Linux OS 映像。
  8. +
  9. 创建 Clear Linux OS 虚拟机并登录到该虚拟机。
  10. +
  11. 停止并取消分配 Clear Linux OS 虚拟机和资源。
  12. +
+

要在 Clear Linux OS 系统中使用 Microsoft Azure CLI 2.0,您的系统必须已安装了以下软件包:

+
    +
  • Python 2.7 或更高版本
  • +
  • libffi
  • +
  • OpenSSL 1.0.2
  • +
+

您可以通过运行如下所示的各个命令来检查系统中已安装的版本:

+
python --version
+
+
+
python 2.7.12
+
+
+
openssl version
+
+
+
OpenSSL 1.0.2n 7 Dec 2017
+
+
+
ls -l /usr/lib64/libffi*
+
+
+
lrwxrwxrwx 1 root root    15 Jan 12  2017 /usr/lib64/libffi.so.6 -> libffi.so.6.0.4
+-rwxr-xr-x 1 root root 38792 Jan 12  2017 /usr/lib64/libffi.so.6.0.4
+
+
+

如果您的 Clear Linux OS 系统中尚未安装这些软件包,请使用 swupd 命令安装 sysadmin-basic 软件捆绑包:

+
sudo swupd bundle-add sysadmin-basic
+
+
+
+

注解

+

这些说明与在 Clear Linux OS 系统中安装 Microsoft Azure CLI 2.0 工具相关。如果要在其他平台上安装 CLI,请遵循 Microsoft Azure 安装 Azure CLI 教程 中针对您的特定操作系统的说明。

+
+
+

在 Clear Linux OS 中安装 Microsoft Azure CLI 2.0

+
    +
  1. 要在 Clear Linux OS 中安装 Microsoft Azure CLI 2.0,请按如下所示使用 curl 命令:

    +
    curl -L https://aka.ms/InstallAzureCli | bash
    +
    +
    +

    如果从 curl 收到与 -L 参数相关的错误消息,或者生成了包含文本 “Object Moved” 的错误消息,请使用完整 URL,而不要使用 aka.ms 重定向地址:

    +
    curl https://azurecliprod.blob.core.windows.net/install | bash
    +
    +
    +
  2. +
  3. 安装脚本将开始,并在执行期间多次提示您提供信息。

    +
    +

    注解

    +

    脚本的控制台输出会显示您的用户名,而非本教程中显示的 [user] 变量。

    +
    +
    ===> In what directory would you like to place the install? (leave blank to use '/home/[user]/lib/azure-cli'):
    +
    +
    +

    Enter 键以接受默认目录,或者也可以选择将 Microsoft Azure CLI 2.0 工具安装到其他目录。

    +
    ===> In what directory would you like to place the 'az' executable? (leave blank to use '/home/[user]/bin'):
    +
    +
    +

    Enter 键以接受默认目录,或者也可以选择将 az 可执行文件安装到其他目录。

    +
  4. +
  5. 安装过程会下载并生成所有所需的工具,并在完成后提示以下消息:

    +
    ===> Modify profile to update your $PATH and enable shell/tab completion now? (Y/n): Y
    +
    +
    +

    键入 Y 并按 Enter 键以允许此修改。

    +
    ===> Enter a path to an rc file to update (leave blank to use '/home/[user]/.bashrc'):
    +
    +
    +

    Enter 键以接受默认路径名称,或者将路径名称输入到 .bashrc 文件中。安装过程将完成,最终输出如下所示:

    +
    -- Backed up '/home/[user].bashrc' to '/home/[user]/.bashrc.backup'
    +-- Tab completion set up complete.
    +-- If tab completion is not activated, verify that '/home/[user]/.bashrc' is sourced by your shell.
    +--
    +-- ** Run `exec -l $SHELL` to restart your shell. **
    +--
    +-- Installation successful.
    +-- Run the CLI with /home/[user]/bin/az --help
    +
    +
    +
  6. +
  7. 安装程序将完成,您必须重新启动 shell 以使更改生效。如果安装成功,请运行以下命令以重新启动 shell。

    +
    exec -l $SHELL
    +
    +
    +
  8. +
+

已成功生成并安装 Microsoft Azure CLI 2.0 可执行文件后,运行 az 命令。

+
az
+
+
+

az 命令的输出如下所示:

+
     /\
+    /  \    _____   _ _ __ ___
+   / /\ \  |_  / | | | \'__/ _ \
+  / ____ \  / /| |_| | | |  __/
+ /_/    \_\/___|\__,_|_|  \___|
+
+
+Welcome to the cool new Azure CLI!
+
+Here are the base commands:
+
+    account          : Manage Azure subscription information.
+    acr              : Manage Azure Container Registries.
+    acs              : Manage Azure Container Services.
+    ad               : Synchronize on-premises directories and manage Azure Active Directory
+                       resources.
+    advisor          : (PREVIEW) Manage Azure Advisor.
+    aks              : Manage Kubernetes clusters.
+    appservice       : Manage App Service plans.
+    backup           : Commands to manage Azure Backups.
+    batch            : Manage Azure Batch.
+    batchai          : Batch AI.
+    billing          : Manage Azure Billing.
+    cdn              : Manage Azure Content Delivery Networks (CDNs).
+    cloud            : Manage registered Azure clouds.
+    cognitiveservices: Manage Azure Cognitive Services accounts.
+    configure        : Display and manage the Azure CLI 2.0 configuration. This command is
+                       interactive.
+    consumption      : Manage consumption of Azure resources.
+    container        : (PREVIEW) Manage Azure Container Instances.
+    cosmosdb         : Manage Azure Cosmos DB database accounts.
+    disk             : Manage Azure Managed Disks.
+    dla              : (PREVIEW) Manage Data Lake Analytics accounts, jobs, and catalogs.
+    dls              : (PREVIEW) Manage Data Lake Store accounts and filesystems.
+    eventgrid        : Manage Azure Event Grid topics and subscriptions.
+    extension        : Manage and update CLI extensions.
+    feature          : Manage resource provider features.
+    feedback         : Loving or hating the CLI?  Let us know!
+    find             : Find Azure CLI commands.
+    functionapp      : Manage function apps.
+    group            : Manage resource groups and template deployments.
+    image            : Manage custom virtual machine images.
+    interactive      : Start interactive mode.
+    iot              : (PREVIEW) Manage Internet of Things (IoT) assets.
+    keyvault         : Safeguard and maintain control of keys, secrets, and certificates.
+    lab              : Manage Azure DevTest Labs.
+    lock             : Manage Azure locks.
+    login            : Log in to Azure.
+    logout           : Log out to remove access to Azure subscriptions.
+    managedapp       : Manage template solutions provided and maintained by Independent Software
+                       Vendors (ISVs).
+    monitor          : Manage the Azure Monitor Service.
+    mysql            : Manage Azure Database for MySQL servers.
+    network          : Manage Azure Network resources.
+    policy           : Manage resource policies.
+    postgres         : Manage Azure Database for PostgreSQL servers.
+    provider         : Manage resource providers.
+    redis            : Access to a secure, dedicated Redis cache for your Azure applications.
+    reservations     : Manage Azure Reservations.
+    resource         : Manage Azure resources.
+    role             : Manage user roles for access control with Azure Active Directory and service
+                       principals.
+    sf               : Manage and administer Azure Service Fabric clusters.
+    snapshot         : Manage point-in-time copies of managed disks, native blobs, or other
+                       snapshots.
+    sql              : Manage Azure SQL Databases and Data Warehouses.
+    storage          : Manage Azure Cloud Storage resources.
+    tag              : Manage resource tags.
+    vm               : Provision Linux or Windows virtual machines.
+    vmss             : Manage groupings of virtual machines in an Azure Virtual Machine Scale Set
+                       (VMSS).
+    webapp           : Manage web apps.
+
+
+
+
+

登录到您的 Microsoft Azure 帐户

+
    +
  1. az 命令已正确安装并且正常工作后,使用如下所示的 az login 命令登录到您的 Microsoft Azure 帐户:

    +
    az login
    +
    +
    +

    该命令的输出如下所示:

    +
    To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code BQ9MG442B to authenticate.
    +
    +
    +
  2. +
  3. 打开浏览器并访问图 1 中显示的页面 https://aka.ms/devicelogin

    +
    +Microsoft Device Login +

    图 1: Microsoft Device Login

    +
    +
  4. +
  5. 输入代码 BQ9MG442B 以对设备进行身份验证,如图 2 中所示。代码 BQ9MG442B 是为每次会话登录生成的随机身份验证代码,每次使用 az login 命令登录到 Microsoft Azure 时生成的代码都不相同。

    +
    +Microsoft Device Login - Azure CLI +

    图 2: Microsoft Device Login - Azure CLI

    +
    +
  6. +
  7. 输入身份验证代码后,网站将变为用于输入现有 Microsoft Azure 凭据的屏幕。

    +
  8. +
  9. 使用现有 Microsoft Azure 帐户凭据登录。完成后,浏览器屏幕将再次改变,如图 3 中所示。该屏幕显示您已在设备上登录到 Microsoft 跨平台命令行接口应用程序,您可以关闭窗口。

    +
    +Microsoft Azure Cross-platform CLI +

    图 3: Microsoft Azure Cross-platform CLI

    +
    +
  10. +
+

Microsoft Azure CLI 2.0 接口现在处于活动状态,并且正在使用现有 Microsoft Azure 帐户凭据。

+
+
+

创建 Microsoft Azure 资源组

+

要了解有关 Microsoft Azure 资源组的更多信息,请参见 Azure 资源管理器概述 以查看 Microsoft Azure 中的资源的概述和详细说明。

+
    +
  1. 要创建新的资源组,请运行如下所示的 az group create ... 命令,以使用 -n 参数创建名为 ClearResourceGroup 的资源组并使用 -l 参数将该资源组放置在 westus 区域中。

    +
    az group create -n ClearResourceGroup -l westus
    +
    +
    +
  2. +
  3. 命令完成后,该命令的输出如下所示:

    +
    {
    +  "id": "/subscriptions/{unique-id}/resourceGroups/ClearResourceGroup",
    +  "location": "westus",
    +  "managedBy": null,
    +  "name": "ClearResourceGroup",
    +  "properties": {
    +    "provisioningState": "Succeeded"
    +  },
    +  "tags": null
    +}
    +
    +
    +
  4. +
+
+
+

创建 Clear Linux OS 虚拟机并登录到该虚拟机

+

在本教程中,我们对虚拟机使用 Clear Linux OS 基本 SKU。

+
    +
  1. 要在 Microsoft Azure Marketplace 中找到可用的 Clear Linux OS 基本虚拟机 SKU 映像,请运行 az vm image ... 命令:

    +
    az vm image list --offer clear-linux --sku basic --all --output table
    +
    +
    +

    完成该命令可能需要一些时间。输出列出了 Microsoft Azure Marketplace 中提供的所有可用 Clear Linux OS 基本映像,如下所示:

    +
    Offer           Publisher            Sku               Urn                                                            Version
    +--------------  -------------------  ----------------  -------------------------------------------------------------  ---------
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:15780.0.0             15780.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:15960.0.0             15960.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:16050.0.0             16050.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:16150.0.0             16150.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:16500.0.0             16500.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:16810.0.0             16810.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:18080.0.0             18080.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:18620.0.0             18620.0.0
    +clear-linux-os  clear-linux-project  basic             clear-linux-project:clear-linux-os:basic:18860.0.0             18860.0.0
    +
    +
    +
    +

    注解

    +

    输出列表显示了当前产品。新版本始终添加到 Microsoft Azure Marketplace。要引用映像的最新版本,您可以在指定映像时使用版本标签 latest

    +
    +
  2. +
  3. Urn 列中显示的信息列出了每个可用映像的 Publisher:Offer:Sku:Version,创建 Clear Linux OS 基本虚拟机时需要这些信息。由于我们要创建 Clear Linux OS 基本虚拟机,因此突出显示 clear-linux-project:clear-linux-os:basic: 字符串并将其复制到剪贴板。请使用标签 latest,而不要引用特定版本。

    +
  4. +
  5. 创建新的 Clear Linux OS 基本虚拟机。使用在上一步复制到剪贴板的 URN :clear-linux-project:clear-linux-os:basic:latest 运行 az vm create ... 命令。

    +
    az vm create --resource-group ClearResourceGroup --name ClearVM --image clear-linux-project:clear-linux-os:basic:latest --generate-ssh-keys
    +
    +
    +
    +

    注解

    +

    如果您已定义了 SSH 公钥/私钥对,并且它们存储在 $HOME/.ssh 目录中,则不需要包括 –generate-ssh-keys 选项。

    +
    +

    该命令的输出类似于以下输出,其中 [user] 是您的用户名:

    +
    SSH key files '/home/[user]/.ssh/id_rsa' and '/home/[user]/.ssh/id_rsa.pub' have been generated under ~/.ssh to allow SSH access to the VM. If using machines without permanent storage, back up your keys to a safe location.
    +
    +running...
    +
    +{
    +  "fqdns": "",
    +  "id": "/subscriptions/{unique-id}/resourceGroups/ClearResourceGroup/providers/Microsoft.Compute/virtualMachines/ClearVM",
    +  "location": "westus",
    +  "macAddress": "00-0D-3A-37-C7-59",
    +  "powerState": "VM running",
    +  "privateIpAddress": "10.0.0.4",
    +  "publicIpAddress": "13.91.4.245",
    +  "resourceGroup": "ClearResourceGroup",
    +  "zones": ""
    +}
    +
    +
    +

    记下输出中的公共 IP 地址。

    +
  6. +
  7. 登录到新的 Clear Linux OS 基本虚拟机,使用在上一步获取的公共 IP 地址运行 ssh 命令,如下所示:

    +
    ssh [user]@13.91.4.245
    +
    +
    +

    您可能会看到以下有关主机可靠性的消息。如果出现此消息,请键入 yes 以继续连接到新的 Clear Linux OS 虚拟机。

    +
    The authenticity of host '13.91.4.245 (13.91.4.245)' can't be established.
    +RSA key fingerprint is SHA256:{unique-number}.
    +Are you sure you want to continue connecting (yes/no)? yes
    +Warning: Permanently added '13.91.4.245' (RSA) to the list of known hosts.
    +
    +[user]@ClearVM ~ $
    +
    +
    +

    您现在已经以 [user] 身份登录到新的 Clear Linux OS 虚拟机,其中 [user] 是您的用户名。要检查该虚拟机映像包含哪些软件捆绑包,请在虚拟机中运行 sudo swupd bundle-list 命令:

    +
    sudo swupd bundle-list
    +
    +
    +

    显示的输出如下所示:

    +
    swupd-client bundle list 3.14.1
    +   Copyright (C) 2012-2017 Intel Corporation
    +
    +bootloader
    +editors
    +kernel-hyperv
    +network-basic
    +openssh-server
    +os-cloudguest-azure
    +os-core
    +os-core-update
    +perl-basic
    +python-basic
    +python3-basic
    +storage-utils
    +sysadmin-basic
    +Current OS version: 19600
    +
    +
    +

    完成使用新的 Clear Linux OS 虚拟机后,键入 exit 以关闭 SSH 终端并注销。

    +
  8. +
+
+
+

停止并取消分配 Clear Linux OS 虚拟机和资源

+

完成使用新的 Clear Linux OS 实例后,您必须停止并取消分配资源组中的虚拟机和资源。如果仅停止虚拟机,则操作系统映像将关闭,但资源组中与该虚拟机关联的资源将保持已分配并产生费用。例如,如果您停止虚拟机但未取消分配资源,然后使用 az vm start... 启动该虚拟机,则 IP 地址会保留,并且您可以使用该 IP 地址访问虚拟机。要释放与虚拟机关联的资源并使它们停止产生费用,您还必须取消分配这些资源。

+
    +
  1. 在命令提示符中,输入 az vm stop... 命令,如下所示:

    +
    az vm stop --resource-group ClearResourceGroup --name ClearVM
    +
    +
    +

    该命令将停止虚拟机,然后输出如下所示的文本:

    +
    {
    +  "endTime": "2017-12-13T23:04:02.346676+00:00",
    +  "error": null,
    +  "name": "{unique-name}",
    +  "startTime": "2017-12-13T23:03:59.018536+00:00",
    +  "status": "Succeeded"
    +}
    +
    +
    +
  2. +
  3. 虚拟机停止后,取消分配虚拟机资源以使 Clear Linux OS 实例停止产生费用。输入以下命令:

    +
    az vm deallocate --resource-group ClearResourceGroup --name ClearVM
    +
    +
    +
  4. +
+

恭喜!

+

您已使用 Azure CLI 2.0 命令行工具启动并运行基于 Microsoft Azure 的 Clear Linux OS。

+
+
+

后续步骤

+

要查看使用 Clear Linux OS 实例可实现的用例,请参见 教程 一节。

+

有关其他信息,请访问 Clear Linux OS Azure 合作伙伴小型案例研究Azure 合作伙伴数据表

+

要了解有关 Microsoft Azure CLI 2.0 工具和可用选项的更多信息,请访问 Microsoft Azure 文档和教程 网站。

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/cloud-install/gce.html b/zh_CN/get-started/cloud-install/gce.html new file mode 100644 index 000000000..d761cd793 --- /dev/null +++ b/zh_CN/get-started/cloud-install/gce.html @@ -0,0 +1,1244 @@ + + + + + + + + + + + + + + Google Cloud Platform* 上的 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Google Cloud Platform* 上的 Clear Linux* OS

+

本页说明在 Google Cloud Platform (GCP) 上创建 Clear Linux* OS 虚拟机实例的步骤。

+ +
+

必备条件

+
    +
  • 创建 Google 帐户和 GCP 计费帐户。
  • +
  • 在 Linux PC 中生成和安装用户 SSH 密钥。该 PC 将连接至 GCP 中的虚拟机。
  • +
+
+
+

在 GCP 上安装 Clear Linux OS 虚拟机

+
    +
  1. Google Cloud Console 上登录 Google* 帐户。

    +
    +Sign in to Google services +

    图 1:Google 登录页面

    +
    +
  2. +
  3. Google Cloud Platform 使用项目管理资源。选择或创建新项目来托管 Clear Linux OS 虚拟机。

    +
    +

    注解

    +

    请参阅 Quickstart Using a Linux VM 指南,了解在 GCP 上创建虚拟机实例的过程。

    +
    +
  4. +
  5. 导航至最新的 Clear Linux OS release folder,查看当前发布的 GCE 映像,下载 clear-<release number>-gce.tar.gz 映像档案文件。

    +

    您无需解压缩映像档案文件,完整文件稍后将上传至 Google Cloud Storage。

    +
  6. +
  7. 创建存储 Bucket 以托管上一步下载的 Clear Linux OS 映像源档案文件:

    +
      +
    • 点击左上部屏幕菜单中的 Navigation menu 图标。
    • +
    • 从左侧边栏上选择 存储 项。此时您将前往 Storage Browser 工具或 Cloud Storage 概览页。
    • +
    +
    +Browse Google Cloud Storage +

    图 2:浏览 Google Cloud Storage

    +
    +
    +

    注解

    +

    创建 bucket 之前,最好需要创建一个计费帐户,将其链接至此项目。

    +
    +
    +Cloud Storage Browser tool +

    图 3:Cloud Storage 浏览工具

    +
    +
      +
    • 点击 CREATE BUCKET 按钮,进入 bucket 创建工具界面。bucket 的名称必须是唯一的,因为 Cloud Storage 中的所有 bucket 共享一个全局命名空间。

      +

      其余设置选项保留默认值,然后点击底部的 Create 按钮创建 Bucket

      +
      +Set a unique bucket name +

      图 4:设置 bucket 名称

      +
      +
    • +
    +
  8. +
  9. 创建 bucket 后,点击 Bucket 详细资料页上的 Upload files 按钮将 Clear Linux OS GCE 映像档案文件上传至指定的 bucket:

    +
    +Cloud Storage bucket is available for storing objects +

    图 5:Cloud Storage bucket

    +
    +
    +Uploading the image source archive file +

    图 6:上传映像源档案文件

    +
    +
    +Image archive imported complete +

    图 7:导入完成

    +
    +
  10. +
  11. 浏览 Compute Engine 映像库页:

    +
      +
    • 点击左上部屏幕菜单中的 Navigation menu 图标。

      +
    • +
    • 从左侧边栏选择 Compute Engine ‣ Images

      +
      +Go to Google Compute Engine Image library +

      图 8:映像库

      +
      +
    • +
    +
  12. +
  13. 在 Compute Engine 映像库页面,点击 [+] CREATE IMAGE 菜单项创建定制映像:

    +
    +Create a Google Compute Engine image +

    图 9:创建映像

    +
    +
  14. +
  15. 在虚拟机映像创建页上,将映像源类型更改为 Cloud Storage 文件

    +
  16. +
  17. Source 中,选择 Browse

    +
  18. +
  19. 找到 clear-<release number>-gce.tar.gz 文件,然后点击 Select

    +
    +Create the image using the imported image archive object +

    图 10:利用导入的对象创建映像

    +
    +

    接受所有默认选项,然后点击底部的 Create 按钮,将 Clear Linux GCE 映像导入映像库。

    +
    +Clear Linux Compute Engine image is created +

    图 11:映像已创建

    +
    +
  20. +
  21. Clear Linux OS 映像导入后,可以启动一个运行 Clear Linux OS 的虚拟机实例:

    +
      +
    • 点击左上部屏幕菜单中的 Navigation menu 图标。
    • +
    • 从左侧边栏选择 Compute Engine ‣ VM instances
    • +
    +
    +Go to VM instances catalog +

    图 12:虚拟机实例目录

    +
    +
  22. +
  23. 如果此项目中没有创建虚拟机实例,系统会提示您创建一个实例。

    +
  24. +
  25. 另外,也可以点击虚拟机实例页上的 CREATE INSTANCE 按钮创建虚拟机实例。

    +
    +Prompt for VM creation +

    图 13:创建虚拟机

    +
    +
    +List of VM instances +

    图 14:虚拟机实例列表

    +
    +
      +
    • Region 中,根据 Best practices for Compute Engine regions selection 选择一个区域。

      +
    • +
    • Boot disk 中,点击 Change 按钮。

      +
      +Use custom image while creating Clear Linux VM instance +

      图 15:使用定制映像

      +
      +
    • +
    • 选择 Custom images 标签,以使用 Clear Linux OS GCE 映像。

      +
      +Select Clear Linux boot disk to create a VM instance +

      图 16:选择 Clear Linux 引导磁盘创建虚拟机实例

      +
      +
    • +
    • 向下滚动至虚拟机实例创建页的底部,展开 Management, security, disks, networking, sole tenancy 群组。

      +
      +Clear Linux requires setting up SSH keys +

      图 17:设置 SSH 密钥

      +
      +
      +

      注解

      +

      Clear Linux OS 默认情况下不允许使用 root 帐户进行 SSH 登录。因此,您必须使用 SSH 公共密钥配置虚拟机实例,以便能够远程访问。

      +

      请参考 操作系统安全性 了解详情。

      +
      +
    • +
    • 点击 安全性 标签,复制并粘贴 SSH 公共密钥:

      +
      +Set SSH key for remote login +

      图 18:设置 SSH 密钥进行远程登录

      +
      +
      +

      警告

      +

      分配的用户名来自电子邮件地址 @ 前面的字符,包含在 SSH 密钥中。不允许使用符号 “.”,因为在 Clear Linux OS 中创建用户帐户时它是无效字符。

      +
      +
    • +
    • 点击 Create 按钮创建 Clear Linux OS 虚拟机。

      +
    • +
    +
  26. +
  27. Clear Linux 虚拟机实例已创建并分配了一个公共 IP 地址:

    +
    +Clear Linux VM instance is created and started +

    图 19:Clear Linux 虚拟机实例已创建并启动

    +
    +
  28. +
  29. 利用上一步获得的 IP 地址以及与 SSH 公共密钥相关联的用户名,您现在可以通过 SSH 登录虚拟机:

    +
    +SSH login to the Clear Linux VM +

    图 20:SSH 登录 Clear Linux 虚拟机

    +
    +
  30. +
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/cloud-install/qingcloud.html b/zh_CN/get-started/cloud-install/qingcloud.html new file mode 100644 index 000000000..9f00550d8 --- /dev/null +++ b/zh_CN/get-started/cloud-install/qingcloud.html @@ -0,0 +1,1245 @@ + + + + + + + + + + + + + + Clear Linux* OS on QingCloud* (如何在青云 QingCloud 上创建 Clear Linux OS 虚拟主机) — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • 开始使用 »
  • + +
  • Clear Linux* OS on QingCloud* (如何在青云 QingCloud 上创建 Clear Linux OS 虚拟主机)
  • + + +
  • + + + + Edit on GitHub + + + +
  • + +
+ + +
+
+
+
+ +
+

Clear Linux* OS on QingCloud* (如何在青云 QingCloud 上创建 Clear Linux OS 虚拟主机)

+

本教程介绍如何通过青云 QingCloud* 控制台创建和启动 Clear Linux OS 实例以及完成以下任务:

+
    +
  1. 在 QingCloud 系统镜像中找到并选择 Clear Linux OS 操作系统。
  2. +
  3. 创建新的公钥和私钥对,以便可以安全地连接到 Clear Linux OS 虚拟主机。
  4. +
  5. 启动新的 Clear Linux OS 虚拟主机并连接到该主机。
  6. +
  7. 删除 Clear Linux OS 虚拟主机。
  8. +
+ +
+

必备条件

+

本教程假定您已经完成了如下默认配置:

+
    +
  • 您的环境可以运行 SSH 以访问远程 Clear Linux OS 虚拟主机。
  • +
  • 您知悉浏览器下载文件的绝对路径。
  • +
  • 您已设置了 QingCloud 的用户帐户,并确保该账户为启用状态,并且已登录到 QingCloud 控制台。 要了解有关青云和设置账户的更多信息,请访问青云官网,网址为 https://www.qingcloud.com/
  • +
+
+
+

在 QingCloud 控制台中选择并启动 Clear Linux OS 虚拟主机

+
    +
  1. 在浏览器中在 QingCloud 控制台主菜单中,依次选择 “计算”“主机”,之后点击图1中所示的 “创建” 选项。

    +
    +QingCloud 控制台 +

    图1: QingCloud 控制台

    +
    +

    选择此选项后,页面将跳转到“创建主机”页面。

    +
  2. +
  3. 在创建主机页面,先点击图2中所示的 “系统” 选项,再点击最右侧 |CL| 图标,并点击 “下一步” 按钮。

    +
    +选择 |CL| 创建虚拟主机 +

    图2: 选择 Clear Linux OS 创建虚拟主机

    +
    +

    之后,您将来到配置选择界面。

    +
  4. +
  5. 在配置选择界面,您可以看到不同硬件配置类型的虚拟主机,比如调整 CPU 核心数量、内存大小以及硬盘和副本备份策略。这里我们将选择默认配置来进行接下来的演示。

    +
    +配置选择 +

    图3: 配置选择

    +
    +

    在点击 “下一步” 按钮之后,您将来到网络设置界面。

    +
  6. +
  7. 在网络设置界面,您可以创建私有的 VPC 网络,也可以快速测试 Clear Linux OS 选择基础网络。 这里我们选择 “基础网络”

    +
    +网络设置 +

    图4: 网络设置

    +
    +
  8. +
  9. 在基本信息设置界面,您需要输入虚拟主机名称,并设置 SSH 密钥登录方式。

    +
      +
    1. 如果之前没有创建过 SSH 密钥,请点击图5中 “创建一个” 按钮以创建 SSH 密钥。

      +
      +创建SSH密钥 +

      图5: 创建SSH密钥

      +
      +

      在点击 “创建一个” 按钮之后,页面将跳转到 SSH 密钥创建界面。

      +
    2. +
    3. 在 SSH 密钥创建界面中,您可以依照图6填写密钥的名称以便记忆,并且选择您需要的加密方法,确认无误后即可点击 “提交” 按钮。

      +
      +新建SSH密钥 +

      图6: 新建SSH密钥

      +
      +

      提交之后,将跳出密钥下载按钮。

      +
    4. +
    5. 出现密钥下载按钮后,请在10分钟之内点击下载按钮完成密钥的下载,并将该密钥妥善保存到本地,以便之后连接虚拟主机使用。

      +
      +下载SSH密钥 +

      图7: 下载SSH密钥

      +
      +

      在关闭下载对话框之后,界面将跳转到之前的 “基本信息设置” 界面

      +
    6. +
    +
  10. +
  11. 在确保 SSH 密钥已妥善下载保存的情况下,如图8检查虚拟主机的基本信息,确认无误后请点击 “创建” 按钮。

    +
    +确认信息并创建虚拟主机 +

    图8: 确认信息并创建虚拟主机

    +
    +

    确认后,QingCloud 将会创建 Clear Linux OS 虚拟主机,您可以在新的界面中查看当前虚拟主机的状态。

    +
  12. +
+
+
+

申请公网IP并添加到虚拟主机

+
    +
  1. 由于 QingCloud 不会为使用默认网络创建的虚拟主机自动分配公网IP地址,所以我们需要手动申请,并添加到虚拟主机。如图9点击导航栏左侧的 “网络与CDN” 按钮。

    +
    +网络与CDN +

    图9: 网络与CDN

    +
    +

    点击后,您将来到网络与CDN配置界面。

    +
  2. +
  3. 在新页面中,如图10点击左侧 “公网IP” 按钮,并点击中间的 “申请” 按钮以进行创建公网IP。

    +
    +申请创建公网IP +

    图10: 申请创建公网IP

    +
    +

    点击申请后,将跳出提示栏,仔细阅读后按照图11点击 “继续申请公网IP” 按钮。

    +
    +提示栏确认 +

    图11: 提示栏确认

    +
    +

    之后将跳转到申请公网IP界面。

    +
  4. +
  5. 在申请公网IP页面中,如图12确认和填写相关信息,包括计费模式和带宽上限(本教程中使用的是流量计费模式并且设置了2Mbps的带宽上限),确认无误后点击 “提交” 按钮。

    +
    +确认提交公网IP申请 +

    图12: 确认提交公网IP申请

    +
    +
  6. +
  7. 之后如图13通过导航栏点击 “计算”“网卡” 按钮来到网卡界面。

    +
    +网卡界面 +

    图13: 网卡界面

    +
    +
  8. +
  9. 在网卡界面,按照图14选中刚刚创建的 Clear Linux OS 主机的网卡,并点击上方 “更多操作” 按钮,再点击 “绑定公网IPv4” 按钮。

    +
    +绑定选中 +

    图14: 绑定选中

    +
    +
  10. +
  11. 在绑定公网IP确认界面,按照图15选择刚刚申请完成的公网IP地址,并点击下方 “提交” 按钮。 等待片刻后,状态将会变成图16中所示。

    +
    +提交绑定 +

    图15: 提交绑定

    +
    +
    +公网IP绑定成功 +

    图16: 公网IP绑定成功

    +
    +
  12. +
+
+
+

连接到 Clear Linux OS 虚拟主机

+

请您点击导航栏左侧 “计算”“主机” 按钮,确认当前虚拟主机处于正在运行状态,且已绑定了公网IP地址。如图17所示。

+
+确认虚拟主机当前处于正常状态 +

图17: 确认虚拟主机当前处于正常状态

+
+
    +
  1. 复制当前 Clear Linux OS 虚拟主机的公网IP地址,并使用 SSH 客户端进行连接。 这里我们需要用到之前保存的 SSH 密钥。

    +
  2. +
  3. 在此教程中,以 MobaXterm 客户端为例演示登录过程。请如图18检查各项。用户名我们选择 root,密钥请选择之前下载并保存到本地的 SSH 密钥。

    +
    +SSH 登录虚拟主机设置 +

    图18: SSH 登录虚拟主机设置

    +
    +
  4. +
  5. 设置成功后,点击登录即可登录到 Clear Linux OS 虚拟主机。

    +
    +SSH 登录成功 +

    图19: SSH 登录成功

    +
    +
  6. +
+
+
+

删除 Clear Linux OS 虚拟主机

+

本章节介绍如何在 QingCloud 上删除所创建的 Clear Linux OS 虚拟主机。

+
    +
  1. 通过左侧导航栏依次选择 “计算”“主机” 后,找到刚刚创建的 Clear Linux OS 主机,如图20所示选中此主机,再点击上方 “更多操作” 按钮选择 “删除”,即可删除虚拟主机。

    +
    +|CL| 虚拟主机 +

    图20: 删除 Clear Linux OS 虚拟主机

    +
    +
  2. +
+
+
+

删除申请的公网IP

+

本章节介绍如何在 QingCloud 上删除所申请的公网IP地址。

+
    +
  1. 通过左侧导航栏依次选择 “网络与CDN”“公网IP” 后,找到刚刚申请的公网IP地址,如图21所示选中此项目,再点击上方 “更多操作” 按钮选择 “删除”,即可删除。

    +
    +删除公网IP地址 +

    图21: 删除公网IP地址

    +
    +
  2. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/compatibility-check.html b/zh_CN/get-started/compatibility-check.html new file mode 100644 index 000000000..d99d6de7e --- /dev/null +++ b/zh_CN/get-started/compatibility-check.html @@ -0,0 +1,1106 @@ + + + + + + + + + + + + + + 检查处理器和 EFI 固件的兼容性 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

检查处理器和 EFI 固件的兼容性

+

安装 Clear Linux* OS 之前,检查主机系统的处理器和 EFI 固件兼容性。要检查兼容性,选择如下途径:

+ +
+

注解

+

该操作不会检查其他系统组件(例如:储存和显卡)与 Clear Linux OS 的兼容性。

+
+
+

检查兼容性

+
    +
  1. 下载 clear-linux-check-config.sh 文件。

    +

    如果浏览器不可用,使用:

    +
    curl -O https://cdn.download.clearlinux.org/current/clear-linux-check-config.sh
    +
    +
    +
  2. +
  3. 保证脚本可以运行。

    +
    chmod +x clear-linux-check-config.sh
    +
    +
    +
  4. +
  5. 运行脚本。

    +
      +
    1. 检查主机的处理器和 EFI 固件是否可以运行 Clear Linux OS。

      +
      ./clear-linux-check-config.sh host
      +
      +
      +
    2. +
    3. 检查主机是否可以在一个容器中运行 Clear Linux OS。

      +
      ./clear-linux-check-config.sh container
      +
      +
      +
    4. +
    +

    脚本会输出测试结果列表,如下所示。所有项应返回 SUCCESS 状态。本例表明主机的处理器和 EFI 固件可以支持运行 Clear Linux OS。

    +
    Checking if host is capable of running Clear Linux* OS
    +
    +SUCCESS: 64-bit CPU (lm)
    +SUCCESS: Supplemental Streaming SIMD Extensions 3 (ssse3)
    +SUCCESS: Streaming SIMD Extension v4.1 (sse4_1)
    +SUCCESS: Streaming SIMD Extensions v4.2 (sse4_2)
    +SUCCESS: Advanced Encryption Standard instruction set (aes)
    +SUCCESS: Carry-less Multiplication extensions (pclmulqdq)
    +SUCCESS: EFI Firmware
    +
    +
    +
  6. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/index.html b/zh_CN/get-started/index.html new file mode 100644 index 000000000..5aeaef4ae --- /dev/null +++ b/zh_CN/get-started/index.html @@ -0,0 +1,1105 @@ + + + + + + + + + + + + + + 开始使用 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+ + + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/install-configfile.html b/zh_CN/get-started/install-configfile.html new file mode 100644 index 000000000..69ffcb099 --- /dev/null +++ b/zh_CN/get-started/install-configfile.html @@ -0,0 +1,1270 @@ + + + + + + + + + + + + + + 利用 clr-installer 和配置文件安装 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

利用 clr-installer 和配置文件安装

+

本页说明如何利用 clr-installer 工具和配置文件安装 Clear Linux* OS。配置文件 (clr-installer.yaml) 可以重复使用,在其他机器上复制相同的安装配置。

+ + +
+

流程

+

本指南介绍了利用配置文件和 clr-installer 工具进行安装的两种方法。您可以使用任何一种方法实现同一目标。选择最适合您的方法。

+

如果您是首次安装 Clear Linux OS,我们推荐例 1。

+

要在另一系统上克隆现有的 Clear Linux OS 配置,我们推荐例 2。

+
+

例 1

+

本方法使用配置文件模板执行全新安装。

+

执行以下步骤:

+
    +
  1. 转向 Downloads,下载最新的 Clear Linux OS Server 映像。

    +

    例如:https://download.clearlinux.org/releases/30010/clear/clear-30010-live-server.iso.xz

    +
  2. +
  3. 按照说明 创建可引导 U 盘,因操作系统而异。

    +
  4. +
  5. 启动 U 盘。

    +
  6. +
  7. 从菜单中选择 Clear Linux OS

    +
  8. +
  9. 在控制台窗口中,以 root 用户身份登录,然后设置密码。

    +
  10. +
  11. 确认拥有互联网连接,配置代理设置(如果使用防火墙)。

    +
  12. +
  13. 下载 live-server.yaml 模板。

    +

    例如:

    +
    curl -O https://download.clearlinux.org/releases/30010/clear/config/image/live-server.yaml
    +
    +
    +
  14. +
  15. 根据需要编辑模板,改变设置。

    +

    通常改变的设置包括:

    +
  16. +
+
+
    +
  1. 在块设备中,设置 “file: “/dev/sda”” 或输入喜欢的设备。
  2. +
  3. targetMedia 中,将第三分区大小设置为 “0”,以使用整个磁盘空间。
  4. +
  5. 在 bundle 文件部分,根据需要添加其他 bundle 文件。
  6. +
  7. 删除安装后部分(除非您有安装后脚本)。
  8. +
  9. 在版本下设置版本号。要使用最新版本,请将版本号设置为 “0”。
  10. +
+

通常改变的设置在下面的 15、34、37 和 51 行显示。查看 Installer YAML Syntax 了解详情。

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
          #clear-linux-config
+
+          # c-basic-offset: 2; tab-width: 2; indent-tabs-mode: nil
+          # vi: set shiftwidth=2 tabstop=2 expandtab:
+          # :indentSize=2:tabSize=2:noTabs=true:
+
+          # File:         developer-live-server.yaml
+          # Use Case:     Live Image which boots into login prompt
+          #               Optionally allows for installing Clear Linux OS
+          #               using the TUI clr-installer by running clr-installer
+
+          # switch between aliases if you want to install to an actual block device
+          # i.e /dev/sda
+          block-devices: [
+             {name: "bdevice", file: "/dev/sda"}
+          ]
+
+          targetMedia:
+          - name: ${bdevice}
+            type: disk
+            children:
+            - name: ${bdevice}1
+              fstype: vfat
+              mountpoint: /boot
+              size: "150M"
+              type: part
+            - name: ${bdevice}2
+              fstype: swap
+              size: "32M"
+              type: part
+            - name: ${bdevice}3
+              fstype: ext4
+              mountpoint: /
+              size: "0"
+              type: part
+
+          bundles: [os-core, os-core-update, NetworkManager, clr-installer, vim]
+
+          autoUpdate: false
+          postArchive: false
+          postReboot: false
+          telemetry: false
+          iso: true
+          keepImage: true
+          autoUpdate: false
+
+          keyboard: us
+          language: en_US.UTF-8
+          kernel: kernel-native
+
+          version: 30010
+
+
+
+

利用以下命令开始安装:

+
clr-installer --config live-server.yaml
+
+
+
+
+

例 2

+

此方法使用此前安装中保存的配置文件,可以轻松利用该文件在其他机器上复制安装。

+

执行以下步骤:

+
    +
  1. 在安装 Clear Linux OS 的系统上打开控制台窗口,找到配置文件的副本。

    +
  2. +
  3. 在控制台窗口中,以 root 用户身份登录,输入密码。

    +
  4. +
  5. 将目录更改为 /root,然后将 clr-installer.yaml 文件复制到 U 盘。

    +
    cd /root
    +cp clr-installer.yaml <USB-thumb-drive>
    +
    +
    +
  6. +
+

按照以下步骤在目标设备上开始安装:

+
    +
  1. 转向 Downloads,下载最新的 Clear Linux OS Server 映像。

    +

    例如:https://download.clearlinux.org/releases/30010/clear/clear-30010-live-server.iso.xz

    +
  2. +
  3. 按照说明 创建可引导 U 盘,因操作系统而异。

    +
  4. +
  5. 启动 U 盘。

    +
  6. +
  7. 从菜单中选择 Clear Linux OS

    +
  8. +
  9. 在控制台窗口中,以 root 用户身份登录,然后设置密码。

    +
  10. +
  11. 确认拥有互联网连接,配置代理设置(如果使用防火墙)。

    +
  12. +
  13. 插入并挂载 U 盘。U 盘中包含找到的 clr-installer.yaml 配置文件。

    +
  14. +
  15. 利用以下命令开始安装:

    +
    clr-installer --config clr-installer.yaml
    +
    +
    +
  16. +
+
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/virtual-machine-install/hyper-v.html b/zh_CN/get-started/virtual-machine-install/hyper-v.html new file mode 100644 index 000000000..ba081ed36 --- /dev/null +++ b/zh_CN/get-started/virtual-machine-install/hyper-v.html @@ -0,0 +1,1105 @@ + + + + + + + + + + + + + + Microsoft Hyper-V* 上的 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Microsoft Hyper-V* 上的 Clear Linux* OS

+

本页说明如何在 Windows Server Virtualization* 或 Hyper-V 环境中运行 Clear Linux* OS。

+ +
+

必备条件

+ +
+
+

启用 Hyper-V

+

请参阅 Install Hyper-V on Windows 10 以在机器上启用和配置 Hyper-V

+
+
+

创建虚拟网络

+

在 Windows 系统上启用 Hyper-V 后,需要在 Hyper-V Manager 中创建虚拟网络。请参阅 Create a virtual network 文档以创建和配置虚拟网络。

+
+
+

创建虚拟机

+
    +
  1. 下载和解压缩最新的 hyperv 磁盘映像 clear-XXXXX-hyperv.img.gz,其中 XXXXX 是 Downloads 页上的最新可用 Clear Linux OS 版本。

    +
  2. +
  3. 利用 Hyper-V Manager 创建虚拟机:

    +
      +
    1. 提示指定虚拟机世代时选择第 2 代。
    2. +
    3. 选择使用现有虚拟硬盘,找到 clear-XXXX-hyperv.vhdx 文件。
    4. +
    5. 完成后,打开虚拟机设置,选择“固件选择”,在“安全引导配置”中取消选中“启用安全引导”。
    6. +
    +
    +

    注解

    +

    现在,Clear Linux OS 不会通过启用 secure boot 来引导。

    +
    +
  4. +
  5. 连接至新虚拟机并将其启动。系统显示提示:

    +
    > User: root
    +
    +
    +
  6. +
  7. 设置 root 用户密码。

    +
  8. +
+

运行 Clear Linux OS 的虚拟机已准备就绪!

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/virtual-machine-install/kvm.html b/zh_CN/get-started/virtual-machine-install/kvm.html new file mode 100644 index 000000000..b572cd10e --- /dev/null +++ b/zh_CN/get-started/virtual-machine-install/kvm.html @@ -0,0 +1,1262 @@ + + + + + + + + + + + + + + KVM 上的 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

KVM 上的 Clear Linux* OS

+

本页说明如何利用 KVM 在虚拟环境中运行 Clear Linux* OS。

+ +
+

安装 QEMU-KVM

+
    +
  1. 在主机 BIOS 中启用 Intel® Virtualization Technology (英特尔® 虚拟化技术) 和 Intel® Virtualization Technology for Directed I/O (英特尔® 定向I/O虚拟化技术)。

    +
  2. +
  3. 登录并打开终端模拟器。

    +
  4. +
  5. 在主机上安装 QEMU*-KVM。下面是部分示例操作系统。

    +
      +
    • 在 Clear Linux OS 上:

      +
      sudo swupd bundle-add kvm-host
      +
      +
      +
    • +
    • 在 Ubuntu* 18.04 LTS Desktop 上:

      +
      sudo apt-get install qemu-kvm
      +
      +
      +
    • +
    • 在 Mint* 19.1 “Cinnamon” Desktop 上:

      +
      sudo apt-get install qemu-kvm
      +
      +
      +
    • +
    • 在 Fedora* 30 Workstation 上:

      +
      sudo dnf install qemu-kvm
      +
      +
      +
    • +
    +
  6. +
+
+
+

下载并开启虚拟机

+
    +
  1. image 目录下载最新的预构建 Clear Linux OS KVM 映像。查找 clear-<version>-kvm.img.xz。您还可以使用此命令:

    +
    curl -O https://cdn.download.clearlinux.org/image/$(curl https://cdn.download.clearlinux.org/image/latest-images | grep '[0-9]'-kvm'\.')
    +
    +
    +
  2. +
  3. 解压缩下载的映像:

    +
    unxz -v clear-<version>-kvm.img.xz
    +
    +
    +
  4. +
  5. 下载 3 个 OVMF 文件(OVMF.fdOVMF_CODE.fdOVMF_VARS.fd),为虚拟机提供 UEFI 支持。

    +
    curl -O https://cdn.download.clearlinux.org/image/OVMF.fd
    +curl -O https://cdn.download.clearlinux.org/image/OVMF_CODE.fd
    +curl -O https://cdn.download.clearlinux.org/image/OVMF_VARS.fd
    +
    +
    +
    +

    注解

    +

    Clear Linux OS 的默认 OVMF 文件可能并不适用于部分操作系统版本。开启虚拟机时,可能会在 debug.log 文件中发现 ASSERT。如果出现此情况,则改用因操作系统而异的 OVMF 文件。例如,Clear Linux OS OVMF 文件适用于 Ubuntu 18.04 LTS,但不适用于 Ubuntu 19.04 LTS。安装和使用适用于 Ubuntu 19.04 LTS 的 OVMF 文件,解决了 ASSERT 问题。

    +
    +
  6. +
  7. image 目录下载 start_qemu.sh 脚本。此脚本将启动 Clear Linux OS 虚拟机,并在同一个终端模拟器窗口中提供控制台交互操作。

    +
    curl -O https://cdn.download.clearlinux.org/image/start_qemu.sh
    +
    +
    +
  8. +
  9. 保证脚本可以运行:

    +
    chmod +x start_qemu.sh
    +
    +
    +
  10. +
  11. 启动 Clear Linux OS KVM 虚拟机:

    +
    sudo ./start_qemu.sh clear-<version>-kvm.img
    +
    +
    +
  12. +
  13. root 用户身份登录,设置新密码。

    +
  14. +
+
+
+

通过 SSH 访问虚拟机

+

要通过 SSH 而非开启虚拟机的控制台与 Clear Linux OS 虚拟机进行交互,请按照以下步骤操作:

+
    +
  1. 在 Clear Linux OS 虚拟机中配置 SSH,允许 root 登录:

    +
    cat > /etc/ssh/sshd_config << EOF
    +  PermitRootLogin yes
    +  EOF
    +
    +
    +
  2. +
  3. 在 Clear Linux OS 虚拟机中启用和启动 SSH 服务器:

    +
    systemctl enable sshd
    +systemctl start sshd
    +
    +
    +
  4. +
  5. 确认将在其上开启虚拟机的托管主机的 IP 地址。下一步中用此信息代替 <ip-addr-of-kvm-host>。

    +
    ip a
    +
    +
    +
  6. +
  7. 利用默认端口 10022,通过 SSH 登录 Clear Linux OS 虚拟机:

    +
    ssh -p 10022 root@<ip-addr-of-kvm-host>
    +
    +
    +
  8. +
+
+
+

可选:添加 GNOME Display Manager (GDM)

+

为将 GDM 添加至 Clear Linux OS 虚拟机,请按照以下步骤操作:

+
    +
  1. 关闭运行的 Clear Linux OS 虚拟机。

    +
    poweroff
    +
    +
    +
  2. +
  3. 在本地主机或远程系统上安装 Spice 查看器。下面是部分示例操作系统。

    +
      +
    • 在 Clear Linux 上:

      +
      sudo swupd bundle-add virt-viewer
      +
      +
      +
    • +
    • 在 Ubuntu* 18.04 LTS Desktop 上:

      +
      sudo apt-get install virt-viewer
      +
      +
      +
    • +
    • 在 Mint* 19.1 “Cinnamon” Desktop 上:

      +
      sudo apt-get install virt-viewer
      +
      +
      +
    • +
    • 在 Fedora* 30 Workstation 上:

      +
      sudo dnf install virt-viewer
      +
      +
      +
    • +
    +
  4. +
  5. 修改 start_qemu.sh 脚本,增加内存 (-m),添加显卡驱动程序 (-vga) 和 Spice(-spice-usb-device)支持。

    +
    qemu-system-x86_64 \
    +    -enable-kvm \
    +    ${UEFI_BIOS} \
    +    -smp sockets=1,cpus=4,cores=2 -cpu host \
    +    -m 4096 \
    +    -vga qxl \
    +    -nographic \
    +    -spice port=5924,disable-ticketing \
    +    -usb \
    +    -device usb-tablet,bus=usb-bus.0 \
    +    -drive file="$IMAGE",if=virtio,aio=threads,format=raw \
    +    -netdev user,id=mynet0,hostfwd=tcp::${VMN}0022-:22,hostfwd=tcp::${VMN}2375-:2375 \
    +    -device virtio-net-pci,netdev=mynet0 \
    +    -debugcon file:debug.log -global isa-debugcon.iobase=0x402 $@
    +
    +
    +
  6. +
  7. 由于上一步在 start_qemu.sh 脚本中进行了更改,使用同一 OVMF 文件会导致虚拟机不能正常引导,最后进入 UEFI shell 界面。避免这种情况的最简单方法是删除 OVMF 文件,在重启虚拟机前恢复原始文件。

    +
  8. +
  9. 将虚拟机大小增加 10GB 以适应 GDM 安装。

    +
    qemu-img resize -f raw clear-<version>-kvm.img +10G
    +
    +
    +
  10. +
  11. 重新启动 Clear Linux OS 虚拟机:

    +
    sudo ./start_qemu.sh clear-<version>-kvm.img
    +
    +
    +
  12. +
  13. 确认将在其上开启虚拟机的托管主机的 IP 地址。下一步中用此信息代替 <ip-addr-of-kvm-host>。

    +
    ip a
    +
    +
    +
  14. +
  15. 从本地主机或远程系统上,打开新的终端模拟器窗口,利用 Spice 查看器连接至 Clear Linux OS 虚拟机:

    +
    remote-viewer spice://<ip-address-of-kvm-host>:5924
    +
    +
    +
  16. +
  17. root 用户身份登录 Clear Linux OS 虚拟机。

    +
  18. +
  19. 按照 增加映像的虚拟磁盘大小 中的这些步骤,调整虚拟机的虚拟磁盘分区大小。

    +
  20. +
  21. 将 GDM 添加至 Clear Linux OS 虚拟机:

    +
    swupd bundle-add desktop-autostart
    +
    +
    +
  22. +
  23. 重启 Clear Linux OS 虚拟机以启动 GDM:

    +
    reboot
    +
    +
    +
  24. +
  25. 进行 GDM 开箱体验 (OOBE)。

    +
  26. +
  27. GDM GUI 针对 Clear Linux OS 虚拟机的默认画面比例为 4:3。要改变该比例,请使用 GDM 的 Devices > Displays 设置工具(右上角)。

    +
  28. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/virtual-machine-install/virtualbox-cl-installer.html b/zh_CN/get-started/virtual-machine-install/virtualbox-cl-installer.html new file mode 100644 index 000000000..02c5f13f4 --- /dev/null +++ b/zh_CN/get-started/virtual-machine-install/virtualbox-cl-installer.html @@ -0,0 +1,1367 @@ + + + + + + + + + + + + + + VirtualBox* 上的 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

VirtualBox* 上的 Clear Linux* OS

+

本页说明如何利用 Clear Linux* OS 在 VirtualBox 虚拟机管理程序中创建虚拟机,用作来宾操作系统。本说明为 Clear Linux OS live-server 安装程序创建 Clear Linux OS 虚拟机 (VM) 提供支持。

+ +
+

必备条件

+
    +
  1. 在主机系统上从 EFI/BIOS 启用虚拟化功能,例如 Intel® Virtualization Technology (英特尔® 虚拟化技术)。
  2. +
  3. 使用适用于您的平台的 VirtualBox Installation Instructions,从 VirtualBox 下载并安装 VirtualBox 6.0 或更高版本。
  4. +
+
+
+

下载并解压缩 Clear Linux OS 安装程序 ISO

+
    +
  1. Downloads 页下载 Clear Linux OS 的文件 clear-<VERSION>-live-server.iso.xz

    +
  2. +
  3. 通过检查文件哈希值和签名,验证所下载映像的完整性。参考 验证签名 了解详细步骤。

    +
  4. +
  5. 解压缩下载的映像。

    +
      +
    • 在 Windows 系统中,您可以使用 7zip 解压缩文件,即右键点击文件,然后选择“解压缩到此处”(在相同目录下)
    • +
    +
    +7zip extract here command +

    图 1:7zip 的“解压缩到此处”命令

    +
    +
      +
    • Linux 系统:

      +
      xz -d clear-<VERSION>-live-server.iso.xz
      +
      +
      +
    • +
    +
  6. +
  7. 删除最初下载的压缩文件。

    +
  8. +
+
+
+

创建新的 VirtualBox 虚拟机

+

在即将安装 Clear Linux OS 的 VirtualBox Manager 中需要创建新的 VM。VirtualBox 指南中的 Creating Your First Virtual Machine 章节介绍了创建虚拟机的一般说明和使用不同设置的详细信息。

+
    +
  1. 在主机系统上启动 VirtualBox Manager。

    +
  2. +
  3. 点击 New 按钮创建一个新虚拟机。

    +
  4. +
  5. 选择 Expert mode

    +
  6. +
  7. Create Virtual Machine 屏幕上,输入以下设置:

    +
      +
    • 名称:选择名称(例如 ClearLinuxOS-VM)。

      +
    • +
    • 类型:Linux

      +
    • +
    • 版本:Linux 2.6 / 3.x / 4.x(64 位)

      +
    • +
    • 硬盘: Create a virtual hard disk now

      +
    • +
    • 默认内存大小:2048 MB(进行相应调整。)

      +
      +

      注解

      +

      以后如果希望更改分配的 RAM 大小,请关闭虚拟机。返回 Settings > System 并将 Base Memory 更改为想要的大小。

      +
      +
    • +
    +
    +Create Virtual Machine +

    图 2:创建虚拟机

    +
    +
  8. +
  9. 点击 Create

    +
  10. +
  11. Create Virtual Hard Disk 屏幕上,选择:

    +
      +
    • 文件位置
    • +
    • 文件大小:32.00 GB。根据需要调整大小。
    • +
    • 硬盘文件类型: VDI (VirtualBox Disk Image)
    • +
    • 物理硬盘存储: Dynamically allocated
    • +
    +
    +Create Virtual Hard Disk +

    图 3:创建虚拟硬盘

    +
    +
  12. +
  13. 点击 Create

    +

    新的虚拟机将创建完成并出现在 VirtualBox Manager 中。

    +
  14. +
  15. 点击 Settings 配置 Clear Linux OS 虚拟机。

    +
  16. +
  17. 在左侧菜单中,导航至 系统 菜单。

    +
  18. +
  19. Motherboard 标签上,选择 Chipset 菜单,然后选择 ICH9。参见图 4。

    +
    +

    注解

    +

    您可以为虚拟机选择芯片组。查阅 VM VirtualBox User Manual 了解详情。

    +
    +
  20. +
  21. Enabled Features 中,选中以下方框:

    +
      +
    • 启用 I/O APIC
    • +
    • 启用 EFI(仅适用于特殊操作系统)
    • +
    +
    +Settings > System +

    图 4: 设置 > 系统

    +
    +
    +

    注解

    +

    默认情况下,只为新的虚拟机分配 1 个虚拟 CPU。可在“设置”>“系统”>“处理器”中考虑增加分配给虚拟机的虚拟处理器数量,以提高性能。

    +
    +
  22. +
  23. 点击 OK

    +
  24. +
+
+
+

在 VirtualBox 虚拟机上安装 Clear Linux OS。

+

Clear Linux OS 现在已准备好安装。

+
+

挂载安装 ISO

+

Clear Linux OS 安装程序 ISO 必须在虚拟机上作为虚拟 CD-ROM 挂载,然后才能打开虚拟机。

+
    +
  1. 从左边的 ClearLinux-OS Settings 菜单选择 Storage

    +
  2. +
  3. Storage Devices 中间栏上,点击标记为 Empty 的蓝色盘。

    +
  4. +
  5. Attributes 菜单点击 Optical Drive 下拉菜单旁边的蓝色 CD 盘,然后点击 Choose Virtual Optical Disk File…

    +
    +Choose Virtual Optical Disk Drive +

    图 5:选择虚拟光盘驱动器

    +
    +
  6. +
  7. 显示 Please choose a virtual optical disk file 后,选择 ISO 文件并点击打开。

    +
    +Mounting an ISO +

    图 6:挂载 ISO

    +
    +
  8. +
  9. 点击 OK 退出,返回主 VirtualBox Manager。

    +
  10. +
+
+
+

利用 live-server 安装程序安装 Clear Linux OS

+
    +
  1. 在 VirtualBox Manager 中,选择您创建的虚拟机,点击 Start

    +
    +Start the installer +

    图 7:启动安装程序

    +
    +
    +

    注解

    +

    要从虚拟机控制台窗口释放鼠标光标,按下键盘右边的 Ctrl 键。

    +
    +
  2. +
  3. 引导管理器中出现 Clear Linux Installer 时,选择 回车。不要安装 bundle 文件 desktop-autostart

    +
  4. +
  5. 按照 使用实时服务器将 Clear Linux* OS 安装在裸机上 中的步骤,将 Clear Linux OS 安装在虚拟机的虚拟磁盘上。注:

    +
      +
    1. Configure Installation Media 中,导航至顶级 VBOX HARDDISK,然后选择 Confirm
    2. +
    3. 高级选项 ‣ 管理用户 中,创建一个管理员用户。
    4. +
    5. 不要安装 bundle 文件 desktop-autostart
    6. +
    +
  6. +
  7. 完成 Clear Linux OS 安装后,点击 Exit

    +
  8. +
  9. 根据提示输入:

    +
    shutdown now
    +
    +
    +
  10. +
+
+
+

卸载 ISO

+

需要卸载 Clear Linux OS 安装程序 ISO,以便从虚拟硬盘引导虚拟机。

+
    +
  1. 返回 VirtualBox Manager。

    +
  2. +
  3. 点击 Settings 配置 Clear Linux OS 虚拟机。

    +
  4. +
  5. 从虚拟机 Settings 窗口,导航至左侧菜单的 Storage 窗格。

    +
  6. +
  7. Storage Devices 中间栏上,点击 Controller: IDE 下面标注为 clear-<VERSION>-live-server.iso 的蓝色 CD 盘。

    +
  8. +
  9. Attributes 右边的 Optical Drive 栏中,选择旁边的蓝色 CD 图标,点击 Remove Disk from Virtual Drive

    +
    +Remove Disk from Virtual Drive +

    图 8:从虚拟驱动器中取出磁盘

    +
    +
  10. +
  11. 点击 OK 退出 VM Settings 菜单,返回主 VirtualBox Manager。

    +
  12. +
+
+
+

安装 VirtualBox Linux Guest Additions

+

Clear Linux OS 利用其 kernel-lts (长期支持)bundle 中的安装脚本为 Linux Guest Additions 驱动程序提供完全的兼容性。

+
    +
  1. 从 VirtualBox Manager 中选择 Clear Linux OS 虚拟机,然后选择 Start

    +
  2. +
  3. 在虚拟机控制台上,以先前创建的管理员用户身份登录。

    +
    +

    注解

    +

    随机会显示一条消息:”A kernel update is available: you may wish to reboot the system.”

    +

    要更新内核,请输入:

    +
    sudo reboot
    +
    +
    +

    初次登录时,请输入管理员用户的密码,然后继续。

    +
    +
  4. +
  5. 查看 uname -r 命令的输出结果,验证安装的内核为 kernel-lts。它的结尾应该为 .lts.lts2018

    +
    uname -r
    +<VERSION>.lts
    +
    +
    +

    如果运行的内核不是 lts:手动安装 LTS 内核,更新引导启动程序,然后再次检查:

    +
    sudo swupd bundle-add kernel-lts
    +clr-boot-manager set-kernel $(basename $(realpath /usr/lib/kernel/default-lts))
    +clr-boot-manager update
    +reboot
    +
    +
    +
  6. +
  7. 移除任何结尾不是 -ltskernel-install 的内核 bundle,简化和避免冲突:

    +
    sudo swupd bundle-list | grep kernel
    +sudo swupd bundle-remove <NON-LTS-KERNEL>
    +
    +
    +
  8. +
  9. 在虚拟机控制台顶级菜单中,点击 Devices,然后选择 Insert Guest Additions CD image…,在 Clear Linux OS 虚拟机上挂载 VirtualBox 驱动程序安装。

    +
    +Insert Guest Additions CD image +

    图 9:插入 Guest Additions CD 映像

    +
    +
  10. +
  11. 如果出现对话 “VBx_GAs_6.0.8…Would you like to run it?”,选择 Cancel

    +

    我们提供脚本在 Clear Linux OS 上安装 VirtualBox 驱动程序和修补程序。

    +
  12. +
  13. 打开终端,输入脚本:

    +
    sudo install-vbox-lga
    +
    +
    +
    +

    注解

    +

    成功安装后显示:”Guest Additions installation complete”。如果驱动程序已经安装,不要重复安装。

    +
    +
  14. +
  15. 关闭系统。选择 机器 ‣ ACPI 关机

    +
    +Powering off a VirtualBox VM +

    图 10:关闭 VirtualBox 虚拟机

    +
    +
  16. +
  17. 选择 SettingsDisplay

    +
  18. +
  19. Graphics Controller 中,选择 VBoxSVGA,以便动态调整屏幕大小。

    +
    +Remove Disk from Virtual Drive +

    图 11:VirtualBox 硬件加速错误

    +
    +
  20. +
  21. 在 VirtualBox Manager 中,选择 Start

    +
  22. +
  23. 在虚拟机控制台上,登录并确认 VirtualBox 驱动程序已加载。

    +
    lsmod | grep ^vbox
    +
    +
    +

    此时,应该会看到以 vbox 开头的驱动程序(例如 vboxvideo、vboxguest)已加载。

    +
  24. +
  25. 添加 desktop-autostart 获得完整的桌面体验。

    +
    sudo swupd bundle-add desktop-autostart
    +
    +
    +
  26. +
  27. 重启虚拟机,以管理员用户身份登录。

    +
    sudo reboot
    +
    +
    +
  28. +
+

VirtualBox 上运行的 Clear Linux OS 虚拟机准备就绪,可供开发和探索。

+
+
+
+

故障检修

+
    +
  1. 问题: 在 Microsoft* Windows* 操作系统上,尝试开启虚拟机时 VirtualBox 发生错误,出现消息:系统不支持 VT-X/AMD-v 硬件加速。

    +
    +Remove Disk from Virtual Drive +

    图 12:VirtualBox 硬件加速错误

    +
    +

    解决方法:首先仔细检查 Prerequisites 部分,确保主机系统的 EFI/BIOS 中启用了经过硬件加速的虚拟化扩展。

    +

    启用另一个管理程序(如 Hyper-V)后,VirtualBox 应禁用经过硬件加速的虚拟化。

    +

    要禁用 Hyper-V,在管理员:命令提示符或 Powershell 中执行此命令,然后重启系统:

    +
    bcdedit /set {current} hypervisorlaunchtype off
    +
    +
    +

    要再次启用 Hyper-V,在管理员:命令提示符或 Powershell 中执行此命令,然后重启系统:

    +
    bcdedit /set {current} hypervisorlaunchtype Auto
    +
    +
    +
  2. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/virtual-machine-install/vmw-player-preconf.html b/zh_CN/get-started/virtual-machine-install/vmw-player-preconf.html new file mode 100644 index 000000000..7bb567910 --- /dev/null +++ b/zh_CN/get-started/virtual-machine-install/vmw-player-preconf.html @@ -0,0 +1,1295 @@ + + + + + + + + + + + + + + VMware* Workstation Player (预配置映像)上的 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

VMware* Workstation Player (预配置映像)上的 Clear Linux* OS

+

本页说明如何在 VMware Workstation 14 Player 上部署预配置的 Clear Linux OS VMware 映像。

+ +
+

概述

+

VMware Workstation 14 Player 是一个类型 2 的管理程序。例如,它可以运行在 Windows* 之上或 Linux* 操作系统。使用 VMware ESXi,可以创建,配置,管理和本地系统上运行 Clear Linux* OS VMs

+
+

注解

+

本文截图采用了 Windows 版 VMware Workstation 14 Player。Linux 版本中的菜单和提示有微小的文字差异。

+
+
+
+

安装 VMware Workstation Player 虚拟机管理程序

+
    +
  1. 在系统 BIOS 中启用 Intel® VTIntel® VT-d

    +
  2. +
  3. VMware Workstation 14 Player 有 Windows 和 Linux 版本。下载您喜欢的版本。

    +
  4. +
  5. 根据您的操作系统,安装下述说明安装。

    +
      +
    • 在支持的 Linux 操作系统上:

      +
        +
      1. 启用 GUI 桌面:

        +
      2. +
      3. 启动一个终端模拟器。

        +
      4. +
      5. 发出如下命令,按照指引步骤启动安装程序。

        +
        sudo sh ./VMware-Player-[version number].x86_64.bundle
        +
        +
        +
      6. +
      +
    • +
    • 在 Windows 上:

      +
        +
      1. 启动安装程序。
      2. +
      3. 按照安装向导提示操作。
      4. +
      +
    • +
    +
  6. +
+

有关其他帮助,请查看 VMware Workstation Player Documentation

+
+
+

下载最新的 Clear Linux OS VMware 映像

+

image repository 中获取最新的 Clear Linux OS VMware 映像。寻找 clear-[version number]-vmware.vmdk.xz。您也可以使用这个命令:

+
curl -O https://cdn.download.clearlinux.org/image/$(curl https://cdn.download.clearlinux.org/image/latest-images | grep vmware)
+
+
+
+
+

解压缩并验证映像

+

访问 下载、验证并解压缩 Clear Linux* OS 映像, 然后按照 Windows* 和 Linux* 环境的说明进行操作。访问 Clear Linux* OS image types 有关的所有可用 Clear Linux OS 映像的附加信息。

+
+
+

创建并配置新虚拟机

+
    +
  1. 启动 VMware Workstation Player 应用。

    +
  2. +
  3. 在主屏幕上,点击 Create a New Virtual Machine。见图 1。

    +
    +VMware Workstation 14 Player - Create a new virtual machine +

    图 1:VMware Workstation 14 Player - 创建新虚拟机

    +
    +
  4. +
  5. Welcome to the New Virtual Machine Wizard 屏幕上,选择 I will install the operating system later 选项。见图 2。

    +
    +VMware Workstation 14 Player - Select install operating system +

    图 2:VMware Workstation 14 Player - 选择稍后安装操作系统。

    +
    +
  6. +
  7. 点击 Next 按钮。

    +
  8. +
  9. Select a Guest Operating System 屏幕上,将 Guest operating system 设置为 Linux。见图 3。

    +
    +VMware Workstation 14 Player - Select guest operating system type +

    图 3:VMware Workstation 14 Player - 选择来宾操作系统类型

    +
    +
  10. +
  11. Version 设置为 Other Linux 3.x or later kernel 64-bit

    +
  12. +
  13. 点击 Next 按钮。

    +
  14. +
  15. Name the Virtual Machine 屏幕上,为新虚拟机命名。见图 4。

    +
    +VMware Workstation 14 Player - Name virtual machine +

    图 4:VMware Workstation 14 Player - 虚拟机命名

    +
    +
  16. +
  17. 点击 Next 按钮。

    +
  18. +
  19. Specify Disk Capacity 屏幕上,点击 Next 按钮。默认磁盘设置保持不变。挂载预配置的 Clear Linux OS VMware 映像时,我们将移除默认虚拟磁盘,用预配置的磁盘来代替。见图 5。

    +
    +VMware Workstation 14 Player - Set disk capacity +

    图 5:VMware Workstation 14 Player - 设置磁盘容量

    +
    +
  20. +
  21. Ready to Create Virtual Machine 屏幕上,点击 Customize Hardware… 按钮。见图 6。

    +
    +VMware Workstation 14 Player - Customize hardware +

    图 6:VMware Workstation 14 Player - 定制硬件

    +
    +
  22. +
  23. Device 列表中,选择 Processors。见图 7。

    +
    +VMware Workstation 14 Player - Set virtualization engine option +

    图 7:VMware Workstation 14 Player - 设置虚拟化引擎选项

    +
    +
  24. +
  25. Virtualization engine 部分,选中 Virtualize Intel VT-x/EPT or AMD-V/RVI

    +
  26. +
  27. 如果因不再需要而断开虚拟 CD/DVD (IDE),请在 Device 列表中选择 New CD/DVD (IDE)。见图 8。

    +
    +VMware Workstation 14 Player - Disconnect CD/DVD (IDE) +

    图 8:VMware Workstation 14 Player - 断开 CD/DVD (IDE)

    +
    +
  28. +
  29. Device status 部分,取消选中 Connect at power on

    +
  30. +
  31. 点击· Close 按钮。

    +
  32. +
  33. 点击 Finish 按钮。

    +
  34. +
+
+
+

挂载预配置的 Clear Linux OS Vmware 映像

+
    +
  1. 将下载和解压缩的预配置 Clear Linux OS VMware 映像文件 clear-[version number]-basic.vmdk 移动至新建虚拟机所在的目录。

    +
    +

    注解

    +

    根据操作系统不同,通常可以在如下地址找到 VMware 虚拟机文件:

    +
      +
    • Linux 操作系统:/home/username/vmware
    • +
    • Windows:C:UsersusernameDocumentsVirtual Machines
    • +
    +
    +
  2. +
  3. VMware Workstation Player 主屏幕上,选择新创建的虚拟机。见图 9。

    +
    +VMware Workstation 14 Player - Edit virtual machine settings +

    图 9: VMware Workstation 14 Player - 编辑虚拟机设置

    +
    +
  4. +
  5. 点击 Edit virtual machine settings

    +
  6. +
  7. 要移除默认硬盘,在 Device 列表中选择 Hard Disk (SCSI)。见图 10.

    +
    +VMware Workstation 14 Player - Remove hard drive +

    图 10:VMware Workstation 14 Player - 移除硬盘

    +
    +
  8. +
  9. 点击 Remove 按钮。

    +
  10. +
  11. 要添加新硬盘并挂载预配置的 Clear Linux OS VMware 映像,点击 Add… 按钮。见图 11。

    +
    +VMware Workstation 14 Player - Add new hard drive +

    图 11:VMware Workstation 14 Player - 添加新硬盘

    +
    +
  12. +
  13. Hardware types 部分,选择 Hard Disk

    +
  14. +
  15. 点击 Next 按钮。

    +
  16. +
  17. 选择您喜欢的 Virtual disk type。见图 12。

    +
    +VMware Workstation 14 Player - Select virtual disk type +

    图 12:VMware Workstation 14 Player - 选择虚拟磁盘类型

    +
    +
  18. +
  19. 选择 Use an existing virtual disk 选项。见图 13。

    +
    +VMware Workstation 14 Player - Use existing virtual disk +

    图 13:VMware Workstation 14 Player - 使用现有虚拟磁盘

    +
    +
  20. +
  21. 点击 Browse 按钮,选择预配置的 Clear Linux OS VMware 映像文件。见图 14。

    +
    +VMware Workstation 14 Player - Select ready-made VMware |CL| +

    图 14:VMware Workstation 14 Player - 选择现成的 VMware Clear Linux OS 映像文件

    +
    +
  22. +
  23. 点击 Finish 按钮。

    +
    +

    注解

    +

    要求将现有虚拟磁盘转换为较新的格式时,选择任何一个选项均可。

    +
    +
  24. +
+
+
+

启用 UEFI 引导支持

+

Clear Linux OS 需要 UEFI 支持才可以引导。要予以启用,请在虚拟机的 .vmx 文件结尾处添加如下行:

+
firmware = "efi"
+
+
+
+

注解

+

根据操作系统不同,通常可以在如下地址找到 VMware 虚拟机文件:

+
    +
  • Linux 操作系统:/home/username/vmware
  • +
  • Windows:C:\Users\username\Documents\Virtual Machines
  • +
+
+
+
+

开启虚拟机

+

配置上述设置后,开启 Clear Linux OS 虚拟机。

+
    +
  1. VMware Workstation Player 主屏幕上,选择虚拟机。见图 15。

    +
    +VMware Workstation 14 Player - Power on virtual machine +

    图 15:VMware Workstation 14 Player - 开启虚拟机

    +
    +
  2. +
  3. 点击 Play virtual machine

    +
  4. +
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/virtual-machine-install/vmw-player.html b/zh_CN/get-started/virtual-machine-install/vmw-player.html new file mode 100644 index 000000000..4d9be9be5 --- /dev/null +++ b/zh_CN/get-started/virtual-machine-install/vmw-player.html @@ -0,0 +1,1288 @@ + + + + + + + + + + + + + + VMware* Workstation Player 上的 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

VMware* Workstation Player 上的 Clear Linux* OS

+

本页解释了如何创建新虚拟机,以及如何利用 VMware Workstation Player 虚拟机管理程序在它上面安装 Clear Linux OS。

+ +
+

概述

+

VMware Workstation Player 是一个 2 类虚拟机管理程序。它运行于 Windows* 或 Linux* 操作系统之上。利用 VMware ESXi,可以在本地系统上创建、配置、管理和运行 Clear Linux* OS VMs

+

VMware 提供一个专为云环境设计的 VMware ESXi 1 类虚拟机管理程序。有关如何在其上安装 Clear Linux OS 用作来宾操作系统的信息,请查看 VMware* ESXi 上的 Clear Linux* OS

+
+

注解

+

本文档的截屏显示了 VMware Workstation 15 Player 的 Windows 版本。除了措辞上的微小差异,菜单和提示与其他 Windows 版本以及 Linux 操作系统类似。

+
+

如果您更喜欢使用预配置 Clear Linux OS VMware 映像,请查看我们的 VMware* Workstation Player (预配置映像)上的 Clear Linux* OS 指南。

+
+
+

安装 VMware Workstation Player 虚拟机管理程序

+
    +
  1. 在系统 BIOS 中启用 Intel® VTIntel® VT-d

    +
  2. +
  3. VMware Workstation Player 有 Windows 和 Linux 版本。下载您喜欢的版本。

    +
    +

    注解

    +

    默认情况i下,选择下载意味着您接受该应用程序的最新版本。根据版本不同,命令可能会有所差异。

    +
    +
  4. +
  5. 按照适用于操作系统的说明,安装 VMware Workstation Player:

    +
      +
    • 在支持的 Linux 操作系统上:

      +
        +
      1. 启用 GUI 桌面:

        +
      2. +
      3. 启动一个终端模拟器。

        +
      4. +
      5. 发出如下命令,按照指引步骤启动安装程序。

        +
        sudo sh ./VMware-Player-[version number].x86_64.bundle
        +
        +
        +
      6. +
      +
    • +
    • 在 Windows 上:

      +
        +
      1. 启动安装程序。
      2. +
      3. 按照安装向导提示操作。
      4. +
      +
    • +
    +
  6. +
+

有关其他帮助,请查看 VMware Workstation Player Documentation

+
+
+

下载最新的 Clear Linux OS 安装程序

+

利用 Clear Linux OS OS Desktop 从 downloads 页面获得最新安装程序。

+

访问 Clear Linux* OS image types,了解关于所有 Clear Linux OS 映像的其他信息。

+

我们还提供关于下载和验证 Clear Linux ISO 的说明。欲了解详情,请参阅 下载、验证并解压缩 Clear Linux* OS 映像,

+
+
+

创建并配置新虚拟机

+
    +
  1. 启动 VMware Workstation Player 应用。

    +
  2. +
  3. 在主屏幕上,点击 Create a New Virtual Machine。见图 1。

    +
    +VMware Workstation Player - Create a new virtual machine +

    图 1:VMware Workstation Player - 创建新虚拟机

    +
    +
  4. +
  5. Welcome to the New Virtual Machine Wizard 屏幕上,选择 Installer disc image file (iso) 选项。见图 2。

    +
    +VMware Workstation Player - Select |CL| installer ISO +

    图 2:VMware Workstation Player - 选择 Clear Linux OS 安装程序 ISO

    +
    +
  6. +
  7. 点击 Browse 按钮,选择解压缩的 Clear Linux OS 安装程序 ISO。

    +
  8. +
  9. 点击 Next 按钮。

    +
  10. +
  11. Select a Guest Operating System 部分,将 Guest operating system 设置为 Linux。见图 3。

    +
    +VMware Workstation Player - Select guest operating system type +

    图 3:VMware Workstation Player - 选择来宾操作系统类型

    +
    +
  12. +
  13. Version 设置为 Other Linux 4.x or later kernel 64-bit

    +
  14. +
  15. 点击 Next 按钮。

    +
  16. +
  17. Name the Virtual Machine 屏幕上,为新虚拟机命名。见图 4。

    +
    +VMware Workstation Player - Name virtual machine +

    图 4:VMware Workstation Player - 虚拟机命名

    +
    +
  18. +
  19. 点击 Next 按钮。

    +
  20. +
  21. Specify Disk Capacity 屏幕上,设置虚拟机的最大磁盘空间。见图 5。

    +
    +VMware Workstation Player - Set disk capacity +

    图 5:VMware Workstation Player - 设置磁盘容量

    +
    +
    +

    注解

    +

    为获得 Clear Linux OS Desktop 映像的最优性能,我们推荐 32GB 磁盘空间。请查看 建议的最低系统要求 了解详情。

    +
    +
  22. +
  23. 点击 Next 按钮。

    +
  24. +
  25. Ready to Create Virtual Machine 屏幕上,点击 Customize Hardware… 按钮。见图 6。

    +
    +VMware Workstation Player - Customize hardware +

    图 6:VMware Workstation Player - 定制硬件

    +
    +
  26. +
  27. 选择 Memory,将大小设置为 2GB。见图 7。

    +
    +VMware Workstation Player - Set memory size +

    图 7:VMware Workstation Player - 设置内存大小

    +
    +
    +

    注解

    +

    Clear Linux OS 安装程序 ISO 最少需要 2GB 大小的 RAM。完成安装后,Clear Linux OS 可在只有 128MB 的 RAM 上运行。因此,如果需要,您可以减少内存大小。请查看 建议的最低系统要求 了解详情。

    +
    +
  28. +
  29. Device 列表中,选择 Processors。见图 8。

    +
    +VMware Workstation Player - Set virtualization engine option +

    图 8:VMware Workstation Player - 设置虚拟化引擎选项

    +
    +
  30. +
  31. Virtualization engine 部分,选中 Virtualize Intel VT-x/EPT or AMD-V/RVI

    +
  32. +
  33. 点击· Close 按钮。

    +
  34. +
  35. 点击 Finish 按钮。

    +
  36. +
+
+
+

启用 UEFI 引导支持

+

Clear Linux OS 需要 UEFI 支持才可以引导。要启用 UEFI:

+
    +
  1. 要关闭虚拟机,点击 Player 菜单。见图 9。

    +
    +VMware Workstation Player - Power off virtual machine +

    图 9:VMware Workstation Player - 关闭虚拟机

    +
    +
  2. +
  3. 转到 Power,选择 Shut Down Guest

    +
  4. +
  5. 在虚拟机的 .vmx 文件结尾处添加如下代码行:

    +
    firmware = "efi"
    +
    +
    +
    +

    注解

    +

    根据操作系统不同,通常可以在如下地址找到 VMware 虚拟机文件:

    +
      +
    • Linux 操作系统:/home/username/vmware
    • +
    • Windows:C:\Users\username\Documents\Virtual Machines
    • +
    +
    +
  6. +
+
+
+

将 Clear Linux OS 安装至新虚拟机

+
    +
  1. 选择新创建的虚拟机,点击 Play virtual machine 按钮。见图 10。

    +
    +VMware Workstation Player - Power on virtual machine +

    图 10:VMware Workstation Player - 开启虚拟机

    +
    +
  2. +
  3. 按照 从实时映像安装 指南完成 Clear Linux OS 的安装。

    +
  4. +
  5. 完成安装后,重启虚拟机。此操作会重新启动 Clear Linux OS 安装程序。

    +
  6. +
+
+
+

从虚拟机断开 Clear Linux OS 安装程序 ISO

+
    +
  1. 为启用鼠标指针,以便访问 VMware Workstation Player 的菜单,请按下键盘上的 <CTRL> + <ALT>

    +
  2. +
  3. 要断开 CD/DVD 防止它再次引导 Clear Linux OS 安装程序 ISO,请点击 Player 菜单。见图 11。

    +
    +VMware Workstation Player - Edit CD/DVD settings +

    图 11:VMware Workstation Player - 编辑 CD/DVD 设置

    +
    +
  4. +
  5. 转到 可移除设备‣CD/DVD (IDE)‣断开

    +
  6. +
  7. 点击 OK 按钮。

    +
  8. +
+
+
+

安装 open-vm-tools

+

可选:您可能希望在虚拟机上安装 open-vm-tools。Open Virtual Machine Tools (open-vm-tools) 是用于 Linux* guest 操作系统的开源 VMware 执行工具。

+
    +
  1. 配置上述设置后,开启 Clear Linux OS 虚拟机。在 VMware Workstation Player 主屏幕上,选择虚拟机。见图 10。

    +
  2. +
  3. 点击 Play virtual machine

    +
  4. +
  5. 您可以在 Clear Linux OS 中安装捆绑包,然后在虚拟机中启用这些工具。

    +
    sudo swupd bundle-add os-cloudguest-vmware
    +sudo systemctl enable --now open-vm-tools
    +
    +
    +
  6. +
+

详情可访问网站 VMWare Tools Product Documentation

+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/virtual-machine-install/vmware-esxi-install-cl.html b/zh_CN/get-started/virtual-machine-install/vmware-esxi-install-cl.html new file mode 100644 index 000000000..04e7c849a --- /dev/null +++ b/zh_CN/get-started/virtual-machine-install/vmware-esxi-install-cl.html @@ -0,0 +1,1308 @@ + + + + + + + + + + + + + + VMware* ESXi 上的 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

VMware* ESXi 上的 Clear Linux* OS

+

本页说明如何创建新的 虚拟机 以及如何在运行 VMware ESXi 6.5 的新虚拟机上手动安装 Clear Linux* OS。

+ +
+

概述

+

VMware ESXi 是一个 1 类裸机虚拟机管理程序,可直接在服务器硬件上运行。利用 VMware ESXi,可以在云端创建、配置、管理和运行 Clear Linux OS 虚拟机。

+

安装期间,在新的虚拟机上手动安装 Clear Linux OS 提高了配置灵活性。例如,备用磁盘空间、分区数量、预安装 bundle 等。

+

如果喜欢使用预配置的 Clear Linux OS VMware 映像,可参阅 VMware* ESXi(预配置映像)上的 Clear Linux* OS

+
+

注解

+

VMware 还提供一个适用于桌面环境的 2 类虚拟机管理程序,名为 VMware Workstation Player。请参阅 VMware* Workstation Player (预配置映像)上的 Clear Linux* OSVMware* Workstation Player 上的 Clear Linux* OS 了解更多信息。

+

访问 Clear Linux* OS image types 了解所有可用映像的详情。

+
+
+
+

下载最新的 Clear Linux OS 安装程序 ISO

+

image 存储库中获取最新的 Clear Linux OS 安装程序 ISO。寻找 clear-[version number]-installer.iso.xz

+

我们还提供关于下载和验证 Clear Linux ISO 的说明。欲了解详情,请参阅 下载、验证并解压缩 Clear Linux* OS 映像,

+
+
+

将 Clear Linux OS 安装程序 ISO 上传至 VMware 服务器

+
    +
  1. 连接 VMware 服务器,登录拥有充分权限的帐户以创建和管理虚拟机。

    +
  2. +
  3. Navigator 窗口中,选择 Storage。见图 1。

    +
  4. +
  5. Datastores 标签下,点击 Datastore browser 按钮。

    +
    +VMware ESXi - Navigator > Storage +

    图 1:VMware ESXi - 浏览器 > 存储

    +
    +
  6. +
  7. 点击 Create directory 按钮并命名目录 ISOs。见图 2。

    +
    +VMware ESXi - Datastore > Create directory +

    图 2:VMware ESXi - 数据存储 > 创建目录

    +
    +
  8. +
  9. 选择新建目录,点击 Upload 按钮。见图 3。

    +
    +VMware ESXi - Datastore > Upload ISO +

    图 3:VMware ESXi - 数据存储 > 上传 ISO

    +
    +
  10. +
  11. 选择解压缩的 Clear Linux OS 安装程序 ISO 文件 clear-[version number]-installer.iso 并将其上传。

    +
  12. +
+
+
+

创建并配置新虚拟机

+

本节中,您会创建新虚拟机,配置基本参数,如驱动器大小、CPU 数量、内存大小,然后挂载 Clear Linux OS 安装程序 ISO。

+
    +
  1. Navigator 窗口中,选择 Virtual Machines。见图 4。

    +
  2. +
  3. 在右侧窗口中,点击 Create / Register VM 按钮。

    +
    +VMware ESXi - Navigator > Virtual Machines +

    图 4:VMware ESXi - 浏览器 > 虚拟机

    +
    +
  4. +
  5. Select creation type 步骤:

    +
      +
    1. 选择 Create a new virtual machine 选项。见图 5。

      +
    2. +
    3. 点击 Next 按钮。

      +
      +VMware ESXi - Create a new virtual machine +

      图 5:VMware ESXi - 创建新虚拟机

      +
      +
    4. +
    +
  6. +
  7. Select a name and guest OS 步骤:

    +
      +
    1. Name 字段中为新虚拟机命名 见图 6。

      +
    2. +
    3. Compatability 选项设置为 ESXi 6.5 virtual machine

      +
    4. +
    5. Guest OS family 选项设置为 Linux

      +
    6. +
    7. Guest OS version 选项设置为 Other 3.x or later Linux (64-bit)

      +
    8. +
    9. 点击 Next 按钮。

      +
      +VMware ESXi - Give a name and select guest OS type +

      图 6:VMware ESXi - 命名并选择来宾操作系统类型

      +
      +
    10. +
    +
  8. +
  9. Select storage 步骤:

    +
      +
    1. 接受默认选项。
    2. +
    3. 点击 Next 按钮。
    4. +
    +
  10. +
  11. Customize settings 步骤:

    +
      +
    1. 点击 Virtual Hardware 按钮。见图 7。

      +
    2. +
    3. 展开 CPU 设置,选中 Hardware virtualization 启用 Expose hardware assisted virtualization to the guest OS

      +
      +VMware ESXi - Enable hardware virtualization +

      图 7:VMware ESXi - 启用硬件虚拟化

      +
      +
    4. +
    5. Memory 大小设置为 2048MB (2GB)。见图 8。

      +
      +VMware ESXi - Set memory size +

      图 8:VMware ESXi - 设置内存大小

      +
      +
      +

      注解

      +

      Clear Linux OS 安装程序 ISO 需要至少 2GB 的 RAM 才能正常运行。如果需要,可以在安装完成后减少内存,因为 Clear Linux OS 最小安装可以在仅有 128MB RAM 的情况下运行。请查看 建议的最低系统要求 了解详情。

      +
      +
    6. +
    7. Hard disk 1 设置为所需容量。见图 9。

      +
      +VMware ESXi - Set hard disk size +

      图 9:VMware ESXi - 设置硬盘大小

      +
      +
      +

      注解

      +

      Clear Linux OS 最小安装可在 600MB 的驱动器空间中存储。请查看 建议的最低系统要求 了解详情。

      +
      +
    8. +
    9. 挂载 Clear Linux OS 安装程序 ISO。对于 CD/DVD Drive 1 设置,点击其右侧下拉列表,选择 Datastore ISO file 选项。然后,选择此前上传至 VMware 服务器的 Clear Linux OS 安装程序 ISO clear-[version number]-installer.iso。见图 10。

      +
      +VMware ESXi - Set CD/DVD to boot installer ISO +

      图 10:VMware ESXi - 设置 CD/DVD 引导安装程序 ISO

      +
      +
    10. +
    +
  12. +
  13. 点击 Next 按钮。

    +
  14. +
  15. 点击 Finish 按钮。

    +
  16. +
+
+
+

将 Clear Linux OS 安装至新虚拟机

+
    +
  1. 开启虚拟机。

    +
      +
    1. Navigator 窗口中,选择 Virtual Machines。见图 11。

      +
    2. +
    3. 在右侧窗口中,选择新创建的虚拟机。

      +
    4. +
    5. 点击 Power on 按钮。

      +
    6. +
    7. 点击代表虚拟机的图标,显示虚拟机,将虚拟机窗口最大化。

      +
      +VMware ESXi - Navigator > Virtual Machines > Power on VM +

      图 11:VMware ESXi - 浏览器 > 虚拟机 > 开启虚拟机

      +
      +
    8. +
    +
  2. +
  3. 按照 从实时映像安装 指南完成 Clear Linux OS 的安装。

    +
  4. +
  5. 安装完成后,按照 Clear Linux OS 说明重启。此操作会再次重启安装程序。

    +
  6. +
+
+
+

重新配置虚拟机设置,以引导新安装的 Clear Linux OS

+

利用安装程序 ISO 安装 Clear Linux OS 后,必须卸载安装程序 ISO,防止再次运行。而且,为了引导新安装的 Clear Linux OS,必须启用 UEFI 支持。

+
    +
  1. 关闭虚拟机。

    +
      +
    1. 点击 Actions 按钮(按钮位于虚拟机窗口的右上角),转到 Power 设置,然后选择 Power off 选项。见图 12。

      +
      +VMware ESXi - Actions > Power off +

      图 12:VMware ESXi - 操作 > 关闭

      +
      +
    2. +
    +
  2. +
  3. 编辑虚拟机设置。

    +
      +
    1. 再次点击 Actions 按钮,选择 Edit settings。见图 13。

      +
      +VMware ESXi - Actions > Edit settings +

      图 13:VMware ESXi - 操作 > 编辑设置

      +
      +
    2. +
    +
  4. +
  5. 断开 CD/DVD,防止它再次引导 Clear Linux OS 安装程序 ISO。

    +
      +
    1. 点击 Virtual Hardware 按钮。见图 14。

      +
    2. +
    3. 对于 CD/DVD Drive 1 设置,取消选中 Connect 复选框。

      +
      +VMware ESXi - Disconnect the CD/DVD drive +

      图 14:VMware ESXi - 断开 CD/DVD 驱动器

      +
      +
    4. +
    +
  6. +
  7. Clear Linux OS 需要 UEFI 支持才可以引导。请予以启用。

    +
      +
    1. 点击 VM Options 按钮。见图 15。

      +
    2. +
    3. 展开 Boot Options 设置。

      +
    4. +
    5. 对于 Firmware 设置,点击其右侧的下拉列表,选择 EFI 选项。

      +
      +VMware ESXi - Set boot firmware to EFI +

      图 15:VMware ESXi - 将引导固件设置为 EFI

      +
      +
    6. +
    +
  8. +
  9. 点击 Save 按钮。

    +
  10. +
+
+
+

开启虚拟机,引导 Clear Linux OS

+

配置上述设置后,开启虚拟机。

+
    +
  1. Navigator 窗口中,选择 Virtual Machines。见图 16。

    +
  2. +
  3. 在右侧窗口,选择虚拟机。

    +
  4. +
  5. 点击 Power on 按钮。

    +
  6. +
  7. 点击代表虚拟机的图标,显示虚拟机,将虚拟机窗口最大化。

    +
    +VMware ESXi - Navigator > Virtual Machines > Power on VM +

    图 16:VMware ESXi - 浏览器 > 虚拟机 > 开启虚拟机

    +
    +
  8. +
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html b/zh_CN/get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html new file mode 100644 index 000000000..68ddb8530 --- /dev/null +++ b/zh_CN/get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html @@ -0,0 +1,1274 @@ + + + + + + + + + + + + + + VMware* ESXi(预配置映像)上的 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

VMware* ESXi(预配置映像)上的 Clear Linux* OS

+

本页说明如何在 VMware ESXi 6.5 主机上部署预配置的 Clear Linux OS VMware VM 映像。

+ +
+

概述

+

VMware ESXi 是一个 1 类裸机虚拟机管理程序,可直接在服务器硬件上运行。利用 VMware ESXi,可以大规模创建、配置、管理和运行 Clear Linux* OS 虚拟机。

+

我们提供可在 VMware ESXi 6.5 主机上运行的 Clear Linux OS VMware 映像。

+

如果喜欢手动安装,请参阅 VMware* ESXi 上的 Clear Linux* OS

+
+

注解

+

VMware 还提供一个适用于桌面环境的 2 类虚拟机管理程序,名为 VMware Workstation Player。请参阅 VMware* Workstation Player (预配置映像)上的 Clear Linux* OSVMware* Workstation Player 上的 Clear Linux* OS 了解更多信息。

+
+
+
+

下载最新的 Clear Linux OS VMware 映像

+

image 存储库中获取最新的 Clear Linux OS VMware 预构建映像。查找 clear-[version number]-vmware.vmdk.xz。还可以使用以下命令:

+
curl -O https://cdn.download.clearlinux.org/image/$(curl https://cdn.download.clearlinux.org/image/latest-images | grep vmware)
+
+
+

访问 Clear Linux* OS image types,了解关于所有 Clear Linux OS 映像的其他信息。

+

我们还提供关于下载和验证 Clear Linux ISO 的说明。欲了解详情,请参阅 下载、验证并解压缩 Clear Linux* OS 映像,

+
+
+

将 Clear Linux OS 映像上传至 VMware 服务器

+

在本地系统下载并解压缩 Clear Linux OS VMware 预构建映像后,必须将其上传至 VMware ESXi 服务器上的数据存储。

+

有关本节中的步骤,还可以参考 VMware 文档 Using Datastore File Browser in the VMware Host Client

+
    +
  1. 连接 VMware ESXi 服务器,登录拥有充分权限的帐户,以创建和管理虚拟机。

    +
  2. +
  3. 在左侧的 Navigator 窗口中,选择 Storage。见图 1

    +
  4. +
  5. Datastores 标签下,点击 Datastore browser 按钮。

    +
    +VMware ESXi - Navigator > Storage +

    图 1:VMware ESXi - 浏览器 > 存储

    +
    +
  6. +
  7. 点击 Create directory 按钮,将目录命名为 Clear Linux VM。见图 2。

    +
    +VMware ESXi - Datastore > Create directory +

    图 2:VMware ESXi - 数据存储 > 创建目录

    +
    +
  8. +
  9. 选择新建目录,点击 Upload 按钮。见图 3。

    +
    +VMware ESXi - Datastore > Upload VMware image +

    图 3:VMware ESXi - 数据存储 > 上传 VMware 映像

    +
    +
  10. +
  11. 选择解压缩的 Clear Linux OS Vmware 映像文件 clear-[version number]-vmware.vmdk 并上传。

    +
  12. +
+
+
+

将 Clear Linux OS 映像转换为 ESXi 支持的格式。

+

Clear Linux OS VMware 预构建映像上传至 VMware ESXi 数据存储后,必须将其转换为 VMware’s ESXi 虚拟机管理程序可以使用的格式。

+

有关本节中的步骤,还可以参考 VMware 文档 Cloning and converting virtual machine disks with vmkfstools

+
    +
  1. 通过 SSH 连接到 vSphere Management Assistant 设备,利用 vSphere CLI 管理 ESXi 主机或连接到 vSphere 主机托管。

    +
    +

    注解

    +

    如果没有配置或可用的 vMA 设备或 vCLI,则可以按照 在 VMware 主机客户端启用 Secure Shell (SSH) 中所述步骤直接在 ESXi 主机上临时启用 SSH。

    +

    作为最佳安全实践,务必按照本节中的步骤操作之后禁用 SSH 访问。

    +
    +
  2. +
  3. 找出上传的映像,该映像通常位于 /vmfs/volumes/datastore1

    +
  4. +
  5. 使用 vmkfstools 命令进行转换,如下所示:

    +
    vmkfstools -i clear-[version number]-vmware.vmdk -d zeroedthick clear-[version number]-esxi.vmdk
    +
    +
    +

    由此应产生两个文件:

    +
      +
    • clear-[version number]-esxi-flat.vmdk
    • +
    • clear-[version number]-esxi.vmdk
    • +
    +

    clear-[version number]-esxi.vmdk 文件会在下一节创建新虚拟机时用到。

    +
  6. +
+
+
+

创建并配置新虚拟机

+

本节中,您会创建新虚拟机,配置基本参数,如 CPU 数量、内存大小,然后挂载转换后的 Clear Linux OS VMware 映像。而且,为了引导 Clear Linux OS,必须启用 UEFI 支持。

+
    +
  1. Navigator 窗口中,选择 Virtual Machines。见图 4。

    +
  2. +
  3. 在右侧窗口中,点击 Create / Register VM 按钮。

    +
    +VMware ESXi - Navigator > Virtual Machines +

    图 4:VMware ESXi - 浏览器 > 虚拟机

    +
    +
  4. +
  5. Select creation type 步骤:

    +
      +
    1. 选择 Create a new virtual machine 选项。见图 5。
    2. +
    3. 点击 Next 按钮。
    4. +
    +
    +VMware ESXi - Create a new virtual machine +

    图 5:VMware ESXi - 创建新虚拟机

    +
    +
  6. +
  7. Select a name and guest OS 步骤:

    +
  8. +
  9. Name 字段中为新虚拟机命名。见图 6。

    +
  10. +
  11. Compatability 选项设置为 ESXi 6.5 virtual machine

    +
  12. +
  13. Guest OS family 选项设置为 Linux

    +
  14. +
  15. Guest OS version 选项设置为 Other 3.x or later Linux (64-bit)

    +
  16. +
  17. 点击 Next 按钮。

    +
    +VMware ESXi - Give a name and select guest OS type +

    图 6:VMware ESXi - 命名并选择来宾操作系统类型

    +
    +
  18. +
  19. Select storage 步骤:

    +
      +
    1. 接受默认选项。
    2. +
    3. 点击 Next 按钮。
    4. +
    +
  20. +
  21. Customize settings 步骤:

    +
      +
    1. 点击 Virtual Hardware 按钮。见图 7。
    2. +
    3. 展开 CPU 设置,选中 Hardware virtualization 启用 Expose hardware assisted virtualization to the guest OS
    4. +
    +
    +VMware ESXi - Enable hardware virtualization +

    图 7:VMware ESXi - 启用硬件虚拟化

    +
    +
      +
    1. 点击右侧的 X 图标,移除默认 Hard drive 1 设置。见图 8。
    2. +
    +
    +VMware ESXi - Remove hard drive +

    图 8:VMware ESXi - 移除硬盘

    +
    +
      +
    1. 由于要使用预配置映像,所以不再需要 CD/DVD Drive 1 设置。取消选中 Connect 复选框禁用该设置。见图 9。
    2. +
    +
    +VMware ESXi - Disconnect the CD/DVD drive +

    图 9:VMware ESXi - 断开 CD/DVD 驱动器

    +
    +
      +
    1. 挂载 clear-[version number]-esxi.vmdk 文件。该文件从预配置的 Clear Linux OS VMware 映像转换而来。
        +
      1. 点击 Add hard disk 按钮,选择 Existing hard drive 选项。见图 10。
      2. +
      +
    2. +
    +
    +VMware ESXi - Add an existing hard drive +

    图 10: VMware ESXi - 添加现有硬盘

    +
    +
      +
    1. 选择已转换的 clear-[version number]-esxi.vmdk 文件。不要使用最初未转换的 clear-[version number]-vmware.vmdk 文件。见图 11。
    2. +
    +
    +
    +
    +VMware ESXi - Select the converted `vmdk` file +

    图 11:VMware ESXi - 选择已转换的 clear-[version number]-esxi.vmdk 文件

    +
    +
  22. +
  23. Clear Linux OS 需要 UEFI 支持才可以引导。启用 UEFI 引导支持。

    +
      +
    1. 点击 VM Options 按钮。见图 12。
    2. +
    3. 展开 Boot Options 设置。
    4. +
    5. 对于 Firmware 设置,点击其右侧的下拉列表,选择 EFI 选项。
    6. +
    +
    +VMware ESXi - Set boot firmware to EFI +

    图 12:VMware ESXi - 将引导固件设置为 EFI

    +
    +
  24. +
  25. 点击 Save 按钮。

    +
  26. +
  27. 点击 Next 按钮。

    +
  28. +
  29. 点击 Finish 按钮。

    +
  30. +
+
+
+

开启虚拟机,引导 Clear Linux OS

+

配置上述设置后,开启虚拟机。

+
    +
  1. Navigator 窗口中,选择 Virtual Machines。见图 13。

    +
  2. +
  3. 在右侧窗口中,选择新创建的虚拟机。

    +
  4. +
  5. 点击 Power on 按钮。

    +
  6. +
  7. 点击代表虚拟机的图标,显示虚拟机,将虚拟机窗口最大化。

    +
    +VMware ESXi - Navigator > Virtual Machines > Power on VM +

    图 13:VMware ESXi - 浏览器 > 虚拟机 > 开启虚拟机

    +
    +
  8. +
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/autoproxy.html b/zh_CN/guides/clear/autoproxy.html new file mode 100644 index 000000000..4acf2254c --- /dev/null +++ b/zh_CN/guides/clear/autoproxy.html @@ -0,0 +1,1145 @@ + + + + + + + + + + + + + + Autoproxy — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Autoproxy

+

借助 Autoproxy,Clear Linux* OS 可在公司代理服务器后平稳运行。

+ +
+

描述

+

Autoproxy 会尝试检测代理自动配置 (PAC) 脚本,并使用其自动解析给定连接所需的代理。使用 Autoproxy,可以在任意代理环境下使用 Clear Linux OS,而无需手动配置代理。

+

公司和专用网络可能非常复杂,因此出于安全原因需限制和控制网络连接。常见的负面效果是限制或阻止连接,且需手动配置代理以执行最普通的任务,例如克隆存储库或检查是否存在更新。通过 Clear Linux OS,所有工作便可在后台完成,以便轻松使用网络并使连接“正常工作”。

+

此功能可消除因代理问题所导致的极端复杂的网络连接难题。可以自动执行任务(例如单元测试),而无需担心代理未设置,并可在处理跨系统的网络不可用问题时将未设置代理这一因素排除在外。

+
+
+

工作原理

+

我们围绕多数 Linux* 发行版提供的工具设计了 Autoproxy,同时还进行了一些小的补充和修改。我们利用从系统获取的 DHCP 和网络信息,创建了 PAC 发现守护程序。该守护程序使用此信息来解析 PAC 文件的 URL。然后,守护程序将此 URL 传入 PACrunner*。PACrunner 下载 PAC 文件,使用新实现的 Duktape* 引擎来对其进行解析。

+
+../../_images/autoproxy_0.png +

图 1:Autoproxy 流程

+
+

此后,所有 cURL* 或网络请求均会查询 PACrunner 以使用正确的代理。我们修改了 cURL 库以通过 DBus 与 PACrunner 进行通信。但是,如果未加载 PAC 文件或手动设置代理,cURL 则会忽略 PACrunner 并正常运行。如此一来,环境设置便会得以应用,且不会浪费时间来尝试解析代理。所有这些步骤均在后台执行,而无需用户介入。

+
+

故障检修

+

Autoproxy 允许 Clear Linux OS 在代理后无缝运行,因为 swupd 和其他 Clear Linux OS 工具的实现均基于 libcurl。不使用 libcurl 的工具(例如 git)则须单独配置。

+

如果熟悉 PAC 文件和 WPAD,则可使用 pacdiscoveryFindProxyForURL,通过 Autoproxy 进行故障排除。

+
+

注解

+

访问 findproxyforurl,了解有关 WPAD、PAC 文件和 PAC 的更多信息。

+
+

不带参数运行 pacdiscovery,可以明确

+
    +
  1. 解析 WPAD 主机名时是否出现问题:

    +
    pacdiscovery
    +
    +
    +
    failed getaddrinfo: No address associated with hostname
    +Unable to find wpad host
    +
    +
    +
  2. +
  3. 或是是否已禁用(已屏蔽) pacrunner 服务。

    +
    pacdiscovery
    +
    +
    +
    PAC url: http://autoproxy.your.domain.com/wpad.dat
    +Failed to create proxy config: Unit pacrunner.service is masked.
    +
    +
    +
  4. +
+

运行以下命令取消屏蔽 pacrunner 服务:

+
systemctl unmask pacrunner.service
+
+
+

FindProxyForURLbusctl,也可以明确是否已屏蔽 pacrunner.service

+
busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client
+
+
+
FindProxyForURL ss "http://www.google.com" "google.com"
+Unit pacrunner.service is masked.
+dig wpad, dig wpad.<domain>
+
+
+

FindProxyForURL 会在外部 URL 和主机作为参数提供时,返回代理服务器的 URL 和端口。

+
busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client
+
+
+
FindProxyForURL ss "http://www.google.com" "google.com"
+s "PROXY proxy.your.domain.com:<port>"
+
+
+

如果无代理服务器或是 pacrunner 正在运行但不带 PAC 文件,FindProxyForURL 则会返回 “DIRECT”。

+
busctl call org.pacrunner /org/pacrunner/client org.pacrunner.Client
+
+
+
FindProxyForURL ss "http://www.google.com" "google.com"
+s "DIRECT"
+
+
+

pacdiscovery 可查找 WPAD 后,立即重新启动 pacrunner 服务:

+
systemctl stop pacrunner
+systemctl restart pacdiscovery
+
+
+
+

注解

+

/etc/resolv.conf 中的 “domain” 或 “search” 条目是查找短名称以便进行解析所必需的条目。resolv.conf 手册页包含其他详细信息。

+
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/autospec.html b/zh_CN/guides/clear/autospec.html new file mode 100644 index 000000000..474b4c880 --- /dev/null +++ b/zh_CN/guides/clear/autospec.html @@ -0,0 +1,1420 @@ + + + + + + + + + + + + + + autospec — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

autospec

+

autospec 是在 Clear Linux* OS 中协助自动创建和维护 RPM 封装的工具。其中,使用 rpmbuild 的标准 RPM 构建流程需要 tarball 和 .spec 文件才能启动,而 autospec 只需 tarball 和软件包名称便可启动。

+ +
+

描述

+

autospec 工具通过分析源代码和 Makefile 信息来尝试推断 .spec 文件的要求。它会根据从构建失败中发现的新信息不断运行更新后的内部版本,直到它具有完整有效的 .spec 文件。如有必要,可以在 autospec 工具中增加可选的 control files,影响 autospec 的行为,定制内部版本。

+

autospec 使用模拟作为沙箱运行内部版本。访问 mock wiki,了解有关使用模拟的其他信息。

+

要大致了解 RPM 工作原理,请访问 rpm websiteRPM Packaging Guide

+
+
+

工作原理

+

了解 autospec 工具的设置和流程。

+ +
+

必备条件

+

使用 autospec 工具之前,必须先在 Clear Linux OS 中完成构建源代码的设置操作。

+

请参阅 设置环境以构建源代码,了解有关完成此设置的说明。

+
+
+

创建 RPM

+

autospec 的基本流程如以下步骤所述:

+
    +
  1. make autospec 命令根据对代码和现有控制文件的分析生成 .spec 文件。

    +

    所有控制文件均应与所生成 .spec 文件位于同一目录。

    +

    查看 autospec README,了解有关 control files 的更多信息。

    +
  2. +
  3. autospec 通过模拟配置来创建内部版本根目录。

    +
  4. +
  5. autospec 会尝试通过所生成的 .spec 来构建 RPM。

    +
  6. +
  7. autospec 会检测 .spec 中的所有缺失声明。

    +
  8. +
  9. 如果出现构建错误,autospec 则会扫描构建日志,尝试发现根源所在。

    +
  10. +
  11. 如果 autospec 检测到根源,且知如何继续,则会在步骤 1 中利用更新后的构建指令自动重新启动构建。

    +
  12. +
  13. 否则,autospec 会停止构建,以供用户检查,纠正错误。修复源代码问题和/或编辑控制文件,响应构建过程输出,从而解决问题。这些问题可能包括依存关系或排除项。查看 autospec README,了解有关控制文件的更多信息。

    +

    纠正错误后,用户在步骤 1 中恢复此流程。

    +

    如果 Clear Linux OS 中不存在二进制依存关系,则须先构建这种关系,然后才能再次运行 autospec。

    +
  14. +
+

执行完这些步骤后,autospec 根据从构建失败中发现的新信息继续重新构建软件包,直到它具有有效的 .spec。如果未出现构建错误,则会成功构建 RPM 包。

+
+
+
+

示例

+

在使用这些示例之前,请先完成 设置环境以构建源代码

+ +
+

例 1:使用现有规格文件构建 RPM

+

本例介绍如何使用现有规格文件通过预封装的上游软件包来构建 RPM。本例采用 dmidecode 软件包。

+
    +
  1. 导航到 autospec 工作区并克隆 dmidecode 软件包:

    +
    cd ~/clearlinux
    +make clone_dmidecode
    +
    +
    +
    +

    注解

    +

    您可使用以下命令一次性克隆所有软件包存储库:

    +
    make [-j NUM] clone-packages
    +
    +
    +

    可选 NUM 参数表示待用线程数量。

    +

    有关可用软件包的列表,请查看 ~/clearlinux/projects/common/packages 文件。

    +
    +
  2. +
  3. 导航到 dmidecode 软件包的本地副本进行构建:

    +
    cd ~/clearlinux/packages/dmidecode/
    +make build
    +
    +
    +
  4. +
  5. 生成的 RPM 位于 ./rpms。构建日志和其他 RPM 则位于 ./results

    +
  6. +
+
+
+

例 2:构建新的 RPM

+

本例介绍如何构建新的 RPM,而不使用规格文件。本例会创建简易的 helloclear RPM。

+
    +
  1. 导航到 autospec 工作区并构建 helloclear RPM。Makefile 提供 make autospecnew,可以使用 autospec 工具自动生成 RPM 包。必须将 URL 传递给源 tarball 以及待创建 RPM 的 NAME:

    +
    cd ~/clearlinux
    +make autospecnew URL="https://github.com/clearlinux/helloclear/archive/helloclear-v1.0.tar.gz" NAME="helloclear"
    +
    +
    +

    生成的 RPM 位于 ./packages/helloclear/rpms。构建日志和其他 RPM 则位于 ./packages/helloclear/results

    +
  2. +
+
+
+

例 3:使用预定义软件包生成新的规格文件

+

本例介绍如何修改现有软件包来创建定制 RPM。本例会对 dmidecode 软件包进行简单的更改并重新构建软件包。

+
    +
  1. 导航到 autospec 工作区并克隆 dmidecode 软件包:

    +
    cd ~/clearlinux
    +make clone_dmidecode
    +
    +
    +
  2. +
  3. 导航到 dmidecode 目录:

    +
    cd packages/dmidecode
    +
    +
    +
  4. +
  5. 用编辑器打开 excludes 文件,添加以下行:

    +
    /usr/bin/biosdecode
    +/usr/bin/ownership
    +/usr/bin/vpddecode
    +/usr/share/man/man8/biosdecode.8
    +/usr/share/man/man8/ownership.8
    +/usr/share/man/man8/vpddecode.8
    +
    +
    +
    +

    注解

    +

    dmidecode 不需要这些文件,因此可放心将其删除。

    +
    +
  6. +
  7. dmidecode 目录中,构建修改后的 dmidecode 软件包:

    +
    make autospec
    +
    +
    +
  8. +
  9. 生成的 RPM 位于 ./rpms。日志则位于 ./results

    +
  10. +
+
+
+

例 4:为 autospec 提供控制文件

+

本例介绍如何修改控制文件,纠正 autospec 无法进行解析的构建问题。在本例中,您会添加缺少的许可证和依存关系,以便 autospec 成功完成构建。

+
    +
  1. 导航到 autospec 工作区:

    +
    cd ~/clearlinux
    +
    +
    +
  2. +
  3. 如果尚未克隆所有上游数据包存储库,则进行克隆:

    +
    make [-j NUM] clone-packages
    +
    +
    +

    可选 NUM 参数表示待用线程数量。

    +
    +

    注解

    +

    在本例的后续步骤中,我们搜索克隆的软件包存储库中是否存在缺少的依存关系。

    +
    +
  4. +
  5. 构建 opae-sdk RPM:

    +
    make autospecnew URL="https://github.com/OPAE/opae-sdk/archive/0.13.0.tar.gz" NAME="opae-sdk"
    +
    +
    +

    此操作会因缺少许可证文件而出错:

    +
    [FATAL]    Cannot find any license or opae-sdk.license file!
    +
    +
    +
  6. +
  7. 导航到包含构建问题的软件包:

    +
    cd packages/opae-sdk
    +
    +
    +
  8. +
  9. 添加一个或多个来自 SPDX License List 的有效许可证标识符。在下例中,根据 opae-sdk 项目许可,有两个不同的许可证适用:

    +
    echo "BSD-3-Clause MIT" > opae-sdk.license
    +
    +
    +
  10. +
  11. 再次运行 autospec:

    +
    make autospec
    +
    +
    +

    此操作会导致一般错误:

    +
    [FATAL]    Build failed, aborting
    +
    +
    +
  12. +
  13. 打开构建日志,查看错误详细信息:

    +
    cat ./results/build.log
    +
    +
    +

    构建日志包含特定故障的详细信息。在本例中,存在缺少的依存关系:

    +
    CMake Error: The following variables are used in this project, but they are set to NOTFOUND.  Please set them or make sure they are set and tested correctly in the CMake files:
    +CJSON_LIBRARY
    +   linked by target "opae-c++-utils" in directory /builddir/build/BUILD/opae-sdk-0.13.0/tools/c++utilslib
    +json-c_LIBRARIES
    +   linked by target "opae-c" in directory /builddir/build/BUILD/opae-sdk-0.13.0/libopae
    +libuuid_LIBRARIES
    +   linked by target "opae-c" in directory /builddir/build/BUILD/opae-sdk-0.13.0/libopae
    +
    +
    +
  14. +
  15. 搜索上游 Clear Linux OS 软件包的规格文件,查看 json-c 库是否可用。在本例中,此库不存在,我们需要将 json-c ‘dev’ 软件包添加到 buildreq_add:

    +
    grep 'json-c\.so$' ~/clearlinux/packages/*/*.spec
    +echo "json-c-dev" >> buildreq_add
    +
    +
    +
    +

    注解

    +

    仅当用户已克隆所有上游软件包存储库后,此搜索步骤才有效。在本例中,已在上一步骤中克隆上游软件包存储库。

    +
    +
  16. +
  17. 搜索上游 Clear Linux OS 软件包的规格文件,查看 libuuid 库是否可用。在本例中,此库存在于 util-linux 软件包中,因此需要将 util-linux-dev 软件包添加到 buildreq_add:

    +
    grep 'libuuid\.so$' ~/clearlinux/packages/*/*.spec
    +echo "util-linux-dev" >> buildreq_add
    +
    +
    +
  18. +
  19. 再次运行 autospec 并在 rpms 目录中查找成功生成的 RPM:

    +
    make autospec
    +
    +
    +
  20. +
+
+

注解

+

如需 Clear Linux OS 存储库中不存在的某一依存关系,则须首先对其进行手动构建(请参阅 Example 2: Build a new RPM),然后添加此存储库,以便 autospec 了解存在此软件包。例如:

+
cd ~/clearlinux/packages/<package-name>
+make repoadd
+make repostatus
+
+
+

如果 autospec 无法单独自动查找正确的依存关系,则需将此依存关系添加到 buildreq_add 控制文件。

+
+
+
+
+

测试封装后的软件

+

使用 autospec 封装软件后,可对生成的 RPM 进行功能测试,然后再用 Mixer tool 将其集成和部署到 Clear Linux OS 映像。

+

Clear Linux OS 开发工具提供两种快速测试 autospec 所生成 RPM 的方法。

+
+

注解

+

下列方法只应用于开发系统的临时测试。

+
+
+

在 Clear Linux OS 虚拟机上测试

+

Clear Linux OS 开发工具包括将 RPM 安装到 Clear Linux OS 虚拟机(在 KVM 管理程序上运行)的方法。使用 虚拟机,可在完全隔离的环境下进行测试。

+

要测试在虚拟机内 autospec 创建的软件包:

+
    +
  1. 将 Clear Linux OS KVM 映像下载到 ~/clearlinux 目录,即 clear.img。其位置和名称 clear.img.xz 对于工具运行都十分重要:

    +
    cd ~/clearlinux
    +curl -o clear.img.xz https://download.clearlinux.org/image/$(curl https://download.clearlinux.org/image/latest-images | grep '[0-9]'-kvm)
    +
    +
    +
  2. +
  3. 解压缩已下载的 Clear Linux OS KVM 映像:

    +
    unxz -v clear.img.xz
    +
    +
    +
  4. +
  5. 将 KVM 所需的 QEMU 启动脚本和虚拟固件复制到 ~/clearlinux 目录:

    +
    cp ~/clearlinux/projects/common/start_qemu.sh .
    +cp /usr/share/qemu/OVMF.fd .
    +
    +
    +
  6. +
  7. 在此软件包的 autospec 目录中运行 make installmake install 命令可挂载已下载的 Clear Linux OS KVM 映像并将 autospec 创建的 RPM 安装到其中:

    +
    cd ~/clearlinux/packages/<package-name>
    +make install
    +
    +
    +

    在 GitHub 上的 Makefile.common 文件中搜索 install: 目标,可以查看实现此操作的代码。

    +
  8. +
  9. 返回到 ~/clearlinux 目录并启动 Clear Linux OS 虚拟机:

    +
    cd ~/clearlinux/
    +sudo ./start_qemu.sh clear.img
    +
    +
    +
  10. +
  11. 新的 Clear Linux OS 虚拟机随即在控制台上启动。以 root 用户身份登录到虚拟机,为此虚拟机设置新密码。

    +
  12. +
  13. 确保该软件已正常安装到 Clear Linux OS 虚拟机上,然后完成所有相关测试。

    +
  14. +
  15. 测试完成后,可关闭并删除 Clear Linux OS 虚拟机:

    +
    poweroff
    +rm clear.img
    +
    +
    +
  16. +
+
+
+

直接在开发计算机上进行测试

+

Clear Linux OS 开发工具还包括将 autospec 创建的 RPM 从本地解压缩到 Clear Linux OS 开发系统进行测试的方法。将 RPM 直接解压缩到系统中,可以加速测试过程,但可能发生冲突。同时,测试后删除软件的责任也取决于开发人员。

+

要直接在 Clear Linux OS 开发系统上测试 autospec 创建的软件包,必须执行以下步骤:

+
    +
  1. 在此软件包的 autospec 目录中运行 make install-localmake install-local 命令会将 RPM 直接解压缩到正在运行的 Clear Linux OS 系统的文件系统中:

    +
    cd ~/clearlinux/packages/<package-name>
    +make install-local
    +
    +
    +

    在 GitHub 上的 Makefile.common 文件中搜索 install-local: 目标,可以查看实现此操作的代码。

    +
  2. +
  3. 确保该软件已正常安装,然后完成所有相关测试。

    +
  4. +
  5. 测试完成后,必须发现并删除该软件和所有相关文件。swupd repair --picky 命令有助于还原 /usr 目录的状态(请参阅 swupd),但所有其他文件均须手动清理。

    +
  6. +
+
+
+
+

参考

+

请参阅 autospec README,了解有关 autospec 命令和选项的详细信息。

+
+

设置环境以构建源代码

+

在 Clear Linux OS 中构建源代码所需的工作空间和工具设置操作大多数可通过设置脚本自动执行。该设置脚本使用来自 os-clr-on-clr 捆绑包的工具。

+

该设置脚本会在 clearlinux 文件夹(其中包含 Makefilepackagesprojects 子文件夹)中创建一个工作空间。projects 文件夹包含在 Clear Linux OS 中制作软件包的主要工具,即 autospeccommon

+

按照以下步骤设置构建代码所需的工作空间和工具:

+
    +
  1. 安装 os-clr-on-clr 捆绑包:

    +
    sudo swupd bundle-add os-clr-on-clr
    +
    +
    +
  2. +
  3. 下载 user-setup.sh 脚本:

    +
    curl -O https://raw.githubusercontent.com/clearlinux/common/master/user-setup.sh
    +
    +
    +
  4. +
  5. 制作 user-setup.sh 可执行文件:

    +
    chmod +x user-setup.sh
    +
    +
    +
  6. +
  7. 以非特权用户的身份运行脚本:

    +
    ./user-setup.sh
    +
    +
    +
  8. +
  9. 脚本完成后,注销并再次登录以完成设置过程。

    +
  10. +
  11. 在系统上设置存储库的 Git 用户电子邮件和用户名:

    +
    git config --global user.email "you@example.com"
    +git config --global user.name "Your Name"
    +
    +
    +

    此全局设置由使用 Git 的 Clear Linux OS 工具使用。

    +
  12. +
+
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/bundles.html b/zh_CN/guides/clear/bundles.html new file mode 100644 index 000000000..fe4b7f2aa --- /dev/null +++ b/zh_CN/guides/clear/bundles.html @@ -0,0 +1,1064 @@ + + + + + + + + + + + + + + bundle 文件 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

bundle 文件

+

基于 Linux 的操作系统包含数百甚至数千个开源项目的代码。为了便于管理,发行版使用了一个名为 “packages” 的概念来配置这些项目的源代码并将其编译成二进制代码。

+

许多发行版随后将这些编译包的内容分成所谓的子包,这些子包是这些发行版部署其软件的粒度。借助这些类型的发行版,系统管理员就可以使用 “yum” 和 “apt-get.” 等工具单独或按组安装和更新子包。

+

Clear Linux* OS 采用的方法稍有不同。虽然我们也使用包的概念来管理将源代码编译成二进制代码的事宜,但是我们不使用包的概念来部署软件。相反,我们提供软件 “bundles”,它是使用 swupd 进行安装和管理的。每个捆绑包都包含或多或少的开源项目以提供完整功能。

+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/compatible-kernels.html b/zh_CN/guides/clear/compatible-kernels.html new file mode 100644 index 000000000..9d1c4bbb6 --- /dev/null +++ b/zh_CN/guides/clear/compatible-kernels.html @@ -0,0 +1,1081 @@ + + + + + + + + + + + + + + 内核 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

内核

+

Clear Linux* OS 为下列 Linux 内核提供了各自的捆绑包。本文介绍这些 bundles 的特定用例,并提供了源代码链接。

+
+

仅限裸机

+
+
原生内核
+
kernel-native 捆绑包侧重于裸机平台。它针对快速引导进行了优化,并在 supported hardware list 所述的英特尔®架构上表现最佳。优化补丁可以在我们的 Linux GitHub* 存储库中找到。
+
+
+
+

也与虚拟机兼容

+
+
LTS 内核
+
kernel-lts 捆绑包侧重于裸机平台,但使用最新的 LTS Linux 内核。它针对快速引导进行了优化,并在 supported hardware list 所述的英特尔®架构上表现最佳。此外,该内核包括 VirtualBox* 内核模块,请参阅我们的 instructions on using Virtualbox 了解更多信息。优化补丁可以在我们的 Linux-LTS GitHub 存储库中找到。
+
+
+
+

仅限虚拟机

+
+
KVM 内核
+
kernel-kvm 捆绑包侧重于 Linux KVM。它针对快速引导进行了优化,并在运行于 supported hardware list 所述的英特尔®架构的虚拟机上表现最佳。在 qemu/kvm 之上将 Clear Linux OS 作为来宾操作系统运行时,请使用此内核。在内部将 qemu/kvm 用作**虚拟机管理程序**时,可将此内核与云编排程序一起使用。该内核可用作独立的 Clear Linux OS 虚拟机,详情请参阅我们的 instructions on using KVM。优化补丁可以在我们的 Linux-KVM GitHub 存储库中找到。
+
Hyper-V* Kernel
+
kernel-hyperv 捆绑包侧重于在 Microsoft* Hyper-V 上运行 Linux。它针对快速引导进行了优化,并在运行于 supported hardware list 所述的英特尔®架构的虚拟机上表现最佳。在 Microsoft Azure* 等项目中将 Clear Linux OS 运行为云实例的来宾操作系统时,请使用此内核。该内核可以在独立的 Clear Linux OS 虚拟机中使用。详情请参阅我们的 instructions on using Hyper-V。优化补丁可以在我们的 Linux-HyperV GitHub 存储库中找到。
+
Hyper-V LTS 内核
+
kernel-hyperv-lts 捆绑包侧重于在 Microsoft Hyper-V 上运行 Linux,但使用最新的 LTS Linux 内核。它针对快速引导进行了优化,并在运行于 supported hardware list 所述的英特尔®架构的虚拟机上表现最佳。在 Microsoft Azure 等项目中将 Clear Linux OS 运行为云实例的来宾操作系统时,请使用此内核。该内核可以在独立的 Clear Linux OS 虚拟机中使用。详情请参阅我们的 instructions on using Hyper-V。优化补丁可以在我们的 Linux-HyperV-LTS GitHub 存储库中找到。
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/debug.html b/zh_CN/guides/clear/debug.html new file mode 100644 index 000000000..e4d0815da --- /dev/null +++ b/zh_CN/guides/clear/debug.html @@ -0,0 +1,1101 @@ + + + + + + + + + + + + + + 调试系统 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

调试系统

+

Clear Linux* OS 引入了一种使用 clr-debug-info 进行系统软件调试的新方法。在客户端,Clear Linux OS 调试系统会在调试会话期间通过网络即时获取所有必要的调试信息。在服务器端,系统将调试信息整理并压缩为较小的数据块,方便高效下载。

+

对于开发人员,此举可避免调试期间通常在缺少调试信息的情况下所出现的中断问题。对于存储空间有限的系统,此功能尤其实用。

+
+ +
+
+

后台

+

为在操作系统中进行一般使用而编译和封装的软件通常仅包含用于执行程序的组件,例如二进制文件和库。为提高效率,其他开发数据则会被分置并排除,例如实际的源代码和符号信息。

+

调试信息有助于将二进制代码与人类可读的源代码行和变量进行关联。多数情况下并不需要这些辅助信息;但如果缺少此类信息,调试程序便无法提供足够的可见性。

+
+
+

用途

+

clr-debug-info 系统已集成到 Clear Linux OS 并在安装后立即无缝结合。

+
    +
  1. 安装 dev-utils bundle 文件。

    +
    sudo swupd bundle-add dev-utils
    +
    +
    +
    +

    注解

    +

    telemetricsperformance-tools bundle 文件也包含 clr-debug-info。

    +
    +
  2. +
  3. 使用调试程序(如 GDB)针对程序启动调试会话。例如,要调试 gnome-control-center,请执行以下命令:

    +
    gdb /usr/bin/gnome-control-center
    +
    +
    +
  4. +
+

单步执行程序且需调试信息时,clr_debug_daemon 便会在后台获取所需信息。

+
+
+

实施

+

Clear Linux OS 调试系统的实现为开源程序且可在 GitHub 上的以下位置找到:https://github.com/clearlinux/clr-debug-info/

+
+Debug system communication flow +

图 1:Clear Linux OS 调试系统的通信流程

+
+

Clear Linux OS 调试系统可实现在 /usr/lib/debug/usr/src/debug 挂载的 FUSE 文件系统。FUSE 文件系统会自动启动。可以执行 systemctl status clr_debug_fuse.service 来验证状态。

+

clr_debug_daemon 负责从服务器获取相应的软件包调试内容,并提供给需要它的所有调试程序。只要对本地 FUSE 文件系统发出请求,便会通过套接字将其激活。可以使用 systemctl status clr_debug_daemon.service 来验证状态。

+

Clear Linux OS 存储有专供 Clear Linux OS 调试客户端(位于 https://download.clearlinux.org/debuginfo/)使用而封装的调试信息内容

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/ister.html b/zh_CN/guides/clear/ister.html new file mode 100644 index 000000000..8c932b429 --- /dev/null +++ b/zh_CN/guides/clear/ister.html @@ -0,0 +1,1115 @@ + + + + + + + + + + + + + + ister.py image builder — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

ister.py image builder

+

ister.py 工具是 Clear Linux* OS 使用的一款基于模板的安装程序,可以生成每个版本的映像。Clear Linux OS 中也可以使用该款 ister 工具,可以根据上游映像定制创建映像。

+ +
+

描述

+

Clear Linux OS 是一个滚动发行版本,使用该款 ister 工具每周平均生成 10 个版本。针对每个版本,我们均会生成多个 image types for different environments 和用例,如安装程序、Hyper-V、KVM 或 VMWare。

+

每个映像均有一个 JSON 配置文件。ister 使用配置文件生成映像。这些 JSON 配置文件描述了默认情况下预安装映像的映像类型、分区、版本和 bundle 文件。针对所生成的每种映像类型,同时还会发布映像的相应 JSON 配置文件。

+

mixer 工具也用 ister 为定制组合构建映像。与上游映像一样,系统会为该映像定义 ister 用于生成映像的 JSON 配置文件。请参阅 mixer 指南,查看使用 ister 为定制组合构建映像的说明。

+
+
+

示例

+
+

重新创建上游映像

+

上游映像的已发布配置文件可用于重新创建映像。部分示例如下:

+
    +
  • 不再提供旧版 Clear Linux OS 和映像(仅 2017 年 3 月后)。
  • +
  • 定制映像的分区。
  • +
  • 定制映像中预安装的 bundle 文件。
  • +
  • 运行自己的安装后脚本。
  • +
+

按照以下步骤,根据映像的 JSON 配置文件重新创建上游映像:

+
    +
  1. 安装 os-installer bundle 文件。请参阅 swupd,了解有关安装 bundle 文件的更多信息。

    +
  2. +
  3. 下载 ister.py 工具并为其授予 sudo 权限。

    +
  4. +
  5. 下载所需映像的 JSON 配置文件(位于 config/image/):

    + +

    针对先前版本,请导航到 Previous releases,选择所需版本,然后在 /clear/config/image 下找到 JSON 配置文件。例如:https://cdn.download.clearlinux.org/releases/15700/clear/config/image/

    +
  6. +
  7. 下载“PostNonChroot”脚本(如果适用)。

    +

    此映像的 JSON 配置文件可能附带“PostNonChroot”脚本,在映像创建过程结束时执行。如果是,则下载此脚本,将其转换为可执行文件。

    +
  8. +
  9. 按需编辑 JSON 配置文件。

    +
  10. +
  11. 如果此配置文件附带 “PostNonChroot” 脚本,则将此脚本的默认路径更改为您的路径。

    +
  12. +
  13. 用以下命令生成新映像:

    +
    sudo ister.py -t [JSON configuration]
    +
    +
    +
  14. +
+
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/mixer.html b/zh_CN/guides/clear/mixer.html new file mode 100644 index 000000000..2c49033e7 --- /dev/null +++ b/zh_CN/guides/clear/mixer.html @@ -0,0 +1,1638 @@ + + + + + + + + + + + + + + mixer — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

mixer

+

mixer 是 Clear Linux* OS 团队用于生成官方更新内容和版本的工具。mixer 生成的更新内容随后会在下游客户端上供 swupd 使用。该 mixer 工具也可以成为 Clear Linux OS 功能,用来创建自己的定制更新内容和版本。

+ +
+

描述

+

mixer 使用以下源作为输入,生成更新内容:

+
    +
  • 带相应 RPM 包的上游 Clear Linux OS bundle 文件
  • +
  • 带相应本地 RPM 包的本地定义的 bundle 文件
  • +
  • 带上游 RPM 包的本地定义的 bundle 文件
  • +
+

使用 mixer 工具,可以选择将来自这些源的哪些内容纳入更新。可以从这些源选择内容,从而为定制更新内容创建独特的功能组合(即组合)。

+

mixer 生成的更新内容包括各种操作系统内容、更新元数据和完整映像。操作系统内容包括所有更新文件,以及用于提升更新性能的零包和增量包。作为清单存储的更新元数据则描述了更新的所有 bundle 文件信息。mixer 生成的更新内容随后会发布到 Web 服务器,然后由客户端通过 swupd 使用。请参阅 swupd,了解有关更新和更新内容的其他信息。

+
+
+

工作原理

+

了解 mixer 工具的设置和工作流。

+ +
+

必备条件

+
    +
  • mixer bundle 文件

    +

    通过 mixer bundle 文件添加 mixer 工具。请参阅 swupd,了解有关安装 bundle 文件的更多信息。

    +
  • +
  • Docker* 容器

    +

    默认情况下,mixer 会在 Docker 容器中运行所有构建命令,确保使用正确的工具版本。此外,此操作还会在上游发布新的时间戳时允许定制组合自动执行下游时间戳转换。请参阅 Format version,了解有关时间戳转换的其他信息。

    +

    请参阅 Configure and enable Docker,查看相关说明。

    +
  • +
  • Docker 代理(可选)

    +

    如果使用代理服务器,则须设置代理环境变量并为 Docker 守护程序和容器创建代理配置文件。

    +

    如果使用了公司代理服务器,则请咨询 IT 部门以获取正确的值。

    +

    请参阅 Configure Docker proxy info,查看相关说明。

    +
  • +
  • 更新内容和映像的存储位置

    +

    为了让 swupd 使用您的组合,组合的更新内容需在 Web 服务器上存储。此组合会配置更新位置 URL,而 swupd 则会用其拉取更新。

    +

    请参阅 为 mixer 设置 Nginx Web 服务器,查看设置更新位置的简单示例。

    +
  • +
+
+
+

组合设置

+

请按以下步骤创建和初始化 mixer 工作区。创建组合前,请先完成设置。

+
    +
  1. 创建工作区。

    +

    mixer 工具使用简易工作区包含基本目录结构中的所有输入和输出。此工作区只是一个空文件夹,可以在此文件夹中执行 mixer 命令。每个组合均使用自己的独立工作区。

    +
  2. +
  3. 初始化工作区和组合。

    +

    创建组合前,必须显式初始化 mixer 工作区。初始化期间,系统将配置 mixer 工作区并定义组合基础。默认情况下,组合以最新的上游版本为基础创建,一开始只包含最少的 bundle 文件。第一个定制组合版本号以 10 开始。也可以选择要从中启动的其他版本或 bundle 文件集。

    +

    初始化操作会在工作区中创建目录结构并添加 builder.conf 文件,而此文件将用于配置 mixer 工具。

    +

    查看 mixer.init man page,了解有关 mixer 初始化的更多信息。

    +

    查看适合从中进行组合的 releases 列表。

    +
  4. +
  5. 编辑 builder.conf。

    +

    mixer 工具根据 builder.conf 知道如何配置组合。例如,可以配置 mixer 输出的所在位置以及 swupd 更新内容的所在位置。

    +

    至少需要设置更新服务器的 URL,以便定制操作系统知道从何处获取更新内容。

    +

    请参阅 builder.conf 部分,了解更多信息。

    +
  6. +
+
+
+

创建组合

+

创建组合的步骤如下:

+
    +
  1. 添加定制 RPM 并设置本地存储库(可选)。

    +

    如果要在组合中添加定制 RPM,则须将 RPM 添加到组合工作区并设置相应的本地存储库。

    +

    转到 autospec 指南,了解如何从头构建 RPM。如果未在 Clear Linux OS 上构建 RPM,则请确保配置和工具链会为 Clear Linux OS 正确构建 RPM,否则便无法保证其兼容。

    +

    请参阅 autospec 指南,了解使用 autospec 来构建 RPM 的更多信息。

    +
  2. +
  3. 更新和构建 bundle 文件。

    +

    添加、编辑或删除将纳入内容的 bundle 文件并对其进行构建。更新组合中的 bundle 文件时,mixer 会自动更新 mixbundles 文件。

    +

    查看 mixer.bundle man page,了解配置组合中的 bundle 文件的更多信息。

    +

    查看 mixer.build man page,了解有关构建 bundle 文件的更多信息。

    +

    查看 Bundles 部分,了解有关 mixer 如何管理 bundle 文件的更多信息。

    +
  4. +
  5. 创建更新内容。

    +

    mixer 会通过此步骤创建更新内容。零包是自动创建的,也可以同时创建增量包(适用于版本 0 之后的所有内部版本)。

    +

    零包是从组合版本 0(无)变为刚刚为其构建内容的组合版本所需的全套内容。

    +

    增量包可提供 PAST_VERSIONMIX_VERSION 之间的增量内容,允许从一个组合版本变为另一版本。

    +

    查看 swupd,了解有关更新内容的更多信息。

    +
  6. +
  7. 创建映像。

    +

    mixer 使用 ister.py image builder 工具从更新后的内容创建可引导映像。在此步骤中,可以指定要在映像中预安装的 bundle 文件。随后,用户可以安装组合中的其他 bundle 文件。

    +
  8. +
  9. 推出更新。

    +

    将更新内容和映像部署到更新服务器。

    +

    查看 Example 3: Deploy updates to target,了解简单的部署场景。

    +
  10. +
+
+
+

保持或修改组合

+

按照创建组合的步骤,将内容更新或修改为新版本。为下一组合递增组合版本号。

+
+
+
+

示例

+

以下示例旨在按顺序协同工作。这些示例采用:

+
    +
  • Clear Linux OS 的原有安装。
  • +
  • Clear Linux OS 随附用于存储内容更新的 Web 服务器。
  • +
  • 一台根据例 2 中创建的本地生成内容进行更新的简易虚拟机。
  • +
+

在使用这些示例之前,请先满足所有 Prerequisites

+
+

例 1:组合设置

+

本例介绍了第一次为新组合设置 mixer 的基本步骤。

+
    +
  1. 创建一个空目录,用作 mixer 的工作区:

    +
    mkdir ~/mixer
    +
    +
    +
  2. +
  3. 在 mixer 工作区中,根据最新的上游 Clear Linux OS 版本生成初始组合,包含最少的 bundle 文件。在初始化输出中,请注意初始组合版本已设为 10,添加了最少的 bundle 文件。

    +
    cd ~/mixer
    +mixer init
    +
    +
    +
  4. +
  5. 编辑 builder.conf,将 CONTENTURL 和 VERSIONURL 的值设为在前提条件 为 mixer 设置 Nginx Web 服务器 中所设 nginx* 服务器的 IP 地址。例如:

    +
    CONTENTURL="http://192.168.25.52"
    +VERSIONURL="http://192.168.25.52"
    +
    +
    +
  6. +
+
+
+

例 2:创建简单组合

+

本例介绍如何使用上游内容创建简单的定制组合。我们要为 QEMU 虚拟机创建映像,方便以后进行组合测试。

+

我们可以使用初始化期间添加的默认 bundle 文件,但其中包括 native-kernel bundle 文件,而此 bundle 文件主要用于裸机系统而非虚拟机。因此,我们要修改默认的 bundle 文件集,缩小内核映像,提高加载速度。

+
    +
  1. 更新组合中的 bundle 文件:

    +
    mixer bundle remove kernel-native
    +mixer bundle add kernel-kvm
    +
    +
    +
  2. +
  3. 在此情况下,我们将添加来自上游的 editors bundle,但会移除 joe 编辑器。

    +
    mixer bundle add editors
    +mixer bundle edit editors
    +
    +
    +
  4. +
  5. 使用一个编辑器,从 bundle 定义中手动移除 joe

    +
    $EDITOR ./local-bundles/editors
    +
    +
    +
  6. +
  7. 在 mix 中再次列出 bundles 以确认移除。

    +
    mixer bundle list  --tree
    +
    +
    +
  8. +
  9. 构建 bundle 文件:

    +
    mixer build bundles
    +
    +
    +

    build 命令完成后,在 ~/mixer/update/image/<mix version>/full 中查找完整 chroot。

    +
  10. +
  11. 构建更新内容。浏览到 http://localhost 站点,您会看到网页现已打开,但没有更新内容。构建更新内容:

    +
    mixer build update
    +
    +
    +

    刷新 http://localhost 站点。此时,您便可看到组合版本 10 的更新内容。

    +

    查找 ~/mixer/update/www/<mix version>,在工作区中查看更新内容。

    +
  12. +
  13. 配置映像。编辑映像的 ister 配置文件,包含要在映像中预安装的所有 bundle 文件。如果是首次创建映像,则需首先获取 release-image-config.json 模板文件的副本:

    +
    curl -O https://raw.githubusercontent.com/bryteise/ister/master/release-image-config.json
    +
    +
    +

    在本例中,编辑 release-image-config.json,使 root 分区的大小为 “5G”,同时将 “kernel-native” bundle 文件更换为 “kernel-kvm”。

    +
    {
    +  "DestinationType" : "virtual",
    +  "PartitionLayout" : [ { "disk" : "release.img", "partition" : 1, "size" : "32M", "type" : "EFI" },
    +                        { "disk" : "release.img", "partition" : 2, "size" : "16M", "type" : "swap" },
    +                        { "disk" : "release.img", "partition" : 3, "size" : "5G", "type" : "linux" } ],
    +  "FilesystemTypes" : [ { "disk" : "release.img", "partition" : 1, "type" : "vfat" },
    +                        { "disk" : "release.img", "partition" : 2, "type" : "swap" },
    +                        { "disk" : "release.img", "partition" : 3, "type" : "ext4" } ],
    +  "PartitionMountPoints" : [ { "disk" : "release.img", "partition" : 1, "mount" : "/boot" },
    +                             { "disk" : "release.img", "partition" : 3, "mount" : "/" } ],
    +  "Version": "latest",
    +  "Bundles": ["kernel-kvm", "os-core", "os-core-update"]
    +}
    +
    +
    +
  14. +
  15. 构建映像。

    +
    sudo mixer build image
    +
    +
    +

    此步骤的输出为实时映像 release.img

    +
  16. +
  17. 创建下一组合。为接受更新的实时映像创建组合新版本。组合版本以 10 为因子递增:

    +
    mixer versions update
    +
    +
    +

    重置执行步骤 1-3,将上游 curl bundle 文件添加到组合中:

    +
    mixer bundle add curl
    +mixer build bundles
    +mixer build update
    +
    +
    +

    构建可选增量包,有助于缩短客户端更新时间:

    +
    mixer build delta-packs --from 10 --to 20
    +
    +
    +

    刷新 http://localhost 站点,查看组合版本 20 的更新内容。

    +

    查找 ~/mixer/update/www/<mix version>,在工作区中查看更新内容。

    +
  18. +
+
+
+

例 3:将更新部署到目标位置

+

在例 2 中创建的映像可以在 QEMU 中直接引导。在本例中,我们会引导例 2 中的映像,对其进行验证,然后将映像从组合版本 10(原始映像)更新到组合版本 20。

+
    +
  1. 设置 QEMU 环境。

    +

    kvm-host bundle 文件安装到 Clear Linux OS:

    +
    sudo swupd bundle-add kvm-host
    +
    +
    +

    获取虚拟 EFI 固件,下载映像启动脚本,将其转换为可执行文件:

    +
    curl -O https://download.clearlinux.org/image/OVMF.fd
    +curl -O https://download.clearlinux.org/image/start_qemu.sh
    +chmod +x start_qemu.sh
    +
    +
    +
  2. +
  3. 启动虚拟机映像(例 2 中创建):

    +
    sudo ./start_qemu.sh release.img
    +
    +
    +
  4. +
  5. 以 root 用户身份登录,设置密码

    +
  6. +
  7. 试用此组合。

    +

    查看组合中安装的默认 bundle 文件:

    +
    swupd info
    +swupd bundle-list
    +swupd bundle-list -a
    +
    +
    +
  8. +
  9. 现在我们将添加修改的 editors bundle。

    +
    swupd bundle add editors
    +
    +
    +
  10. +
  11. 尝试启动 joe 编辑器。它应该不会出现,因为我们已将它从原 editors bundle 中移除。

    +
  12. +
  13. 下一步,我们将从版本 10 更新至版本 20,以获取新的可用 bundles。使用 swupd 更新您的 mix:

    +
    swupd check-update
    +swupd update
    +swupd bundle-list -a
    +
    +
    +
  14. +
  15. 此时,组合应为版本 20 且 curl 可用。试用 curl。由于尚未安装 curl,因此此操作会失败:

    +
    curl: command not found
    +To install curl use: swupd bundle-add curl
    +
    +
    +

    将更新服务器上的新 bundle 文件添加到虚拟机上。再次试用 curl。操作成功!

    +
    swupd bundle-add curl
    +curl -O https://download.clearlinux.org/image/start_qemu.sh
    +
    +
    +

    关闭虚拟机:

    +
    poweroff
    +
    +
    +
  16. +
+
+
+
+

参考

+

参考 mixer man page,了解有关 mixer 命令和选项的详细信息。

+ +
+

builder.conf

+

mixer 初始化过程中会创建 builder.conf。文件中包含 mixer 工具的基本配置。其中的主要项目为 CONTENTURL 和 VERSIONURL。系统会根据定制内容使用这些项目。

+
#builder.conf
+
+#VERSION 1.0
+
+[Builder]
+  CERT = "/home/clr/mix/Swupd_Root.pem"
+  SERVER_STATE_DIR = "/home/clr/mix/update"
+  VERSIONS_PATH = "/home/clr/mix"
+  YUM_CONF = "/home/clr/mix/.yum-mix.conf"
+
+[Swupd]
+  BUNDLE = "os-core-update"
+  CONTENTURL = "<URL where the content will be hosted>"
+  VERSIONURL = "<URL where the version of the mix will be hosted>"
+
+[Server]
+  DEBUG_INFO_BANNED = "true"
+  DEBUG_INFO_LIB = "/usr/lib/debug"
+  DEBUG_INFO_SRC = "/usr/src/debug"
+
+[Mixer]
+  LOCAL_BUNDLE_DIR = "/home/clr/mix/local-bundles"
+  LOCAL_REPO_DIR = ""
+  LOCAL_RPM_DIR = ""
+  DOCKER_IMAGE_PATH = "clearlinux/mixer"
+
+
+

表 1 提供了 builder.conf 中变量的附加说明。

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
变量说明
CERT

设置 mixer 存储证书文件的路径。该文件用于签署内容并进行验证。如果不提供现有证书文件的路径,mixer 则会自动生成证书,同时会签署 Manifest.MoM 文件,为创建的更新内容提供安全保障。

+

chroot-builder 使用此证书文件签署 Manifest.MoM root 文件,为内容验证提供安全保障。

+

swupd 使用此证书验证 Manifest.MoM 文件的签名。

+

目前,极力建议不要修改此变量,因为 swupd 必须要有配置十分具体的证书,才能正确签署和验证。

+
CONTENTURLVERSIONURL

将这些变量设置为存储更新内容的 Web 服务器的 IP 地址。

+

VERSIONURL 是 swupd 客户端希望确定是否存在新版本的 IP 地址。

+

CONTENTURL 是 swupd 从中拉取内容更新的位置。

+

如果 Web 服务器与 SERVER_STATE_DIR 目录位于同一计算机上,则可在 Web 服务器的文档根目录中创建符号链接,轻松存储内容。

+

这些 URL 嵌入 mixer 所创建的映像中。

+
DOCKER_IMAGE_PATH设置 mixer 通过拉取在适当容器中运行内部版本的 docker 映像的基本名称。
LOCAL_BUNDLE_DIR设置 mixer 存储本地 bundle 定义文件的路径。bundle 定义文件包括用户创建的所有原创新 bundle 文件,还有上游 bundle 文件的编辑版本。
SERVER_STATE_DIR设置 mixer 输出内容的目标路径。默认情况下,mixer 会自动设置此路径。
VERSIONS_PATH设置组合版本以及上游版本的两个状态文件的路径:mixversionupstreamversion。设置工作区时,mixer 会为您创建这两个文件。
YUM_CONF

设置 mixer 自动生成 .yum-mix.conf 文件所在的路径。

+

yum 配置文件将 chroot-builder 指向 RPM 的存储位置。

+
表 1:builder.conf 中的变量
+
+

Format 版本

+

操作系统的兼容版本通过操作系统兼容性时间戳进行跟踪。某一时间戳的各版本操作系统均完全兼容,并可更新到该时间戳中的任意其他版本。兼容性时间戳在 mixer.state 文件中作为 Format 变量进行设置。mixer.state 中的变量由 mixer 在执行间隔使用,且不应手动更改。

+

format bump 会改变 house 的基础,创建一个新层级。如果 Format 递增至新的阶段( “format bump”),操作系统会以这种方式发生改变:从 format X 构成的 build A 更新至 format Y 构成的 build B 将无法完成。

+

在如下情况中,将需要 format bump:

+
    +
  • 软件更新器 swupd 或软件不再兼容以前的更新模式
  • +
  • 一个 package 从更新流中移除后,该更新必须确保从系统中移除与该 package 相关的文件
  • +
+

使用 Format 增量可以确保必需进行的更改和同时需要进行的更改以正确的顺序进行。除非使用命令行标志覆盖,否则更新后的客户端只会更新采用各自时间戳格式版本的最新版本。如此一来,便可确保所有客户端均更新采用给定时间戳格式的最终版本。

+

给定时间戳格式必须包含理解以下一个时间戳格式构建的内容所需的所有更改。仅当达到采用旧时间戳格式的最终版本后,客户端才能继续更新到采用新时间戳格式的版本。

+

仅当出现兼容性破坏问题时,才会递增时间戳格式版本。正常更新(如更新软件包)无需时间戳格式增量。

+
+
+
+

bundle 文件

+

mixer 将有关 bundle 文件的信息存储在名为 mixbundles 的平面文件中。此文件所在的路径是通过文件 builder.conf 中的 VERSIONS_PATH 变量设置的。启动组合时会自动创建 mixbundles。每次更改组合中的 bundle 文件时,mixer 均会刷新此文件。

+

bundle 文件可以包括其他 bundle 文件。嵌套的 bundle 文件自身可以包含其他 bundle 文件。如果在组合中发现不应该纳入的 bundle 文件,则可能是先前显式添加的一个 bundle 文件中的嵌套 bundle 文件。

+

bundle 文件分为两大类:上游或本地。上游 bundle 文件是 Clear Linux OS 提供的 bundle 文件。本地 bundle 文件则要么是修改后的上游 bundle 文件,要么是新的本地 bundle 文件。

+
+

上游 bundle 文件

+

mixer 会自动下载和缓存上游 bundle 定义文件。这些定义文件存储在工作区的 upstream-bundles 目录中。请勿修改此目录中的文件。此目录只是供 mixer 使用的镜像。如果必须下载新版本,mixer 则会在动态重新填充之前自动删除该目录的内容。

+

mixer 工具会自动缓存在 upstreamversion 文件中配置的 Clear Linux OS 版 bundle 文件。此外,mixer 还会在旧版本无需再使用后立即将其清除。

+
+
+

本地 bundle 文件

+

本地 bundle 文件是您创建的 bundle 文件,或是上游 bundle 文件的编辑版本。本地 bundle 定义文件存储在工作区的 local-bundles 目录中。此目录的路径是通过 builder.conf 文件中的 LOCAL_BUNDLE_DIR 变量设置的。

+

mixer 始终会先检查本地 bundle 文件,然后再检查上游 bundle 文件。 因此,local-bundles 目录中的 bundle 文件始终优先于同名的上游 bundle 文件。利用此优先特性,可以将上游 bundle 文件复制到本地,然后进行编辑,变为本地 bundle 文件。

+
+
+

bundle 文件配置

+

mixer 提供命令来配置组合的 bundle 文件,例如将 bundle 文件添加到组合中,为组合创建新的 bundle 文件,或从组合中删除 bundle 文件。查看 mixer.bundle man page,获取完整的命令列表,了解配置组合中的 bundle 文件的更多信息。

+

编辑现有本地 bundle 文件就像在心仪的编辑器中打开 bundle 定义文件、执行所需编辑以及保存更改一样简单。

+
+

注解

+

从组合中删除 bundle 文件:默认情况下,删除 bundle 文件只会从组合中删除 bundle 文件。本地 bundle 定义文件仍会保留。要彻底删除 bundle 文件(包括它的本地 bundle 定义文件),请使用 --local 标志。

+

如果删除组合中上游 bundle 文件的本地编辑版本的 bundle 定义文件,该组合则会重新引用此 bundle 文件的原始上游版本。

+
+
+
+
+

配置和启用 Docker

+

通过以下步骤为 mixer 工具启用 Docker。如有必要,请务必先 Configure Docker proxy info

+
    +
  1. 启动 Docker 守护程序:

    +
    sudo systemctl start docker
    +sudo chmod 777 /var/run/docker.sock
    +sudo docker info
    +
    +
    +
  2. +
  3. 将用户添加到 docker 组

    +
    sudo usermod -G docker -a <username>
    +
    +
    +
  4. +
+
+

手动拉取 Docker 容器(可选)

+

默认情况下,如果没有 Docker 容器,mixer 则会自动拉取 Docker 容器以创建组合。如需对 mixer 容器进行故障排除,则可尝试手动拉取 mixer Docker 容器。

+

mixer Docker 容器的版本可在 Docker Hub 上的 clearlinux/mixer repo 标签下找到。每个版本的 mixer Docker 容器均以关联的 Clear Linux OS 上游时间戳格式版本来命名。请参阅 Format version,了解有关上游时间戳格式版本的其他信息。

+

通过以下步骤手动拉取 mixer Docker 容器:

+
    +
  1. 查看 Docker Hub 上的 clearlinux/mixer repo 标签,查找所需版本的容器。

    +
  2. +
  3. 拉取最新容器版本:

    +
    docker pull clearlinux/mixer:<upstream-format-version>
    +
    +
    +
  4. +
  5. 查看本地 docker 映像:

    +
    docker images
    +
    +
    +
  6. +
+
+
+
+

配置 Docker 代理信息

+

如有必要,通过以下步骤配置 Docker 代理信息。

+
    +
  1. 创建 Docker 守护程序代理配置目录:

    +
    sudo mkdir -p /etc/systemd/system/docker.service.d
    +
    +
    +
  2. +
  3. 创建 /etc/systemd/system/docker.service.d/http-proxy.conf 并用自己的代理值添加以下内容:

    +
    [Service]
    +Environment="HTTP_PROXY=<HTTP proxy URL>:<port number>"
    +Environment="HTTPS_PROXY=<HTTPS proxy URL>:<port number>"
    +
    +
    +
  4. +
  5. 重新加载 Docker 守护程序:

    +
    sudo systemctl daemon-reload
    +
    +
    +
  6. +
+

配置 Docker 容器代理,将代理设置传递给容器:

+
    +
  1. 为容器配置创建目录:

    +
    mkdir ~/.docker
    +
    +
    +
  2. +
  3. 创建配置文件 ~/.docker/config.json 并用自己的代理值添加以下条目:

    +
    {
    +  "proxies":
    +  {
    +    "default":
    +    {
    +      "httpProxy": "<proxy-url>:<port>",
    +      "httpsProxy": "<proxy-url>:<port>"
    +    }
    +  }
    +}
    +
    +
    +
  4. +
  5. 设置 docker 配置目录的所有权和权限:

    +
    sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
    +sudo chmod g+rwx "$HOME/.docker" -R
    +
    +
    +
  6. +
+

配置代理,允许 mixer 从防火墙后访问上游内容。

+
    +
  1. 打开 $HOME/.bashrc 文件,为以下内容添加代理和端口值:

    +
    export http_proxy="<proxy-url>:<port>"
    +export https_proxy="<proxy-url>:<port>"
    +export HTTP_PROXY="<proxy-url>:<port>"
    +export HTTPS_PROXY="<proxy-url>:<port>"
    +export no_proxy="<...>"
    +
    +
    +
  2. +
  3. 注销并再次登录,使代理生效。

    +
  4. +
+
+
+

为 mixer 设置 Nginx Web 服务器

+

需有 Web 服务器存储更新内容。在本例中,我们使用 Clear Linux OS 随附的 Nginx Web 服务器。

+

通过以下步骤为 mixer 设置 Nginx Web 服务器:

+
    +
  1. 安装 nginx bundle 文件:

    +
    sudo swupd bundle-add nginx
    +
    +
    +
  2. +
  3. 创建 mixer 更新的存储目录:

    +
    sudo mkdir -p /var/www
    +
    +
    +
  4. +
  5. 在工作区更新和本地 Nginx Web 服务器更新之间创建符号链接。在本例中,$HOME/mixer 是组合的工作区。

    +
    sudo ln -sf $HOME/mixer/update/www /var/www/mixer
    +
    +
    +
  6. +
  7. 设置 nginx 配置:

    +
    sudo mkdir -p  /etc/nginx/conf.d
    +
    +
    +
  8. +
  9. 复制默认示例配置文件:

    +
    sudo cp -f /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf
    +
    +
    +
  10. +
  11. 配置 mixer 更新服务器。创建以下服务器配置内容并将其添加到 /etc/nginx/conf.d/mixer.conf (需 sudo 权限):

    +
    server {
    +     server_name localhost;
    +     location / {
    +               root /var/www/mixer;
    +               autoindex on;
    +     }
    +}
    +
    +
    +
  12. +
  13. 重新启动守护程序,引导时启用 Nginx,然后启动此服务。

    +
    sudo systemctl daemon-reload
    +
    +sudo systemctl enable nginx
    +
    +sudo systemctl start nginx
    +
    +
    +
  14. +
  15. 验证 Web 服务器是否在 http://localhost 上运行。此时不应再出现 “404 Not Found” 消息。

    +
  16. +
+
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/security.html b/zh_CN/guides/clear/security.html new file mode 100644 index 000000000..86e9578d7 --- /dev/null +++ b/zh_CN/guides/clear/security.html @@ -0,0 +1,1127 @@ + + + + + + + + + + + + + + 操作系统安全性 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

操作系统安全性

+

Clear Linux* OS 旨在做出既高效又实用的系统性、分层安全决策。此安全理念根植于项目的代码库和运营文化中。

+ +
+

更新方面的安全举措

+

Clear Linux OS 团队致力于通过开源、增量更新以及快速解决已知的安全建议来提升软件安全。

+
+

最新的 Linux* 代码库

+

Clear Linux OS 使用最新版本的 Linux 内核,允许操作系统利用上游 Linux 内核的最新功能,包括安全修复。

+
+
+

自动有效更新

+

Clear Linux OS 每天多次执行增量更新。

+

这种 rolling release 模式便于 Clear Linux OS 在软件包的最新安全补丁一经推出就能获得应用。Clear Linux OS 不会等待主要或次要版本。

+

简单地将更新内容下载到系统上并不会带来多大的效果。重要的是在获得更新内容的同时,还要确保修补后的新副本得到使用,而不是将旧副本加载到内存中。更新软件后,Clear Linux OS 会告诉用户某个服务是否需要重新启动,或者在需要时自动重新启动服务。

+

在 Clear Linux OS 中,更新会自动、高效且有效地交付。有关 Clear Linux OS 中软件更新的更多信息,请参阅 swupd 指南。

+
+
+

自动 CVE 扫描和修复

+

软件包和安全漏洞的数量正呈指数级增长。NIST 会在美国国家漏洞数据库 https://nvd.nist.gov/以及 https://cve.mitre.org/推送通用漏洞 (CVE) 存储库及其修复程序(如果已知)。

+

Clear Linux OS 采用一种主动且慎重的方法来解决已知且可修复的 CVEs。系统每天都会对照 CVE 扫描软件包,而且相应的安全补丁一经可用即会立即部署。

+

这些综合实践最大限度减少了 Clear Linux OS 系统暴露于不必要的安全风险下的时间。

+
+
+
+

软件方面的安全举措

+
+

最大限度减少攻击面

+

Clear Linux OS 会尽可能删除旧的、不需要的或冗余的标准和组件,以便能够使用最广为人知的安全标准。以下是一些例子:

+
    +
  • RC4SSLv33DESSHA-1 密码存在已知的漏洞,已在许多 Clear Linux OS 软件包中明确禁用,以避免意外使用。
  • +
  • 暴露敏感系统信息的服务和子系统已被删除,如 fingertcpwrappers
  • +
  • 出于安全考虑,默认情况下已禁用 SFTP
  • +
+
+
+

经过验证的信任措施

+

Clear Linux OS 鼓励在整个系统中使用加密和数字签名验证等安全措施,并不鼓励盲目信任。以下是一些例子:

+
    +
  • swupd 的所有更新操作都是透明加密的,并对照 Clear Linux OS 维护者的公钥进行真实性检查。有关 swupd 安全性的更多信息,请参阅 Security for software update in Clear Linux* OS 博客文章。
  • +
  • 构建之前,可从 Clear Linux OS 获得的软件包会验证由第三方项目代码库和维护者提供的校验和和签名。
  • +
  • Clear Linux OS 使用一个统一的证书存储库 clrtrust,可以方便地与知名的证书颁发机构配合使用。clrtrust 还提供了一个易于使用的命令行界面来管理整个系统范围内的信任链,而不是忽略外部证书。
  • +
+
+
+

使用安全选项编译

+

虽然 Clear Linux OS 软件包针对英特尔架构优化了性能,但也合理使用了强调安全的内核和编译器选项。以下是一些例子:

+ +
+
+
+

系统设计方面的安全举措

+

整个 Clear Linux OS 系统设计都使用了简单却有效的技术来防御常见的攻击媒介,并实现良好的安全水平。以下是一些例子:

+
    +
  • 安装期间可使用 LUKS 实现全磁盘加密。有关 LUKS 的更多信息,请参阅 cryptsetup
  • +
  • Clear Linux OS 使用 PAM cracklib 模块强化用户登录和密码安全,从而使得:
      +
    • Clear Linux OS 一开始并没有现成的默认用户名或 root 密码,系统会要求您立即设置自己的密码。
    • +
    • 在 Clear Linux OS 中无法设置很容易被猜出的简单密码。
    • +
    • 将过去受过攻击的密码加入密码黑名单,并禁止将系统密码设置为黑名单中的密码。
    • +
    +
  • +
  • 使用 openssh-server 捆绑包可安装轻量级服务 Tallow,监视和阻止可疑的 SSH 登录模式。
  • +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/stateless.html b/zh_CN/guides/clear/stateless.html new file mode 100644 index 000000000..74ec9bf53 --- /dev/null +++ b/zh_CN/guides/clear/stateless.html @@ -0,0 +1,1140 @@ + + + + + + + + + + + + + + 无状态 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

无状态

+

在大多数操作系统中,用户数据、系统数据和配置文件可能会混杂在一起。

+
+Stateless: User and system files mixed +

图 1:如果不使用无状态设计,用户和系统文件会随着时间的推移在文件系统中混杂在一起。

+
+

Clear Linux* OS 使用无状态设计理念,目的是打造一个无需过多用户配置或自定义的 OS (operating system)。在这种情况下,无状态并不意味着短暂或不持久。

+ +
+

文件级隔离

+

为了实现无状态设计,Linux 文件系统层次结构在用户拥有的区域和 Clear Linux OS 拥有的区域之间是隔离的。

+
+Stateless: User and system files separation +

图 2:使用无状态设计时,用户和系统文件在文件系统上是隔离的。

+
+
+

系统区域

+

/usr 目录下的文件由用户拥有和管理。用户在 /usr 目录下编写的文件可以通过 swupd 系统更新删除。此操作假设允许 Clear Linux OS 用户清楚地识别其系统的独特配置。

+
+
+

用户区域

+

/etc//home/var 目录下的文件由用户拥有和管理。新安装的 Clear Linux OS 系统在 /etc/ 目录中只有极少量的文件,并且 Clear Linux OS 安装的软件不会写入 /etc。此操作假设允许 Clear Linux OS 用户清楚地识别其系统的独特配置。

+
+
+
+

软件配置

+

在无状态隔离的情况下,默认软件配置从预定义的源代码、Clear Linux OS 提供的默认值和用户提供的配置中按顺序读取。

+
+

默认配置

+

Clear Linux OS 中的软件会提供默认配置值,以便在适当的时候立即运行。

+

Clear Linux OS 分布的软件包可以直接修改以包括默认配置值,或者默认配置文件可以由 Clear Linux OS 在 /usr/share/defaults 中提供。这些文件可以作为自定义模板引用。

+

例如,Apache 安装后使用的默认配置可以在 /usr/share/defaults/httpd/httpd.conf 目录中找到。

+
+
+

覆盖配置

+

如果需要更改配置,用户应在 /etc/ 下修改适当的文件。如果配置文件不存在,可以在适当的位置创建。

+

用户定义的配置文件应该包含尽可能少的更改,其余则依赖默认配置。

+

例如,可以使用自定义 Apache 配置,具体方式是:

+
    +
  1. 为配置创建目标目录:

    +
    sudo mkdir /etc/httpd
    +
    +
    +
  2. +
  3. 复制默认配置作为参考模板:

    +
    sudo cp /usr/share/defaults/httpd/httpd.conf /etc/httpd/
    +
    +
    +
  4. +
  5. 对配置进行任何所需的修改:

    +
    sudoedit /etc/httpd/httpd.conf
    +
    +
    +
  6. +
  7. 重新加载服务或重新启动系统以获取任何更改:

    +
    systemctl daemon-reload httpd && systemctl restart httpd
    +
    +
    +
  8. +
+

这种模式也可以用来修改其他程序的配置。stateless man page 提供了特定于应用程序的示例。

+
+
+
+

系统重置

+

无状态设计的一个优点是,只需删除 /etc//var 下的所有内容,就可以轻松恢复系统默认值。

+

运行以下命令可以有效地执行系统重置,重置后系统就像刚刚安装一样:

+
sudo rm -rf /etc
+sudo rm -rf /var
+
+
+

在其他 Linux 发行版中,此操作有可能造成灾难性后果,导致系统无法启动。

+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/swupd.html b/zh_CN/guides/clear/swupd.html new file mode 100644 index 000000000..291096a56 --- /dev/null +++ b/zh_CN/guides/clear/swupd.html @@ -0,0 +1,1282 @@ + + + + + + + + + + + + + + swupd — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

swupd

+

swupd 将 Clear Linux* OS 安装与上游更新和软件进行链接。

+ +
+

描述

+

swupd 有两个主要功能:

+
    +
  1. 通过安装 bundle 文件而非软件包来管理软件并替换 APT 或 YUM。
  2. +
  3. 检查是否存在系统更新并进行安装。
  4. +
+

swupd 可管理后台的重叠依存关系,从而确保所有软件在整个系统中兼容。它可以验证操作系统、清理缓存文件和修复问题。

+

Bundles 包含提供软件功能所需的一切。它们是 Clear Linux OS 管理的最小粒度组件。bundle 文件附带所有依存关系,而非在安装软件时下载一系列软件包依存关系。

+
+

版本管理

+

使用软件包管理器监控软件版本兼容性或比较大量 Linux 发行版上的多个系统可能十分麻烦。

+

借助 Clear Linux OS swupd,则可在个别文件级别进行版本管理。也就是说,Clear Linux OS 会生成全新的操作系统版本,且附带对系统所做的所有软件更改,其中包括软件降级或删除。此滚动发布版本管理模型类似于 git 内部版本跟踪,会跟踪所有单个文件提交并在更改时将指针前移。

+

表示操作系统当前版本的数字,描述操作系统上所有软件的版本。每个内部版本均由一组特定的 bundle 文件组成,而这些 bundle 文件则由特定版本的软件包组成。如果系统管理员日常需要确定哪些系统缺少最新安全修复程序,或哪些软件组合已经过测试,这对他们来说十分重要。对于同一数字的每个版本,均可以保证包含相同版本的软件,因此在运行同一版本的 Clear Linux OS 的两个系统之间不会产生混淆。

+
+
+

更新中

+

Clear Linux OS 默认强制定期更新操作系统,并自动对照版本服务器检查是否存在更新。内容服务器提供针对所有版本的文件和元数据内容,并可与版本服务器相同。内容 URL 服务器以清单形式提供元数据,列出并描述文件内容、符号链接和目录。此外,实际内容还会以存档文件的形式提供给客户端。

+

Clear Linux OS 的软件更新也十分高效。与基于软件包的发行版不同,swupd 只会更新已更改的文件,而非整个软件包。例如,操作系统安全补丁大小经常只有 15 KB。通过使用二进制增量,Clear Linux OS 可只应用所需的内容。

+

有关如何为 Clear Linux OS 生成更新内容的详细信息,请参阅 mixer 工具。

+
+
+
+

工作原理

+
+

必备条件

+ +
+
+

更新

+

Clear Linux OS 更新默认自动进行,但也可设为按需进行。swupd 可确保定期更新既简单又安全。它还可检查当前已安装文件和软件的有效性,并可更正所有问题。

+
+

清单

+

Clear Linux OS 软件更新内容由数据和元数据组成。数据是指操作系统中的文件。元数据包含将数据正确配置到操作系统文件系统、更新系统以及向操作系统添加或删除其他内容所需的相关信息。

+

清单多为用于描述内容的长哈希列表。每个 bundle 文件均有自己的清单文件。主清单文件描述了所有清单,可以将其绑定在一起。

+
+
+

完整文件、数据包和增量包

+

要加速更新并优化内容交付,可通过以下方法获取配置到系统的更新数据:

+
    +
  • 在每个版本中,始终会为每个文件生成完整文件。此操作可让所有 Clear Linux OS 直接获取每个版本的精确内容副本。例如,如果操作系统验证需替换单个文件,则可使用此操作。
  • +
  • 数据包可用于某些版本。它们将大量文件进行组合,从而加速安装介质制作过程,加快大型更新过程。
  • +
  • 增量包是只包含更新(二进制差异)的优化版本的数据包。如果没有原始文件内容,则无法使用。
  • +
+
+
+ +
+
+

示例

+
+

例 1:禁用和启用自动更新

+

Clear Linux OS 更新默认自动进行,但也可设为按需进行。

+
    +
  1. 验证当前的自动更新设置。

    +
    sudo swupd autoupdate
    +
    +
    +

    输出:

    +
    Enabled
    +
    +
    +
  2. +
  3. 禁用自动更新。

    +
    sudo swupd autoupdate --disable
    +
    +
    +

    输出:

    +
    Warning: disabling automatic updates may take you out of compliance with your IT policy
    +
    +Running systemctl to disable updates
    +Created symlink /etc/systemd/system/swupd-update.service → /dev/null.
    +Created symlink /etc/systemd/system/swupd-update.timer → /dev/null.
    +
    +
    +
  4. +
  5. 手动检查是否存在更新。

    +
    sudo swupd check-update
    +
    +
    +
  6. +
  7. 确定所需的更新后对其进行安装。

    +
    sudo swupd update --version <version number>
    +
    +
    +
  8. +
  9. 再次启用自动安装。

    +
    sudo swupd autoupdate --enable
    +
    +
    +
  10. +
+
+
+

例 2:查找并安装 Kata 容器*

+

Kata 容器是一种常见的容器实现。与其他容器实现不同,每个 Kata 容器均有自己的内核实例,在自己的 虚拟机 上运行,增强了安全性。

+

虽然存在大量依存关系,但由于您只需添加一个 bundle 文件便可使用 Kata Containers containers-virt,因此 Clear Linux OS 大大简化了安装过程。此外,请查阅教程:Kata Containers*

+
    +
  1. 找到正确的 bundle 文件。

    +

    要返回搜索字符串的所有潜在匹配项,请输入 swupd search,后跟“kata”:

    +
    sudo swupd search kata
    +
    +
    +

    输出如下所示:

    +
    Bundle with the best search result:
    +
    +containers-virt - Run container applications from Dockerhub in
    +lightweight virtual machines
    +
    +This bundle can be installed with:
    +
    +     swupd bundle-add  containers-virt
    +
    +Alternative bundle options are
    +
    +     cloud-native-basic - Contains ClearLinux native software for Cloud
    +
    +
    +
    +

    注解

    +

    如果未出现包含特定字词的搜索结果,请缩短搜索字词后重试。例如,使用 kube 而非 kubernetes

    +
    +
  2. +
  3. 添加 bundle 文件。

    +
    sudo swupd bundle-add containers-virt
    +
    +
    +
    +

    注解

    +

    要添加多个 bundle 文件,请添加一个空格,后跟 bundle 文件名称。

    +
    +

    成功安装的输出如下所示:

    +
    Downloading packs...
    +
    +Extracting containers-virt pack for version 24430
    +    ...50%
    +Extracting kernel-container pack for version 24430
    +    ...100%
    +Starting download of remaining update content. This may take a while...
    +    ...100%
    +Finishing download of update content...
    +Installing bundle(s) files...
    +    ...100%
    +Calling post-update helper scripts.
    +Successfully installed 1 bundle
    +
    +
    +
  4. +
+
+
+

例 3:验证并更正系统文件不匹配错误

+

swupd 可确定是否已添加、覆盖、删除或修改系统目录和文件(例如权限)。

+
sudo swupd diagnose
+
+
+

swupd 所监控的所有目录均会根据清单数据进行验证。哈希不匹配项将按如下方式进行标记:

+
Verifying version 23300
+Verifying files
+   ...0%
+Hash mismatch for file: /usr/bin/chardetect
+...
+...
+Hash mismatch for file: /usr/lib/python3.6/site-packages/urllib3/util/wait.py
+   ...100%
+Inspected 237180 files
+   423 files did not match
+Verify successful
+
+
+

在此情况下,安装在默认安装之上的 Python* 软件包将被标记为不匹配。swupd 可根据命令行选项指令来忽略或修复问题。

+

swupd 可更正检测到的所有问题。还可以添加其他指令,其中包括要忽略的目录的白名单。

+

以下命令可修复问题,删除未知项目,忽略匹配 /usr/lib/python 的文件或目录:

+
sudo swupd repair --picky --picky-whitelist=/usr/lib/python
+
+
+
+
+
+

快速参考

+
+
swupd info
+
返回当前安装的版本和更新服务器。
+
swupd update <version number>
+
如果未使用参数,则更新到特定版本或最新版本。
+
swupd bundle-list [–all]
+
列出已安装的 bundle 文件。
+
swupd bundle <search term>
+
查找包含搜索字词的 bundle 文件。
+
swupd bundle-add <bundle name>
+
添加 bundle 文件。
+
swupd bundle-remove <bundle name>
+
删除 bundle 文件。
+
swupd –help
+
列出其他 swupd 命令。
+
man swupd
+
打开 swupd 手册页。
+
+

请参阅 GitHub 上的 swupd source documentation,了解更多详细信息。

+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/clear/telemetrics.html b/zh_CN/guides/clear/telemetrics.html new file mode 100644 index 000000000..7b4e8a4e3 --- /dev/null +++ b/zh_CN/guides/clear/telemetrics.html @@ -0,0 +1,1636 @@ + + + + + + + + + + + + + + 遥测 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

遥测

+

本指南描述了 Clear Linux* OS 遥测解决方案。

+
+

重要

+

Clear Linux OS 中的遥测为 opt-in。遥测客户端未处于活动状态,且在您将其显式启用之前不发送任何数据。

+
+
+

注解

+

遥测功能遵从涉及收集和使用 PII英特尔隐私条款,同时也是开源功能。

+

系统不会蓄意收集涉及用户或系统所有者的可识别身份的信息。

+
+ +
+

概述

+

Clear Linux OS 中的遥测是用于收集来自正在运行的 Clear Linux OS 系统的数据的客户端/服务器解决方案,有助于快速确定和修复操作系统中的错误。客户端和服务器均可定制,而客户端则可使用 API 检测代码,进行调试和分析。

+

借助遥测这一 Clear Linux OS 的主要功能,开发人员可在最终用户受到影响之前观察并主动解决操作系统中存在的问题。

+

遥测 (Telemetrics) 是由以下项组成的组合词:

+
    +
  • 遥测 (Telemetry),即感知和报告数据。
  • +
  • 分析 (Analytics),即使用可视化和统计推理探究报告数据的意义。
  • +
+

Clear Linux OS 遥测使用专用探针来报告系统级调试/崩溃信息。探针可监控系统任务,例如 swupd、内核 oops、机器错误检查以及未处理硬件故障的 BIOS 错误报告表。遥测可以实时报告问题,以便系统开发人员快速关注问题并监控更正措施。

+

Clear Linux OS 遥测支持完全定制,可在软件开发期间用于调试。可以在代码中使用 libtelemetry 库来创建定制遥测记录。还可以在脚本文件中使用 telem-record-gen 实用程序创建轻触记录,其中检测代码文件并无作用。

+

Clear Linux OS 遥测解决方案是客户端上的一个选择启用选项。默认情况下,禁用遥测客户端,直到用户选择将其启用。本指南介绍如何启用客户端。

+
+

体系架构

+

Clear Linux OS 遥测有两大基本组件,如图 1 所示:

+
    +
  • 客户端:通过网络生成记录并将其传送到后端服务器。
  • +
  • 后端:接收客户端发来的记录,通过专门的 Web 界面显示累积的内容。
  • +
+
+Figure 1, Telemetry Architecture +

图 1: |CL| Telemetry Architecture

+
+

遥测客户端提供遥测解决方案的前端,同时还包括以下组件:

+
    +
  • telemprobd 是一个守护程序,用于接收并准备探针的遥测记录,并将其假脱机至磁盘。
  • +
  • telempostd 是一个守护程序,根据可配置设置管理假脱机的遥测记录并提供这些记录。
  • +
  • probes,从操作系统收集特定类型的数据。
  • +
  • libtelemetry,遥测探针用于创建记录的 API。
  • +
+

遥测后端提供遥测解决方案的服务器端组件且包括:

+
    +
  • Nginx Web 服务器。
  • +
  • 两个 Flask 应用:
      +
    • Collector,针对从客户端探针所接收记录的接入式网络应用。
    • +
    • TelemetryUI,通过不同视图实现遥测数据可视化的网络应用。
    • +
    +
  • +
  • PostgreSQL 作为底层数据库服务器。
  • +
+
+

注解

+

默认遥测后端服务器由英特尔 Clear Linux OS 开发团队托管,且无法在英特尔防火墙之外查看。要收集个人记录,必须设置自己的遥测后端服务器。

+
+
+
+
+

使用方法

+

从工作流角度来看,Clear Linux OS 遥测系统非常简单。在客户端,安装和启用遥测技术之后的主要决策涉及如何处理探针生成的记录数据。可以将数据发送到默认或定制后端服务器,也可将此数据保留在系统本地,或同时执行二者。后端服务器的设置更为复杂,但一旦运行,它就极易使用和配置。

+

本节介绍配置 Clear Linux OS 遥测系统的部分潜在场景,并根据需求提供有意义的建议。

+
+

场景

+
    +
  1. 启用遥测技术:

    +

    必须启用遥测客户端守护程序,探针才能生成记录。创建定制 telemetrics.conf 文件,将其存储在 /etc/telemetrics 目录中,可以在启用前配置客户端。如果选择使用默认设置,则会将记录发送到英特尔 Clear Linux OS 开发团队所管理的遥测后端服务器。

    +
  2. +
  3. 本地保存记录数据:

    +

    可以配置遥测客户端,在本地保存记录。在开发周期中需要即时反馈或是认为存在特定于计算机的问题以便跟踪系统问题时,此功能非常方便。可以将客户端设为完全不发送记录,或是将记录保存在本地并发送到后端服务器。

    +
  4. +
  5. 设置服务器以收集数据:

    +

    无论是管理 Clear Linux OS 系统网络,还是不想将记录发送到默认遥测服务器,均可设置后端服务器来收集个人记录。后端服务器可安装在任意 Linux 系统上,并为您提供与默认服务器相同的控制台。

    +
  6. +
  7. 通过 libtelemetry API 检测代码:

    +

    telemetrics bundle 文件包括 libtelemetry C 库,可以提供 telemprobd 和 telempostd 守护程序所用的 API。同时,也可以在应用程序中使用这些守护程序。相关 API 文档位于 Telemetrics client 存储库的 telemetry.h 文件中。

    +
  8. +
+
+
+
+

示例

+ +
+

启用或禁用遥测

+
    +
  1. 在安装期间启用:

    +

    在初始安装 Clear Linux OS 期间,系统会要求加入稳定性增强计划,允许 Clear Linux OS 收集匿名报告,提高系统稳定性。如果选择不加入此计划,则不会将遥测软件 bundle 文件添加到系统中。选择加入此计划,则会在安装完成后自动在系统上启用遥测技术。

    +
  2. +
  3. 安装后启用:

    +

    要在系统上启动遥测,请运行以下命令:

    +
    sudo telemctl start
    +
    +
    +

    此命令将启用并启动 telemprobdtelempostd 守护程序。系统随即开始将遥测数据发送到文件 /etc/telemetrics/telemetrics.conf 中所定义的服务器。如果此文件不存在,telemprobdtelempostd 守护程序则会使用文件 /usr/share/defaults/telemetrics/telemetrics.conf

    +
  4. +
  5. 安装后禁用:

    +

    要禁用这两个遥测守护程序,请运行以下命令:

    +
    sudo telemctl stop
    +
    +
    +
  6. +
  7. 选择启用遥测技术:

    +

    要选择启用遥测服务,只需输入选择启用命令,也会启动服务:

    +
    sudo telemctl opt-in
    +
    +
    +

    此操作将删除 /etc/telemetrics/opt-out 文件(如果存在)并启动遥测服务。

    +
    +

    注解

    +

    要选择启用而非立即启动遥测服务,则需在输入 opt-in 命令后运行命令 sudo telemctl stop。准备好启动服务后,输入命令 sudo telemctl start

    +
    +
  8. +
  9. 选择禁用遥测技术:

    +

    要停止发送来自系统的遥测数据,请选择禁用遥测服务:

    +
    sudo telemctl opt-out
    +
    +
    +

    此操作将创建文件 /etc/telemetrics/opt-out 并停止遥测服务。

    +
  10. +
+
+
+

本地保存数据

+

本例要求安装 Clear Linux OS 并在系统上启用遥测技术。

+

要更改记录的管理方式,请将默认的 /usr/share/defaults/telemetrics/telemetrics.conf 文件复制到 /etc/telemetrics/telemetrics.conf 并对其进行编辑。/etc/telemetrics/telemetrics.conf 文件中的更改会覆盖 /usr/share/defaults/telemetrics/telemetrics.conf 文件中的默认值。您可能需要 root 权限才能在 /etc 中创建和编辑文件。在每个示例中,每次对配置文件进行更改时,均需重新启动客户端守护程序才能接受更改:

+
sudo telemctl restart
+
+
+

使用 telemctl journal 命令可以访问遥测日志的各项功能和选项,有助于进行系统分析和调试。telemctl journal 提供众多选项来协助过滤记录。使用 -h--help 查看使用情况选项。

+
    +
  1. 保留本地副本并将记录发送到后端服务器:

    +

    要保留遥测记录的本地副本并将其发送到后端服务器,需将 record_retention_enabled 配置键值更改为 true

    +
  2. +
  3. 保留所有记录 - 不发送到后端服务器:

    +

    要保留系统上的记录而不将其发送到后端服务器,请将 record_server_delivery_enabled 键值设为 false。请注意,您可能还需确保 record_retention_enabled 配置键值已设为 true,否则系统不会保留本地副本。

    +
  4. +
  5. 保留记录并将其发送到定制服务器:

    +

    此操作假设您已根据下例设置了定制服务器。

    +

    此服务器通过 server 设置确定,且默认将记录发送到 Clear Linux OS 服务器 server=https://clr.telemetry.intel.com/v2/collector。要更改此设置,可使用 IP 地址或完全限定域名。

    +
  6. +
+
+
+

设置后端服务器以收集遥测记录

+

在本例中,请先使用 使用实时服务器将 Clear Linux* OS 安装在裸机上 入门指南和以下内容在新系统上完整安装 Clear Linux OS:

+
    +
  1. 加入 Stability Enhancement Program,安装和启用遥测组件。

    +
  2. +
  3. 选择采用以下设置的手动安装方法:

    +
      +
    • 将主机名设为 clr-telem-server
    • +
    • 创建名为 clear 的管理用户并将其添加到 sudo 用户组
    • +
    +
  4. +
  5. 以管理用户身份登录,在 $HOME 目录中运行 git,将 telemetrics-backend 存储库克隆到 $HOME/telemetrics-backend 目录:

    +
    git clone https://github.com/clearlinux/telemetrics-backend
    +
    +
    +
    +

    注解

    +

    如果访问 github.com 时出现问题,则最好设置 https_proxy 环境变量。

    +
    +
  6. +
  7. 将当前工作目录更改为 telemetrics-backend/scripts

    +
  8. +
  9. 在下一步利用 deploy.sh 脚本文件安装遥测后端之前,请查看此处关于指定选项的说明:

    +
      +
    • -a install 用于安装
    • +
    • -d clr 用于安装到 Clear Linux OS 发行版
    • +
    • -H localhost 用于将域设为 localhost
    • +
    +
    +

    警告

    +

    deploy.sh shell 脚本附带小规模错误检查机制,并可对系统进行某些更改。在继续操作之前,请确保您在命令行上定义的选项正确无误。

    +
    +
  10. +
  11. $HOME/telemetrics-backend/scripts 目录中运行此 shell 脚本:

    +
    ./deploy.sh -H localhost -a install -d clr
    +
    +
    +

    此脚本将启动并列出所有已定义的选项并提示输入 PostgreSQL 数据库密码。

    +
    Options:
    + host: localhost
    + distro: clr
    + action: install
    + repo: https://github.com/clearlinux/telemetrics-backend
    + source: master
    + type: git
    + DB password: (default: postgres):
    +
    +
    +
  12. +
  13. 对于 DB password:,请按 Enter 键接受默认密码 postgres

    +
    +

    注解

    +

    deploy.sh 脚本使用 sudo 运行命令,而系统在执行脚本时则随时可能会提示您输入用户密码。如果出现此情况,请输入用户密码,执行 sudo 命令。

    +
    +
  14. +
  15. 所有服务器组件均已安装后,系统将提示输入 PostgreSQL 数据库密码,如下所示对其进行更改:

    +
    Enter password for 'postgres' user:
    +New password:
    +Retype new password:
    +passwd: password updated successfully
    +
    +
    +

    输入此密码的当前值 postgres,然后输入新密码。接着,再次输入此密码进行验证, PostgreSQL 数据库密码随即更新。

    +
  16. +
  17. 安装完成后,可以打开系统浏览器,在地址栏中输入 localhost,使用 Web 浏览器查看新服务器。您应看到下面图 2 所示的网页。

    +
    +Telemetry UI +

    图 2: Telemetry UI

    +
    +
  18. +
+
+
+

使用 telem-record-gen 创建记录

+

遥测 bundle 文件提供名为 telem-record-gen 的记录生成器工具。无法以 C 语言编写探针时,便可使用此工具从 shell 脚本或命令行创建记录。记录将发送到后端服务器,同时还可返回 stdout。

+

有三种方法可将有效负载提供给记录。

+
    +
  1. 在命令行中,使用 -p <string> 选项:

    +
    telem-record-gen -c a/b/c -n -o -p 'payload goes here'
    +
    +
    +
    record_format_version: 4
    +classification: a/b/c
    +severity: 1
    +machine_id: FFFFFFFF
    +creation_timestamp: 1539023189
    +arch: x86_64
    +host_type: innotek GmbH|VirtualBox|1.2
    +build: 25180
    +kernel_version: 4.14.71-404.lts
    +payload_format_version: 1
    +system_name: clear-linux-os
    +board_name: VirtualBox|Oracle Corporation
    +cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz
    +bios_version: VirtualBox
    +event_id: 2236710e4fc11e4a646ce956c7802788
    +
    +payload goes here
    +
    +
    +
  2. +
  3. 通过 -P path/to/file 选项指定包含此有效负载的文件。

    +
    telem-record-gen -c a/b/c -n -o -P ./payload_file.txt
    +
    +
    +
    record_format_version: 4
    +classification: a/b/c
    +severity: 1
    +machine_id: FFFFFFFF
    +creation_timestamp: 1539023621
    +arch: x86_64
    +host_type: innotek GmbH|VirtualBox|1.2
    +build: 25180
    +kernel_version: 4.14.71-404.lts
    +payload_format_version: 1
    +system_name: clear-linux-os
    +board_name: VirtualBox|Oracle Corporation
    +cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz
    +bios_version: VirtualBox
    +event_id: d73d6040afd7693cccdfece479df9795
    +
    +payload read from file
    +
    +
    +
  4. +
  5. 如果不使用 -p-P 选项,此工具则会从 stdin 读取,以便您在脚本的 heredoc 中使用。

    +
    #telem-record-gen -c a/b/c -n -o << HEOF
    +payload read from stdin
    +HEOF
    +
    +
    +
    record_format_version: 4
    +classification: a/b/c
    +severity: 1
    +machine_id: FFFFFFFF
    +creation_timestamp: 1539023621
    +arch: x86_64
    +host_type: innotek GmbH|VirtualBox|1.2
    +build: 25180
    +kernel_version: 4.14.71-404.lts
    +payload_format_version: 1
    +system_name: clear-linux-os
    +board_name: VirtualBox|Oracle Corporation
    +cpu_model: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz
    +bios_version: VirtualBox
    +event_id: 2f070e8e71679f2b1f28794e3a6c42ee
    +
    +payload read from stdin
    +
    +
    +
  6. +
+
+
+

设置静态计算机 ID

+

出于隐私,遥测客户端报告的计算机 ID 每三天轮换一次。如果希望获得测试用的静态计算机 ID,则可在 /etc/telemetrics/ 目录中创建名为 opt-in-static-machine-id 的文件来选择启用。

+
    +
  1. 创建 telemetrics 目录。

    +
    sudo mkdir -p /etc/telemetrics
    +
    +
    +
  2. +
  3. 创建文件并将 “unique machine ID” 替换为所需的静态计算机 ID。

    +
    echo "unique machine ID" | sudo tee /etc/telemetrics/opt-in-static-machine-id
    +
    +
    +
  4. +
+
+

注解

+

该计算机 ID 不同于系统主机名。

+
+
+
+

通过 libtelemetry API 检测代码

+
+

必备条件

+

确认遥测头文件位于系统上的 usr/include/telemetry.h。此文件的 latest version 也可在 Github 上找到,以供参考,但安装 telemetry bundle 文件会安装匹配 Clear Linux OS 版本的头文件。

+
    +
  1. include 与变量:

    +

    必须在代码中包含以下标头才能使用 API:

    +
    #define _GNU_SOURCE
    +#include <stdlib.h>
    +#include <stdio.h>
    +#include <string.h>
    +#include <telemetry.h>
    +
    +
    +

    使用下述代码创建所需变量,以容纳用于创建记录的数据:

    +
    uint32_t severity = 1;
    +uint32_t payload_version = 1;
    +char classification[30] = "org.clearlinux/hello/world";
    +struct telem_ref *tm_handle = NULL;
    +char *payload;
    +int ret = 0;
    +
    +
    +
    +
    严重性:
    +

    类型:uint32_t 值:“严重性”字段值。可接受值介于 1-4 之间,其中 1 表示严重性最低,4 则表示严重性最高。超出此范围的值将被限定为 1 或 4。[low, med, high, crit]

    +
    +
    Payload_version:
    +

    类型:uint32_t 值:有效负载格式版本。目前唯一支持的值为 1,表示有效负载为自由格式化(非结构化)的字符串。大于 1 的值将保留以供未来使用。

    +
    +
    分类:
    +

    类型:字符数组值:它应采用 DOMAIN/PROBENAME/REST 形式:DOMAIN 是用作探针命名空间的反向域(例如 org.clearlinux),PROBENAME 是探针的名称,REST 则是探针用于对记录进行分类的任意值。分类字符串的最大长度为 122 个字节。每个子类别的长度不超过 40 个字节。需使用两个斜线 (/) 分隔符。

    +
    +
    Tm_handle:
    +

    类型:Telem_ref 结构指针值:调用者声明的结构指针。如果函数返回成功,则初始化此结构。

    +
    +
    有效负载:
    +

    类型:结构指针值:要设置的有效负载

    +
    +
    +
  2. +
  3. 在本例中,我们使用 asprintf() 将有效负载设为“hello”:

    +
    if (asprintf(&payload, "hello\n") < 0) {
    +  exit(EXIT_FAILURE);
    +   }
    +
    +
    +

    函数 asprintf()vasprintf()sprintf(3)vsprintf(3) 类似,除了它们分配一个足够大的字符串来容纳包括终止空字节 (‘0’) 在内的输出,并通过第一个自变量向其返回一个指针。该指针应传递给 free(3),以便在不再需要时释放已分配的存储空间。

    +
  4. +
  5. 创建新的遥测记录:

    +

    函数 tm_create_record() 可初始化遥测记录并设置此记录的严重性和分类,以及有效负载版本号。存储遥测记录所需的内存已分配,且应在不再需要时通过 tm_free_record() 来释放。

    +
    if ((ret = tm_create_record(&tm_handle, severity,    classification, payload_version)) < 0) {
    +printf("Failed to create record: %s\n", strerror(-ret));
    +ret = 1;
    +goto fail;
    +}
    +
    +
    +
  6. +
  7. 设置遥测记录的有效负载字段:

    +

    函数 tm_set_payload() 可将所提供的遥测记录数据附加到遥测记录中。当前最大有效负载大小为 8192b。

    +
    if ((ret = tm_set_payload(tm_handle, payload)) < 0) {
    +   printf("Failed to set record payload: %s\n", strerror(-ret));
    +   ret = 1;
    +   goto fail;
    +}
    +free(payload);
    +
    +
    +

    函数 free() 可释放 ptr 指向的内存空间,而 ptr 必须通过先前对 malloc()calloc()realloc() 的调用返还。否则(或者如果此前曾调用 free(ptr)),则会出现未定义的行为。如果 ‘ptr’ 为空,则不会执行任何操作。

    +
  8. +
  9. 将记录发送到遥测守护程序:

    +

    函数 tm_send_record() 向本地 telemprobd(1) 服务提供记录。由于遥测记录是程序分配的,因此不再需要时,应通过 tm_free_record() 释放。

    +
    if ((ret = tm_send_record(tm_handle)) < 0) {
    +   printf("Failed to send record to daemon: %s\n", strerror(-ret));
    +   ret = 1;
    +   goto fail;
    +} else {
    +   printf("Successfully sent record to daemon.\n");
    +   ret = 0;
    +}
    +fail:
    +tm_free_record(tm_handle);
    +tm_handle = NULL;
    +
    +return ret;
    +
    +
    +
  10. +
  11. 带编译标志的完整示例应用程序:

    +

    创建新文件 test.c 并添加如下代码:

    +
    #define _GNU_SOURCE
    +#include <stdlib.h>
    +#include <stdio.h>
    +#include <string.h>
    +#include <telemetry.h>
    +
    +int main(int argc, char **argv)
    +{
    +      uint32_t severity = 1;
    +      uint32_t payload_version = 1;
    +      char classification[30] = "org.clearlinux/hello/world";
    +      struct telem_ref *tm_handle = NULL;
    +      char *payload;
    +
    +      int ret = 0;
    +
    +      if (asprintf(&payload, "hello\n") < 0) {
    +              exit(EXIT_FAILURE);
    +      }
    +
    +      if ((ret = tm_create_record(&tm_handle, severity, classification, payload_version)) < 0) {
    +              printf("Failed to create record: %s\n", strerror(-ret));
    +              ret = 1;
    +              goto fail;
    +      }
    +
    +      if ((ret = tm_set_payload(tm_handle, payload)) < 0) {
    +              printf("Failed to set record payload: %s\n", strerror(-ret));
    +              ret = 1;
    +              goto fail;
    +      }
    +
    +      free(payload);
    +
    +      if ((ret = tm_send_record(tm_handle)) < 0) {
    +              printf("Failed to send record to daemon: %s\n", strerror(-ret));
    +              ret = 1;
    +              goto fail;
    +      } else {
    +              printf("Successfully sent record to daemon.\n");
    +              ret = 0;
    +      }
    +fail:
    +      tm_free_record(tm_handle);
    +      tm_handle = NULL;
    +
    +      return ret;
    + }
    +
    +
    +

    使用以下命令通过 gcc 编译器进行编译:

    +
    gcc test.c -ltelemetry -o test_telem
    +
    +
    +

    测试以确保程序正在运行:

    +
    ./test_telem
    +Successfully sent record to daemon.
    +
    +
    +
    +

    注解

    +

    源代码中记录了以 C 语言编写的 heartbeat probe 的完整示例。

    +
    +
  12. +
+
+
+
+
+

参考

+ +
+

遥测 API

+

安装 telemetrics bundle 文件包括 libtelemetry C 库,可以提供 telemprobd 和 telempostd 守护程序所用的 API。同时,也可以在应用程序中使用这些守护程序。相关 API 文档位于 Telemetrics client 存储库的 telemetry.h 文件中。

+
+
+

客户端配置

+

遥测客户端会查找位于 /etc/telemetrics/telemetrics.conf 中的配置文件。如果存在,则会使用。如果此文件不存在,客户端则会使用位于 /usr/share/defaults telemetrics/telemetrics.conf 的默认配置。要修改或定制配置,请将此文件从 /usr/share/defaults/telemetrics 复制到 /etc/telemetrics 并对其进行编辑。

+
+

配置选项

+

客户端使用配置文件中的以下配置选项:

+
+
服务器
+
此选项指定接收 telempostd 发送的遥测记录的网络服务器。
+
socket_path
+
此选项指定 telemprobd 在其上侦听探针连接的 unix 域套接字路径。
+
spool_dir
+
此配置选项与假脱机相关。如果守护程序因网络可用性等原因无法将遥测记录发送到后端服务器,则会将记录存储在假脱机目录中。此选项指定了假脱机目录的路径。此目录的所有者应与守护程序的所有者为同一用户。
+
record_expiry
+
此选项为时间选项(以分钟为单位)。超过此时间后,守护程序会删除假脱机目录中的记录。
+
spool_process_time
+
此选项指定了在检查假脱机目录是否存在记录之前,守护程序等待的时间间隔(以秒为单位)。守护程序将按修改日期顺序选取记录,并尝试将记录发送到服务器。它一次最多可发送 10 条记录。如果无法成功发送记录,则会从假脱机目录中删除此记录。如果守护程序找到早于 “record_expiry” 时间的记录,则会删除此记录。守护程序在单个假脱机运行循环中最多会查找 20 条记录。
+
rate_limit_enabled
+
此选项将确定是启用还是禁用速率限制。启用后,在某一时间窗口内发送的两个记录均有一个阈值,同时记录在一个窗口内一次发送的字节数。
+
record_burst_limit
+
此选项是指守护程序在 record_window_length 时间内允许传递的最大记录数。如果将其设为 -1,则会禁用针对记录突发的速率限制。
+
record_window_length
+
此选项为时间选项(以分钟为单位 (0-59)),用于设定 record_burst_limit 的窗口长度。例如:如果 record_burst_window = 1000 且 record_window_length = 15,则在任意给定的 15 分钟窗口内可传递的记录数不会超过 1,000 条。
+
byte_burst_limit
+
此选项是指守护程序在 byte_window_length 时间内可传递的最大字节数。如果将其设为 -1,则会禁用针对字节突发的速率限制。
+
byte_window_length
+
此选项为时间选项(以分钟为单位 (0-59)),用于设定 byte_burst_limit 的窗口长度。
+
rate_limit_strategy
+
此选项是指在达到速率限制阈值后所选择的策略。目前,选项为“drop”或“spool”,其中 spool 为默认值。如果选择 spool,则会对记录进行假脱机并在以后发送。
+
record_retention_enabled
+
启用此键 (true) 后,守护程序会在磁盘上保存所有有效记录中有效负载的副本。为避免过多使用磁盘空间,系统仅保留最近的 100 条记录。此配置键的默认值为 false。
+
record_server_delivery_enabled
+
+
此键控制向服务器传送记录;启用(默认值)后,会将记录发送到配置文件中所列的地址。如果禁用此配置键 (false),则不会对记录进行假脱机或将记录发布到后端。此配置键可与 record_retention_enabled 搭配使用,仅在本地保留遥测记录的副本。
+
+

注解

+

随着遥测客户端的发展,配置选项可能会发生变化。请使用文件自身所附带的注释,作为最准确的配置参考。

+
+
+
+
+
+
+

客户端运行时选项

+

Clear Linux OS 遥测客户端提供名为 telemctl 的管理工具,可用于管理遥测服务和探针。此工具位于 /usr/bin。如果不带参数运行此工具,则会导致如下情况:

+
sudo telemctl
+
+
+
/usr/bin/telemctl - Control actions for telemetry services
+  stop       Stops all running telemetry services
+  start      Starts all telemetry services
+  restart    Restarts all telemetry services
+  is-active  Checks if telemprobd and telempostd are active
+  opt-in     Opts in to telemetry, and starts telemetry services
+  opt-out    Opts out of telemetry, and stops telemetry services
+  journal    Prints telemetry journal contents. Use -h argument for more
+             options
+
+
+
+

start/stop/restart

+

用于启动、停止和重新启动遥测服务的命令可以管理系统上所有必要的服务和探针。无需单独启动/停止/重新启动两个客户端守护程序 telemprobd 和 telempostd。restart 命令选项将调用 telemctl stop,然后调用 telemctl start

+
+
+

is-active

+

is-active 选项报告这两个客户端守护程序是否处于活动状态。这有助于验证 opt-inopt-out 选项是否生效,或确保遥测正在系统上运行。请注意,系统会对两个守护程序都进行验证。

+
sudo telemctl is-active
+
+
+
telemprobd : active
+telempostd : active
+
+
+
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/index.html b/zh_CN/guides/index.html new file mode 100644 index 000000000..1e695e65c --- /dev/null +++ b/zh_CN/guides/index.html @@ -0,0 +1,1132 @@ + + + + + + + + + + + + + + 指南 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+ + + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/kernel/kernel-development.html b/zh_CN/guides/kernel/kernel-development.html new file mode 100644 index 000000000..ac6d52905 --- /dev/null +++ b/zh_CN/guides/kernel/kernel-development.html @@ -0,0 +1,1423 @@ + + + + + + + + + + + + + + 内核开发 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

内核开发

+

本指南介绍了如何使用 Clear Linux* OS 开发工具获取和编译 Linux* 内核源代码。

+ +
+

概述

+

Clear Linux OS 中的 内核 追求高效和实用。在某些情况下,您可能需要根据自身的具体需求修改内核,而开发人员也可能需要修改内核来测试新的内核代码。

+

所有 Clear Linux OS 内核也提供了 Source RPMs (SRPMS),它可用于开发目的。

+
+
+

Clear Linux OS 内核中包含了请求变更

+

如果您需要的内核修改已经开源,并且可能对其他人也有用,请考虑提交一个请求,将其包含在 Clear Linux OS 内核中。如果您的变更请求被接受,则不需要维护自己修改过的内核。

+

向 GitHub* 上的 Clear Linux OS Distribution Project 提出增强请求。

+
+
+

设置内核开发环境

+

在某些情况下,您可能需要根据自身的具体需求或者为了测试新的内核代码而修改内核。

+

您可以构建和安装自定义内核;但是,您必须:

+
    +
  • 禁用安全引导
  • +
  • 在以后维护任何内核更新
  • +
+

要创建自定义内核,请先从 Clear Linux OS 开发环境开始。然后修改、构建和安装内核。

+
+

安装 Clear Linux OS 开发工具框架

+

在 Clear Linux OS 中构建源代码所需的工作空间和工具设置操作大多数可通过设置脚本自动执行。该设置脚本使用来自 os-clr-on-clr 捆绑包的工具。

+

该设置脚本会在 clearlinux 文件夹(其中包含 Makefilepackagesprojects 子文件夹)中创建一个工作空间。projects 文件夹包含在 Clear Linux OS 中制作软件包的主要工具,即 autospeccommon

+

按照以下步骤设置构建代码所需的工作空间和工具:

+
    +
  1. 安装 os-clr-on-clr 捆绑包:

    +
    sudo swupd bundle-add os-clr-on-clr
    +
    +
    +
  2. +
  3. 下载 user-setup.sh 脚本:

    +
    curl -O https://raw.githubusercontent.com/clearlinux/common/master/user-setup.sh
    +
    +
    +
  4. +
  5. 制作 user-setup.sh 可执行文件:

    +
    chmod +x user-setup.sh
    +
    +
    +
  6. +
  7. 以非特权用户的身份运行脚本:

    +
    ./user-setup.sh
    +
    +
    +
  8. +
  9. 脚本完成后,注销并再次登录以完成设置过程。

    +
  10. +
  11. 在系统上设置存储库的 Git 用户电子邮件和用户名:

    +
    git config --global user.email "you@example.com"
    +git config --global user.name "Your Name"
    +
    +
    +

    此全局设置由使用 Git 的 Clear Linux OS 工具使用。

    +
  12. +
+
+
+

克隆内核包

+

首先从 Clear Linux OS 克隆现有的内核包存储库。

+
    +
  1. 从 Clear Linux OS 克隆 Linux 内核包。在 clearlinux/ 目录下使用 make clone_<PACKAGENAME> 命令,从 GitHub 上的 clearlinux-pkgs 存储库克隆内核包。

    +
    cd ~/clearlinux
    +make clone_linux
    +
    +
    +
  2. +
  3. 导航到克隆的内核包目录。

    +
    cd ~/clearlinux/packages/linux
    +
    +
    +
  4. +
+

“linux” 包是 kernel-native 捆绑包中随 Clear Linux OS 附带的内核。您也可以使用不同的内核变体,并在其基础上进行修改。有关可以克隆的内核包名称列表,请参阅 GitHub 上的 clearlinux-pkgs 存储库。

+
+

注解

+

一开始先提取 Clear Linux OS 内核包的最新版本。此外可以使用 git checkout tag/<TAG_NAME>,并通过切换到不同的 git 标签来提取旧版本。

+
+
+
+

更改内核版本

+

Clear Linux OS 倾向于使用来自 Linux 上游 kernel.org 的最新内核。在 RPM SPEC 文件中可以更改将构建的内核版本。虽然 Clear Linux 中的大多数包通常使用 autospec 打包,但内核不是。这意味着 autospec 提供的控制文件不可用,必须手动进行更改。

+
    +
  1. 在编辑器中打开 Linux 内核包 RPM SPEC 文件。

    +
    $EDITOR linux.spec
    +
    +
    +
  2. +
  3. 修改文件顶部的 Version、Release 和 Source0 URL 条目,以更改将要编译的 Linux 内核版本。

    +

    当前和可用内核版本的列表可在 kernel.org 上找到。

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    Name:           linux
    +Version:        4.20.8
    +Release:        696
    +License:        GPL-2.0
    +Summary:        The Linux kernel
    +Url:            http://www.kernel.org/
    +Group:          kernel
    +Source0:        https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.20.8.tar.xz
    +Source1:        config
    +Source2:        cmdline
    +
    +%define ktarget  native
    +
    +
    +
    +

    注解

    +
      +
    • 考虑在 RPM 规范文件中将 Name 从 linux 更改为更易于识别的名称,以便轻松识别修改后的内核。
    • +
    • 考虑在 RPM 规范文件中将 ktarget 从 native 更改为更易于识别的名称,以便轻松识别修改后的内核。
    • +
    +
    +
  4. +
  5. 提交并保存对文件的更改。

    +
  6. +
+
+
+

提取一份 Linux 内核源代码副本

+

获取源代码的本地副本进行修改。

+
    +
  1. 运行源代码制作操作,提取在 RPM SPEC 文件中指定的内核源代码。本例中下载了 linux-4.20.8.tar.xz 文件。

    +
    make sources
    +
    +
    +
  2. +
  3. 提取内核源代码存档。这将创建一个可以修改的 Linux 源代码工作副本。

    +
    tar -xvf linux-4.20.8.tar.xz
    +
    +
    +
  4. +
  5. 导航到提取的目录。本例中将源代码提取到了 linux-4.20.8 目录。

    +
    cd linux-4.20.8/
    +
    +
    +
  6. +
+
+
+
+

自定义 Linux 内核源代码

+

获得内核源代码后,可以自定义内核配置或源代码,将其包含在内核构建中。这些自定义是可选的。

+
+

修改内核配置

+

内核源代码提供了许多配置选项,可支持不同的硬件和软件功能。

+

编译时必须在 .config 文件中提供这些配置值。您需要修改 .config 文件,并将其包含在内核包中。

+
    +
  1. 请确保您已经执行了 提取一份 Linux 内核源代码副本 中的步骤,而且处于内核源代码工作目录下。

    +
  2. +
  3. 如果您目前有一个来自旧内核的 .config 文件,请将其复制到工作目录中进行比较。否则,请使用 Clear Linux OS 内核配置文件作为模板

    +
    cp ~/clearlinux/packages/linux/config .config
    +
    +
    +
  4. +
  5. 使用内核配置工具对 .config 执行所需的更改。以下是一些常用选项:

    +
      +
    • $EDITOR .config - 可以直接编辑 .config 文件,对已知的名称进行简单更改。
    • +
    • make config - 一个基于文本的工具,通过逐步提问的方式决定配置选项。
    • +
    • make menuconfig - 一个终端用户界面,通过提供菜单来决定配置选项。
    • +
    • make xconfig - 一个图形用户界面,通过提供树视图来决定配置选项。
    • +
    +

    使用 make help | grep config 命令查看 make help 可以找到更多配置工具

    +
  6. +
  7. 提交更改并将其保存到 .config 文件。

    +
  8. +
  9. .config 文件从内核源代码目录复制到内核包目录,以便将 .config 包含在构建中。

    +
    cp .config ../config
    +
    +
    +
  10. +
+
+
+

修改内核源代码

+

对内核代码的更改通过补丁文件应用。补丁文件是格式化的 git 提交,可以应用于主源代码。

+

您需要获得源代码的副本,进行修改,生成补丁文件,然后将它们添加到 RPM SPEC 文件中,以便在内核构建期间包含在内。

+

如果有大量补丁或工作流程十分复杂,可考虑在 Git 之外使用 Quilt 之类补丁管理工具。

+
    +
  1. 请确保您已经执行了 提取一份 Linux 内核源代码副本 中的步骤,而且处于内核源代码工作目录下。

    +
  2. +
  3. 将内核源代码目录初始化为新的 git 存储库,并使用所有现有源文件创建一个提交,以开始跟踪更改。

    +
    git init
    +git add -A
    +git commit -m "Initial commit of Linux kernel source"
    +
    +
    +
  4. +
  5. 将 Clear Linux OS 内核包提供的补丁应用于工作目录中的内核源代码。

    +
    git am ../*.patch
    +
    +
    +
  6. +
  7. 对 Linux 源代码文件执行所需的代码更改。

    +
  8. +
  9. 跟踪您的更改,并将其提交到本地 git 存储库。

    +
    git add <FILENAME>
    +git commit -m "My patch for driver A" <FILENAME>
    +
    +
    +
  10. +
  11. 基于您的 git 提交生成补丁文件。<n>表示要创建补丁文件的本地提交数量。有关使用 git format-patch 的详细信息,请参阅 git-format-patch 文档

    +
    git format-patch -<n>
    +
    +
    +
  12. +
  13. 将补丁文件从 Linux 源代码树中的补丁目录复制到 RPM 构建目录。

    +
    cp *.patch ~/clearlinux/packages/linux/
    +
    +
    +
  14. +
  15. 导航回 RPM 构建目录。

    +
    cd ~/clearlinux/packages/linux/
    +
    +
    +
  16. +
  17. 在编辑器中打开 Linux 内核包 RPM SPEC 文件。

    +
    $EDITOR linux.spec
    +
    +
    +
  18. +
  19. 找到包含现有补丁变量定义的 SPEC 文件部分,并附加补丁文件名。确保补丁编号不与现有补丁冲突。本例中的补丁文件名为 2001-my-patch-for-driver-A.patch

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    #
    +# Small Clear Linux Tweaks
    +#
    +Patch0501: 0501-zero-extra-registers.patch
    +Patch0502: 0502-locking-rwsem-spin-faster.patch
    +
    +#Serie1.name WireGuard
    +#Serie1.git  https://git.zx2c4.com/WireGuard
    +#Serie1.tag  00bf4f8c8c0ec006633a48fd9ee746b30bb9df17
    +Patch1001: 1001-WireGuard-fast-modern-secure-kernel-VPN-tunnel.patch
    +#Serie1.end
    +
    +Patch2001: 2001-my-patch-for-driver-A.patch
    +
    +
    +
  20. +
  21. 进一步深入查找含有补丁应用程序的 SPEC 文件部分,并附加在上面步骤中使用的补丁文件编号。本例中添加了 patch2001。

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    #
    +# Small tweaks
    +#
    +%patch0501 -p1
    +%patch0502 -p1
    +
    +#Serie1.patch.start
    +%patch1001 -p1
    +#Serie1.patch.end
    +
    +%patch2001 -p1
    +
    +
    +
  22. +
  23. 提交并保存对 RPM SPEC 文件的更改。

    +
  24. +
+
+
+

修改内核引导参数

+

内核引导选项通过命令行参数从引导加载程序传递到内核。

+

虽然可以在正在运行的系统上或在引导过程中对内核参数进行临时更改,但您也可以修改随自定义内核分发并持久存在的默认参数。

+
    +
  1. 在编辑器中打开内核 cmdline 文件。

    +
    $EDITOR cmdline
    +
    +
    +
  2. +
  3. 对内核参数执行所需的更改。例如,您可以移除 quiet 参数,以便在引导过程中查看更详细的内核日志消息输出。

    +
  4. +
  5. 提交更改并将其保存到 cmdline 文件。

    +
  6. +
+

有关可用参数的列表,请参阅 kernel parameters 文档。

+
+
+
+

构建并安装内核

+

更改内核源代码和 RPM SPEC 文件后,内核就可以编译并打包成 RPM。

+

Clear Linux OS 开发工具使用 mock 环境来在净化的工作区中隔离内核包构建工作。

+
    +
  1. 发出 make build 命令启动编译过程。此过程通常会占用大量资源,而且需要一段时间。

    +
    make build
    +
    +
    +
    +

    注解

    +

    您可以启用 mock 插件 ccache,通过缓存并重用编译器输出来加快日后执行的内核包重新构建速度。

    +
    +
  2. +
  3. 编译后会在 rpms 目录中输出多个 .rpm 文件。

    +
    ls rpms/
    +
    +
    +

    内核 RPM 将命名为 linux<NAME>-<VERSION>-<RELEASE>.x86_64.rpm

    +
  4. +
  5. 内核 RPM 文件可以输入到 mixer,以创建自定义捆绑包和 Clear Linux OS 混合版。

    +
  6. +
+

内核 RPM 捆绑包也可以手动安装在本地计算机上进行测试。此方法对于个人开发或测试非常有效。如需使用可扩展性和可自定义性更好的方法,可考虑使用 mixer 为自定义内核提供更新。

+
    +
  1. 使用 rpm2cpio 命令提取 RPM,将内核安装到本地系统上。

    +
    rpm2cpio linux<NAME>-<VERSION>-<RELEASE>.x86_64.rpm | (cd /; sudo cpio -i -d -u -v);
    +
    +
    +
  2. +
  3. 使用 clr-boot-manager 命令更新 Clear Linux OS 引导管理器,然后重启。

    +
    sudo clr-boot-manager list-kernels
    +sudo clr-boot-manager set-kernel org.clearlinux.<TARGET>.<VERSION>-<RELEASE>
    +
    +sudo reboot
    +
    +
    +
  4. +
  5. 重启后,确认自定义内核是否正在运行。

    +
    uname -a
    +
    +
    +
  6. +
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/kernel/kernel-modules-dkms.html b/zh_CN/guides/kernel/kernel-modules-dkms.html new file mode 100644 index 000000000..880459d7a --- /dev/null +++ b/zh_CN/guides/kernel/kernel-modules-dkms.html @@ -0,0 +1,1305 @@ + + + + + + + + + + + + + + 使用 DKMS 添加内核模块 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

使用 DKMS 添加内核模块

+

本指南介绍如何使用 DKMS 添加内核模块。

+ +
+

概述

+

某些内核模块在 Clear Linux* OS 中默认启用。要使用不属于 Linux 源代码树的其他内核模块,您可能需要构建树外内核模块。按照本指南使用 DKMS 添加内核模块,或参阅 手动添加内核模块

+
+
+

描述

+

内核模块是能够插入到 Linux 内核中以增加功能的附加软件,例如硬件驱动程序。内核模块可能已经是 Linux 源代码树的一部分(树内),也可能来自外部来源,例如直接来自供应商(树外)。

+

DKMS 是一个便于构建和安装内核模块的框架。DKMS 允许 Clear Linux OS 提供钩子,为新版本内核自动重新构建模块。

+
+
+

内核模块可用性

+

Clear Linux OS 附带了许多上游内核模块以备使用。使用现有模块时,维护和保留 Clear Linux OS 内核的签名验证要容易得多。有关 Clear Linux OS 安全实践的更多信息,请参阅 操作系统安全性 页面。

+

继续之前,请检查您正在寻找的内核模块是否已经在 Clear Linux OS 中可用,或者提交添加该模块的请求。

+
+

检查模块是否已经可用

+

您可以使用 swupd search 命令搜索以 .ko 文件扩展名结尾的内核模块文件名,如下例所示。有关详细信息,请参阅 swupd

+
sudo swupd search ${module_name}.ko
+
+
+
+
+

提交添加模块的请求

+

如果您需要的内核模块已经开源(例如在 Linux 上游),并且可能对其他人也有用,可考虑提交在 Clear Linux OS 内核中添加或启用该模块的请求。

+

向 GitHub 上的 Clear Linux OS ‘Distribution Project’_ 提出增强请求。

+
+
+
+

安装 DKMS

+

kernel-native-dkms 捆绑包提供了 dkms 程序和 Linux 内核头文件,它们是编译内核模块所必需的。

+

kernel-native-dkms 捆绑包还会:

+
    +
  • 添加 systemd update trigger (/usr/lib/systemd/system/dkms-new-kernel.service),用来在使用 swupd update 升级内核后自动运行 DKMS 来重新构建模块。
  • +
  • 通过附加来自 /usr/share/kernel/cmdline.d/clr-ignore-mod-sig.conf 文件的内核命令行参数 (module.sig_unenforce),禁用内核模块签名验证。
  • +
  • 向每日消息 (MOTD) 添加一条通知,指示内核模块签名验证已禁用。
  • +
+
+

警告

+

我们建议您始终查看 swupd update 输出,确保为新内核成功重新构建了内核模块。这对引导是否成功有赖于内核模块的系统尤其重要。

+
+

安装 kernel-native-dkmskernel-lts-dkms 捆绑包:

+
    +
  1. 确定 Clear Linux OS 上运行的内核变体。只有 nativelts 内核能够使用 DKMS 构建和加载树外内核模块。

    +
    $ uname -r
    +5.XX.YY-ZZZZ.native
    +
    +
    +

    确保内核名称中含有 .native.lts

    +
  2. +
  3. 安装与已安装内核相对应的 DKMS 捆绑包。为 native 内核使用 kernel-native-dkms,或者为 lts 内核使用 kernel-lts-dkms

    +
    sudo swupd bundle-add kernel-native-dkms
    +
    +
    +

    或者

    +
    sudo swupd bundle-add kernel-lts-dkms
    +
    +
    +
  4. +
  5. 更新 Clear Linux OS 引导加载程序并重启。

    +
    sudo clr-boot-manager update
    +reboot
    +
    +
    +
  6. +
+
+
+

构建、安装和加载树外模块

+

如果您是个人用户或测试人员,并且您需要 Clear Linux OS 并未提供的树外内核模块,请按照本节中的步骤操作。如需使用可扩展性和可自定义性更好的方法,我们建议使用 mixer 来提供自定义内核和更新。

+
+

必备条件

+

开始之前,您必须:

+
    +
  • 在 UEFI/BIOS 中禁用安全引导。加载新的树外模块会修改安全引导所依赖的信任签名。
  • +
  • 获取以源代码或预编译二进制形式存在的内核模块包。
  • +
+
+
+

获取内核模块源代码

+

内核模块源代码目录中必需的 dkms.conf 文件将指示 DKMS 应该如何编译内核模块。

+

内核模块可以打包为:

+
    +
  • 不含 dkms.conf 文件的源代码
  • +
  • 含预制作的 dkms.conf 文件的源代码
  • +
  • 含预制作的 dkms.conf 文件和预编译的模块二进制的源代码
  • +
  • 只有预编译的模块二进制(不含源代码)
  • +
+

在上面列出的包类型中,只有预编译的内核模块二进制文件不起作用,因为 Clear Linux OS 要求在加载内核模块之前根据同一内核源代码树进行构建。如果只能获取不含 dkms.conf 文件的源代码,则必须手动创建 dkms.conf 文件,本文档稍后将对此进行介绍。

+
    +
  1. 下载内核模块的源代码。

    +
      +
    • 查看可用的下载选项。一些内核模块提供单独的归档文件来专门支持 DKMS。
    • +
    • 查看自述文件,因为它通常提供在支持 DKMS 的情况下构建模块所需的信息。
    • +
    +
    curl -O http://<URL-TO-KERNEL-MODULE-SOURCE>.tar.gz
    +tar -xvf <KERNEL-MODULE-SOURCE>.tar.gz
    +cd <KERNEL-MODULE-SOURCE>/
    +cat README
    +
    +
    +
  2. +
+
+
+

使用现有的 dkms.conf 构建内核模块

+

如果内核模块维护者使用 dkms mktarball 命令打包了源代码归档文件,则整个归档文件可以传递给 dkms ldtarball,由后者来完成许多步骤。

+

归档文件包含必需的 dkms.conf 文件,并可能包含 dkms_source_tree 目录和 dkms_binaries_only 目录。

+
    +
  1. 对内核模块归档文件运行 dkms ldtarball 命令。

    +
    dkms ldtarball <KERNEL-MODULE-SOURCE_WITH_DKMS>.tar.gz
    +
    +
    +

    dkms ldtarball 会将内核模块源代码放在 /usr/src/<MODULE-NAME>-<MODULE-VERSION>/ 下,在必要时构建它,以及将模块添加到 DKMS 树。

    +
  2. +
  3. 检查 dkms status 命令的输出,确认已检测到的内核模块。

    +
    dkms status
    +
    +
    +
  4. +
  5. 安装内核模块。

    +
    dkms install -m <MODULE-NAME> -v <MODULE-VERSION>
    +
    +
    +
  6. +
+
+
+

在没有现成的 dkms.conf 的情况下构建内核模块

+

如果内核模块源代码中不含 dkms.conf 文件或 dkms ldtarball 命令遇到错误,则必须手动创建该文件。

+

查看内核模块自述文件,了解 dkms.conf 文件中需要哪些内容,包括成功构建所需的特殊变量。

+

以下是一些可供参考的其他资源:

+
    +
  • DKMS 手册页 (man dkms) 会显示 DKMS.CONF 部分的详细语法。
  • +
  • Kernel DKMS Package 的 Ubuntu 社区 wiki 条目会显示单个包含有多个模块的示例。
  • +
  • DKMS 项目 GitHub* 存储库中的 dkms.conf file 示例文件。
  • +
+
+

注解

+

对于要在 Clear Linux OS 更新时自动重新编译的模块,必须在 dkms.conf 中设置 AUTOINSTALL=yes

+
+

以下说明介绍了一个通用示例:

+
    +
  1. 在提取的源代码目录中创建或修改 dkms.conf 文件。

    +
    $EDITOR dkms.conf
    +
    +MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
    +CLEAN="make -C src/ clean"
    +BUILT_MODULE_NAME=custom_module
    +BUILT_MODULE_LOCATION=src/
    +PACKAGE_NAME=custom_module
    +PACKAGE_VERSION=1.0
    +DEST_MODULE_LOCATION=/kernel/drivers/other
    +AUTOINSTALL=yes
    +
    +
    +

    本示例中的内核模块名称为 custom_module,版本为 1.0

    +
  2. +
  3. 将内核模块源代码复制到 /usr/src/ 目录中。

    +
    sudo mkdir /usr/src/<PACKAGE_NAME>-<PACKAGE_VERSION>
    +sudo cp -Rv . /usr/src/<PACKAGE_NAME>-<PACKAGE_VERSION>
    +
    +
    +
    +

    注解

    +

    <PACKAGE_NAME><PACKAGE_VERSION> 必须与 dkms.conf 文件中的条目匹配。

    +
    +
  4. +
  5. 将内核模块添加到 DKMS 树中,以便由 DKMS 跟踪。

    +
    sudo dkms add -m <MODULE-NAME>
    +
    +
    +
  6. +
  7. 使用 DKMS 构建内核模块。如果构建时遇到错误,您可能需要编辑 dkms.conf 文件。

    +
    sudo dkms build -m <MODULE-NAME> -v <MODULE-VERSION>
    +
    +
    +
  8. +
  9. 使用 DKMS 安装内核模块。

    +
    sudo dkms install -m <MODULE-NAME> -v <MODULE-VERSION>
    +
    +
    +
  10. +
+
+
+

加载内核模块

+

默认情况下,DKMS 会将模块 “in-tree” 安装在 /lib/modules 下,以便可以使用 modprobe 命令加载它们。

+
    +
  1. 使用 modprobe 命令加载已安装的模块。

    +
    +
    sudo modprobe <MODULE-NAME>
    +
    +
    +
    +
  2. +
  3. 验证内核模块是否已加载。

    +
    lsmod | grep <MODULE-NAME>
    +
    +
    +
  4. +
+
+
+
+

示例

+
+

可选:指定模块选项和别名

+

使用 modprobe 命令加载模块并设置选项。

+

modprobe 可能会因为模块相互依赖关系添加或移除多个模块。您可以使用 /etc/modprobe.d 目录下的配置文件来指定各个模块要使用的选项。

+
sudo mkdir /etc/modprobe.d
+
+
+

/etc/modprobe.d 目录下以 .conf 扩展名结尾的所有文件会指定加载时要使用的模块选项。您可以使用 .conf 文件为模块创建方便使用的别名,或者为有特殊要求的模块完全覆盖正常的加载行为。

+

参阅 modprobe.d 手册页详细了解 modprobe

+
man modprobe.d
+
+
+
+
+

可选:配置引导时要加载的内核模块

+

使用 /etc/modules-load.d 配置目录指定引导时自动加载的内核模块。

+
sudo mkdir /etc/modules-load.d
+
+
+

/etc/modules-load.d 目录下以 .conf 扩展名结尾的所有文件包含引导时要加载的模块别名列表(每行一个)。

+

参阅 modules-load.d 手册页详细了解模块加载:

+
man modules-load.d
+
+
+
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/kernel/kernel-modules.html b/zh_CN/guides/kernel/kernel-modules.html new file mode 100644 index 000000000..d744b5550 --- /dev/null +++ b/zh_CN/guides/kernel/kernel-modules.html @@ -0,0 +1,1200 @@ + + + + + + + + + + + + + + 手动添加内核模块 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

手动添加内核模块

+

本指南介绍如何手动添加内核模块。

+ +
+

概述

+

某些内核模块在 Clear Linux* OS 中默认启用。要使用不属于 Linux 源代码树的其他内核模块,您可能需要构建树外内核模块。请使用本指南手动添加内核模块,或参阅 使用 DKMS 添加内核模块

+
+
+

描述

+

内核模块是能够插入到 Linux 内核中以增加功能的附加软件,例如硬件驱动程序。内核模块可能已经是 Linux 源代码树的一部分(树内),也可能来自外部来源,例如直接来自供应商(树外)。

+
+
+

内核模块可用性

+

Clear Linux OS 附带了许多上游内核模块以备使用。使用现有模块时,维护和保留 Clear Linux OS 内核的签名验证要容易得多。有关 Clear Linux OS 安全实践的更多信息,请参阅 操作系统安全性 页面。

+

继续之前,请检查您正在寻找的内核模块是否已经在 Clear Linux OS 中可用,或者提交添加该模块的请求。

+
+

检查模块是否已经可用

+

您可以使用 swupd search 命令搜索以 .ko 文件扩展名结尾的内核模块文件名,如下例所示。有关详细信息,请参阅 swupd

+
sudo swupd search ${module_name}.ko
+
+
+
+
+

提交添加模块的请求

+

如果您需要的内核模块已经开源(例如在 Linux 上游),并且可能对其他人也有用,可考虑提交在 Clear Linux OS 内核中添加或启用该模块的请求。

+

向 GitHub 上的 Clear Linux OS ‘Distribution Project’_ 提出增强请求。

+
+
+
+

构建、安装和加载树外模块

+

如果您是个人用户或测试人员,并且您需要 Clear Linux OS 并未提供的树外内核模块,请按照本节中的步骤操作。如需使用可扩展性和可自定义性更好的方法,我们建议使用 mixer 来提供自定义内核和更新。

+
+

必备条件

+

开始之前,您必须:

+
    +
  • 禁用安全引导。
  • +
  • 禁用内核模块完整性检查。
  • +
  • 有一个以源代码形式存在的内核模块包。
  • +
  • 针对新版本 Linux 内核重新构建模块。
  • +
+
+

注解

+

每当在 Clear Linux 系统上升级内核时,您都必须重新构建树外模块。

+
+
+
+

构建和安装内核模块

+
    +
  1. 确定 Clear Linux OS 上正在运行的内核变体。下面的示例中使用了原生内核。

    +
    $ uname -r
    +5.XX.YY-ZZZZ.native
    +
    +
    +
  2. +
  3. 安装与已安装内核相对应的内核开发捆绑包。内核开发捆绑包含编译内核模块所需的内核头文件。例如:

    +
      +
    • linux-dev 用于针对原生内核进行开发。
    • +
    • linux-lts-dev 用于针对 LTS 内核进行开发。
    • +
    +
    sudo swupd bundle-add linux-dev
    +
    +
    +
  4. +
  5. 按照内核模块源代码中的说明编译内核模块。例如:

    +
    curl -O http://<URL-TO-KERNEL-MODULE-SOURCE>.tar.gz
    +tar -xvf <KERNEL-MODULE-SOURCE>.tar.gz
    +cd <KERNEL-MODULE-SOURCE>/
    +cat README
    +
    +
    +
  6. +
+
+
+

加载内核模块

+
    +
  1. 如果安全引导已启用,请在系统的 UEFI 设置中禁用安全引导。加载新的树外模块会修改安全引导所依赖的信任签名。

    +
  2. +
  3. 修改内核引导参数禁用内核签名检查,然后重启系统。

    +

    Clear Linux OS 中的所有内核模块都已签名以加强内核安全。但是,树外模块打破了信任链,因此需要禁用该机制。

    +
    sudo mkdir -p /etc/kernel/cmdline.d
    +echo "module.sig_unenforce" | sudo tee /etc/kernel/cmdline.d/allow-unsigned-modules.conf
    +
    +
    +
  4. +
  5. 更新引导管理器并重启系统,以实现修改后的内核参数。

    +
    sudo clr-boot-manager update
    +sudo reboot
    +
    +
    +
    +

    注解

    +

    如果修改成功,clr-boot-manager update 命令不会返回任何控制台输出。

    +
    +
  6. +
  7. 重启后,使用 insmod 命令手动加载树外模块。

    +
    sudo insmod </PATH/TO/MODULE.ko>
    +
    +
    +
  8. +
+
+
+
+

示例

+
+

可选:指定模块选项和别名

+

使用 modprobe 命令加载模块并设置选项。

+

modprobe 可能会因为模块相互依赖关系添加或移除多个模块。您可以使用 /etc/modprobe.d 目录下的配置文件来指定各个模块要使用的选项。

+
sudo mkdir /etc/modprobe.d
+
+
+

/etc/modprobe.d 目录下以 .conf 扩展名结尾的所有文件会指定加载时要使用的模块选项。您可以使用 .conf 文件为模块创建方便使用的别名,或者为有特殊要求的模块完全覆盖正常的加载行为。

+

参阅 modprobe.d 手册页详细了解 modprobe

+
man modprobe.d
+
+
+
+
+

可选:配置引导时要加载的内核模块

+

使用 /etc/modules-load.d 配置目录指定引导时自动加载的内核模块。

+
sudo mkdir /etc/modules-load.d
+
+
+

/etc/modules-load.d 目录下以 .conf 扩展名结尾的所有文件包含引导时要加载的模块别名列表(每行一个)。

+

参阅 modules-load.d 手册页详细了解模块加载:

+
man modules-load.d
+
+
+
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/architect-lifecycle.html b/zh_CN/guides/maintenance/architect-lifecycle.html new file mode 100644 index 000000000..43b9ebc83 --- /dev/null +++ b/zh_CN/guides/maintenance/architect-lifecycle.html @@ -0,0 +1,1101 @@ + + + + + + + + + + + + + + 设计 Clear Linux* OS 生命周期 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

设计 Clear Linux* OS 生命周期

+

本指南介绍了推荐的基本基础设施以及维护 Clear Linux* OS 衍生版的工作流程。

+ +
+

必备条件

+
    +
  • 一个包含软件 RPM 对象的存储库,以及一个含有 Clear Linux OS 计算机的 CI/CD 系统,用于构建 mixes
  • +
  • 具备使用 mixer 创建基于 Clear Linux OS 的发行版的经验
  • +
  • 具备使用 swupd 维护 Clear Linux OS 构建环境的经验
  • +
  • 熟悉 Clear Linux OS 架构,以及如何在不同版本中重复使用其内容
  • +
+
+
+

描述

+

维护 Clear Linux OS 衍生版需要:

+
    +
  • 监控上游 Clear Linux OS 新版本
  • +
  • 构建软件包和模拟环境
  • +
  • 采用 CI/CD 自动化来构建版本
  • +
  • 集成质量保证以开展测试和验证
  • +
+

部署协调基础设施,将 Clear Linux OS 衍生版的生命周期自动化。我们将该基础设施的部署分为两部分,即内容工作流程*和*版本工作流程,如图 1 所示。

+
+Architect the life-cycle +

图 1:设计生命周期

+
+
+
+

内容工作流程

+

内容工作流程(图 1)编排用于管理分发内容创建的各个流程。这包括从在自定义软件库中检测新版本到生成 RPM 包文件在内的一切工作。RPM 文件充当中间对象,负责跟踪各个软件依赖项,并提供版本工作流程中使用的文件级数据。Watcher Pipeline 检查 Clear Linux OS 和内容提供商,如 Koji,以确定是否需要新版本。

+
+
+

版本工作流程

+

版本工作流程(图 1)收集 RPM 的内容,并确保其可由 mixer 使用。内容 Web 服务器托管 Clear Linux OS 衍生版,目标系统会连接到该服务器来更新它们的操作系统。作为该工具链的组成部分,Release Pipeline 允许这些衍生版将 Clear Linux OS 内容整合到自己的自定义内容中。Watcher Pipeline 会触发 Release Pipeline 创建新版本。

+
+
+

实施

+

Clear Linux OS 发行版工厂管理版本工作流程。有关发行版工厂部署的详细信息,请参阅 clr-distro-factory GitHub* 存储库。

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/assign-static-ip.html b/zh_CN/guides/maintenance/assign-static-ip.html new file mode 100644 index 000000000..171185a62 --- /dev/null +++ b/zh_CN/guides/maintenance/assign-static-ip.html @@ -0,0 +1,1171 @@ + + + + + + + + + + + + + + 分配静态 IP 地址 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

分配静态 IP 地址

+

本指南介绍如何分配静态 IP 地址。在网络中并无 DHCP 服务器等情况下,此举可能会有帮助。

+ +
+

确定哪个程序正在管理接口

+

全新安装的 Clear Linux* OS 使用 NetworkManager 作为所有网络连接的默认网络接口管理器。

+
+

注解

+
    +
  • 云 Clear Linux OS 映像继续使用 systemd-networkd 来管理网络连接。
  • +
  • 在较早的 Clear Linux OS 版本中,systemd-network 用于管理以太网接口,而 NetworkManager 用于管理无线接口。
  • +
+
+

定义分配静态 IP 地址的配置之前,请确认哪个程序正在管理网络接口。

+
    +
  1. 检查 nmcli device 的输出,确认 NetworkManager 是否正在管理设备。

    +
    nmcli device status
    +
    +
    +

    如果设备的 STATE 列显示 connecteddisconnected,则网络配置由 NetworkManager 管理,此时请按照 使用 NetworkManager 中的说明执行操作。

    +

    如果设备的 STATE 列显示 unmanaged,则检查设备是否由 systemd-networkd 管理。

    +
  2. +
  3. 检查 networkctl list 的输出,确认 systemd-networkd 是否正在管理设备。

    +
    networkctl list
    +
    +
    +

    如果设备的 SETUP 列显示 configured,则网络配置由 systemd-networkd 管理,此时请按照 使用 systemd-networkd 中的说明执行操作。

    +
  4. +
+
+
+

使用 NetworkManager

+

由 NetworkManager 管理的网络连接在 /etc/NetworkManager/system-connections/ 目录中存储为扩展名为 .nmconnection 的文件。

+

有些工具可协助处理由 NetworkManager 管理的网络连接:

+
    +
  • nmcli - 命令行工具
  • +
  • nmtui - 在终端中提供伪图形菜单的文本用户界面
  • +
  • nm-connection-editor - 图形用户界面
  • +
+

下面的方法使用命令行工具 nmcli 修改网络连接。

+
    +
  1. 找出现有的连接名称:

    +
    nmcli connection show
    +
    +
    +

    示例输出:

    +
    NAME                UUID                                  TYPE            DEVICE
    +Wired connection 1  00000000-0000-0000-0000-000000000000  802-3-etherneten01
    +
    +
    +

    如果不存在连接,请使用 nmcli connection add 命令创建一个连接。

    +
  2. +
  3. 修改连接以使用静态 IP 地址。使用合适的值替换括号中的变量。将 [CONNECTION_NAME] 替换为上面命令中的 NAME。

    +
    sudo nmcli connection modify "[CONNECTION_NAME]" \
    +ipv4.method "manual" \
    +ipv4.addresses "[IP_ADDRESS]/[CIDR_NETMASK]" \
    +ipv4.gateway "[GATEWAY_IP_ADDRESS]" \
    +ipv4.dns "[PRIMARY_DNS_IP],[SECONDARY_DNS_IP]"
    +
    +
    +

    有关更多配置选项,请参阅 nmcli developer page。执行高级配置时,可以直接编辑 /etc/NetworkManager/system-connections/*.nmconnection

    +
  4. +
  5. 重启 NetworkManager 服务器以重新加载 DNS 服务器:

    +
    sudo systemctl restart NetworkManager
    +
    +
    +
  6. +
  7. 确认静态 IP 地址详细信息是否已设置:

    +
    nmcli
    +
    +
    +
  8. +
+
+
+

使用 systemd-networkd

+

由 systemd-networkd 管理的网络连接在 /etc/systemd/network/ 目录中存储为扩展名为 .network 的文件。

+

用来处理由 systemd-networkd 管理的网络连接的文件必须手动创建。

+
    +
  1. 如果 /etc/systemd/network 目录尚不存在,请创建该目录:

    +
    sudo mkdir -p /etc/systemd/network
    +
    +
    +
  2. +
  3. 创建一个 .network 文件并添加以下内容。使用合适的值替换括号中的变量。将 [INTERFACE_NAME] 替换为之前运行的 networkctl list 命令输出中的 LINK。

    +
    sudo $EDITOR /etc/systemd/network/70-static.network
    +
    +[Match]
    +Name=[INTERFACE_NAME]
    +
    +[Network]
    +Address=[IP_ADDRESS]/[CIDR_NETMASK]
    +Gateway=[GATEWAY_IP_ADDRESS]
    +DNS=[PRIMARY_DNS_IP]
    +DNS=[SECONDARY_DNS_IP]
    +
    +
    +

    有关更多配置选项,请参阅 systemd-network man page

    +
  4. +
  5. 重启 systemd-networkd 服务:

    +
    sudo systemctl restart systemd-networkd
    +
    +
    +
  6. +
  7. 确认静态 IP 地址详细信息是否已设置:

    +
    networkctl status
    +
    +
    +
  8. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/bulk-provision.html b/zh_CN/guides/maintenance/bulk-provision.html new file mode 100644 index 000000000..bc9148433 --- /dev/null +++ b/zh_CN/guides/maintenance/bulk-provision.html @@ -0,0 +1,1172 @@ + + + + + + + + + + + + + + 批量供应 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

批量供应

+

本指南介绍如何组合使用 Clear Linux OS 安装程序、Ister 和 ICIS 来批量供应 Clear Linux* OS。

+ +
+

概述

+

要配置批量供应,请执行以下操作:

+
    +
  • 定义 Ister 配置文件以自定义安装过程
  • +
  • 定义 cloud-init* 文件以自定义安装实例
  • +
  • 在 ICIS 中托管配置文件,以便 Ister 在安装过程中使用它们
  • +
+

图 1 描述了为执行批量供应而需要设置的 PXE 服务器和 PXE 客户端之间的信息流。

+
+Bulk provision information flow +

图 1:批量供应信息流

+
+
+
+

必备条件

+

执行批量供应之前,请确认您的 PXE 服务器能够从网络引导 Clear Linux OS。有关详细信息,请参阅我们的 如何执行 iPEX 引导的指南 (使用 NAT)。

+

由于批量供应依赖于重新引导,请确保已经做好以下准备:

+
    +
  • 没有可引导的现有磁盘。
  • +
  • 在执行安装的计算机上,网络引导选项必须紧跟在磁盘引导选项之后。
  • +
+
+
+

配置

+
    +
  1. 按照 ICIS GitHub* 存储库中的入门指南安装 ICIS。

    +
  2. +
  3. 创建一个 Ister 安装文件,并将其保存到 ICIS Web 托管目录下的 static/ister 目录。该安装文件是一个 JSON 块,它为 Ister 提供了执行安装所需的步骤。该文件概述了 Ister 应该设置哪些分区、文件系统和挂载点。最后,该文件概述了要安装的捆绑包。有关可用捆绑包的列表,请参阅我们的 可用的捆绑包 文档。以下示例显示了 Ister 安装文件的内容:

    +
    {
    +    "DestinationType":"physical",
    +    "PartitionLayout":[
    +        {"disk":"sda", "partition":1, "size":"512M", "type":"EFI"},
    +        {"disk":"sda", "partition":2, "size":"512M", "type":"swap"},
    +        {"disk":"sda", "partition":3, "size":"rest", "type":"linux"}
    +    ],
    +    "FilesystemTypes":[
    +        {"disk":"sda", "partition":1, "type":"vfat"},
    +        {"disk":"sda", "partition":2, "type":"swap"},
    +        {"disk":"sda", "partition":3, "type":"ext4"}
    +    ],
    +    "PartitionMountPoints":[
    +        {"disk":"sda", "partition":1, "mount":"/boot"},
    +        {"disk":"sda", "partition":3, "mount":"/"}
    +    ],
    +    "Version":"latest",
    +    "Bundles":[
    +        "kernel-native",
    +        "os-core",
    +        "os-core-update",
    +        "os-cloudguest"
    +    ],
    +    "IsterCloudInitSvc":"http://192.168.1.1:60000/icis/"
    +}
    +
    +
    +
    +

    重要

    +

    ICIS 上托管的每个 Ister 安装文件都必须包含 IsterCloudInitSvc 参数以及 os-cloudguest 捆绑包。这些条目允许 Ister 自定义安装实例。

    +
    +
  4. +
  5. 创建一个 Ister 配置文件来定义 Ister 安装文件的位置。将其保存到 ICIS Web 托管目录下的 static/ister 目录。以下示例显示了一个 Ister 配置文件:

    +
    template=http://192.168.1.1:60000/icis/static/ister/ister.json
    +
    +
    +
  6. +
  7. 向引导网络映像的命令行添加一个内核参数来修改 iPXE 引导脚本。添加内核参数 isterconf,并将 ICIS 托管的 Ister 配置文件的位置作为内核参数值。以下示例显示了带有 isterconf 参数的 iPXE 引导脚本:

    +
    #!ipxe
    +kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug tsc=reliable no_timer_check noreplace-smp rw initrd=initrd isterconf=http://192.168.1.1:60000/icis/static/ister/ister.conf
    +initrd initrd
    +boot
    +
    +
    +
    +

    注解

    +

    Clear Linux OS 网络映像引导后,Ister 会在 /proc/cmdline 中检查引导期间使用的参数以找到 Ister 配置文件的位置。

    +
    +
  8. +
  9. 编写 cloud-init 文档,根据您的需求自定义安装实例。cloud-init 文档提供了如何编写 cloud-init 文档的指南。本指南涵盖了安装后 cloud-init 提供的自定义选项。

    +
  10. +
  11. 将 cloud-init 文档保存到 ICIS Web 托管目录下的 static/roles 目录,并使用要创建的角色的名称。例如,角色可以是 “database”、”web” 或 “ciao”。

    +
  12. +
  13. 创建角色(也称为 cloud-init 文件)后,将角色分配给 PXE 客户端的 MAC 地址。为此,请修改 ICIS Web 托管目录下 static 目录中的 config.txt 文件。以下示例显示了一个分配示例:

    +
    # MAC address,role
    +00:01:02:03:04:05,ciao
    +
    +
    +

    如果 PXE 客户端的 MAC 地址未列在 config.txt 文件中,则会按如下方式为这些 MAC 地址定义默认角色:

    +
    # MAC address,role
    +default,ciao
    +
    +
    +
  14. +
  15. 确认在您的本地网络上是否可以访问以下 URL:

    +
      +
    • http://192.168.1.1:60000/icis/static/ister/ister.conf
    • +
    • http://192.168.1.1:60000/icis/static/ister/ister.json
    • +
    • http://192.168.1.1:60000/icis/get_config/<MAC address>
    • +
    • http://192.168.1.1:60000/icis/get_role/<role>
    • +
    • http://192.168.1.1:60000/ipxe/ipxe_boot_script.txt
    • +
    +
  16. +
  17. 打开 PXE 客户端的电源,观看它引导并安装 Clear Linux OS。

    +
  18. +
  19. 关闭再开启 PXE 客户端的电源,观看它自定义 Clear Linux OS 安装。

    +
  20. +
+

祝贺您!您已成功执行 Clear Linux OS 的批量供应。

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/cpu-performance.html b/zh_CN/guides/maintenance/cpu-performance.html new file mode 100644 index 000000000..19a66f099 --- /dev/null +++ b/zh_CN/guides/maintenance/cpu-performance.html @@ -0,0 +1,1166 @@ + + + + + + + + + + + + + + CPU 功率和性能 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

CPU 功率和性能

+

本指南介绍 Clear Linux* OS 中的 CPU 功率和性能机制。

+ +
+

概述

+

现代 x86 CPUs 采用多种功能和技术来平衡性能、能耗和热效率。

+

默认情况下,Clear Linux OS 优先考虑发挥 CPU 最佳性能,其理念是程序执行得越快,CPU 就能越快返回低功耗空闲状态。排除故障或考虑更改默认值时,了解和评估所有这些技术至关重要。

+
+
+

CPU 节能机制

+

C 状态和 P 状态都属于 CPU 节能机制,CPU 会在不同工况下进入这些机制。权衡的结果是,当再次需要用到 CPU 时,退出这些状态的时间会稍微长一点。

+
+

C 状态(空闲状态)

+

C 状态是硬件睡眠状态,当系统确定 CPU 空闲且未执行指令时便会进入该状态。

+

在 C 状态下,系统通过不断降低每个状态下的时钟频率、电压和功能来降低功耗。

+

虽然在系统的 UEFI 或 BIOS 配置中通常可以限制或禁用 C 状态,但使用 intel_idle driver 时,这些设置会被覆盖。

+

要查看当前的 cpuidle 驱动程序,请在终端中运行以下命令:

+
cat /sys/devices/system/cpu/cpuidle/current_driver
+
+
+

故障排除时,可以通过添加 processor.max_cstate=N intel_idle.max_cstate=N 来使用内核命令行引导参数限制 C 状态,或者使用 idle=poll 完全禁用 C 状态。

+
+

注解

+
    +
  • 内核会将 processor.max_cstate=0 改为 processor.max_cstate=1,以使其成为有效值。
  • +
  • intel_idle.max_cstate=0 会禁用英特尔 Idle 空闲驱动程序,而不是将其设置为 C 状态 0。
  • +
+
+
+
+

P 状态(性能状态)

+

P 状态(在英特尔处理器上也称为 Intel SpeedStep® 技术,而在 AMD 处理器上也称为 Cool’n’Quiet)是 CPU 处于活动中且正在执行指令时进入的状态。

+

P 状态会根据 CPU 需求调整 CPU 时钟频率和电压,以此来降低功耗。

+

在系统固件 (UEFI/BIOS) 中通常可以限制或禁用 P 状态。

+
+

睿频加速技术

+

部分现代英特尔 CPU 上采用了 英特尔® 睿频加速技术,该技术可在 CPU 未超出指定功率和热阈值时,支持处理器上的核心暂时以高于额定 CPU 时钟频率的频率工作。

+

睿频加速技术是对 P 状态的扩展。因此,改变或限制 C 状态或 P 状态会影响 CPU 使用睿频加速技术。

+

睿频加速技术可以在系统的 UEFI 或 BIOS 中禁用。睿频加速技术也可以在 Clear Linux OS 中使用以下命令禁用:

+
echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
+
+
+
+
+
+
+

Linux CPU 时钟频率缩放

+

Linux 中的 CPUFreq 子系统允许操作系统通过 CPU 驱动程序和调速程序控制 C-statesP-states,因为这些驱动程序和调速程序提供了相应算法,可以定义如何以及何时进入这些状态。

+
+

缩放驱动程序

+

对于 Sandy Bridge 这一代或更新一代的现代英特尔处理器,Linux 使用 Intel P-state driverintel_pstate。对于其他处理器,可能默认使用从系统 UEFI 或 BIOS 读取值的 acpi-cpufreq* 驱动程序。

+

要查看当前的 CPU 频率缩放驱动程序,请在终端中运行以下命令:

+
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
+
+
+
+
+

缩放调速程序

+

Clear Linux OS 将 CPU 调速程序设置为性能,要求 CPU 以最大时钟频率运行。换句话说,CPU 进入 P 状态 P0。虽然这一开始听起来可能有点浪费,但请记住,在没有工作负载的情况下锁定时钟频率并不会导致功耗显著增加。

+

要查看当前的 CPU 频率缩放调速程序,请在终端中运行以下命令:

+
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
+
+
+

要更改 CPU 频率缩放调速程序:

+
    +
  1. 禁止 Clear Linux OS 强制使用某些功率和性能设置:

    +
    sudo systemctl mask clr-power.timer
    +
    +
    +
  2. +
  3. 更改调速程序。在以下示例中,调速程序设置为性能:

    +
    echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    +
    +
    +
  4. +
+

所有调速程序的列表可以在有关 CPUFreq Governors 的 Linux 内核文档中找到。

+
+

注解

+

intel_pstate 驱动程序仅支持性能和节能调速程序。

+
+
+
+
+

散热管理

+

thermald 是一个用于防止平台过热的 Linux 散热管理守护程序。当超过温度阈值时,thermald 会通过插入 CPU 睡眠循环强制 CPU 进入 C 状态,并调整可用的散热方法。这对笔记本电脑来说尤其有效。

+

默认情况下,thermald 在 Clear Linux OS 中被禁用。如果检测到电池供电,它会自动启动。通过运行以下命令,可以使用 systemd 服务手动启用 thermald:

+
sudo systemctl enable --now thermald
+
+
+

有关详细信息,请参阅 thermald 手册页:

+
man thermald
+
+
+

ThermalMonitor 是一个 GUI 应用程序,可以直观地绘制和记录来自 thermald 的温度数据。要使用 ThermalMonitor,请添加 desktop-apps-extras 捆绑包,并将您的用户帐户添加到 power 组:

+
sudo swupd bundle-add desktop-apps-extras
+sudo usermod -a -G power <USER>
+ThermalMonitor
+
+
+
+

注解

+

添加新组后,您必须注销并重新登录,然后新组才能生效。

+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/deploy-at-scale.html b/zh_CN/guides/maintenance/deploy-at-scale.html new file mode 100644 index 000000000..532cccc82 --- /dev/null +++ b/zh_CN/guides/maintenance/deploy-at-scale.html @@ -0,0 +1,1173 @@ + + + + + + + + + + + + + + 大规模部署 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

大规模部署

+

本指南介绍在您的环境中大规模部署 Clear Linux* OS 时的部署注意事项和部署策略。

+ +
+

概述

+

在本指南中,“端点”指的是安装 Clear Linux OS 的目标系统,而不论它是数据中心系统还是现场部署的单元。

+
+

注解

+

本指南并不能取代您自己的 IT 操作环境设计方案,也不能用作您的 IT 操作环境设计蓝图。

+

大规模部署的实施细节超出了本指南的讨论范围。

+

您的 Clear Linux OS 部署应该作为您的现有环境和可用工具的有益补充。本指南假设您的环境中的核心 IT 基础设施(如网络)运行状况良好,并可根据部署需要加以扩展。

+
+
+
+

选择使用和更新策略

+

不同的业务场景需要不同的部署方法。Clear Linux OS 十分灵活,既可继续使用上游 Clear Linux OS 发行版,也可在 Clear Linux OS 发行版的基础上分叉,让您自己成为 OSV

+

以下概述了一些注意事项。

+
+

创建您自己的 Linux 发行版(混合版)

+

此方法是指利用 mixer 过程在 Clear Linux OS 基础上创建自定义映像,从而在上游 Clear Linux OS 的基础上分叉,让您自己成为 OSV。此举需要采用更多基础设施和过程, 但回报是您可以对 Linux 发行版拥有极高的掌控和定制能力。注意事项:

+
    +
  • 生成捆绑包和更新的开发系统应该有足够的性能来完成任务,并独立于为生产计算机提供更新内容的 swupd 更新 Web 服务器。

    +
  • +
  • 为生产计算机提供更新内容的 swupd 更新 Web 服务器应该进行适当扩展。可扩展的弹性 Web 服务器的具体实现细节超出了本文的讨论范围。

    +

    (有关更新服务器的更多信息,请参阅 mixer。)

    +
  • +
+
+
+

采用敏捷方法

+

云部署和其他大规模部署的关键在于灵活性和速度。任何 Clear Linux OS 部署策略都应该遵循这两项要求。

+

对大规模部署来说,为每个版本手动重建您自己的捆绑包或混合版是不可持续的。Clear Linux OS 部署流程应该足够敏捷,能够快速验证和快速生成新版本。是否将这些更新实际应用到生产环境属于独立的业务决策。但是,是否有能力将新版本软件频繁滚动推出到端点是一个重要的先决条件。

+

您应负责验证操作系统并确定操作系统的生命周期,而且应该像对待任何其他软件开发生命周期一样对待它。以下是一些建议:

+
    +
  • 充分了解您需要与 Clear Linux OS 集成并维护的自定义软件包及其依赖关系。
  • +
  • 为构建基于 Clear Linux OS 的映像设置生产路径。这至少应包括:
      +
    • 一个开发 clr-on-clr 环境,用于测试 Clear Linux OS 系统的构建包和捆绑包。
    • +
    • 一个生产前环境,用于在生产前部署 Clear Linux OS 版本
    • +
    +
  • +
  • 采用持续集成和持续部署 (CI/CD) 理念,以便:
      +
    • 在上游项目或供应商推出更新时,自动提取自定义软件包。
    • +
    • 根据您的自定义设置(如果有的话),生成 Clear Linux OS 捆绑包和可引导映像(如果需要的话)。
    • +
    • 根据与业务有关的度量和指标(例如性能、功率等),评估不同版本的表现。
    • +
    • 与您所在组织的治理流程(例如变更控制)集成。
    • +
    +
  • +
+
+
+

版本控制基础设施

+

Clear Linux OS 版本号非常重要,因为它们适用于从操作系统组件到库和应用程序在内的整个基础设施堆栈。

+

妥善保存记录很重要,因此您应该维护一个详细的登记表,记录下以前部署的各个版本及其内容。

+

只要看一眼所部署的 Clear Linux OS 版本号,您就应该知道您的 Clear Linux OS 是否为特定安全漏洞打上了补丁或者是否纳入了重要的新功能。

+
+
+
+

选择映像分发策略

+

定下了使用和更新策略后,您就应该知道 Clear Linux OS 将如何部署到您的端点。在大规模部署中,应该避免使用交互式安装程序,而是倾向于使用自动化安装或预构建映像。

+

大规模安装操作系统有许多广为人知的方法。每种方法都有其优势,但根据您的环境中可用的资源不同,有的方法在您的环境中可能更容易使用。

+

请参阅可用的 Clear Linux* OS image types

+

以下是大规模安装 Clear Linux OS 的一些常见方法:

+
+

裸机

+

将 Clear Linux OS 分发到 LAN 上物理裸机系统的一种方式是使用预引导执行环境 (PXE) 或其他带外引导选项。

+

如果您的自定义软件包非常小,并且使用的是无状态基础设施,那么这种分发方式可取得不错的效果。

+

如果您的环境中并没有可供部署的映像,您可以访问 Clear Linux OS Downloads 页面下载一个实时映像,并将其部署为 PXE 引导服务器。另请参阅关于如何 使用实时服务器将 Clear Linux* OS 安装在裸机上 的文档。

+
+
+

云实例或虚拟机

+

无论是在内部部署环境中还是在云解决方案提供商 (CSP) 托管环境中,可克隆磁盘形式的映像模板都是在虚拟机环境中分发 Clear Linux OS 的有效方法。

+

与云虚拟机迁移功能配合使用时,此分发方式效果极佳,可实现极高的应用程序可用性和工作负载移动性;届时,虚拟机可以在虚拟机管理程序主机集群上重启,也可以在数据中心之间无缝迁移。

+

Clear Linux OS Downloads 页面提供了预构建虚拟机映像示例,它可以在主流 CSP 的云环境中即刻部署。另请参阅有关如何 在虚拟机上安装 的文档。

+
+
+

容器

+

容器化平台支持从存储库中提取映像,然后将其作为独立的容器反复部署。

+

含有 Clear Linux OS 映像的容器是一个不错的分发方式,它可以将应用程序(包括其所有依赖项)设计为蓝图,然后作为对象进行分发,同时也支持您或您的客户动态编排和扩展应用程序。

+

Clear Linux OS 能够运行 Docker 主机,具有可以从 DockerHub 中提取的容器映像,或者可以构建为自定义容器。有关详细信息,请访问 Containers 页面。

+
+
+
+

有关无状态系统的注意事项

+

Clear Linux OS 的一个重要概念是无状态以及区分用户数据和系统数据。此概念可能会改变您对大规模部署的认识。

+
+

备份策略

+

Clear Linux OS 系统及其基础设施应被视为一种商品,而且这种商品很容易复制。避免将注意力放在备份操作系统本身或默认值上,

+

而是应该将注意力放在备份重要且独特的应用程序和数据上。换句话说,只关注备份关键区域,如 /home/etc/var

+
+
+

日志记录和遥测十分有用

+

将日志记录和遥测数据从端点分流到外部服务器,从而确保它们持久存在,而且在发生问题时便于从另一台服务器访问。

+
    +
  • Clear Linux OS 中的远程系统日志记录可通过 systemd-journal-remote.service 获得

    +
  • +
  • Clear Linux OS 提供了 遥测,这是一个强大的工具,可用于在大规模部署时以众包的方式快速解决相关问题。利用此功能时需要仔细考虑目标受众以及哪些类型的数据是有价值的,还要适当地公开事件。

    +

    像任何 Web 服务器一样,遥测服务器也应该可以适当地扩展并具有适当的弹性。可扩展的弹性 Web 服务器的具体实现细节超出了本文的讨论范围。

    +
  • +
+
+
+

编排和配置管理

+

在云环境中,系统的生命周期可能很短暂,因此是否有能力配置和维护通用实例十分重要。

+

Clear Linux OS 通过 os-cloudguest 捆绑包提供了一个高效的云初始化解决方案 micro-config-drive,支持在引导时自动执行许多上线第一天任务,例如设置主机名、创建用户或放置 SSH 密钥。有关在 Clear Linux OS 端点部署期间自动配置的更多信息,请参阅 批量供应 指南。

+

配置管理工具对于维护一致的系统和应用程序级配置非常有用。sysadmin-hostmgmt 捆绑包提供了 Ansible* 作为配置管理和自动化工具。

+
+
+

云原生应用程序

+

基础设施操作系统可以将各种操作和行为都设计得井井有条,但设计是否敏捷最终还是取决于应用程序。部署在 Clear Linux OS 上的应用程序应该能够识别主机,但不依赖于任何特定的主机来运行。如果条件允许,应该使用相对和动态引用。

+

应用程序架构应该针对基础设施中断具有适当的容错能力。不要仅仅将无状态设计作为一个显著特征。持续测试其使用情况;通过在新主机上反复部署 Clear Linux OS 和应用程序来将其使用自动化。这自然会最大限度减少配置偏差,并给监控系统和业务连续性计划带来挑战。

+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/developer-workstation.html b/zh_CN/guides/maintenance/developer-workstation.html new file mode 100644 index 000000000..1105cbc53 --- /dev/null +++ b/zh_CN/guides/maintenance/developer-workstation.html @@ -0,0 +1,1153 @@ + + + + + + + + + + + + + + 开发人员工作站 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

开发人员工作站

+

本指南帮助您确定启动您的 Clear Linux* OS 开发项目所需的最小捆绑包集。

+

继续之前,请阅读 swupd 指南,详细了解 swupd 工具以及 Clear Linux OS 相比其他 Linux* 发行版如何简化了软件版本控制。

+ +
+

工作站设置

+

安装了启动项目所需的最小捆绑包集后,您可以添加更多与您的特定用例相关的捆绑包。

+

要运行 Clear Linux OS 开发所需的任何进程,您可以添加大型捆绑包 *os-clr-on-clr*。但是,考虑到该捆绑包含有大量软件包,您可能希望部署一个更精简的操作系统,只包含与您的项目相关的捆绑包。

+

使用表 1 开发人员配置文件,根据您的角色或项目确定开始开发所需的最少捆绑包。虽然您的角色不一定与表中的类别完全吻合,但不妨在表 1 的基础上确定所需的捆绑包。

+ + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表 1.开发人员配置文件
Clear Linux OS 捆绑包物联网 (IoT)*系统管理员客户端/云/Web 开发人员
editors
network-basic
openssh-server
webserver-basic 
application-server 
database-basic 
desktop-autostart
dev-utils  
+
+ +
+

核心概念

+

我们建议您在开发项目之前先了解 Clear Linux OS 中的这些核心概念。

+ +
+

开发人员可用的其他资源

+ +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/download-verify-decompress.html b/zh_CN/guides/maintenance/download-verify-decompress.html new file mode 100644 index 000000000..8825eef9f --- /dev/null +++ b/zh_CN/guides/maintenance/download-verify-decompress.html @@ -0,0 +1,1260 @@ + + + + + + + + + + + + + + 下载、验证并解压缩 Clear Linux* OS 映像, — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • 指南 »
  • + +
  • 下载、验证并解压缩 Clear Linux* OS 映像,
  • + + +
  • + + + + Edit on GitHub + + + +
  • + +
+ + +
+
+
+
+ +
+

下载、验证并解压缩 Clear Linux* OS 映像,

+

本指南介绍可用的 Clear Linux OS 映像类型,从何处下载这些映像,如何验证这些映像的完整性以及如何解压缩这些影响。遵循适用您的操作系统的步骤。

+ +

Clear Linux* OS 为不同平台和环境提供多种类型的 images

+

Clear Linux OS 映像文件名的命名约定是:

+
clear-[version number]-[image type].[compression type]
+
+
+
    +
  • [version number] 字段指定版本号。
  • +
  • [image type] 字段指定映像类型及其相应的文件格式。
  • +
  • [compression type] 字段指定压缩类型。使用的压缩类型有两种:GNU* zip (.gz) 和 XZ (.xz)。
  • +
+
+

Linux 操作系统步骤

+
+

确认 Clear Linux OS 映像的完整性

+

在使用下载的 Clear Linux OS 映像之前,请确认其完整性。本操作消除了由于下载错误导致的罕见映像损坏。为支持确认,每个释放的 Clear Linux OS 映像均有一个相应的 SHA512 校验和 (checksum) 文件,其指定后缀为 -SHA512SUMS

+
    +
  1. 下载与您的 Clear Linux OS 映像 相应的 SHA512 校验和文件。

    +
  2. +
  3. 打开终端。

    +
  4. +
  5. 转到含有下载映像和校验和文件的目录。

    +
  6. +
  7. 验证映像的完整性,并使用以下命令将其与原始校验和进行比较:

    +
    sha512sum -c ./clear-[version number]-[image type].[compression type]-SHA512SUMS
    +
    +
    +
  8. +
+

如果下载的映像的校验和不同于原始校验和,则会显示一条警告消息,指示计算的校验和不匹配。如果校验和匹配,映像的名称会打印在屏幕上,而且后跟 OK

+

有关映像验证(包括检查证书)的更深入讨论,请参阅 映像内容验证

+
+
+

解压 Clear Linux OS 映像

+

释放的 Clear Linux OS 映像以 GNU zip (.gz) 或 XZ (.xz) 格式压缩。压缩类型取决于目标平台或环境。要解压映像,应遵循这些步骤:

+
    +
  1. 打开终端。

    +
  2. +
  3. 转到下载映像所在的目录。

    +

    要解压 XZ 映像,输入:

    +
    unxz clear-[version number]-[image type].xz
    +
    +
    +

    要解压 GZ 映像,输入:

    +
    gunzip clear-[version number]-[image type].gz
    +
    +
    +
  4. +
+
+
+
+

macOS* 步骤

+
+

确认 Clear Linux OS 映像的完整性

+

在使用下载的 Clear Linux OS 映像之前,请确认其完整性。本操作消除了由于下载错误导致的罕见映像损坏。为支持确认,每个释放的 Clear Linux OS 映像均有一个相应的 SHA512 校验和 (checksum) 文件,其指定后缀为 -SHA512SUMS

+
    +
  1. 下载与您的 Clear Linux OS 映像 相应的 SHA512 校验和文件。

    +
  2. +
  3. 打开终端。

    +
  4. +
  5. 转到含有下载映像和校验和文件的目录。

    +
  6. +
  7. 验证映像的完整性,并使用以下命令将其与原始校验和进行比较:

    +
    shasum -a512 clear-[version number]-[image type].[compression type] | diff clear-[version number]-[image type].[compression type]-SHA512SUMS -
    +
    +
    +
  8. +
+

如果下载的映像的校验和与原始校验和不同,将显示差异。否则,空输出表示校验和匹配,说明下载的映像完好。

+
+
+

解压 Clear Linux OS 映像

+

默认情况下,我们使用 GNU zip (.gz) 或 xz (.xz) 压缩所有发布的 Clear Linux OS 映像。我们使用的压缩类型取决于目标平台或环境。要解压映像,应遵循这些步骤:

+
    +
  1. 打开终端。

    +
  2. +
  3. 转到下载映像所在的目录。

    +
  4. +
  5. 使用 gunzip command 命令解压缩任一种压缩类型。例如:

    +
    gunzip clear-[version number]-[image type].xz
    +gunzip clear-[version number]-[image type].gz
    +
    +
    +
  6. +
+
+
+
+

Windows* 操作系统步骤

+
+

确认 Clear Linux OS 映像的完整性

+

在使用下载的 Clear Linux OS 映像之前,请确认其完整性。本操作消除了由于下载错误导致的罕见映像损坏。为支持确认,每个释放的 Clear Linux OS 映像均有一个相应的 SHA512 校验和 (checksum) 文件,其指定后缀为 -SHA512SUMS

+
    +
  1. 下载与您的 Clear Linux OS 映像 相应的 SHA512 校验和文件。

    +
  2. +
  3. 启动命令提示符。

    +
  4. +
  5. 转到含有下载映像和校验和文件的目录。

    +
  6. +
  7. 利用该命令获取该映像的 SHA512 校验和:

    +
    CertUtil -hashfile ./clear-[version number]-[image type].[compression type] sha512
    +
    +
    +
  8. +
  9. 手动比较该结果与所下载校验和文件中所示的原始校验和值,确保它们相匹配。

    +
  10. +
+
+
+

解压 Clear Linux OS 映像

+

释放的 Clear Linux OS 映像以 GNU zip (.gz) 或 XZ (.xz) 格式压缩。压缩类型取决于目标平台或环境。要解压映像,应遵循这些步骤:

+
    +
  1. 下载并安装 7-Zip

    +
  2. +
  3. 转到含有下载映像的目录并右键点击它。

    +
  4. +
  5. 从弹出菜单中选择 7-Zip,然后选择 Extract Here,如图 1 所示。

    +
    +7-Zip extract file +

    图 1:Windows 7-Zip 提取文件。

    +
    +
  6. +
+
+
+
+

映像类型

+

表 1 列出了当前可用的独立于平台的映像。表 2 列出了当前可用的特定于平台的映像。

+ + ++++ + + + + + + + + + + + + + +
表 1:独立于平台的 Clear Linux OS 映像类型
映像类型描述
live-desktop.img 或 live-desktop.iso用于引导至 GNOME* 桌面进行预览或安装操作系统的映像。
live-server.img 或 live-server.iso用于引导至服务器命令提示符进行预览或安装操作系统的映像。
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表 2:特定于平台的 Clear Linux OS 映像类型
映像类型描述
aws.img适用于 Amazon* AWS* 的映像。
azure.vhd适用于 Microsoft* Azure* 云平台的虚拟硬盘。
azure-docker.vhd适用于预装 Docker* 的 Microsoft Azure 云平台的虚拟硬盘。
azure-machine-learning.vhd适用于安装 machine-learning-basic 捆绑包 的 Microsoft Azure 云平台的虚拟硬盘。
cloudguest.img安装了通用云来宾虚拟机 (VM) 的映像。
gce.tar带有 Google 计算引擎 (GCE) 特定内核的映像。
hyperv.vhdx与 Microsoft Hyper-V* 虚拟机管理程序一起使用的虚拟硬盘。包括针对 Hyper-V optimized kernel
kvm.img用于使用 start_qemu.sh 在简单虚拟机中引导的映像。包括针对 KVM optimized kernel
kvm-legacy.img用于使用传统 BIOS 在简单虚拟机中引导的映像;如果使用 start_qemu.sh,请确保移除 -bios 参数。
pxe.tar适用于 PXE 服务器的映像。
vmware.vmdk面向包括 Player、Workstation 和 ESXi 在内的 VMware* 平台的虚拟机磁盘。
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/enable-user-space.html b/zh_CN/guides/maintenance/enable-user-space.html new file mode 100644 index 000000000..e29ed58af --- /dev/null +++ b/zh_CN/guides/maintenance/enable-user-space.html @@ -0,0 +1,1122 @@ + + + + + + + + + + + + + + 创建并启用新的用户空间 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

创建并启用新的用户空间

+

本指南提供了为新安装的 Clear Linux* OS 系统完成以下基本设置任务的步骤:

+ +
+

创建新用户

+

要创建新用户并为该用户设置密码,请以 root 用户身份输入以下命令:

+
useradd <userid>
+passwd <userid>
+
+
+

将 <userid> 替换为要创建的用户帐户的名称,包括该用户的密码。passwd 命令会提示您输入新密码。为刚刚创建的新用户帐户重新键入新密码。

+
+
+

将新用户添加到 wheel 组

+

以 root 用户身份注销并登录到新用户帐户之前,请为新的 <userid> 启用 sudo 命令。

+

为了能以 root 特权执行所有应用程序,请将 <userid> 添加到 wheel group

+
    +
  1. 将 <userid> 添加到 wheel 组:

    +
    usermod -G wheel -a <userid>
    +
    +
    +
  2. +
  3. 以 root 用户身份注销并登录新的 <userid>。

    +

    要以 root 用户身份注销,请输入 exit

    +
  4. +
  5. 输入之前创建的新 <userid> 和密码。

    +

    您现在将处于 <userid> 主目录中。

    +
  6. +
+
+
+

安装操作系统软件并将其更新到最新版本

+

使用 Clear Linux OS 软件实用程序 swupd 能够执行系统更新,利用上游开发成果。

+

要更新新安装的操作系统,请运行:

+
sudo swupd update
+
+
+
+
+

添加捆绑包

+

软件应用程序使用 swupd bundle-add 命令作为捆绑包安装。经验丰富的 Linux 用户可能会将 swupd 与运行用于包管理的 apt-getyum install 加以比较。但是 Clear Linux OS 在捆绑包(即集成的包堆栈)级别管理包。

+

例如,sysadmin-basic 捆绑包会安装对系统管理员有用的大多数应用程序。要安装它,请输入:

+
swupd bundle-add sysadmin-basic
+
+
+

查看与 sysadmin-basic 捆绑包一起安装的捆绑包和软件包完整列表。您还可以查看适用于 Clear Linux OS 的所有 bundles,包括活动或弃用的捆绑包。

+

加深对 swupd 的认识,查看我们的开发人员资源:

+ +
+
+

后续步骤

+

查看我们的指南和教程。

+ +
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/fix-broken-install.html b/zh_CN/guides/maintenance/fix-broken-install.html new file mode 100644 index 000000000..9ce6f6f7d --- /dev/null +++ b/zh_CN/guides/maintenance/fix-broken-install.html @@ -0,0 +1,1153 @@ + + + + + + + + + + + + + + 修复损坏的安装 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

修复损坏的安装

+

本指南介绍如何使用 USB 上的实时桌面映像修复损坏的 Clear Linux* OS 安装。

+ +
+

概述

+

本指南假设您已经在目标系统上安装了 Clear Linux OS,但是操作系统无法正常引导或运行。

+

本指南中介绍的过程只能验证和修复 swupd/usr 中拥有的文件。此路径之外的文件,如 /home//etc/var 等无法通过此过程修复。

+
+
+

必备条件

+ +
+
+

引导实时桌面映像来修复目标系统

+
    +
  1. 引导 Clear Linux OS 实时桌面映像。
  2. +
+
+
+

从实时映像安装

+

下载实时桌面映像并将其刻录到 USB 驱动器后,请按照以下步骤操作。

+
    +
  1. 将 USB 驱动器插入可用的 USB 插槽。

    +
  2. +
  3. 打开系统电源。

    +
  4. +
  5. F2 键打开系统 BIOS 设置菜单。您的 BIOS 设置菜单入口点可能会有所不同。

    +
  6. +
  7. 在设置菜单中,启用 UEFI 引导,并在设备引导顺序中将 USB 驱动器设置为第一个选项。

    +
  8. +
  9. 保存这些设置,例如按 F10,然后退出。

    +
  10. +
  11. 重新引导目标系统。

    +
  12. +
  13. 在引导菜单中选择 Clear Linux OS,如图 1 所示。

    +
    +Clear Linux OS in boot menu +

    图 1:引导菜单中的 Clear Linux OS

    +
    +
  14. +
+
+
+

挂载根分区,然后验证并修复

+
    +
  1. 打开一个终端窗口。

    +
  2. +
  3. 确保系统已连接到网络。

    +
  4. +
  5. 挂载系统的根分区。

    +
      +
    1. 要查找根分区,请运行:

      +
      lsblk
      +
      +
      +

      我们将使用 /dev/sda3/ 作为根分区示例。

      +
    2. +
    3. 接下来,将分区挂载到 /mnt 文件夹。

      +
      sudo mount /dev/sda3 /mnt
      +
      +
      +
    4. +
    +
  6. +
  7. 通过检查 Clear Linux OS 系统上常见的一些文件,验证是否挂载了正确的根分区。

    +
    cat /mnt/usr/lib/os-release
    +ls /mnt/usr/share/clear/bundles
    +
    +
    +
  8. +
  9. 接下来,运行 swupd 来修复目标系统上的任何问题。

    +
    sudo swupd repair --picky --path=/mnt
    +
    +
    +

    Learn more about how swupd works

    +
  10. +
  11. 该过程完成后,卸载根分区:

    +
    sudo umount /mnt
    +
    +
    +
  12. +
  13. 重新引导系统,卸下实时桌面 USB 驱动器,并引导至修复后的系统。

    +
    sudo reboot
    +
    +
    +
  14. +
+

祝贺您!您已成功恢复 Clear Linux OS。

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/hostname.html b/zh_CN/guides/maintenance/hostname.html new file mode 100644 index 000000000..8eae24f6a --- /dev/null +++ b/zh_CN/guides/maintenance/hostname.html @@ -0,0 +1,1107 @@ + + + + + + + + + + + + + + 修改主机名 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

修改主机名

+

本指南介绍如何修改和查看 Clear Linux* OS 系统的主机名。

+ +
+

概述

+

默认情况下,Clear Linux OS 安装有一个计算机生成的名称,它是一长串字母和数字。生成的名称对计算机来说没问题,但对用户来说不友好。管理员和用户通常希望用一个更容易记住、键入和搜索的名称来重命名他们的计算机。通过重命名计算机,可在其名称中包含有意义的数据,也让计算机更容易被识别。以下是几个用户友好型的计算机名称示例:

+
    +
  • regression-test
  • +
  • sally-test-box1
  • +
  • az-bldg2-lab
  • +
+
+
+

设置主机名

+

Clear Linux OS 使用 hostnamectl 命令显示和修改计算机名称。hostnamectlos-core 捆绑包的一部分,提供了基本的 Linux* 用户空间和实用程序。

+

本示例将主机名设置为 telemetry-test-2-h15,以标识网格位置 H15 处二楼的 Clear Linux OS 遥测测试计算机。请确保在设置新主机名后重启。

+
sudo hostnamectl set-hostname telemetry-test-2-h15
+sudo reboot
+
+
+
+

注解

+

主机名有三种类型,分别是静态、瞬态和灵活主机名。最常见的是静态主机名。静态主机名的长度必须在 2 到 63 个字符之间,必须以字母或数字开头和结尾,并且可以包含字母(不区分大小写)、数字、破折号或点。

+

如果存在静态主机名,它将用于生成由内核维护的瞬态主机名。运行时,DHCP 或 mDNS 可以更改瞬态主机名。

+

灵活主机名是一个自由格式的 UTF8 名称,用于向用户显示。

+
+
+
+

查看主机名

+

使用以下命令查看当前的主机名:

+
hostnamectl
+
+
+

您应该会看到类似以下内容的输出:

+
Static hostname   : telemetry-test-2-h15
+Pretty hostname   : telemetry-test-2-h15
+Icon name         : computer-desktop
+Chassis           : desktop
+Machine ID        : 4d0d60207a904ebbab96680a51ac1339
+Boot ID           : 98d3514e5a984e8cbbdf46a2f0d6b397
+Operating System  : Clear Linux OS
+Kernel            : Linux 4.18.8-632.native
+Architecture      : x86-64
+
+
+

祝贺您!您成功地在 Clear Linux OS 系统中修改了主机名。

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/increase-virtual-disk-size.html b/zh_CN/guides/maintenance/increase-virtual-disk-size.html new file mode 100644 index 000000000..fbb6b547d --- /dev/null +++ b/zh_CN/guides/maintenance/increase-virtual-disk-size.html @@ -0,0 +1,1193 @@ + + + + + + + + + + + + + + 增加映像的虚拟磁盘大小 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

增加映像的虚拟磁盘大小

+

本指南介绍在需要更大容量时如何增加预构建的 Clear Linux* OS 映像的磁盘大小。

+ +
+

确定预构建映像的分区顺序和大小。

+

Clear Linux OS 预构建映像拥有不同的大小,范围从 300 MB 至 20 GB 不等。

+

有两种方法可找到预构建 Clear Linux OS 映像分区虚拟盘的顺序和大小。

+

在两个例子中,预构建 Hyper-V 映像拥有 8.5 GB 磁盘大小,其中 /dev/sda3 为根文件系统 (/) 分区

+
+

在虚拟机上检查 lsblk

+

第一种方法是引导启动您的 虚拟机 并执行 lsblk 命令,如下所示:

+
sudo lsblk
+
+
+

lsblk 命令输出结果示例:

+
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
+sda      8:0   0    8.5G  0 disk
+├─sda1   8:1   0    512M  0 part
+├─sda2   8:2   0     32M  0 part [SWAP]
+└─sda3   8:3   0      8G  0 part /
+
+
+

还可在图 1 中查看此示例。

+
+
+

检查用来构建映像的 config.json

+

第二种方法是确定分区,以检查用来创建预构建映像的 config.json 文件,该文件位于 releases 库。例如,要发现版本号 20450 的 Hyper-V* 映像的大小,请遵循如下步骤:

+
    +
  1. 转到 releases 库。

    +
  2. +
  3. 追溯 20450 > clear > config > image 目录。

    +
  4. +
  5. 打开 hyperv-config.json 文件。

    +
  6. +
  7. 找到 PartitionLayout 键。

    +

    该例子显示 DFI 分区为 512 MB,swap 分区为 32 MB,而根分区为 8 GB。

    +
    "PartitionLayout" : [ { "disk" : "hyperv.img",
    +                        "partition" : 1,
    +                        "size" : "512M",
    +                        "type" : "EFI" },
    +                        { "disk" : "hyperv.img",
    +                        "partition" : 2,
    +                        "size" : "32M",
    +                        "type" : "swap" },
    +                        { "disk" : "hyperv.img",
    +                        "partition" : 3,
    +                        "size" : "8G",
    +                        "type" : "linux" } ],
    +
    +
    +
  8. +
+
+
+
+

增加虚拟盘大小

+

一旦确定增加磁盘和分区的大小,您将执行实际操作增加磁盘、分区和 filesystem 的大小。

+
+

关闭虚拟机并增加虚拟盘大小

+

要为预构建映像增加虚拟盘大小,请执行如下步骤:

+
    +
  1. 关闭正在运行的虚拟机。
  2. +
  3. 使用虚拟机管理程序或云提供商规定的流程或增加 Clear Linux OS 虚拟机的虚拟盘大小。
  4. +
  5. 开启虚拟机。
  6. +
+
+
+

调整虚拟盘的分区大小

+
    +
  1. 登录拥有根权限的账户。

    +
  2. +
  3. 打开一个终端模拟器。

    +
  4. +
  5. 添加 storage-utils 捆绑包以安装 partedresize2fs 工具。

    +
    sudo swupd bundle-add storage-utils
    +
    +
    +
  6. +
  7. 启动 parted 工具。

    +
    sudo parted
    +
    +
    +
  8. +
  9. parted 工具中,执行如下步骤:

    +
      +
    1. 按下 p 以打印分区表。

      +
    2. +
    3. 如果显示下面的警告消息,则输入 Fix

      +
      Warning: Not all of the space available to :file:`/dev/sda` appears to be
      +used, you can fix the GPT to use all of the space (an extra ...
      +blocks) or continue with the current setting?
      +
      +Fix/Ignore?
      +
      +
      +
    4. +
    5. 输入 resizepart [partition number],其中 [partition number] 是需要修改的分区的分区编号。

      +
    6. +
    7. 出现提示时输入 yes

      +
    8. +
    9. 输入新的 End 大小。

      +
      +

      注解

      +

      如果希望一个分区占用剩余的盘空间,则输入磁盘的总大小。使用 p 命令打印分区表时, Disk 标签后面会显示出总磁盘大小。

      +

      本步骤示例可在图 1 中查看。

      +
      +
    10. +
    11. 当调整映像完成后,输入 q 退出 parted

      +

      图 1 介绍了将虚拟盘分区从 8.5 GB 调整至 20 GB 的步骤。

      +
      +Increase root partition size +

      图 1:增加根分区的大小。

      +
      +
    12. +
    +
  10. +
+
+
+

调整文件系统的大小

+
    +
  1. 输入 sudo resize2fs -p /dev/[modified partition name],其中 [modified partition name] 是在 parted 工具中改变的分区。

    +
  2. +
  3. 运行 df -h 确认 filesystem 大小已增加。

    +

    图 2 介绍了将虚拟盘分区从 8.5 GB 调整至 20 GB 的步骤。

    +
    +Increase root filesystem with resize2fs +

    图 2:扩展分区后增加根 filesystem 大小。

    +
    +
  4. +
+

祝贺您!您已经调整磁盘、分区和 filesystem 的大小。此时,盘容量的增加是有用的。

+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/query-upstream.html b/zh_CN/guides/maintenance/query-upstream.html new file mode 100644 index 000000000..cd0ee6c28 --- /dev/null +++ b/zh_CN/guides/maintenance/query-upstream.html @@ -0,0 +1,1238 @@ + + + + + + + + + + + + + + 从上游存储库查询软件包信息 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

从上游存储库查询软件包信息

+

本指南介绍如何从 Clear Linux* OS 上游存储库查询软件包信息。本指南面向开发人员和高级用户。

+ +
+

概述

+

在 Clear Linux* OS 中,swupd 工具用于管理软件依赖项以及安装捆绑包而非软件包。虽然捆绑包是一个或多个软件包的集合,但 Clear Linux OS 在客户端上无法处理软件包。但是,在上游/工厂端,Clear Linux OS 可以使用名为混合的过程来处理软件包。

+

当前,swupd 不会报告已安装的软件包,也不会提供软件包版本信息或返回其他软件包详细信息。本指南介绍了用于使用 DNF 命令从 Clear Linux OS 上游存储库检索软件包信息的方法。

+
+
+

必备条件

+

本指南假定您已在主机系统中安装了 Clear Linux OS。有关在裸机系统中安装 Clear Linux OS 的详细说明,请参见 裸机安装指南

+

安装任何新软件包之前,请使用以下命令更新 Clear Linux OS:

+
sudo swupd update
+
+
+
+
+

配置 DNF

+
    +
  1. 使用以下命令安装 DNF 捆绑包:

    +
    sudo swupd bundle-add dnf
    +
    +
    +
  2. +
  3. 使用以下命令创建 dnf.conf 文件:

    +
    sudo mkdir -p /etc/dnf
    +sudo curl -L https://github.com/clearlinux/common/raw/master/conf/dnf.conf --output /etc/dnf/dnf.conf
    +
    +
    +
  4. +
  5. 编辑 /etc/dnf/dnf.conf 文件,并为以下示例中的第 3 行和第 9 行中显示的二进制 RPM 和源 RPM 设置 baseurl 变量。

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    [clear]
    +name=Clear
    +baseurl=https://cdn.download.clearlinux.org/releases/$releasever/clear/x86_64/os/
    +enabled=1
    +gpgcheck=0
    +[clear-source]
    +name=Clear sources
    +failovermethod=priority
    +baseurl=https://cdn.download.clearlinux.org/releases/$releasever/clear/source/SRPMS/
    +enabled=1
    +gpgcheck=0
    +
    +
    +
  6. +
  7. 使用以下命令初始化 RPM 数据库:

    +
    sudo rpm --initdb
    +
    +
    +
  8. +
+
+
+

DNF 命令用法示例

+ +
+

列出当前发行版中的所有二进制 RPM 和源 RPM

+

命令:

+
dnf repoquery --releasever=current
+
+
+

示例输出:

+
Clear                                    5.1 MB/s |  13 MB     00:02
+Clear sources                            1.8 MB/s | 1.7 MB     00:00
+AVB-AudioModules-0:4.1.0-1.src
+AVB-AudioModules-0:4.1.0-1.x86_64
+AVB-AudioModules-data-0:4.1.0-1.x86_64
+AVB-AudioModules-dev-0:4.1.0-1.x86_64
+AVB-AudioModules-lib-0:4.1.0-1.x86_64
+AVB-AudioModules-license-0:4.1.0-1.x86_64
+AVBStreamHandler-0:1.1.0-21.src
+AVBStreamHandler-0:1.1.0-21.x86_64
+AVBStreamHandler-abi-0:1.1.0-21.x86_64
+AVBStreamHandler-bin-0:1.1.0-21.x86_64
+AVBStreamHandler-data-0:1.1.0-21.x86_64
+AVBStreamHandler-dev-0:1.1.0-21.x86_64
+AVBStreamHandler-lib-0:1.1.0-21.x86_64
+AVBStreamHandler-license-0:1.1.0-21.x86_64
+...
+<trimmed>
+
+
+
+
+

显示当前发行版中的软件包的版本信息

+

此示例查询 zstd 软件包的版本信息。

+

命令:

+
dnf repoquery --releasever=current zstd
+
+
+

示例输出:

+
Last metadata expiration check: 0:02:30 ago on Tue 16 Jul 2019 03:03:34 PM PDT.
+zstd-0:1.4.0-46.src
+zstd-0:1.4.0-46.x86_64
+
+
+
+
+

显示特定发行版中的软件包的版本信息

+

此示例查询发行版 21000 中的 zstd 软件包的版本信息。

+

命令:

+
dnf repoquery --releasever=21000 zstd
+
+
+

示例输出:

+
Clear
+2.7 MB/s | 3.9 MB     00:01
+Clear sources
+628 kB/s | 559 kB     00:00
+zstd-0:1.3.3-20.src
+zstd-0:1.3.3-20.x86_64
+
+
+
+
+

仅显示特定发行版中的软件包的版本和发行信息

+

此示例查询发行版 15000 中的 zstd 软件包的版本和发行信息。

+

命令:

+
dnf repoquery --releasever=15000 --qf="%{VERSION}\n%{RELEASE}" zstd
+
+
+

示例输出:

+
Clear
+3.4 MB/s | 3.9 MB     00:01
+Clear sources
+345 kB/s | 528 kB     00:01
+1.1.4
+5
+
+
+
+
+

显示指定二进制文件的二进制包

+

此示例将返回包含 /usr/bin/zip 二进制文件的二进制包。

+

命令:

+
dnf repoquery --releasever=current --whatprovides /usr/bin/zip
+
+
+

示例输出:

+
Last metadata expiration check: 0:04:47 ago on Tue 16 Jul 2019 03:03:34 PM PDT.
+zip-bin-0:3.0-23.x86_64
+
+
+
+
+

显示指定二进制文件的源包

+

此示例将返回包含 /usr/bin/zip 二进制文件的源包。

+

命令:

+
dnf repoquery --releasever=current --whatprovides /usr/bin/zip --srpm
+
+
+

示例输出:

+
Last metadata expiration check: 0:05:50 ago on Tue 16 Jul 2019 03:03:34 PM PDT.
+zip-0:3.0-23.src
+
+
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/resource-limits.html b/zh_CN/guides/maintenance/resource-limits.html new file mode 100644 index 000000000..83996a069 --- /dev/null +++ b/zh_CN/guides/maintenance/resource-limits.html @@ -0,0 +1,1122 @@ + + + + + + + + + + + + + + 资源限制 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

资源限制

+

Linux 系统使用限制机制或配额机制为系统资源提供服务质量,并且包含异常进程。

+

这些限制分为系统级别和用户级别。如果需要修改这些限制,则了解不同的限制配置会有帮助。

+ +
+

系统范围限制

+

部分全局资源限制在 Linux 内核中实施,并且可以使用内核参数进行控制。

+

例如,可以使用 fs.file-max 参数来设置针对最大打开文件数的全局限制。此限制应用于所有进程,并且用户不能超过其他限制值。

+
+

检查限制

+

可以使用 sysctl -n <PARAMETER> 来检查当前值。例如:

+
sysctl -n fs.file-max
+
+
+

默认情况下,此 fs.file-max 值在 Clear Linux OS 系统中有意设置得较高。可以使用以下命令检查系统支持的最大值:

+
cat /proc/sys/fs/file-max
+
+
+
+
+

替代限制

+

可以使用 sysctl -w <PARAMETER> 来替代某个值。例如:

+
sudo sysctl -w fs.file-max=<NUMBER>
+
+
+

如果需要永久值,可以通过创建 /etc/sysctl.d/*.conf 文件来设置值(有关详细信息,请参见 man sysctl.d)。例如:

+
sudo mkdir -p /etc/sysctl.d/
+
+sudo tee /etc/sysctl.d/fs-file-max.conf  > /dev/null <<'EOF'
+fs.file-max=<NUMBER>
+EOF
+
+
+
+
+
+

每用户限制

+

对于不由 systemd 管理的进程,可以在 /etc/security/limits.conf 文件中使用上限和下限基于用户为 PAM 登录设置资源限制。

+

可以设置临时值,并使用 ulimit 命令检查当前值。例如,要更改当前用户的最大打开文件数描述符的软限制:

+
ulimit -S -n <NUMBER>
+
+
+

有关详细信息,请参见 man limits.conf

+
+
+

服务限制

+

使用 systemd 单元启动的服务的资源限制不遵循正常用户限制,因为进程在单独的 Linux 控制组 (cgroup) 中启动,Linux cgroup 将相关的进程组相关联并提供资源计帐。

+

可以在相应的单元文件或配置放置目录中使用资源限制指令来控制各个 systemd 服务的资源限制。请参见 process properties section of the systemd.exec man page

+

可以使用 /etc/systemd/system.conf.d/ 目录中的文件来控制所有 systemd 服务的资源限制。例如,要禁用对最大打开文件数的限制:

+
sudo mkdir -p /etc/systemd/system.conf.d/
+
+sudo tee /etc/systemd/system.conf.d/50-nfiles.conf  > /dev/null <<'EOF'
+[Manager]
+DefaultLimitNOFILE=infinity
+EOF
+
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/restart.html b/zh_CN/guides/maintenance/restart.html new file mode 100644 index 000000000..18ca21434 --- /dev/null +++ b/zh_CN/guides/maintenance/restart.html @@ -0,0 +1,1151 @@ + + + + + + + + + + + + + + 操作系统更新后重启系统服务 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

操作系统更新后重启系统服务

+

本指南介绍如何使用 clr-service-restart

+ +
+

概述

+

Clear Linux* OS 包含 clr-service-restart 工具,该工具显示哪些系统守护程序需要重新启动。

+

clr-service-restart 读取内核提供的 procfs 文件系统中的各种文件,并依靠 systemd 来确定要重新启动哪些服务。

+
+
+

工作原理

+

clr-service-restart 会实现一个白名单,以确定哪些守护程序可以重启。系统管理员可以使用 allowdisallow 选项自定义重启系统服务时使用的默认 Clear Linux OS 操作系统白名单。执行软件更新时,clr-service-restart 会查阅该白名单,确认是否允许重启某个服务守护程序。有关详细信息,请参阅选项部分。

+
+
+

基本选项

+

clr-service-restart 具有三个基本选项: allowdisallowdefault

+
+

允许

+

allow 选项标识操作系统软件更新后要重启的守护程序。clr-service-restart 守护程序会在 /etc/clr-service-restart 中创建一个符号链接作为记录。下面的示例指示 clr-service-restart 在操作系统软件更新后重启 tallow 守护程序。

+
sudo clr-service-restart allow tallow.service
+
+
+
+
+

不允许

+

disallow 选项指示 clr-service-restart 不要重启指定的守护程序,即使操作系统默认允许重启该守护程序。clr-service-restart 守护程序会在 /etc/clr-service-restart 中创建一个指向 /dev/null 的符号链接作为记录。下面的示例指示 clr-service-restart 在操作系统软件更新后不要重启 rngd 守护程序。

+
sudo clr-service-restart disallow rngd
+
+
+
+
+

默认

+

default 选项指示 clr-service-restart 恢复使用操作系统默认设置,并删除 /etc/clr-service-restart 中的任何符号链接。下面的示例指示 clr-service-restart 重新自动重启 rngd,因为 Clear Linux OS 默认将 rngd 加入了自动重启服务白名单。

+
sudo clr-service-restart default rngd
+
+
+
+
+
+

监控选项

+

clr-service-restart 在后台运行,并通过 swupd 自动调用。查看日志输出可确认在操作系统软件更新后重启的服务。

+

如果同时传递两个选项(-a-n),clr-service-restart 会显示需要重启的系统服务的完整清单。使用这两个选项可确认所有所需的守护程序都已重启。

+
+

-n option

+

此选项指示 clr-service-restart 不执行任何重启,而是显示可能要重启的服务。使用该选项时,clr-service-restart 会输出一个消息列表,显示:

+
    +
  • 哪个服务需要重启。
  • +
  • 它是什么单元。
  • +
  • 为什么它需要重启。
  • +
  • 重启该单元需要哪个命令。
  • +
+
+
+

-a option

+

此选项指示 clr-service-restart 考虑所有系统服务,而不仅仅是白名单中的服务。因为 Clear Linux OS 中的默认白名单相对较短,所以您可以在登录系统时使用此选项重启所有受影响的服务。

+
+
+
+

示例

+

在下面的示例中,clr-service-restart 使用 -a-n 两个选项进行了调用,显示了需要重新启动的系统服务的完整列表。

+

命令:

+
sudo clr-service-restart -a -n
+
+
+

示例输出:

+
upower.service: needs a restart (a library dependency was updated)
+/usr/bin/systemctl --no-ask-password try-restart upower.service
+NetworkManager.service: needs a restart (a library dependency was
+updated)
+/usr/bin/systemctl --no-ask-password try-restart NetworkManager.service
+....
+
+
+
+
+

遥测技术

+

clr-service-restart 可能会导致一些问题,例如守护程序重启时服务短暂中断,或者守护程序未能正确重启。为了最大限度减少这些问题,clr-service-restart 会创建遥测记录,并在满足以下两个条件时将其发送到可选的 Clear Linux OS 遥测服务:

+
    +
  • 如果某个单元在操作系统更新后无法自动重启。
  • +
  • 如果该单元位于系统位置 /usr/lib/systemd/system
  • +
+

如果未安装 Clear Linux OS 遥测捆绑包,该数据将被丢弃。如果安装了遥测捆绑包并选择发送遥测数据,则该系统单元名称将发送到 Clear Linux OS 遥测服务。我们会评估报告并更新白名单,移除出无法正常重启的服务。

+
+
+

总结

+

Clear Linux OS 团队喜欢想出简单但有效的解决方案,让您的工作变得更轻松。我们为 clr-service-restart 创建了一个 github 项目,并邀请您查看代码,分享您的想法,并与我们一起改进该项目。您可以在以下网址找到该项目:

+

https://github.com/clearlinux/clr-service-restart

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/time.html b/zh_CN/guides/maintenance/time.html new file mode 100644 index 000000000..79d79ee93 --- /dev/null +++ b/zh_CN/guides/maintenance/time.html @@ -0,0 +1,1096 @@ + + + + + + + + + + + + + + 设置时间 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

设置时间

+

本指南介绍了当无法访问默认 NTP 服务器时,如何重置 Clear Linux* OS 系统中的时间。

+

Clear Linux OS 使用 systemd-timesyncd.service 守护程序来同步时间。

+
    +
  1. 安装 sysadmin-basic 捆绑包。

    +
    sudo swupd bundle-add sysadmin-basic
    +
    +
    +
  2. +
  3. 设置时区。此示例中使用了洛杉矶。

    +
    timedatectl set-timezone America/Los_Angeles
    +
    +
    +
    +

    注解

    +

    要查看时区列表,请使用 timedatectl list-timezones | grep <locale> 命令

    +
    +
  4. +
  5. 创建一个 /etc/systemd/ 目录。

    +
    sudo mkdir -p /etc/systemd/
    +
    +
    +
  6. +
  7. 创建一个名为 /etc/systemd/timesyncd.conf 的新文件,并输入以下文本。

    +
    [Time]
    +NTP=<Preferred Server>
    +FallbackNTP=<backup server 1> <backup server 2>
    +
    +
    +
  8. +
  9. 启用 systemd-timesyncd 服务。

    +
    timedatectl set-ntp true
    +
    +
    +
  10. +
+
+

注解

+

要检查服务状态,请使用 timedatectl status 命令。

+

要重启 timesyncd 守护程序,请在终端仿真器中输入 systemctl restart systemd-timesyncd

+
+

祝贺您!您成功地在 Clear Linux OS 系统中设置了时间。

+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/maintenance/validate-signatures.html b/zh_CN/guides/maintenance/validate-signatures.html new file mode 100644 index 000000000..46fb52969 --- /dev/null +++ b/zh_CN/guides/maintenance/validate-signatures.html @@ -0,0 +1,1151 @@ + + + + + + + + + + + + + + 验证签名 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

验证签名

+

本指南介绍如何验证 Clear Linux* OS 映像的内容。

+ +
+

概述

+

验证映像内容是一个手动过程,与 swupd 在内部执行的过程相同。

+

Clear Linux OS 提供了一种验证映像内容或更新内容的方法。所有内容验证都是通过创建哈希以及对哈希签名来实现的。有效的签名会创建一个信任链。信任链断裂被视为无效签名,意味着内容无效。

+
+
+

映像内容验证

+

在下面的步骤中,我们使用了 Clear Linux OS 最新版本的安装程序映像。您可以使用您选择的任何 Clear Linux OS 映像。

+
    +
  1. 下载映像、映像 SHA512 总和的签名以及用于对 SHA512 总和签名的 Clear Linux OS 证书。

    +
    # Image
    +curl -O https://cdn.download.clearlinux.org/current/clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz
    +# Signature of SHA512 sum of image
    +curl -O https://cdn.download.clearlinux.org/current/clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz-SHA512SUMS.sig
    +# Certificate
    +curl -O https://cdn.download.clearlinux.org/releases/$(curl https://cdn.download.clearlinux.org/latest)/clear/ClearLinuxRoot.pem
    +
    +
    +
  2. +
  3. 生成 Clear Linux OS 证书的 SHA256 总和。

    +
    sha256sum ClearLinuxRoot.pem
    +
    +
    +
  4. +
  5. 确保生成的 Clear Linux OS 证书 SHA256 总和与以下 SHA256 总和匹配,以验证证书的完整性。

    +
    4b0ca67300727477913c331ff124928a98bcf2fb12c011a855f17cd73137a890  ClearLinuxRoot.pem
    +
    +
    +
  6. +
  7. 生成映像的 SHA512 总和,并将其保存到文件中。

    +
    sha512sum clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz > sha512sum.out
    +
    +
    +
  8. +
  9. 确保使用 Clear Linux OS 证书创建了映像 SHA512 总和的签名。这会确认映像是可信的,并且没有经过修改。

    +
    openssl smime -verify -purpose any -in clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz-SHA512SUMS.sig -inform der -content sha512sum.out -CAfile ClearLinuxRoot.pem
    +
    +
    +
    +

    注解

    +

    使用 OpenSSL 1.1 时,-purpose any 选项是必需的。如果使用 OpenSSL 的早期版本,请在执行签名验证时忽略此选项。您可以使用 openssl version 命令来确定正在使用的 OpenSSL 的版本。

    +
    +
  10. +
  11. 输出应包含 “Verification successful”。如果输出在任何地方包含 “bad_signature”,则映像不可信。

    +
  12. +
+
+
+

更新内容验证

+

swupd 会在应用更新内容之前自动验证所有更新内容。这里以最新 Clear Linux OS 版本为例,通过手动步骤说明 swupd 在内部遵循的过程。执行 swupd update 时,不需要手动执行这些步骤。

+
    +
  1. 下载 MoM、MoM 签名以及用于对 MoM 签名进行签名的 Swupd 证书。

    +
    # MoM
    +curl -O https://cdn.download.clearlinux.org/update/$(curl https://cdn.download.clearlinux.org/latest)/Manifest.MoM
    +# Signature of MoM
    +curl -O https://cdn.download.clearlinux.org/update/$(curl https://cdn.download.clearlinux.org/latest)/Manifest.MoM.sig
    +# Swupd certificate
    +curl -O https://cdn.download.clearlinux.org/releases/$(curl https://cdn.download.clearlinux.org/latest)/clear/Swupd_Root.pem
    +
    +
    +
  2. +
  3. 生成 swupd 证书的 SHA256 总和。

    +
    sha256sum Swupd_Root.pem
    +
    +
    +
  4. +
  5. 确认生成的 swupd 证书 SHA256 总和与以下 SHA256 总和匹配,以验证证书的完整性。

    +
    ff06fc76ec5148040acb4fcb2bc8105cc72f1963b55de0daf3a4ed664c6fe72c  Swupd_Root.pem
    +
    +
    +
  6. +
  7. 确认 MoM 签名是使用 Swupd 证书创建的。此签名会验证更新内容是可信的,没有经过修改。

    +
    openssl smime -verify -purpose any -in Manifest.MoM.sig -inform der -content Manifest.MoM -CAfile Swupd_Root.pem
    +
    +
    +
    +

    注解

    +

    使用 OpenSSL 1.1 时,-purpose any 选项是必需的。如果使用 OpenSSL 的早期版本,请在执行签名验证时忽略此选项。您可以使用 openssl version 命令来确定正在使用的 OpenSSL 的版本。

    +
    +
    +

    注解

    +

    系统不会生成 MoM 的 SHA512 总和,也不会对该 SHA512 总和签名。相反,系统直接对 MoM 签名,因为它的大小比 Clear Linux OS 映像小。

    +
    +
  8. +
  9. 输出应包含 “Verification successful”。如果输出在任何地方包含 “bad_signature”,则 MoM 不可信。由于 MoM 包含捆绑包清单的哈希列表,因此如果 MoM 不可信,那么捆绑包内容也不可信。

    +
  10. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/network/custom-clear-container.html b/zh_CN/guides/network/custom-clear-container.html new file mode 100644 index 000000000..757e73da5 --- /dev/null +++ b/zh_CN/guides/network/custom-clear-container.html @@ -0,0 +1,1340 @@ + + + + + + + + + + + + + + 根据 Docker 容器映像构建一个自定义 Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • 指南 »
  • + +
  • 根据 Docker 容器映像构建一个自定义 Clear Linux* OS
  • + + +
  • + + + + Edit on GitHub + + + +
  • + +
+ + +
+
+
+
+ +
+

根据 Docker 容器映像构建一个自定义 Clear Linux* OS

+

本指南包含构建自定义容器映像的步骤。官方基础版 Clear Linux* OS 容器映像发布在 Docker* Hub 上,而且会定期更新。

+ +
+

必备条件

+
    +
  • 您必须在 Clear Linux OS 系统上执行这些步骤,因为系统使用 swupd 管理容器中的捆绑包。
  • +
  • 您必须在 Clear Linux OS 系统上安装 containers-basic 捆绑包,否则 Docker 将无法运行。
  • +
  • 您需要对 Docker 有基本了解。
  • +
+
+
+

构建基础容器映像

+
    +
  1. 登录并获得 root 特权。

    +
    sudo -s
    +
    +
    +
  2. +
  3. 确认 Docker 已安装且正在运行。

    +
    docker info
    +
    +
    +

    如果 Docker 已安装且正在运行,输出类似于以下示例:

    +
    Containers: 0
    + Running: 0
    + Paused: 0
    + Stopped: 0
    +Images: 4
    +Server Version: 17.05.0-ce
    +Storage Driver: overlay
    + Backing Filesystem: extfs
    + Supports d_type: true
    +Logging Driver: json-file
    +Cgroup Driver: cgroupfs
    +Plugins:
    + Volume: local
    + Network: bridge host macvlan null overlay
    +Swarm: inactive
    +Runtimes: runc
    +Default Runtime: runc
    +Init Binary: docker-init
    +containerd version:  (expected: 9048e5e50717ea4497b757314bad98ea3763c145)
    +runc version: N/A (expected: 9c2d8d184e5da67c95d601382adf14862e4f2228)
    +init version: N/A (expected: )
    +Kernel Version: 4.12.7-377.native
    +Operating System: Clear Linux OS for Intel Architecture
    +OSType: linux
    +Architecture: x86_64
    +CPUs: 4
    +Total Memory: 15.62GiB
    +Name: clr-os
    +ID: XQHJ:DYEM:3Q4D:DKLM:JOA4:RUSF:GAFR:DLPA:HOJP:W5FF:ULEE:7HZ3
    +Docker Root Dir: /var/lib/docker
    +Debug Mode (client): false
    +Debug Mode (server): false
    +Registry: https://index.docker.io/v1/
    +Experimental: false
    +Insecure Registries:
    + 127.0.0.0/8
    +Live Restore Enabled: false
    +
    +
    +

    如果 Docker 未安装,请输入以下命令:

    +
    swupd bundle-add containers-basic
    +systemctl start docker
    +
    +
    +
  4. +
  5. 使用 os-install 下载并安装捆绑包。

    +
    swupd os-install --url https://cdn.download.clearlinux.org/update --statedir "$PWD"/swupd-state --no-boot-update --version 29790 -B os-core-update,editors,network-basic base
    +
    +
    +

    swupd 示例使用以下标志:

    +
      +
    • os-install 指示 swupd 执行下载和安装。
    • +
    • -V / --version 指定 Clear Linux OS 捆绑包版本。
    • +
    • --url 指定捆绑包存储库的 URL。
    • +
    • --statedir 指定用来存储下载的捆绑包和任何状态信息的状态目录。
    • +
    • --no-boot-update 指示 swupd 跳过更新引导文件,因为容器不需要引导文件。
    • +
    +

    有关 swupd 标志的详细信息,请输入 swupd os-install -h 命令。

    +

    结果示例:

    +
    swupd-client software verify 3.12.2
    +Copyright (C) 2012-2017 Intel Corporation
    +
    +Verifying version 17870
    +Attempting to download version string to memory
    +Downloading packs...
    +
    +Extracting python-basic pack for version 17820
    +  ...14%
    +Extracting perl-basic pack for version 17790
    +  ...28%
    +Extracting openssh-server pack for version 17660
    +  ...42%
    +Extracting editors pack for version 17850
    +  ...57%
    +Extracting network-basic pack for version 17650
    +  ...71%
    +Extracting os-core pack for version 17870
    +  ...85%
    +Extracting os-core-update pack for version 17870
    +  ...100%
    +Adding any missing files
    +  ...88%
    +Inspected 33982 files
    +  33974 files were missing
    +    33974 of 33974 missing files were replaced
    +    0 of 33974 missing files were not replaced
    +Calling post-update helper scripts.
    +WARNING: boot files update skipped due to --no-boot-update argument
    +Fix successful
    +
    +
    +
    +

    注解

    +

    警告消息是意料之中的,可以忽略。

    +
    +
  6. +
  7. 创建一个 tarball 并压缩它。

    +
    tar -C base -cf base.tar .
    +xz -v -T0 base.tar
    +
    +
    +
  8. +
  9. 创建 Dockerfile 来构建映像。

    +
    cat > Dockerfile << EOF
    +FROM scratch
    +MAINTAINER First Last <first.last@example.com>
    +ADD base.tar.xz /
    +CMD ["/bin/bash"]
    +EOF
    +
    +
    +
  10. +
  11. 构建 Clear Linux OS 容器映像。

    +
    docker build -t my-custom-clear-linux-container .
    +
    +
    +

    结果示例:

    +
    Sending build context to Docker daemon  806.5MB
    +Step 1/4 : FROM scratch
    +  --->
    +Step 2/4 : MAINTAINER First Last <first.last@example.com>
    +  ---> Running in 7238f35abcd0
    +  ---> ec5064287c60
    +Removing intermediate container 7238f35abcd0
    +Step 3/4 : ADD base.tar.xz /
    +  ---> 2723b7d20716
    +Removing intermediate container 16e3ed0df8da
    +Step 4/4 : CMD /bin/bash
    +  ---> Running in efa893350647
    +  ---> 5414c3a12993
    +Removing intermediate container efa893350647
    +Successfully built 5414c3a12993
    +Successfully tagged my-custom-clear-linux-container:latest
    +
    +
    +
  12. +
  13. 列出新创建的 Clear Linux OS 容器映像。

    +
    docker images
    +
    +
    +

    结果示例:

    +
    REPOSITORY                        TAG                 IMAGE ID            CREATED              SIZE
    +my-custom-clear-linux-container   latest              5414c3a12993        About a minute ago   616MB
    +
    +
    +
  14. +
  15. 启动已构建的 Clear Linux OS 容器。

    +
    docker run -it my-custom-clear-linux-container
    +
    +
    +
  16. +
+
+
+

管理容器中的捆绑包

+

您可以使用 Dockerfile 中的 RUN swupd 命令在 Clear Linux OS 容器中添加和移除捆绑包。

+
+

添加捆绑包

+

本示例 Dockerfile 将 pxe-server 捆绑添加到现有 Clear Linux OS Docker 映像:

+
cat > Dockerfile << EOF
+FROM my-customer-clear-linux-container
+MAINTAINER First Last <first.last@example.com>
+RUN swupd bundle-add pxe-server
+CMD ["/bin/bash/bash"]
+EOF
+
+
+

结果示例:

+
docker build -t my-clearlinux-with-pxe-server-bundle .
+
+Sending build context to Docker daemon  806.5MB
+Step 1/4 : FROM my-custom-clear-linux-container
+ ---> 5414c3a12993
+Step 2/4 : MAINTAINER First Last <first.last@example.com>
+ ---> Running in 19b4411cf4bd
+ ---> 08d400baffde
+Removing intermediate container 19b4411cf4bd
+Step 3/4 : RUN swupd bundle-add pxe-server
+ ---> Running in 3e634d6e0792
+swupd-client bundle adder 3.12.2
+   Copyright (C) 2012-2017 Intel Corporation
+
+Attempting to download version string to memory
+Downloading packs...
+
+Extracting pxe-server pack for version 17820
+.
+Installing bundle(s) files...
+..............................................................................
+..............................................................................
+..............................................................................
+..............................................................................
+..............................................................................
+..............................................................................
+Calling post-update helper scripts.
+WARNING: systemctl not operable, unable to run systemd update triggers
+Bundle(s) installation done.
+ ---> 8ead5f2c0c33
+Removing intermediate container 3e634d6e0792
+Step 4/4 : CMD /bin/bash
+ ---> Running in 0ceae320279b
+ ---> dcd9adb40611
+Removing intermediate container 0ceae320279b
+Successfully built dcd9adb40611
+Successfully tagged my-clearlinux-with-pxe-server-bundle:latest
+
+
+
+

注解

+

警告消息可以忽略,因为 systemd 不在容器内运行。

+
+
+
+

移除捆绑包

+

本示例 Dockerfile 从现有的 Clear Linux OS Docker 映像中移除 pxe-server 捆绑包:

+
cat > Dockerfile << EOF
+FROM my-clearlinux-with-pxe-server-bundle
+MAINTAINER First Last <first.last@example.com>
+RUN swupd bundle-remove pxe-server
+CMD ["/bin/bash/bash"]
+EOF
+
+
+

结果示例:

+
docker build -t my-clearlinux-remove-pxe-server-bundle .
+
+Sending build context to Docker daemon  806.5MB
+Step 1/4 : FROM my-clearlinux-with-pxe-server-bundle
+ ---> dcd9adb40611
+Step 2/4 : MAINTAINER First Last <first.last@example.com>
+ ---> Running in 71b60f15003e
+ ---> 742192751c1a
+Removing intermediate container 71b60f15003e
+Step 3/4 : RUN swupd bundle-remove pxe-server
+ ---> Running in ad28a3390ecc
+swupd-client bundle remover 3.12.2
+   Copyright (C) 2012-2017 Intel Corporation
+
+Removing bundle: pxe-server
+Deleting bundle files...
+Total deleted files: 92
+Untracking bundle from system...
+Success: Bundle removed
+1 bundle(s) were removed successfully
+ ---> d6ee7903e14d
+Removing intermediate container ad28a3390ecc
+Step 4/4 : CMD /bin/bash
+ ---> Running in 7694989e97de
+ ---> ec23189ef954
+Removing intermediate container 7694989e97de
+Successfully built ec23189ef954
+Successfully tagged my-clearlinux-remove-pxe-server-bundle:latest
+
+
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/network/dpdk.html b/zh_CN/guides/network/dpdk.html new file mode 100644 index 000000000..2ebfc2c6f --- /dev/null +++ b/zh_CN/guides/network/dpdk.html @@ -0,0 +1,1331 @@ + + + + + + + + + + + + + + 使用 DPDK 在平台之间发送数据包 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

使用 DPDK 在平台之间发送数据包

+

本指南介绍如何在两个平台之间发送数据包。

+ +
+

概述

+

图 1 显示了如何通过简单的配置在两个平台之间发送数据包。该示例使用了 Data Plane Development Kit,它是一套用于快速处理数据包的库、驱动程序、示例应用程序和工具。

+
+Platform A and B +

图 1:l3fwd DPDK 应用程序的环境

+
+

本示例使用以下 DPDK 组件:

+
    +
  • pktgen:流量生成器。有关详细信息,请参阅 pktgen 文档。
  • +
  • l3fwd:第 3 层转发示例应用程序。有关详细信息,请参阅 l3fwd 文档。
  • +
+
+
+

必备条件

+
    +
  • 两个平台使用 Clear Linux* OS 13330 或更高版本。

    +
  • +
  • 两个映像都必须包含 kernel-native 捆绑包。

    +
  • +
  • 使用以下命令安装 network-basic-dev 捆绑包:

    +
    sudo swupd bundle-add network-basic-dev
    +
    +
    +
  • +
  • 每个平台必须至少有一个 NIC。查阅 DPDK project 了解受支持的 dpdk.org NICs 列表。

    +
  • +
  • 两根网线。

    +
  • +
+
+
+

安装 dpdk 并构建 l3fwd 示例(平台 B)

+
    +
  1. 切换到 l3fwd 示例目录。

    +
    sudo cd /usr/share/dpdk/examples/l3fwd
    +
    +
    +
  2. +
  3. RTE_SDK 变量分配给 makefiles 路径。

    +
    sudo export RTE_SDK=/usr/share/dpdk/
    +
    +
    +
  4. +
  5. RTE_TARGET 变量分配给 gcc* 配置文件的位置。

    +
    sudo export RTE_TARGET=x86_64-native-linuxapp-gcc
    +
    +
    +
  6. +
  7. 构建 l3fwd 应用程序,并将配置头文件添加到 CFLAGS 变量中。

    +
    sudo make CFLAGS+="-include /usr/include/rte_config.h"
    +
    +
    +
  8. +
+
+
+

构建 pktgen(平台 A)

+
    +
  1. 下载 pktgen tar package v3.1.2 或更高版本。

    +
  2. +
  3. 解压缩软件包,并切换到未解压缩的源目录。

    +
  4. +
  5. RTE_SDK 变量分配给 makefiles 所在的路径。

    +
    sudo export RTE_SDK=/usr/share/dpdk/
    +
    +
    +
  6. +
  7. RTE_TARGET 分配给 gcc 配置文件的位置。

    +
    sudo export RTE_TARGET=x86_64-native-linuxapp-gcc
    +
    +
    +
  8. +
  9. 构建 pktgen 项目,并将 CONFIG_RTE_BUILD_SHARED_LIB 变量设置为 “n”。

    +
    sudo make CONFIG_RTE_BUILD_SHARED_LIB=n
    +
    +
    +
  10. +
+
+
+

将网卡绑定到 DPDK 内核驱动程序(平台 A 和平台 B)

+

l3fwd 应用程序使用两个网卡。DPDK 包括将网卡绑定到 DPDK 模块以运行 DPDK 应用程序的工具。

+
    +
  1. 加载 DPDK I/O 内核模块。

    +
    sudo modprobe vfio-pci
    +
    +
    +
  2. +
  3. 检查网卡以确定哪些网卡为空闲状态。另一个应用程序正在使用网卡时,状态显示为 “Active”,此时这些网卡无法绑定。

    +
    sudo dpdk-devbind --status
    +
    +
    +
  4. +
  5. 绑定两个可用的网卡。绑定操作的常规语法是 dpdk-devbind --bind=vfio-pci <device-entry>。下面显示了一个工作示例:

    +
    sudo dpdk-devbind --bind=vfio-pci 01:00.0
    +
    +
    +
  6. +
  7. 检查网卡状态,验证网卡绑定是否正确。如果绑定成功,drv 显示值 igb_uio,这确认了网卡正在使用 DPDK 模块。

    +
  8. +
+
+
+

设置大页(平台 A 和 B)

+

Clear Linux OS 支持 hugepages,即可以分配大内存池,并将其用于数据包缓冲区。

+
    +
  1. 设置大页数量。

    +
    sudo echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
    +
    +
    +
  2. +
  3. 在 NUMA 计算机上分配页面。

    +
    sudo echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
    +sudo echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
    +
    +
    +
  4. +
  5. 为 DPDK 分配内存。

    +
    sudo mkdir -p /mnt/huge $ mount -t hugetlbfs nodev /mnt/huge
    +
    +
    +

    有关详细信息,请参阅 DPDK guide 系统要求一节。

    +
  6. +
+
+
+

设置物理环境(平台 A 和 B)

+

如图 2 所示,使用网线将平台 A 上的网卡连接到平台 B 上的网卡。

+
+../../_images/pyshical_net.png +

图 2:物理网络环境

+
+
+
+

运行 l3fwd 应用程序(平台 B)

+

l3fwd 应用程序是安装 dpdk-dev 捆绑包时可用的 DPDK 示例之一。l3fwd 将数据包从一个网卡转发到另一个网卡。有关详细信息,请参阅 l3fwd 文档。

+
    +
  1. 打开 l3fwd 示例目录。

    +
    sudo cd  /usr/share/dpdk/examples/l3fwd
    +
    +
    +
  2. +
  3. 这一步非常重要。

    +
      +
    1. DPDK 需要借助轮询模式驱动程序才能运行。
    2. +
    3. 轮询模式驱动程序是 /usr/lib64 中的共享对象。
    4. +
    5. 请在 dpdk.org NICs 查看受支持的网卡的完整列表。
    6. +
    7. 您必须知道每个网卡使用的是哪个内核模块,并选择与网卡相对应的轮询模式驱动程序。
    8. +
    +
  4. +
  5. 网卡绑定和 pktgen 配置取决于网络用例和可用的系统资源。使用 -d 标志设置轮询模式驱动程序。

    +

    以下示例假设网卡使用 e1000 网络驱动程序和 e1000 轮询模式驱动程序。librte_pmd_e1000.so 位于 Clear Linux OS 中的 /usr/lib64 中。

    +
    sudo ./build/l3fwd -c 0x3 -n 2 -d librte_pmd_e1000.so -- -p 0x3 --config="(0,0,0),(1,0,1)"
    +
    +
    +
  6. +
  7. l3fwd 应用程序在启动时显示端口初始化详细信息。端口 0 初始化完成后,l3fwd 显示端口 1 的 MAC 地址和信息。

    +

    保存该 MAC 地址以配置 pktgen 项目。

    +
  8. +
+
+
+

运行 pktgen 应用程序(平台 A)

+

pktgen 是 DPDK 中包含的网络流量生成器。

+
    +
  1. pktgen 配置取决于网络设置和可用的系统资源。以下示例显示了一个基本配置。

    +
    sudo ./app/app/x86_64-native-linuxapp-gcc/pktgen -c 0xf -n 4 -- -p 0xf -P -m "1.0, 2.1"
    +
    +
    +
  2. +
  3. 启用活动彩色输出(可选)。

    +
    Pktgen> theme enable
    +
    +
    +
  4. +
  5. 使用初始化期间 l3fwd 应用程序显示的 MAC 地址。在 pktgen 中设置 MAC 地址的命令格式如下:

    +
    set mac <port number> <mac address>
    +
    +
    +

    以下是一个工作示例:

    +
    Pktgen> set mac 0 00:1E:67:CB:E8:C9
    +Pktgen> set mac 1 00:1E:67:CB:E8:C9
    +
    +
    +
  6. +
  7. 发送数据包。

    +
    Pktgen> start 0-1
    +
    +
    +
  8. +
+

有关详细信息,请参阅 pktgen 文档。

+
+
+

附录 A:为虚拟机使用直通

+

本节说明如何设置由虚拟机控制主机上网卡的虚拟环境。

+
    +
  1. 创建一个新目录并切换到该目录。

    +
  2. +
  3. 下载或创建 start_qemu.sh 脚本以运行 kvm 虚拟机:

    +
    sudo curl -O https://cdn.download.clearlinux.org/image/start_qemu.sh
    +
    +
    +
  4. +
  5. 下载 Clear Linux OS 的裸机映像,并将其重命名为 clear.img

    +
  6. +
  7. 查找包含供应商和设备 ID 的 Ethernet* 设备条目:

    +
    sudo lspci -nn | grep Ethernet
    +
    +
    +

    示例输出如下:

    +
    03:00.0 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521]
    +
    +
    +

    其中 03:00.0 是设备条目,8086:1521vendor:device ID。记下此信息,因为后面需要用到它将网卡与主机解除绑定。

    +
  8. +
  9. 解除网卡与主机的绑定,以便与虚拟机进行直通通信。Clear Linux OS 支持此类通信。命令采用以下格式:

    +
    echo "vendor device_ID" > /sys/bus/pci/drivers/pci-stub/new_id
    +echo "entry for device" > /sys/bus/pci/drivers/igb/unbind
    +echo "entry for device" > /sys/bus/pci/drivers/pci-stub/bind
    +echo "vendor device_ID" > /sys/bus/pci/drivers/pci-stub/remove_id
    +
    +
    +

    以下是一个工作示例:

    +
    sudo echo "8086 1521" > /sys/bus/pci/drivers/pci-stub/new_id
    +sudo echo "0000:03:00.0" > /sys/bus/pci/drivers/igb/unbind
    +sudo echo "0000:03:00.0" > /sys/bus/pci/drivers/pci-stub/bind
    +sudo echo "8086 1521" > /sys/bus/pci/drivers/pci-stub/remove_id
    +
    +
    +
  10. +
  11. 将未绑定的网卡分配给 KVM 虚拟机(来宾)。修改 qemu-system-x86_64 参数中的 start_qemu.sh 脚本,并按以下格式添加含有主机网卡信息的行:

    +
    -device pci-assign,host="<entry for device>",id=passnic0,addr=03.0
    +-device pci-assign,host="<entry for device>",id=passnic1,addr=04.0
    +
    +
    +

    以下是一个工作示例:

    +
    -device pci-assign,host=03:00.0,id=passnic0,addr=03.0 \
    +-device pci-assign,host=03:00.3,id=passnic1,addr=04.0 \
    +
    +
    +
  12. +
  13. 按照以下格式向 Makefile 引导目标添加行,从而将更多 NUMA 计算机添加到虚拟机:

    +
    -numa node,mem=<memory>,cpus=<number of cpus>
    +
    +
    +

    下面是一个具有 4096 内存和四个 CPU 的虚拟机的工作示例:

    +
    -numa node,mem=2048,cpus=0-1 \
    +-numa node,mem=2048,cpus=2-3 \
    +
    +
    +
    +

    注解

    +

    每台 NUMA 计算机必须使用相同数量的内存。

    +
    +
  14. +
  15. 运行 start_qemu.sh 脚本。

    +
  16. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/network/ipxe-install.html b/zh_CN/guides/network/ipxe-install.html new file mode 100644 index 000000000..06d42351d --- /dev/null +++ b/zh_CN/guides/network/ipxe-install.html @@ -0,0 +1,1302 @@ + + + + + + + + + + + + + + 使用 iPXE 通过网络安装 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

使用 iPXE 通过网络安装

+

本指南介绍如何通过网络使用 PXE 安装 Clear Linux* OS。

+ +
+

概述

+

PXE 是描述客户端-服务器与网络引导软件交互的行业标准,并使用 DHCP 和 TFTP 协议。本指南介绍了一种使用 PXE 环境安装 Clear Linux OS 的方法。

+

名为 iPXE 的 PXE 扩展新增了对 HTTP、iSCSIAoEFCoE 等协议的支持。iPXE 支持在没有内置 PXE 支持的计算机上使用网络引导。

+

要通过 iPXE 安装 Clear Linux OS,必须创建一个 PXE 客户端。图 1 描述了 PXE 服务器和 PXE 客户端之间的信息流。

+
+PXE information flow +

图 1:PXE 信息流。

+
+
+

警告

+

通过 PXE 过程引导的 Clear Linux OS 映像会自动擦除 PXE 客户端系统上的所有数据和分区,并创建 3 个新分区来安装该映像。

+
+
+
+

必备条件

+

使用 iPXE 引导之前,请做好以下准备。

+

将 PXE 服务器和 PXE 客户端连接到专用网络上的交换机,如图 2 所示。

+
+Network topology +

图 2:网络拓扑。

+
+

在 PXE 客户端的引导顺序中,网络引导选项需要优先于磁盘引导选项。

+

PXE 服务器必须:

+
    +
  • 具有以太网/局域网引导选项。
  • +
  • 具有至少两个网络适配器。
  • +
  • 连接到公共网络。
  • +
  • 禁用安全引导选项。
  • +
+
+

注解

+

您必须在 BIOS 中禁用安全引导选项,因为用于引导 Clear Linux OS 的 UEFI 二进制文件未经签名。

+
+
+
+

配置

+

要使用 iPXE 自动设置 Clear Linux OS,请使用随 ICIS 附带的 configure-ipxe.sh 脚本。有关该脚本的其他说明,请参阅 ister-cloud-init-svc GitHub* 存储库中的指南。

+

要手动设置 Clear Linux OS,请执行以下步骤。

+
    +
  1. 定义 iPXE 引导配置使用的变量。

    +
    ipxe_app_name=ipxe
    +ipxe_port=50000
    +web_root=/var/www
    +ipxe_root=$web_root/$ipxe_app_name
    +tftp_root=/srv/tftp
    +external_iface=eno1
    +internal_iface=eno2
    +pxe_subnet=192.168.1
    +pxe_internal_ip=$pxe_subnet.1
    +pxe_subnet_mask_ip=255.255.255.0
    +pxe_subnet_bitmask=16
    +
    +
    +
  2. +
  3. 登录并获得 root 特权。

    +
    sudo -s
    +
    +
    +
  4. +
  5. pxe-server 捆绑包添加到 Clear Linux OS 系统。该捆绑包含有运行 PXE 服务器所需的所有文件。

    +
    sudo swupd bundle-add pxe-server
    +
    +
    +
  6. +
  7. 下载 Clear Linux OS 的最新网络引导版本,并提取文件。

    +
    sudo mkdir -p $ipxe_root
    +sudo curl -o /tmp/clear-pxe.tar.xz \
    +  https://cdn.download.clearlinux.org/current/clear-$(curl \
    +  https://cdn.download.clearlinux.org/latest)-pxe.tar.xz
    +sudo tar -xJf /tmp/clear-pxe.tar.xz -C $ipxe_root
    +sudo ln -sf $(ls $ipxe_root | grep 'org.clearlinux.*') $ipxe_root/linux
    +
    +
    +
    +

    注解

    +

    确保初始 ramdisk 文件命名为 initrd,内核文件命名为 linux (这是一个指向实际内核文件的符号链接)。

    +
    +
  8. +
  9. 创建包含以下内容的 iPXE 引导脚本。在 iPXE 引导过程中,iPXE 引导脚本会指示 PXE 客户端下载引导和安装 Clear Linux OS 所需的文件。使用先前提供给初始 ramdisk 和内核文件的名称。

    +
    sudo cat > $ipxe_root/ipxe_boot_script.ipxe << EOF
    +#!ipxe
    +kernel linux quiet init=/usr/lib/systemd/systemd-bootchart \
    +initcall_debug tsc=reliable no_timer_check noreplace-smp rw \
    +initrd=initrd
    +initrd initrd
    +boot
    +EOF
    +
    +
    +
  10. +
  11. pxe-server 捆绑包含一个名为 nginx 的轻量级 Web 服务器。为 nginx 创建一个配置文件,以便 Clear Linux OS 为 PXE 客户端提供以下内容:

    +
    sudo mkdir -p /etc/nginx/conf.d
    +sudo cat > /etc/nginx/conf.d/$ipxe_app_name.conf << EOF
    +server {
    +  listen $ipxe_port;
    +  server_name localhost;
    +  location /$ipxe_app_name/ {
    +    root $web_root;
    +    autoindex on;
    +  }
    +}
    +EOF
    +
    +sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf
    +
    +
    +
    +

    注解

    +

    创建一个单独的 nginx 配置文件,以便在非标准端口号上提供网络引导映像。此操作会保存现有的 nginx 配置。

    +
    +
  12. +
  13. 启动 nginx 并启用引导时启动选项。

    +
    sudo systemctl start nginx
    +sudo systemctl enable nginx
    +
    +
    +
  14. +
  15. pxe-server 捆绑包包含一个轻量级 DNS 服务器,该服务器与 systemd-resolved 中提供的 DNS 存根侦听器冲突。请禁用 DNS 存根侦听器,并暂时停止 systemd-resolved

    +
    sudo mkdir -p /etc/systemd
    +sudo cat > /etc/systemd/resolved.conf << EOF
    +[Resolve]
    +DNSStubListener=no
    +EOF
    +
    +sudo systemctl stop systemd-resolved
    +
    +
    +
  16. +
  17. 为专用网络的网络适配器分配一个静态 IP 地址,并使用以下命令重新启动 systemd-networkd

    +
    sudo mkdir -p /etc/systemd/network
    +sudo cat > /etc/systemd/network/70-internal-static.network << EOF
    +[Match]
    +Name=$internal_iface
    +[Network]
    +DHCP=no
    +Address=$pxe_internal_ip/$pxe_subnet_bitmask
    +EOF
    +
    +sudo systemctl restart systemd-networkd
    +
    +
    +
  18. +
  19. 配置 NAT,将流量从专用网络路由到公共网络。此操作会让 PXE 服务器充当路由器。要使这些更改在重启期间保持不变,请使用以下命令将更改保存到防火墙:

    +
    sudo iptables -t nat -F POSTROUTING
    +sudo iptables -t nat -A POSTROUTING -o $external_iface -j MASQUERADE
    +sudo systemctl enable iptables-save.service
    +sudo systemctl restart iptables-save.service
    +sudo systemctl enable iptables-restore.service
    +sudo systemctl restart iptables-restore.service
    +
    +
    +
    +

    注解

    +

    防火墙会遮掩数据包,使其看起来像来自 PXE 服务器,并对公共网络隐藏 PXE 客户端。

    +
    +
  20. +
  21. 配置内核,将网络数据包转发到不同的接口。否则,NAT 将不起作用。

    +
    sudo mkdir -p /etc/sysctl.d
    +sudo echo net.ipv4.ip_forward=1 > /etc/sysctl.d/80-nat-forwarding.conf
    +sudo echo 1 > /proc/sys/net/ipv4/ip_forward
    +
    +
    +
  22. +
  23. pxe-server 捆绑包包含 iPXE 固件映像,这些映像允许没有 iPXE 实现的计算机执行 iPXE 引导。创建一个 TFTP 托管目录,并用以下命令用 iPXE 固件映像填充该目录:

    +
    sudo mkdir -p $tftp_root
    +sudo ln -sf /usr/share/ipxe/undionly.kpxe $tftp_root/undionly.kpxe
    +
    +
    +
  24. +
  25. pxe-server 捆绑包包含一个名为 dnsmasq 的轻量级 TFTP、DNS 和 DHCP 服务器。为 dnsmasq 创建一个配置文件,以便监听这些功能的专用 IP 地址。专用网络上的 PXE 客户端将使用此 IP 地址。

    +
    sudo cat > /etc/dnsmasq.conf << EOF
    +listen-address=$pxe_internal_ip
    +EOF
    +
    +
    +
  26. +
  27. 将通过 TFTP 向 PXE 客户端提供 iPXE 固件映像的选项添加到 dnsmasq 配置文件中。

    +
    sudo cat >> /etc/dnsmasq.conf << EOF
    +enable-tftp
    +tftp-root=$tftp_root
    +EOF
    +
    +
    +
  28. +
  29. 将为 PXE 客户端托管 DHCP 服务器的选项添加到 dnsmasq 配置文件中。

    +
    sudo cat >> /etc/dnsmasq.conf << EOF
    +dhcp-leasefile=/var/db/dnsmasq.leases
    +
    +dhcp-authoritative
    +dhcp-option=option:router,$pxe_internal_ip
    +dhcp-option=option:dns-server,$pxe_internal_ip
    +
    +dhcp-match=set:pxeclient,60,PXEClient*
    +dhcp-range=tag:pxeclient,$pxe_subnet.2,$pxe_subnet.253,$pxe_subnet_mask_ip,15m
    +dhcp-range=tag:!pxeclient,$pxe_subnet.2,$pxe_subnet.253,$pxe_subnet_mask_ip,6h
    +
    +dhcp-match=set:ipxeboot,175
    +dhcp-boot=tag:ipxeboot,http://$pxe_internal_ip:$ipxe_port/$ipxe_app_name/ipxe_boot_script.ipxe
    +dhcp-boot=tag:!ipxeboot,undionly.kpxe,$pxe_internal_ip
    +EOF
    +
    +
    +

    该配置提供以下重要功能:

    +
      +
    • 将没有 iPXE 实现的 PXE 客户端定向到 TFTP 服务器,以获取特定于体系结构的 iPXE 固件映像,从而允许这些客户端执行 iPXE 引导。
    • +
    • 仅在具有指定子网中 IP 地址的网络适配器上激活。
    • +
    • 将 PXE 客户端定向到 DNS 服务器。
    • +
    • 将 PXE 客户端定向到 PXE 服务器,以便通过 NAT 进行路由。
    • +
    • 将专用网络分成两个 IP 地址池。一个地址池用于网络引导,一个地址池在引导后使用。每个地址池都有自己的租赁时间。
    • +
    +
  30. +
  31. dnsmasq 创建一个文件,记录它向 PXE 客户端提供的 IP 地址。

    +
    sudo mkdir -p /var/db
    +sudo touch /var/db/dnsmasq.leases
    +
    +
    +
  32. +
  33. 启动 dnsmasq 并启用引导时启动。

    +
    sudo systemctl enable dnsmasq
    +sudo systemctl restart dnsmasq
    +
    +
    +
  34. +
  35. 启动 systemd-resolved

    +
    sudo systemctl start systemd-resolved
    +
    +
    +
    +

    注解

    +

    如果使用 dnsmasq DNS 服务器,systemd-resolved 会动态更新专用网络的 DNS 服务器列表。该设置会创建一个直通 DNS 服务器,该服务器依赖于 /etc/resolv.conf 中列出的 DNS 服务器。

    +
    +
  36. +
  37. 打开 PXE 客户端的电源,观看客户端引导并安装 Clear Linux OS。

    +

    引导后,Clear Linux OS 会自动对硬盘分区,自行安装,更新到最新版本,然后重新引导。

    +
  38. +
+

祝贺您!您已成功安装并配置了 PXE 服务器,使 PXE 客户端能够通过网络引导并安装 Clear Linux OS。

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/network/network-bonding.html b/zh_CN/guides/network/network-bonding.html new file mode 100644 index 000000000..6c33fe0c7 --- /dev/null +++ b/zh_CN/guides/network/network-bonding.html @@ -0,0 +1,1133 @@ + + + + + + + + + + + + + + 使用网络捆绑聚合多个接口 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

使用网络捆绑聚合多个接口

+

本指南介绍如何配置 systemd 以使用 bonding 驱动程序。

+

网络捆绑是指将多个网络接口组合成一个逻辑接口,从而提供冗余和带宽聚合。

+

Clear Linux* OS 包含 Linux Bonding driverTeam driver

+

该示例演示了如何:

+
    +
  • 在 802.3ad 模式下,捆绑四端口网卡的所有四个端口。
  • +
  • 启用巨型帧来优化本地网络上的大量数据传输。
  • +
+

您的网卡和网络交换机必须支持 802.3ad 模式和巨型帧。该示例解释了如何为这两种功能配置网卡。您的交换机可能需要额外的配置。查阅交换器文档以了解详细信息。

+
+

注解

+

您必须以 root 用户身份运行本指南中的所有命令。

+
+
    +
  1. 登录并获得 root 特权。

    +
    sudo -s
    +
    +
    +
  2. +
  3. 创建 /etc/systemd/network 目录。

    +
    mkdir -p /etc/systemd/network
    +
    +
    +

    /etc/systemd/network 目录包含虚拟设备及其底层物理接口的配置文件和网络设置。

    +
  4. +
  5. 将 systemd 配置为创建一个名为 bond1 的虚拟网络设备。使用文本编辑器创建一个名为 30-bond1.netdev 的文件。

    +
    [NetDev]
    +Name=bond1
    +Kind=bond
    +
    +[Bond]
    +Mode=802.3ad
    +TransmitHashPolicy=layer3+4
    +MIIMonitorSec=1s
    +LACPTransmitRate=fast
    +
    +
    +

    有关 30-bond1.netdev 文件语法,请参阅 systemd.netdev 手册页。本示例基于手册页上的示例 9。根据您的配置修改示例。

    +
  6. +
  7. 配置从属接口。创建一个名为 30-bond1-enp1s0.network 的文本文件。将从属接口分配给虚拟 bond1 设备,并使用 systemd.network 中所示的语法。

    +
    [Match]
    +Name=enp1s0f*
    +
    +[Network]
    +Bond=bond1
    +
    +[Link]
    +MTUBytes=9000
    +
    +
    +

    本示例将四端口网卡的所有四个端口捆绑为 bond1 从属接口。本示例使用通配符匹配,因为网卡名称在 enp1s0f0-enp1s0f3 范围内。如果网卡名称不兼容通配符,请为每个网卡创建一个单独的 .network 文件。

    +

    为了获得最佳效果,请勿为单个网卡分配地址或 DHCP 支持。

    +

    MTUBytes 设置支持高达 9000 字节的巨型帧。您的交换机可能需要额外的配置来支持此设置。

    +
  8. +
  9. 在名为 30-bond1.network 的文件中配置捆绑接口。

    +
    [Match]
    +Name=bond1
    +
    +[Network]
    +BindCarrier=enp1s0f0 enp1s0f1 enp1s0f2 enp1s0f3
    +Address=192.168.1.201/24
    +
    +[Link]
    +MTUBytes=9000
    +
    +
    +

    bond1 是一个没有物理链路状态的虚拟接口。

    +

    BindCarrier 表示 bond1 链路状态由所列从属设备的状态决定。

    +

    Address 包含分配给逻辑接口的一个 IP 地址。DHCP 捆绑接口十分复杂,不在本示例的讨论范围内。

    +

    要成功处理巨型帧,所有从属接口和捆绑接口上的 MTUBytes 必须设置为 9000。如果所有接口上的 MTUBytes 设置并不相同,将使用这些设置中的最小值。

    +
  10. +
  11. 使用以下命令应用新的网络配置:

    +
    systemctl restart systemd-networkd
    +
    +
    +

    除非重启或使用 ifconfig 等实用程序手动应用设置,否则 MTUBytes 设置不会生效。

    +
  12. +
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/network/openssh-server.html b/zh_CN/guides/network/openssh-server.html new file mode 100644 index 000000000..225a45ed9 --- /dev/null +++ b/zh_CN/guides/network/openssh-server.html @@ -0,0 +1,1196 @@ + + + + + + + + + + + + + + 启用并配置 SSH 服务 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

启用并配置 SSH 服务

+

本指南介绍如何设置 SSH 服务。

+ +
+

概述

+

openssh-server 捆绑包提供了用于在 Clear Linux* OS 中启用 SSH 服务的 OpenSSH 软件包。远程用户需要 SSH 服务才能使用加密登录 shell。

+

Clear Linux OS 将启用 sshd.socket 单元,该单元默认侦听端口 22 并根据需要启动 OpenSSH 服务。OpenSSH 首次启动时,它会生成服务所需的服务器 SSH 密钥。

+
+
+

必备条件

+

确保已安装 openssh-server 捆绑包。

+

要列出主机上的所有捆绑包,请输入:

+
sudo swupd bundle-list
+
+
+

要添加 openssh-server 捆绑包,请输入:

+
sudo swupd bundle-add openssh-server
+
+
+
+
+

更改默认端口

+

执行以下步骤以更改 OpenSSH 服务的默认侦听端口。

+
    +
  1. 打开 sshd.socket 文件:

    +
    sudo systemctl edit sshd.socket
    +
    +
    +
  2. +
  3. [Socket] 部分和 ListenStream 选项添加到 sshd.socket 文件中,如下所示。第一个 ListenStream 条目用于删除 Clear Linux OS 默认侦听端口值。第二个 ListenStream 条目用于设置新的默认侦听端口值。在此示例中,我们将新的默认端口设置为 4200:

    +
    [Socket]
    +ListenStream=
    +ListenStream=4200
    +
    +
    +

    务必在 sshd.socket 文件中的最后一行文本之后包含一个新行。

    +
  4. +
  5. 验证所做更改:

    +
    cat /etc/systemd/system/sshd.socket.d/override.conf
    +
    +
    +

    将显示以下输出:

    +
    [Socket]
    +ListenStream=
    +ListenStream=4200
    +
    +
    +
  6. +
  7. 重新加载 systemd 守护程序配置:

    +
    sudo systemctl daemon-reload
    +
    +
    +
  8. +
  9. 重新启动 sshd.socket 单元:

    +
    sudo systemctl restart sshd.socket
    +
    +
    +
  10. +
  11. 确认 sshd.socket 单元正在侦听新端口:

    +
    sudo systemctl status sshd.socket
    +
    +
    +
    +

    注解

    +

    输出应该将 Active: 显示为 active(listening)

    +
    +
  12. +
+
+
+

启用 SFTP

+

出于安全考虑,Clear Linux OS 默认禁用 SFTP(SSH 文件传输协议) 子系统。要启用 SFTP 子系统,您必须配置 SSHD(SSH 守护程序) 服务文件。

+
    +
  1. 为 SSHD 服务创建 systemd 放置目录:

    +
    sudo mkdir -p /etc/systemd/system/sshd@.service.d
    +
    +
    +
  2. +
  3. 创建以下文件:/etc/systemd/system/sshd@.service.d/sftp.conf

    +
  4. +
  5. 将 OPTIONS 环境变量添加到 sftp.conf 文件中。

    +
    [Service]
    +Environment="OPTIONS=-o Subsystem=\"sftp /usr/libexec/sftp-server\""
    +
    +
    +
  6. +
  7. 重新加载 systemd 配置:

    +
    sudo systemctl daemon-reload
    +
    +
    +
  8. +
+

恭喜!SFTP 子系统已启用。

+
+
+

启用 root 登录

+

要通过 SSH 启用 root 登录,请执行以下步骤:

+
    +
  1. /etc 中创建 ssh 目录(如果尚未存在)。

    +
    mkdir /etc/ssh
    +
    +
    +
  2. +
  3. 创建以下文件(如果尚未存在):/etc/ssh/sshd_config

    +
  4. +
  5. /etc/ssh/sshd_config 中设置配置变量:

    +
    PermitRootLogin yes
    +
    +
    +
  6. +
+
+
+

启用 X11 转发

+

使用 X11 转发可以通过 SSH 连接安全地运行图形应用程序(即 X 客户端)。这使得无需完整 VNC 或远程桌面设置便可启用远程 GUI 应用程序。要通过 SSH 启用 X11 转发,请执行以下步骤:

+
    +
  1. /etc 中创建 ssh 目录(如果尚未存在)。

    +
    mkdir /etc/ssh
    +
    +
    +
  2. +
  3. 创建以下文件(如果尚未存在):/etc/ssh/sshd_config

    +
  4. +
  5. 设置以下配置变量。

    +
    AllowTcpForwarding yes
    +X11UseLocalhost yes
    +X11DisplayOffset 10
    +X11Forwarding yes
    +
    +
    +
  6. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/network/vnc.html b/zh_CN/guides/network/vnc.html new file mode 100644 index 000000000..de88ca7b6 --- /dev/null +++ b/zh_CN/guides/network/vnc.html @@ -0,0 +1,1713 @@ + + + + + + + + + + + + + + 使用 VNC 通过远程桌面连接到主机 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

使用 VNC 通过远程桌面连接到主机

+

本指南介绍如何使用 VNC 连接到远程 Clear Linux* OS 主机。

+

VNC 是一个基于 GUI 的客户端-服务器工具,使用它可以通过远程桌面连接到 Clear Linux OS 主机。

+ +
+

在主机上安装 VNC 服务器和其他组件

+

要配置 VNC,使其能在 Clear Linux OS 主机上正常工作,请安装以下捆绑包:

+
    +
  • desktop-autostart:安装 GDM,将其设置为在引导时自动启动,并安装 TigerVNC 查看器。
  • +
  • vnc-server:安装 TigerVNC 服务器。
  • +
+

遵照这些步骤操作:

+
    +
  1. 登录 Clear Linux OS 主机并获得 root 特权。

    +
    sudo -s
    +
    +
    +
  2. +
  3. 安装 Clear Linux OS 捆绑包。

    +
    swupd bundle-add desktop-autostart vnc-server
    +
    +
    +
  4. +
  5. 重新引导 Clear Linux OS 主机。

    +
  6. +
+
+
+

在主机上配置 VNC-server-start 方法

+

有三种方法可以用来在 Clear Linux OS 主机上配置和启动 VNC 服务器:

+ + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表 1:VNC-server-start 配置方法
属性方法 1:手动启动 VNC 会话方法 2:通过 systemd 服务脚本自动启动 VNC 会话方法 3:通过 GDM 身份验证创建多用户登录
描述这里使用的是传统方法,即通过 SSH 登录 Clear Linux OS 主机,手动启动 VNC 会话以获取显示 ID,并通过提供显示 ID 来连接到它。系统管理员使用预先分配的显示 ID 来设置 systemd 服务脚本。建立一个 VNC 连接,并提供预先分配的显示 ID。系统管理员将 GDM 配置为接受连接请求。与 Clear Linux OS 主机建立 VNC 连接时,您会看到 GDM 登录屏幕,并像本地用户一样进行身份验证。
谁来配置 VNC 设置?系统管理员系统管理员
谁来启动 VNC 会话?设置为由系统管理员在引导时自动启动设置为由系统管理员在引导时自动启动
谁来终止 VNC 会话?系统管理员可以完全禁用 VNC 服务
是否需要提供 VNC 密码以执行身份验证?不需要。通过 GDM 使用 Clear Linux OS 帐户用户名和密码
+

虽然这三种方法可以在同一个 Clear Linux OS 主机上共存,但我们建议您选择一种适合您的需求的方法。

+

为简单起见,本指南的其余部分将这些方法称为方法 1、方法 2 和方法 3。

+
+

方法 1:手动启动 VNC 会话

+

您(和每个用户)必须执行这些步骤来初始化 VNC 设置。

+
    +
  1. 登录。

    +
  2. +
  3. 打开一个终端模拟器。

    +
  4. +
  5. 使用 vncserver 命令启动 VNC。由于这是您第一次启动 VNC,它会添加默认配置文件,并要求您设置 VNC 密码。

    +
    vncserver
    +
    +
    +

    结果示例:

    +
    You will require a password to access your desktops.
    +
    +Password:
    +Verify:
    +Would you like to enter a view-only password (y/n)? n
    +xauth:  file /home/vnc-user-a/.Xauthority does not exist
    +
    +New 'clr-linux:2 (vnc-user-a)' desktop is clr-linux:2
    +
    +Creating default startup script /home/vnc-user-a/.vnc/xstartup
    +Creating default config /home/vnc-user-a/.vnc/config
    +Starting applications specified in /home/vnc-user-a/.vnc/xstartup
    +Log file is /home/vnc-user-a/.vnc/clr-linux:2.log
    +
    +
    +

    完成后,您可以在主目录中的 .vnc 目录中找到隐藏的默认配置文件和密码文件。

    +

    VNC 会话启动并显示一个唯一的显示 ID,该 ID 是主机名和冒号 “:” 后面的数字。在上面的例子中,显示 ID 是 2。在稍后的步骤中,您将向 VNC 查看器应用程序提供显示 ID 以建立连接。

    +
  6. +
  7. 使用 vncserver -kill :[display ID] 命令暂时终止活动的 VNC 会话。使用您的活动 VNC 会话显示 ID 替换 [display ID]。例如:

    +
    vncserver -kill :2
    +
    +
    +
    +

    注解

    +

    如果您不记得活动会话显示 ID,请使用 vncserver -list 命令查找它。

    +
    +
  8. +
  9. 可选配置:

    +
      +
    • 要自定义屏幕大小、安全类型等设置,请修改 $HOME/.vnc/config 文件。
    • +
    • 要自定义启动时运行的应用程序,请修改 $HOME/.vnc/xstartup 文件。
    • +
    +
  10. +
+
+
+

方法 2:通过 systemd 服务脚本自动启动 VNC 会话

+

要使用此方法配置 VNC,您必须具有 root 特权。您将为所有潜在的 VNC 用户设置一个 systemd 服务文件,而且这些用户拥有自己预先指定的唯一显示 ID。

+
    +
  1. 登录并获得 root 特权。

    +
    sudo -s
    +
    +
    +
  2. +
  3. 确保用户帐户已经存在。使用以下命令列出所有用户。

    +
    cut -d: -f1 /etc/passwd
    +
    +
    +
  4. +
  5. 创建路径 /etc/systemd/system

    +
    mkdir -p /etc/systemd/system
    +
    +
    +
  6. +
  7. 创建 systemd 服务脚本文件 vncserver@:[X].service,其中 [X] 是显示 ID。对于 /etc/systemd/system 中的每个用户,必须为每个用户分配一个唯一的显示 ID。请确保在 User 字段中输入正确的用户名。以下示例显示了用户 vnc-user-b 已分配了显示 ID 5。

    +
    # cat > /etc/systemd/system/vncserver@:5.service << EOF
    +
    +[Unit]
    +Description=VNC Remote Desktop Service for "vnc-user-b" with display ID "5"
    +After=syslog.target network.target
    +
    +[Service]
    +Type=simple
    +User=vnc-user-b
    +PAMName=login
    +PIDFile=/home/%u/.vnc/%H%i.pid
    +ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    +ExecStart=/usr/bin/vncserver %i -geometry 2000x1200 -alwaysshared -fg
    +ExecStop=/usr/bin/vncserver -kill %i
    +
    +[Install]
    +WantedBy=multi-user.target
    +
    +EOF
    +
    +
    +
  8. +
  9. 让每个用户登录他们的帐户,并使用 vncpasswd 命令设置 VNC 密码,然后继续下一步。

    +
  10. +
  11. 启动 VNC 服务脚本,并为每个用户将其设置在引导时自动启动。使用显示 ID 替换 [X]。

    +
    systemctl daemon-reload
    +systemctl start vncserver@:[X].service
    +systemctl enable vncserver@:[X].service
    +
    +
    +
  12. +
  13. 启动服务后,确认它们是否正在运行。

    +
    systemctl | grep vnc
    +
    +
    +

    以下示例显示了已成功为显示 ID 为 5 的用户 vnc-user-b 以及显示 ID 为 6 的用户 vnc-user-c 启动两个 VNC 会话。

    +
    # systemctl | grep vnc
    +
    +vncserver@:5.services   loaded active running  VNC Remote Desktop Service for "vnc-user-b" with display ID "5"
    +vncserver@:6.services   loaded active running  VNC Remote Desktop Service for "vnc-user-c" with display ID "6"
    +system-vncserver.slice  loaded active active system-vncserver.slice
    +
    +
    +
  14. +
+
+
+

方法 3:通过 GDM 身份验证实现多用户登录

+

使用此方法时,系统将 VNC 配置为监听端口 5900 的 systemd 服务,并将 GDM 配置为接受来自 VNC 的访问请求。与 Clear Linux OS 主机建立 VNC 连接时,您会看到 GDM 登录屏幕,并像本地用户一样进行身份验证。您必须具有 root 特权才能执行此配置。

+
    +
  1. 登录并获得 root 特权。

    +
    sudo -s
    +
    +
    +
  2. +
  3. 创建路径 /etc/systemd/system

    +
    mkdir -p /etc/systemd/system
    +
    +
    +
  4. +
  5. 创建 systemd 套接字文件 xvnc.socket,并添加以下内容:

    +
    # cat > /etc/systemd/system/xvnc.socket << EOF
    +
    +[Unit]
    +Description=XVNC Server on port 5900
    +
    +[Socket]
    +ListenStream=5900
    +Accept=yes
    +
    +[Install]
    +WantedBy=sockets.target
    +
    +EOF
    +
    +
    +
  6. +
  7. 创建 systemd 服务文件 xvnc@.service,并添加以下内容:

    +
    # cat > /etc/systemd/system/xvnc@.service << EOF
    +
    +[Unit]
    +Description=Daemon for each XVNC connection
    +
    +[Service]
    +ExecStart=-/usr/bin/Xvnc -inetd -query localhost -geometry 2000x1200 -once -SecurityTypes=None
    +User=nobody
    +StandardInput=socket
    +StandardError=syslog
    +
    +EOF
    +
    +
    +
  8. +
  9. 创建路径 /etc/gdm

    +
    mkdir -p /etc/gdm
    +
    +
    +
  10. +
  11. 创建一个 GDM custom.conf 文件,并添加以下内容:

    +
    # cat > /etc/gdm/custom.conf << EOF
    +
    +[xdmcp]
    +Enable=true
    +Port=177
    +
    +EOF
    +
    +
    +
  12. +
  13. 启动 VNC 套接字脚本,并将其设置为在引导时自动启动。

    +
    systemctl daemon-reload
    +systemctl start xvnc.socket
    +systemctl enable xvnc.socket
    +
    +
    +
  14. +
  15. 启动套接字后,确认它是否正在运行。

    +
    systemctl | grep vnc
    +
    +
    +

    下面的示例显示 xvnc.socket 正在运行。

    +
    # systemctl | grep vnc
    +
    +xvnc.socket               loaded active listening XVNC Server on port 5900
    +system-xvnc.slice         loaded active active    system-xvnc.slice
    +
    +
    +
  16. +
+

有关更多信息,请参阅 vncserver 手册页。

+
+
+
+

在客户端系统上安装一个 VNC 查看器应用程序和一个 SSH 客户端

+

客户端系统上需要具有 VNC 查看器应用程序才能连接到 Clear Linux OS 主机。仅当选择使用方法 1 或打算加密 VNC 流量(这将在本指南后文讨论)时才需要 SSH 客户端。

+

执行以下步骤将这些应用程序添加到客户端系统。

+
+

安装一个 VNC 查看器应用程序

+

在 Clear Linux OS 上:

+
swupd bundle-add desktop-autostart
+
+
+

在 Ubuntu*、Mint* 上:

+
apt-get install xtightvncviewer
+
+
+

在 Fedora* 上:

+
dnf install tigervnc
+
+
+

在 Windows* 上:

+ +

在 macOS* 上:

+ +
+
+

安装一个 SSH 客户端

+
    +
  • 大多数 Linux 发行版(Clear Linux OS、Ubuntu、Mint、Fedora 等)和 macOS 都内置了 SSH,因此无需进行安装。
  • +
  • 在 Windows 上,您可以安装 Putty
  • +
+
+
+
+

与主机建立 VNC 连接

+

根据所选的 VNC-server-configuration 方法,使用适当的 VNC 连接:

+
    +
  • 如果选择方法 1,必须采取一些额外的步骤,即使用 SSH 连接到 Clear Linux OS 主机,然后手动启动 VNC。
  • +
  • 如果选择方法 2,请先从系统管理员处获取预先分配的 VNC 显示 ID,然后转到下面的 连接到 VNC 会话 一节。
  • +
  • 如果选择方法 3,请转到下面的 连接到 VNC 会话
  • +
+
+

使用 SSH 连接到主机并启动 VNC

+
    +
  1. 使用 SSH 连接到 Clear Linux OS 主机

    +
      +
    1. 在 Linux 发行版和 macOS 上:

      +
      ssh [username]@[clear-linux-host-ip-address]
      +
      +
      +
    2. +
    3. 在 Windows 上:

      +
        +
      1. 启动 Putty。

        +
      2. +
      3. Category 部分下,选择 Session。请参阅图 1。

        +
      4. +
      5. Host Name (or IP address) 字段中输入 Clear Linux OS 主机的 IP 地址。

        +
      6. +
      7. Connection type 选项设置为 SSH

        +
      8. +
      9. 点击 Open 按钮。

        +
        +Putty - configure SSH session settings +

        图 1:Putty - 配置 SSH 会话设置

        +
        +
      10. +
      +
    4. +
    +
  2. +
  3. 使用您的 Clear Linux OS 用户名和密码登录。不要使用您的 VNC 密码。

    +
  4. +
  5. 启动一个 VNC 会话。

    +
    vncserver
    +
    +
    +

    结果示例:

    +
    New 'clr-linux:3 (vnc-user-c)' desktop is clr-linux:3
    +
    +Starting applications specified in /home/vnc-user-c/.vnc/xstartup
    +Log file is /home/vnc-user-c/.vnc/clr-linux:3.log
    +
    +
    +
  6. +
  7. 记下生成的显示 ID,稍后需要将它输入到 VNC 查看器应用程序来建立连接。上述示例中显示的显示 ID 为 3。

    +
    +

    注解

    +

    除非自行指定,否则 VNC 会自动选择唯一的显示 ID。要指定显示 ID,请在冒号后输入尚未使用的唯一数字。例如:

    +
    vncserver :8
    +
    +
    +
    +
  8. +
  9. 现在,您可以通过注销来终止 SSH 连接。这不会终止您的活动 VNC 会话。

    +
  10. +
+
+
+

连接到 VNC 会话

+

使用方法 1 和方法 2 时,您必须使用以下两个选项之一连接到特定的活动会话或显示 ID:

+
    +
  • 使用完全限定的 VNC 端口号,该端口号由默认 VNC 服务器端口 (5900) 加上显示 ID 组成
  • +
  • 使用显示 ID
  • +
+

例如,如果显示 ID 为 3,可以指定为 5903 或 3。使用方法 3 时,VNC 不期望显示 ID。使用 5900。为简单起见,以下说明使用完全限定的 VNC 端口号。

+

在 Linux 发行版上:

+
    +
  1. 打开终端仿真器并输入:

    +
    vncviewer [clear-linux-host-ip-address]:[fully-qualified VNC port  number]
    +
    +
    +
  2. +
  3. 输入您的凭证。

    +
      +
    • 使用方法 1 和方法 2 时,请输入您的 VNC 密码。不需要输入用户名。

      +
    • +
    • 使用方法 3 时,通过 GDM 输入您的 Clear Linux OS 帐户用户名和密码。

      +
      +

      注解

      +

      使用方法 3 时,如果已在本地登录,则不能通过 VNC 远程登录 Clear Linux OS 主机,反之亦然。

      +
      +
    • +
    +
  4. +
+

在使用 RealVNC 应用程序的 Windows 和 macOS 上:

+
    +
  1. 启动 RealVNC 查看器应用程序。见图 2。

    +
  2. +
  3. 输入 Clear Linux OS 主机的 IP 地址和完全限定的 VNC 端口号。

    +

    以下屏幕截图显示使用完全限定的 VNC 端口号 5902 连接到 Clear Linux OS 主机 192.168.25.54。

    +
    +RealVNC Viewer +

    图 2:RealVNC 查看器

    +
    +
  4. +
  5. Enter 键。

    +
  6. +
  7. 输入您的凭证。

    +
      +
    • 使用方法 1 和方法 2 时,请输入您的 VNC 密码。不需要输入用户名。

      +
    • +
    • 使用方法 3 时,通过 GDM 输入您的 Clear Linux OS 帐户用户名和密码。

      +
      +

      注解

      +

      使用方法 3 时,如果已在本地登录,则不能通过 VNC 远程登录 Clear Linux OS 主机,反之亦然。

      +
      +
    • +
    +
  8. +
+
+

可选:配置 RealVNC 图像质量

+

要提高 RealVNC 查看器的图像质量,请手动更改 ColorLevel 值。遵照这些步骤操作:

+
    +
  1. 右键点击连接节点并选择 Properties…。请参阅图 3。

    +
    +RealVNC Viewer - change connection node properties +

    图 3:RealVNC 查看器 - 更改连接节点属性

    +
    +
  2. +
  3. 选择 Expert 选项卡。见图 4。

    +
  4. +
  5. 选择 ColorLevel 设置,并将其更改为您的首选设置。

    +
    +RealVNC Viewer - change ColorLevel +

    图 4:RealVNC 查看器 - 更改 ColorLevel

    +
    +
  6. +
+
+
+
+
+

终止与主机的 VNC 连接

+

使用方法 1 和方法 2 时,VNC 会话一旦启动,即会在 Clear Linux OS 主机上保持活动状态,即便关闭了 VNC 查看器应用程序也是如此。如果要真正终止活动的 VNC 会话,请按照下列步骤操作:

+
    +
  1. 使用 SSH 连接到 Clear Linux OS 主机。

    +
  2. +
  3. 打开一个终端模拟器。

    +
  4. +
  5. 使用 vncserver -list 命令查找活动的 VNC 会话显示 ID。

    +
    vncserver -list
    +
    +
    +
  6. +
  7. 使用 vncserver -kill 命令且后跟冒号和显示 ID 来终止 VNC 会话。

    +
    vncserver -kill :[display ID]
    +
    +
    +
  8. +
  9. 使用方法 3 时,只有系统管理员可以使用以下命令停止和禁用 VNC 服务:

    +
    systemctl stop xvnc.socket
    +systemctl disable xnvc.socket
    +
    +
    +
  10. +
+
+
+

通过 SSH 隧道加密 VNC 流量

+

默认情况下,VNC 流量不加密。图 6 显示了 RealVNC 查看器的警告示例。

+
+RealVNC Viewer - Connection not encrypted warning +

图 6:RealVNC 查看器 - 连接未加密警告

+
+

为了增加安全性,VNC 流量可以通过 SSH 隧道路由。这是通过以下步骤实现的:

+
    +
  1. 通过添加 -localhost 选项,将 VNC 服务器配置为仅接受来自 localhost 的连接。
  2. +
  3. 在您的客户端系统和您的 Clear Linux OS 主机之间设置一个 SSH 隧道。您的客户端系统将从 localhost(客户端)将发往(客户端上)指定的完全限定 VNC 端口号的流量转发到 Clear Linux OS 主机上相同的端口号。
  4. +
  5. 客户端系统上的 VNC 查看器应用程序现在将连接到 localhost,而不是 Clear Linux OS 主机的 IP 地址。
  6. +
+
+

将 VNC 配置为仅接受来自 localhost 的连接

+

使用方法 1 时:

+
    +
  1. 编辑 $HOME/.vnc 中的 config 文件,并将 # localhost 行注释掉。编辑后的内容应该如下所示:

    +
    ## Supported server options to pass to vncserver upon invocation can be listed
    +## in this file. See the following manpages for more: vncserver(1)
    +Xvnc(1).
    +## Several common ones are shown below. Uncomment and modify to your liking.
    +##
    +# securitytypes=vncauth,tlsvnc
    +# desktop=sandbox
    +# geometry=2000x1200
    +localhost
    +# alwaysshared
    +
    +
    +
  2. +
  3. 如果存在活动会话,请将其终止,然后重新启动。

    +
  4. +
+

使用方法 2 时:

+
    +
  1. 编辑 /etc/systemd/system 中的 systemd 服务脚本 vncserver@:[X].service,并将 -localhost 添加到 ExecStart 行。以下示例使用 vncserver@:5.service:

    +
    [Unit]
    +Description=VNC Remote Desktop Service for "vnc-user-b" with display ID "5"
    +After=syslog.target network.target
    +
    +[Service]
    +Type=simple
    +User=vnc-user-b
    +PAMName=login
    +PIDFile=/home/%u/.vnc/%H%i.pid
    +ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    +ExecStart=/usr/bin/vncserver %i -geometry 2000x1200 -localhost -alwaysshared -fg
    +ExecStop=/usr/bin/vncserver -kill %i
    +
    +[Install]
    +WantedBy=multi-user.target
    +
    +
    +
  2. +
  3. 重新启动服务脚本:

    +
    systemctl daemon-load
    +systemctl restart vncserver@:5.service
    +
    +
    +
  4. +
+

使用方法 3 时:

+
    +
  1. 不需要更改 xvnc@service 脚本。

    +

    重新启动 VNC 会话后,您可以使用以下 netstat 命令验证它是否只接受来自 localhost 的连接:

    +
    netstat -plant
    +
    +
    +
    +

    注解

    +

    添加 Clear Linux OS network-basic 捆绑包以获得 netstat 命令。

    +
    +
  2. +
+

图 7 显示了两个 VNC 会话(5901 和 5905),它们接受来自由 0.0.0.0 指定的任何主机的连接。这是在使用 -localhost 选项之前的情况。

+
+VNC session accepting connection from any host +

图 7:VNC 会话(5901 和 5905)接受来自任何主机的连接

+
+

图 8 显示了两个 VNC 会话(5901 和 5905),它们只接受来自由 127.0.0.1 指定的 localhost 的连接。这是在使用 -localhost 选项之后的情况。

+
+VNC session only accepting connection from localhost +

图 8:VNC 会话(5901 和 5905)仅接受来自 localhost 的连接

+
+
+
+

设置从客户端系统到 Clear Linux OS 主机的 SSH 隧道

+

在 Linux 发行版和 macOS 上:

+
    +
  1. 打开终端仿真器并输入:

    +
    ssh -L [client port number]:localhost:[fully-qualified VNC port number] \
    +-N -f -l [username] [clear-linux-host-ip-address]
    +
    +
    +
  2. +
  3. 输入 Clear Linux OS 帐户密码(不是 VNC 密码)。

    +
    +

    注解

    +
      +
    • -L 指定(客户端侧)localhost 上的 [client port number] 会转发到(服务器侧)[fully-qualified VNC port number]。
    • +
    • [client port number] 替换为可用的客户端端口号(例如:1234)。为简单起见,您可以将 [client port number] 设置为与 [fully-qualified VNC port number] 相同。
    • +
    • [fully-qualified VNC port number] 替换为 5900(默认 VNC 端口)加上显示 ID。例如,如果显示 ID 为 2,则完全限定的 VNC 端口号为 5902。
    • +
    • -N 指示 SSH 只转发端口,不执行远程命令。
    • +
    • -f 指示 SSH 在命令执行前进入后台。
    • +
    • -l 指定登录的用户名。
    • +
    +
    +
  4. +
+

在 Windows 上:

+
    +
  1. 启动 Putty。

    +
  2. +
  3. 指定要连接到的 Clear Linux OS VNC 主机。

    +
      +
    1. Category 部分下,选择 Session。请参阅图 1。
    2. +
    3. Host Name (or IP address) 字段中输入 Clear Linux OS 主机的 IP 地址。
    4. +
    5. Connection type 选项设置为 SSH
    6. +
    +
  4. +
  5. 配置 SSH 隧道。请参阅图 9 的示例。

    +
      +
    1. Category 部分下,转到 Connection > SSH > Tunnels

      +
    2. +
    3. Source port 字段中,输入可用的客户端端口号(例如:1234)。为简单起见,您可以将 Source port 设置为与完全限定的 VNC 端口号相同。

      +
    4. +
    5. Destination 字段中,输入 localhost: 加上完全限定的 VNC 端口号。

      +
    6. +
    7. 点击 Add 按钮。

      +
      +Putty - configure SSH tunnel +

      图 9:Putty - 配置 SSH 隧道

      +
      +
    8. +
    +
  6. +
  7. 点击 Open 按钮。

    +
  8. +
  9. 输入 Clear Linux OS 帐户密码(不是 VNC 密码)。

    +
  10. +
+
+
+

通过 SSH 隧道连接到 VNC 会话

+

设置 SSH 隧道后,请按照以下说明连接到您的 VNC 会话。

+

在 Linux 发行版上:

+
    +
  1. 打开终端仿真器并输入:

    +
    vncviewer localhost:[client port number]
    +
    +
    +
  2. +
+

在使用 RealVNC 的 Windows 和 macOS 上:

+
    +
  1. 启动 RealVNC 查看器应用程序。

    +
  2. +
  3. 输入 localhost 和完全限定的 VNC 端口号。请参阅图 10 的示例。

    +
    +RealVNC viewer app connecting to localhost:1234 +

    图 10:连接至 localhost:1234 的 RealVNC 查看器应用程序

    +
    +
    +

    注解

    +

    即使流量通过 SSH 隧道传输,RealVNC 仍会警告连接未加密。您可以忽略此警告。

    +
    +
    +
    +
  4. +
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/stacks/dars.html b/zh_CN/guides/stacks/dars.html new file mode 100644 index 000000000..e01c08e17 --- /dev/null +++ b/zh_CN/guides/stacks/dars.html @@ -0,0 +1,1137 @@ + + + + + + + + + + + + + + 数据分析参考堆栈 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

数据分析参考堆栈

+

本指南说明了如何使用 DARS,以及如何选择性地构建您自己的 DARS 容器映像。

+

任何支持 Docker* 容器的系统都可与 DARS 一起使用。本指南中的这些步骤使用 Clear Linux* OS 作为主机系统。

+ +
+

数据分析参考堆栈版本

+

数据分析参考堆栈 (DARS) 为开发人员和企业提供了一个简单、高度优化的软件堆栈来存储和处理大量数据。更多详细信息请参阅 DARS architecture and performance benchmarks

+

数据分析参考堆栈提供了两个预构建的 Docker 映像,可在 Docker Hub 获得:

+ +

我们建议您在 DARS repository 中找到 README,查看每个映像的最新组件版本。由于 Clear Linux OS 是滚动发行的,基于 Clear Linux OS 的容器中的软件包版本号可能不是 Clear Linux OS 最新发布的版本号。

+
+

注解

+

数据分析参考堆栈是一项集体成果,成果中的每一个软件都有自己的许可证。有关数据分析参考堆栈的许可和使用的更多详细信息,请参阅 DARS Terms of Use

+
+
+
+

使用 Docker 映像

+
    +
  1. 要立即开始使用最新的稳定版 DARS 映像,请直接从 Docker Hub 提取。在本教程中,我们将使用 Dars with MKL 版本堆栈。

    +
  2. +
  3. 下载完映像后,您可以使用以下命令运行它:

    +
    docker run -it --ulimit nofile=1000000:1000000 --name mkl <name of image>
    +
    +
    +

    此命令将启动映像,并进入容器内的 bash shell 中。您将看到类似以下内容的输出:

    +
    root@fd5155b89857 /root # spark-shell
    +spark-shell
    +Config directory: /usr/share/defaults/spark/
    +Welcome to
    +  ____              __
    + / __/__  ___ _____/ /__
    + _\ \/ _ \/ _ `/ __/  '_/
    +/___/ .__/\_,_/_/ /_/\_\   version 2.4.0
    +   /_/
    +
    +Using Scala version 2.12.7 (OpenJDK 64-Bit Server VM, Java 1.8.0-internal)
    +Type in expressions to have them evaluated.
    +Type :help for more information.
    +
    +scala>
    +
    +
    +

    --ulimit nofile 参数是当前必需的参数,以便增加 spark 引擎在某一时点打开的打开文件的数量。

    +
  4. +
+
+
+

构建 DARS 映像

+

如果选择构建您自己的 DARS 容器映像,您可以根据需要对它们进行自定义。将提供的 Dockerfile 用作基准。

+

要使用 Clear Linux OS 构建映像,请从安装了 containers-basic-dev 捆绑包的 Clear Linux OS 开发平台开始。使用 swupd 了解有关捆绑包和安装捆绑包的更多信息。

+
    +
  1. 克隆 Data Analytics Reference Stack GitHub* 存储库。

    +
    git clone https://github.com/clearlinux/dockerfiles/tree/master/stacks/dars -b master
    +
    +
    +
  2. +
  3. 在 DARS 目录中,运行 make 来构建 OpenBLAS 和 MKL 映像。

    +
    make
    +
    +
    +

    然后运行 make baseline 构建基准 CentOS 映像。根据系统的不同,可能需要一段时间才能完成构建。完成后,使用 Docker 检查生成的映像。

    +
    make baseline
    +
    +
    +
  4. +
  5. 完成后,使用 Docker 检查生成的映像

    +
    docker images | grep dars
    +
    +
    +
  6. +
  7. 您可以使用任何一个生成的映像来启动功能齐全的容器。如果需要自定义容器,您可以编辑所提供的 Dockerfile

    +
  8. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/stacks/dlrs/dlrs.html b/zh_CN/guides/stacks/dlrs/dlrs.html new file mode 100644 index 000000000..a754ae75c --- /dev/null +++ b/zh_CN/guides/stacks/dlrs/dlrs.html @@ -0,0 +1,1455 @@ + + + + + + + + + + + + + + 深度学习参考堆栈 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

深度学习参考堆栈

+

本教程介绍如何在 Clear Linux* OS 中使用深度学习参考堆栈运行 TensorFlow*、PyTorch* 和 Kubeflow 基准工作负载。

+ +
+

概述

+

我们打造了深度学习参考堆栈来帮助 AI 开发人员在英特尔架构上获得最佳开发体验。此堆栈降低了深度学习软件组件常见的复杂性,为自定义解决方案提供了灵活性,并使您能够快速构建原型并部署深度学习工作负载。使用本教程可在您的解决方案上运行基准工作负载。

+

深度学习参考堆栈有以下版本:

+
    +
  • Intel MKL-DNN-VNNI,它使用面向深度神经网络(英特尔® MKL-DNN)原语的英特尔®数学内核库进行优化,并支持英特尔® AVX-512 矢量神经网络指令 (VNI)。
  • +
  • Intel MKL-DNN,它包括使用面向深度神经网络(英特尔® MKL-DNN)原语的英特尔®数学内核库进行优化的 TensorFlow 框架。
  • +
  • Eigen,它包括针对英特尔®架构优化的 TensorFlow
  • +
  • PyTorch with OpenBLAS,它包括 PyTorch with OpenBlas。
  • +
  • PyTorch with Intel MKL-DNN,它包括使用英特尔®数学内核库(英特尔® MKL)和英特尔 MKL-DNN 进行优化的 PyTorch。
  • +
+
+

重要

+

要利用英特尔® AVX-512 和 VNI 功能以及深度学习参考堆栈,您必须使用以下硬件:

+
    +
  • 英特尔® AVX-512 映像需要使用英特尔®至强®可扩展平台
  • +
  • VNNI 需要使用第二代英特尔®至强®可扩展平台
  • +
+
+
+

堆栈功能和特性

+ +
+

注解

+

深度学习参考堆栈是一项集体成果,成果中的每一个软件都有自己的许可证。有关深度学习参考堆栈的许可和使用的更多详细信息,请参阅 DLRS Terms of Use

+
+
+
+

必备条件

+
    +
  • 在主机系统上 Install Clear Linux OS
  • +
  • containers-basic 捆绑包
  • +
  • cloud-native-basic 捆绑包
  • +
+

在 Clear Linux OS 中,containers-basic 包括 TensorFlow 和 PyTorch 基准测试所必需的 Docker*。使用 swupd 实用程序检查 containers-basiccloud-native-basic 是否存在:

+
sudo swupd bundle-list
+
+
+

要安装 containers-basiccloud-native-basic 捆绑包,请输入:

+
sudo swupd bundle-add containers-basic cloud-native-basic
+
+
+

安装 containers-basic 捆绑包后 Docker 不会启动。要启动 Docker,请输入:

+
sudo systemctl start docker
+
+
+

要确保正确安装和配置 Kubernetes,请遵循 Kubernetes* 中的说明。

+
+
+

版本兼容性

+

我们根据以下软件包版本验证了这些步骤:

+
    +
  • Clear Linux OS 26240(支持的最低版本)
  • +
  • Docker 18.06.1
  • +
  • Kubernetes 1.11.3
  • +
  • Go 1.11.12
  • +
+
+

注解

+

深度学习参考堆栈是为了在 Clear Linux OS 主机上执行时获得最佳用户体验而开发的。但是,该堆栈在容器环境中运行时,您应该能够在其他 Linux* 发行版上完成本教程的以下部分,只要这些发行版满足上面列出的 Docker*、Kubernetes* 和 Go* 软件包版本。查找关于如何更新软件包和管理 Docker 服务的分发版文档。

+
+
+
+
+

TensorFlow 单节点和多节点基准测试

+

本部分介绍在单节点中运行 TensorFlow benchmarks。对于多节点测试,请为每个节点重复这些步骤。这些步骤提供了运行其他基准测试的模板,前提是它们可以调用 TensorFlow。

+
+

注解

+

深度学习参考堆栈和本教程的性能测试结果是使用 runc 作为运行时获得的。

+
+
    +
  1. Docker Hub 下载 EigenIntel MKL-DNN Docker 映像。

    +
  2. +
  3. 使用 Docker 运行映像:

    +
    docker run --name <image name>  --rm -i -t <clearlinux/
    +stacks-dlrs-TYPE> bash
    +
    +
    +
    +

    注解

    +

    使用 -i 参数启动 Docker 映像,从而在容器内启动交互模式。在正在运行的容器中输入以下命令。

    +
    +
  4. +
  5. 克隆容器中的基准测试存储库:

    +
    git clone http://github.com/tensorflow/benchmarks -b cnn_tf_v1.12_compatible
    +
    +
    +
  6. +
  7. 执行基准测试脚本:

    +
    python benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --device=cpu --model=resnet50 --data_format=NHWC
    +
    +
    +
  8. +
+
+

注解

+

您可以将该模型更换为 TensorFlow 支持的其他模型。

+

如果使用基于 FP32 的模型,可以使用 Intel® quantization tools 将其转换为 int8 模型。

+
+
+
+

PyTorch 单节点和多节点基准测试

+

本部分介绍在单节点中运行针对 Caffe2 的 PyTorch benchmarks

+
    +
  1. Docker Hub 下载 PyTorch with OpenBLASPyTorch with Intel MKL-DNN Docker 映像。

    +
  2. +
  3. 使用 Docker 运行映像:

    +
    docker run --name <image name>  --rm -i -t <clearlinux/stacks-dlrs-TYPE> bash
    +
    +
    +
    +

    注解

    +

    使用 -i 参数启动 Docker 映像,从而在容器内启动交互模式。在正在运行的容器中输入以下命令。

    +
    +
  4. +
  5. 克隆基准测试存储库:

    +
    git clone https://github.com/pytorch/pytorch.git
    +
    +
    +
  6. +
  7. 执行基准测试脚本:

    +
    cd pytorch/caffe2/python
    +python convnet_benchmarks.py --batch_size 32 \
    +                      --cpu \
    +                      --model AlexNet
    +
    +
    +
  8. +
+
+
+

Kubeflow 多节点基准测试

+

基准测试工作负载在 Kubernetes 集群中运行。本教程使用 Kubeflow 在三个节点上部署机器学习工作负载。

+
+

警告

+

如果选择英特尔® MKL-DNN 或英特尔® MKL-DNN-VNNI 映像,您的平台必须支持英特尔® AVX-512 指令集。否则,可能会出现非法指令错误,导致无法完成本教程。

+
+
+

Kubernetes 设置

+

按照 Kubernetes* 教程中的说明在 Clear Linux OS 上进行设置。Kubernetes 社区也提供了 Creating a single control-plane cluster with kubeadm

+
+
+

Kubernetes 网络连接

+

在这些测试中,我们使用 flannel 作为网络提供程序。如果青睐不同的网络层,请参阅 Kubernetes Creating a single control-plane cluster with kubeadm 进行设置。

+
+
+

Kubectl

+

您可以使用 kubectl 对您的 Kubernetes 集群运行命令。有关语法和操作的详细信息,请参阅 Overview of kubectl。建立一个 Kubernetes 工作集群后,请使用下面的 YAML 脚本启动一个含有简单 shell 脚本的 Pod,并保持该 Pod 处于打开状态。

+
    +
  1. 将 example.yaml 脚本复制到您的系统中:

    +
    apiVersion: v1
    +kind: Pod
    +metadata:
    +  name: example-pod
    +  labels:
    +    app: ex-pod
    +spec:
    +  containers:
    +  - name: ex-pod-container
    +    image: clearlinux/stacks-dlrs-mkl:latest
    +    command: ['/bin/bash', '-c', '--']
    +    args: [ "while true; do sleep 30; done" ]
    +
    +
    +
  2. +
  3. 使用 kubectl 执行该脚本:

    +
    kubectl apply –f <path-to-yaml-file>/example.yaml
    +
    +
    +
  4. +
+

该脚本打开一个 Pod。更稳健的解决方案是创建部署,或者将 python 脚本或更大的 shell 脚本注入容器。

+
+
+

图像

+

您必须将 launcher.py 添加到 Docker 映像中,以包含深度学习参考堆栈,并将基准测试存储库放在正确的位置。请注意,本教程使用 Kubeflow v0.4.0。如果使用不同的版本,则不能保证结果。

+

从 Docker 映像中,运行以下命令:

+
mkdir -p /opt
+git clone https://github.com/tensorflow/benchmarks.git /opt/tf-benchmarks
+cp launcher.py /opt
+chmod u+x /opt/*
+
+
+

您的入口点变成 /opt/launcher.py

+

这会构建一个可供 TFJob 从 Kubeflow 直接使用的映像。

+
+
+

ksonnet*

+

Kubeflow 使用 ksonnet* 来管理部署,因此您必须在设置 Kubeflow 之前安装它。

+

ksonnet 已添加到 Clear Linux OS 版本 27550 中的 cloud-native-basic 捆绑包中。如果使用的是较旧的 Clear Linux OS 版本(不推荐),您必须如下所述手动安装 ksonnet。

+

在 Clear Linux OS 上,请按照下列步骤操作:

+
swupd bundle-add go-basic-dev
+export GOPATH=$HOME/go
+export PATH=$PATH:$GOPATH/bin
+go get github.com/ksonnet/ksonnet
+cd $GOPATH/src/github.com/ksonnet/ksonnet
+make install
+
+
+

ksonnet 安装完成后,确保可在整个环境中访问 ks 二进制文件。

+
+
+

Kubeflow

+

Kubernetes 在节点上运行后,请按照 Getting Started with Kubeflow 中的说明设置 Kubeflow

+
export KUBEFLOW_SRC=$HOME/kflow
+export KUBEFLOW_TAG="v0.4.1"
+export KFAPP="kflow_app"
+export K8S_NAMESPACE="kubeflow"
+
+mkdir ${KUBEFLOW_SRC}
+cd ${KUBEFLOW_SRC}
+ks init ${KFAPP}
+cd ${KFAPP}
+ks registry add kubeflow github.com/kubeflow/kubeflow/tree/${KUBEFLOW_TAG}/kubeflow
+ks pkg install kubeflow/common
+ks pkg install kubeflow/tf-training
+
+
+

接下来,为我们的目的部署主要软件包:tf-job-operator。

+
ks env rm default
+kubectl create namespace ${K8S_NAMESPACE}
+ks env add default --namespace "${K8S_NAMESPACE}"
+ks generate tf-job-operator tf-job-operator
+ks apply default -c tf-job-operator
+
+
+

这将创建 CustomResourceDefinition (CRD) 端点来启动 TFJob。

+
+
+

运行 TFJob

+
    +
  1. dlrs-tfjob 获取用于部署 TFJobs 的 ksonnet 注册表。

    +
  2. +
  3. 按照以下步骤安装 TFJob 组件:

    +
    ks registry add dlrs-tfjob github.com/clearlinux/dockerfiles/tree/master/stacks/dlrs/kubeflow/dlrs-tfjob
    +
    +ks pkg install dlrs-tfjob/dlrs-bench
    +
    +
    +
  4. +
  5. 导出用于部署的映像名称:

    +
    export DLRS_IMAGE=<docker_name>
    +
    +
    +
    +

    注解

    +

    将 <docker_name> 替换为前述步骤中指定的映像名称。

    +
    +
  6. +
  7. 为工作负载生成 Kubernetes 清单,并使用以下命令应用这些清单:

    +
    ks generate dlrs-resnet50 dlrsresnet50 --name=dlrsresnet50 --image=${DLRS_IMAGE}
    +ks generate dlrs-alexnet dlrsalexnet --name=dlrsalexnet --image=${DLRS_IMAGE}
    +ks apply default -c dlrsresnet50
    +ks apply default -c dlrsalexnet
    +
    +
    +
  8. +
+

这会在 Kubernetes 集群中复制和部署三个测试设置。

+
+
+

运行本教程的结果

+

您必须解析 Kubernetes Pod 的日志来检索性能数据。完成后,Pod 仍会存在,并将处于“已完成”状态。您可以从任何一个 Pod 中获取日志来检查基准测试结果。有关 Kubernetes 日志记录的更多信息,请参见 Kubernetes Logging Architecture 文档。

+
+
+
+

使用 Jupyter Notebook

+

本示例使用 PyTorch with OpenBLAS 容器映像。下载后,使用 -p 运行 Docker 映像,以指定容器和主机之间的共享端口。本示例使用端口 8888。

+
docker run --name pytorchtest --rm -i -t -p 8888:8888 clearlinux/stacks-pytorch-oss bash
+
+
+

启动容器后,启动 Jupyter Notebook。该命令在容器映像内执行。

+
jupyter notebook --ip 0.0.0.0 --no-browser --allow-root
+
+
+

加载笔记本后,您将看到类似以下内容的输出:

+
To access the notebook, open this file in a browser: file:///.local/share/jupyter/runtime/nbserver-16-open.html
+Or copy and paste one of these URLs:
+http://(846e526765e3 or 127.0.0.1):8888/?token=6357dbd072bea7287c5f0b85d31d70df344f5d8843fbfa09
+
+
+

从您的主机系统或任何可以访问主机 IP 地址的系统,使用以下命令启动 Web 浏览器。如果没有在主机系统上运行浏览器,请将 127.0.0.1 更换为主机的 IP 地址。

+
http://127.0.0.1:8888/?token=6357dbd072bea7287c5f0b85d31d70df344f5d8843fbfa09
+
+
+

您的浏览器会显示以下内容:

+
+Jupyter Notebook +
+

图 1: Jupyter Notebook

+

要创建新笔记本,请点击 New,然后选择 Python 3

+
+Create a new notebook +
+

图 2:创建一个新笔记本

+

此时将显示一个新的空白笔记本,其中有一个单元格可供输入内容。

+
+New blank notebook +
+

要验证 PyTorch 是否正在工作,请将以下片段复制到空白单元格中,并运行该单元格。

+
from __future__ import print_function
+import torch
+x = torch.rand(5, 3)
+print(x)
+
+
+
+Sample code snippet +
+

运行单元格时,您的输出将如下所示:

+
+code output +
+

您可以继续在此笔记本中工作,也可以下载现有笔记本来利用深度学习参考堆栈的优化深度学习框架。详情请参阅 Jupyter Notebook

+
+
+

卸载

+

要卸载深度学习参考堆栈,您可以选择停止容器以使其不使用系统资源,或者可以停止容器并将其删除以释放存储空间。

+

要停止容器,请从主机系统执行以下操作:

+
    +
  1. 找到容器的 ID

    +
    docker container ls
    +
    +
    +

    这将产生类似于以下内容的输出:

    +
    CONTAINER ID        IMAGE                        COMMAND               CREATED             STATUS              PORTS               NAMES
    +e131dc71d339        clearlinux/stacks-dlrs-oss   "/bin/sh -c 'bash'"   23 seconds ago      Up 21 seconds                           oss
    +
    +
    +
  2. +
  3. 然后,您可以使用 ID 或容器名称来停止容器。本示例使用名称 “oss”:

    +
    docker container stop oss
    +
    +
    +
  4. +
  5. 验证容器未在运行

    +
    docker container ls
    +
    +
    +
  6. +
  7. 要从系统中删除容器,您需要知道映像 ID:

    +
    docker images
    +
    +
    +

    该命令会产生类似于以下内容的输出:

    +
    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
    +clearlinux/stacks-dlrs-oss   latest              82757ec1648a        4 weeks ago         3.43GB
    +clearlinux/stacks-dlrs-mkl   latest              61c178102228        4 weeks ago         2.76GB
    +
    +
    +
  8. +
  9. 要移除映像,请使用映像 ID:

    +
    docker rmi 82757ec1648a
    +
    +
    +
    # docker rmi 827
    +Untagged: clearlinux/stacks-dlrs-oss:latest
    +Untagged: clearlinux/stacks-dlrs-oss@sha256:381f4b604537b2cb7fb5b583a8a847a50c4ed776f8e677e2354932eb82f18898
    +Deleted: sha256:82757ec1648a906c504e50e43df74ad5fc333deee043dbfe6559c86908fac15e
    +Deleted: sha256:e47ecc039d48409b1c62e5ba874921d7f640243a4c3115bb41b3e1009ecb48e4
    +Deleted: sha256:50c212235d3c33a3c035e586ff14359d03895c7bc701bb5dfd62dbe0e91fb486
    +
    +
    +

    请注意,您可以只使用映像 ID 的前几个字符来执行 docker rmi 命令,前提是它们在系统上是唯一的。

    +
  10. +
  11. 移除映像后,您可以通过以下方式验证它是否已被移除:

    +
    docker images
    +
    +
    +
  12. +
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/guides/stacks/greengrass.html b/zh_CN/guides/stacks/greengrass.html new file mode 100644 index 000000000..67fee6c08 --- /dev/null +++ b/zh_CN/guides/stacks/greengrass.html @@ -0,0 +1,1355 @@ + + + + + + + + + + + + + + 启用 AWS Greengrass* 和 OpenVINO™ 工具包 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

启用 AWS Greengrass* 和 OpenVINO™ 工具包

+

本指南说明了如何启用 AWS Greengrass* 和 OpenVINO™ 工具包。具体而言,该指南演示了如何:

+
    +
  • 使用 Clear Linux* OS 设置英特尔®边缘设备
  • +
  • 安装 OpenVINO™ 工具包和 Amazon Web Services* (AWS*) Greengrass* 软件堆栈
  • +
  • 使用 AWS Greengrass* 和 AWS Lambda* 从云中部署 FaaS 示例
  • +
+ +
+

概述

+

硬件加速的功能即服务 (FaaS) 有助于云开发人员在搭载加速器的英特尔® IoT 边缘设备(CPU、集成 GPU、英特尔® FPGA 和英特尔® Movidius™ 技术)上部署推理功能 [1]。这些功能使用容器化环境,为开发人员提供了出色的体验,有助于开发人员将可视化分析从云安全地迁移到边缘。硬件加速的 FaaS 支持在搭载加速器的英特尔® IoT 边缘设备上访问经过优化的深度学习库,实现业界最佳性能。

+
+
+

支持的平台

+
    +
  • 操作系统:Clear Linux OS 最新版本
  • +
  • 硬件:英特尔®酷睿™平台(本教程仅支持 CPU 推理。)
  • +
+
+

示例说明

+

AWS Greengrass 示例位于 Edge-Analytics-FaaS 中。本教程使用 1.0 版本的源代码。

+

Clear Linux OS 提供以下 AWS Greengrass 示例:

+
    +
  • greengrass_classification_sample.py

    +

    此 AWS Greengrass 示例使用 AlexNet 和 GoogLeNet 等分类网络对视频流进行分类,并每秒在 AWS* IoT 云上发布前十名结果。

    +
  • +
  • greengrass_object_detection_sample_ssd.py

    +

    此 AWS Greengrass 示例会检测视频流中的对象,并使用单步多框检测 (SSD) 网络(例如 SSD Squeezenet、SSD Mobilenet 和 SSD300)对它们进行分类。此示例每秒在 AWS IoT 云上发布检测输出,如类标签、类置信度和边界框坐标。

    +
  • +
+
+
+
+

在边缘设备上安装操作系统

+

使用 开始使用 中的 从实时桌面安装 Clear Linux* OS,在新系统上安装干净的 Clear Linux OS。

+
+

创建用户帐户

+

安装 Clear Linux OS 后,创建两个用户帐户。在 Clear Linux OS 中创建一个管理用户,并为要使用的 Greengrass 服务创建一个用户帐户(请参阅下面的 Greengrass 用户)。

+
    +
  1. 创建新用户并为该用户设置密码。以 root 用户身份输入以下命令:

    +
    useradd <userid>
    +passwd <userid>
    +
    +
    +
  2. +
  3. 接下来,为新的 <userid> 启用 sudo 命令。将 <userid> 添加到 wheel 组:

    +
    usermod -G wheel -a <userid>
    +
    +
    +
  4. +
  5. 创建一个 /etc/fstab 文件。

    +
    touch /etc/fstab
    +
    +
    +
    +

    注解

    +

    默认情况下,Clear Linux OS 不会创建 /etc/fstab 文件。您必须在 Greengrass 服务运行之前创建此文件。

    +
    +
  6. +
+
+
+

添加所需的捆绑包

+

使用 swupd 软件更新程序实用程序添加 OpenVINO 软件堆栈必备的软件包:

+
swupd bundle-add os-clr-on-clr desktop-autostart computer-vision-basic
+
+
+
+

注解

+

详细了解如何 swupd

+
+

computer-vision-basic 捆绑包会安装 OpenVINO™ 工具包以及针对英特尔®边缘平台优化的示例模型。

+
+
+

转换深度学习模型

+
+

找到示例模型

+

本教程中提供了两种可以与 AWS Greengrass 配合使用的模型:分类和对象检测。

+

要使用图像分类模型完成本教程,请将 BVLC AlexNet 模型文件 bvlc_alexnet.caffemodeldeploy.prototxt 下载到 /usr/share/openvino/models 处的默认 model_location。预先训练的任何自定义分类模型都可与分类示例配合使用。

+

对于对象检测,安装 computer-vision-basic 捆绑包时会在 /usr/share/openvino/models 处附带针对英特尔®边缘平台优化的示例模型。这些模型作为示例提供;但是,您也可以将自定义 SSD 模型与 Greengrass 对象检测示例结合使用。

+
+
+

运行模型优化器

+

遵循 Model Optimizer Developer Guide 中的说明,使用 Model Optimizer 将深度学习模型转换为 Intermediate Representation。要优化上述任一示例模型,请运行以下命令之一。

+

对于使用 BVLC AlexNet 模型的分类:

+
python3 mo.py --framework caffe --input_model
+<model_location>/bvlc_alexnet.caffemodel --input_proto
+<model_location>/deploy.prototxt --data_type <data_type> --output_dir
+<output_dir> --input_shape [1,3,227,227]
+
+
+

对于使用 SqueezeNetSSD-5Class 模型的对象检测:

+
python3 mo.py --framework caffe --input_model
+<model_location>/'SqueezeNet 5-Class detection'/SqueezeNetSSD-5Class.caffemodel
+--input_proto <model_location>/'SqueezeNet 5-Class detection'/SqueezeNetSSD-5Class.prototxt
+--data_type <data_type> --output_dir <output_dir>
+
+
+

在这些示例中:

+
    +
  • <model_location>/usr/share/openvino/models
  • +
  • <data_type> 是 FP32 或 FP16,具体取决于目标设备。
  • +
  • <output_dir> 是存储中间表示 (IR) 的目录。IR 包含与网络结构对应的 .xml 格式以及与权重对应的 .bin 格式。此 .xml 文件应传递给 <PARAM_MODEL_XML>
  • +
  • 在 BVLC AlexNet 模型中,默认情况下,prototxt 会定义批处理大小为 10 的输入形状。要使用任何其他批处理大小,必须将整个输入形状作为参数提供给模型优化器。例如,要使用批处理大小 1,您必须提供 –input_shape [1,3,227,227]
  • +
+
+
+
+
+

配置 AWS Greengrass 组

+

对于每个英特尔®边缘平台,您必须创建一个新的 AWS Greengrass 组,并安装 AWS Greengrass 核心软件,以在云和边缘之间建立连接。

+
    +
  1. 要创建 AWS Greengrass 组,请按照 Configure AWS IoT Greengrass on AWS IoT 中的说明执行操作。

    +
  2. +
  3. 要在边缘平台上安装和配置 AWS Greengrass 核心,请按照 Start AWS Greengrass on the Core Device 中的说明执行操作。在步骤 8(b) 中,下载 AWS Greengrass 核心软件的 x86_64 Ubuntu* 配置。

    +
    +

    注解

    +

    您不需要在 AWS Greengrass developer guide 模块 1 的步骤 6 中运行 cgroupfs-mount.sh 脚本,因为它已经在 Clear Linux OS 中启用。

    +
    +
  4. +
  5. 请务必下载安全资源和 AWS Greengrass 核心软件。

    +
    +

    注解

    +

    安全证书会链接到您的 AWS 帐户。

    +
    +
  6. +
+
+
+

创建并打包 Lambda 函数

+
    +
  1. Create and Package a Lambda Function 中完成 AWS Greengrass 教程的步骤 1-4。

    +
    +

    注解

    +

    这会创建必要的 tarball,以便在边缘设备上创建 AWS Greengrass 环境。

    +
    +
  2. +
  3. 在步骤 5 中,将 greengrassHelloWorld.py 替换为 Edge-Analytics-Faas 中的分类或对象检测 Greengrass 示例:

    + +
  4. +
  5. 将所选的 Greengrass 示例以及从上一步提取的 Greengrass SDK 文件夹压缩到 greengrass_sample_python_lambda.zip

    +

    压缩包应包含:

    +
      +
    • greengrasssdk
    • +
    • greengrass 分类或对象检测示例
    • +
    +

    例如:

    +
    zip -r greengrass_lambda.zip greengrasssdk
    +greengrass_object_detection_sample_ssd.py
    +
    +
    +
  6. +
  7. 返回名为 Create and Package a Lambda Function 的 AWS 文档部分,并完成步骤。

    +
    +

    注解

    +

    在 AWS 文档的步骤 9(a) 中,上传 Zip 文件,并确保根据使用的 AWS Greengrass 示例将处理程序命名为以下名称之一:

    +
      +
    • greengrass_object_detection_sample_ssd.function_handler
    • +
    • greengrass_classification_sample.function_handler
    • +
    +
    +
  8. +
+
+
+

配置 Lambda 函数

+

创建 Greengrass 组和 Lambda 函数后,开始为 AWS Greengrass 配置 Lambda 函数。

+
    +
  1. 按照 AWS 文档中 Configure the Lambda Function for AWS IoT Greengrass 中的步骤 1-8 执行操作。

    +
  2. +
  3. 除了步骤 8 中提到的细节之外,将内存限制更改为 2048 MB,以容纳较大的输入视频流。

    +
  4. +
  5. 编辑 Lambda 配置时,添加以下环境变量作为键值对,然后点击更新:

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
    表 1.环境变量:Lambda 配置
    PARAM_MODEL_XML<MODEL_DIR>/<IR.xml>,其中 <MODEL_DIR> 是用户指定的,包含来自英特尔®模型优化器的中间表示文件 IR.xml。在本教程中,<MODEL_DIR> 应设置为 ‘/usr/share/openvino/models’ 或其某个子目录。
    PARAM_INPUT_SOURCE
    +
    <DATA_DIR>由用户指定的 /input.webm。保存输入和
    +
    输出数据。对于网络摄像头,请将 PARAM_INPUT_SOURCE 设置为 ‘/dev/video0’
    +
    +
    PARAM_DEVICE“CPU”
    PARAM_CPU_EXTENSION_PATH/usr/lib64/libcpu_extension.so
    PARAM_OUTPUT_DIRECTORY<DATA_DIR> 由用户指定。保存输入和输出数据
    PARAM_NUM_TOP_RESULTS为分类示例指定的用户。(例如,1 为 前 1 名结果,5 为前 5 名结果)
    +
  6. +
  7. 完成 Configure the Lambda Function for AWS IoT Greengrass 中的步骤,添加订阅以进行订阅或发布来自 AWS Greengrass Lambda 函数的消息。

    +
    +

    注解

    +

    可选主题过滤器字段是 Lambda 函数中提到的主题。在本教程中,示例主题包括以下 openvino/ssdopenvino/classification

    +
    +
  8. +
+
+

添加本地资源

+

有关 Access Local Resources with Lambda Functions and Connectors 的详细信息,请参阅 AWS 文档。

+

下表列出了 CPU 所需的本地资源:

+ + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + +
本地资源
名称资源类型本地路径访问
ModelDir<MODEL_DIR> 由用户指定只读
网络摄像头设备/dev/video0只读
DataDir<DATA_DIR> 由用户指定。保存输入和输出数据。读取和写入
+
+
+
+

部署 Lambda 函数

+

有关如何 Deploy Cloud Configurations to an AWS IoT Greengrass Core Device 的说明,请参阅 AWS 文档。在组页面上选择 Deployments,并按照说明执行操作。

+
+

输出的使用

+

使用输出时有四种可用选项。这些选项用于按 AWS Greengrass 示例中 reporting_interval 变量定义的间隔,报告、流式传输、上传或存储推理输出。

+
    +
  1. IoT 云输出:

    +

    在 AWS Greengrass 示例中,默认情况下使用 enable_iot_cloud_output 变量启用此选项。您可以使用它来验证在边缘设备上运行的 lambda。它支持使用 lambda 中指定的订阅主题向 IoT 云发布消息。(例如,主题可能包括用于分类示例的 openvino/classification 以及用于对象检测示例的 openvino/ssd。) 对于分类,具有类标签的前 1 名结果会发布到 IoT 云。对于 SSD 对象检测,则发布对象的边界框坐标、类标签和类置信度等检测结果。

    +

    有关如何在 IoT 云上查看输出的说明,请参考 AWS 文档 Verify the Lambda Function Is Running on the Device

    +
  2. +
  3. Kinesis 流式传输:

    +

    enable_kinesis_output 设置为 True 时,此选项支持使用 Kinesis [3] 流将推理输出从边缘设备流式传输到云。边缘设备充当数据生产者,并将处理后的数据不断推送到云中。您必须在 AWS Greengrass 示例中设置和指定 Kinesis 流名称、Kinesis shard 和 AWS 区域。

    +
  4. +
  5. 使用 AWS S3 存储桶的云存储:

    +

    enable_s3_jpeg_output 变量设置为 True 时,它允许在 AWS S3 存储桶中上传和存储已处理的帧(jpeg 格式)。您必须在 AWS Greengrass 示例中设置和指定用来存储 JPEG 图像的 S3 存储桶名称。这些映像使用时间戳命名,并上传到 S3。

    +
  6. +
  7. 本地存储:

    +

    enable_s3_jpeg_output 变量设置为 True 时,它允许在边缘设备上存储已处理的帧(jpeg 格式)。这些映像使用时间戳命名,并存储在由 PARAM_OUTPUT_DIRECTORY 指定的目录中。

    +
  8. +
+
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/index.html b/zh_CN/index.html new file mode 100644 index 000000000..232c2a08e --- /dev/null +++ b/zh_CN/index.html @@ -0,0 +1,1074 @@ + + + + + + + + + + + + + + Clear Linux* Project — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Clear Linux* Project

+

欢迎来到 Clear Linux* OS 文档页面,这是 Clear Linux OS 文档的资料来源。

+

我们的文档分为以下几个部分:

+

开始使用

+
+
如果您刚开始使用 Clear Linux OS,请按照详细的步骤说明来快速将 Clear Linux OS 安装在裸机上、安装在虚拟环境中或将 Clear Linux OS 实时映像烧录至 U 盘。
+

关于

+
+

Clear Linux OS 与其他的 Linux 分发版不同。

+

本页面将解释更新、易用性和自定义衍生工具的一些区别。您可了解这些差异以及其重要性。

+
+

指南

+
+
指南页面涵盖了从 Clear Linux OS 功能和工具到系统维护、网络和堆栈的一系列主题。
+

Use case tutorials

+
+
通过分步说明的示例用例,来介绍如何使用 Clear Linux OS 设置第三方工具和软件。
+

Reference

+
+
本页面提供了有关 Clear Linux OS Project 的其他参考信息。
+

FAQ

+
+
FAQ 页面提供了有关 Clear Linux OS 的常见问题与解答。
+
+
+
+ + +
+ +
+
+ + + + +
+ +
+

+ © Copyright 2019. + + 最后更新于 1月 17, 2020. + + +

+
+ Built with Sphinx using a theme provided by Read the Docs. + +
+ +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/objects.inv b/zh_CN/objects.inv new file mode 100644 index 000000000..c2f6465bb Binary files /dev/null and b/zh_CN/objects.inv differ diff --git a/zh_CN/reference/bundles/bundles.html b/zh_CN/reference/bundles/bundles.html new file mode 100644 index 000000000..13f94c2b6 --- /dev/null +++ b/zh_CN/reference/bundles/bundles.html @@ -0,0 +1,36890 @@ + + + + + + + + + + + + + + 可用的捆绑包 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

可用的捆绑包

+

本文档提供了可用捆绑包的当前列表。有关更多详细信息,请查看 GitHub* 上的 clr-bundles repo,或者选择 Name 捆绑包。

+

要了解有关 Clear Linux* OS 如何使用捆绑包进行软件部署的更多信息,请参见 bundle 文件

+
+

捆绑包列表

+ + + + + + + Bundles in Clear Linux* OS + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Updated: 01/17/20 19:53 UTC +
Name Description
aclTools to manipulate filesystem access control list.
+ +
Status: + + Active + +
+ + +
acpica-unix2Intel Advanced Configuration and Power Interface (ACPI) utilities.
+ +
Status: + + Active + +
+ + +
akonadiAsynchronous API to access PIM data.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
alsa-utilsUseful utilities for controlling a sound card.
+ +
Status: + + Active + +
+ + +
amateur-radioApplications to support ham or amateur radio operations.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • qt-basic
  • + +
  • desktop-gnomelibs
  • + +
  • file
  • + +
  • libX11client
  • + +
+
+ +
analitzaA library to add mathematical features to your program
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
ansibleIT automation tool with software provisioning, configuration management, and application deployment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openssh-client
  • + +
  • python3-basic
  • + +
  • ipmitool
  • + +
+
+ +
apache-flinkDistributed stream and batch processing framework
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • java-runtime
  • + +
+
+ +
apache-tomcatTomcat Server
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • java-runtime
  • + +
+
+ +
application-serverRun an application server via HTTP.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • uwsgi
  • + +
  • httpd
  • + +
  • c-basic
  • + +
  • nginx
  • + +
  • mod_wsgi
  • + +
+
+ +
arandrAnother XRandR GUI
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
aria2High speed download utility library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
arkGraphical file compression/decompression utility.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
artikulateImprove your pronunciation by listening to native speakers
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
aspellSpell checking utility
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • perl-basic
  • + +
+
+ +
aspell-deGerman (modern) dictionary for aspell
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • aspell
  • + +
+
+ +
aspell-esEspanol dictionary for aspell
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • aspell
  • + +
+
+ +
aspell-frFrench dictionary for aspell
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • aspell
  • + +
+
+ +
asunderGraphical Audio CD ripper and encoder
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
atomText and source code editor with plug-in support for Node.js and Git.
+ +
Status: + + Deprecated + +
+ + +
audaciousMusic player for Gtk/GNOME
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
auditSystem audit tools.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
  • python3-basic
  • + +
+
+ +
automotive-toolsVarious tools for automotive use cases
+ +
Status: + + Active + +
+ + +
avahi-daemonAvahi Multicast DNS Responder (GLib Support)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
aws-greengrass-iotLibraries to support building IoT applications on AWS Greengrass.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • python-extras
  • + +
  • cloud-api
  • + +
+
+ +
axelLight command line download accelerator.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
azure-iot-sdkLibraries to support building IoT applications on Azure.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • gstreamer
  • + +
  • p11-kit
  • + +
  • lib-openssl
  • + +
  • curl
  • + +
+
+ +
BabelInternationalization and localization utilities for Python, emphasizing web applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
baobabScan folders or volumes to provide graphical representation of the contents.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
bcBasic calculator, an arbitrary-precision calculator language.
+ +
Status: + + Active + +
+ + +
bcache-toolsbcache is a way to pair a fast SSD with a slow HDD to create a hybrid disk.
+ +
Status: + + Active + +
+ + +
bccBPF Compiler Collection (BCC) for performance analysis, troubleshooting.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • llvm
  • + +
+
+ +
big-data-basicTools and frameworks for big data management.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • elasticsearch
  • + +
  • python3-basic
  • + +
  • openblas
  • + +
  • java11-basic
  • + +
  • R-basic
  • + +
+
+ +
bijibenWrite out notes--every detail matters.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • webkitgtk
  • + +
  • NetworkManager-extras
  • + +
  • perl-basic
  • + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
binutilsVarious development tools to manage binary executable code.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
bisonGeneral-purpose parser generator that converts annotated context-free grammar into a deterministic LR.
+ +
Status: + + Active + +
+ + +
blenderA 3D creation suite supporting modelling, rendering, video editing, game development.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • qt-basic
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
bmap-toolsTools for creating block map (bmap) for a file and copying files; alternative to "dd" or "cp".
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
boinc-clientVolunteer computing and grid computing for science projects.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • webkitgtk
  • + +
  • libglib
  • + +
  • lib-openssl
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
boot-encryptedEnable booting with encrypted root, swap, or other partitions.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • bootloader-extras
  • + +
  • python3-basic
  • + +
+
+ +
bootloaderLoads kernel from disk and boots the system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • syslinux
  • + +
+
+ +
bootloader-extrasExtra packages to decrypt root partition.
+ +
Status: + + Active + +
+ + +
borgbackupDeduplicating archiver with compression and authenticated encryption.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
bpftraceHigh-level tracing language for Linux enhanced Berkeley Packet Filter (eBPF).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
+
+ +
byobuText based window manager and terminal multiplexer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • tmux
  • + +
  • python3-basic
  • + +
  • perl-basic
  • + +
+
+ +
c-basicBuild and run C/C++ language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • binutils
  • + +
  • llvm
  • + +
  • bison
  • + +
  • glibc-locale
  • + +
  • perl-basic
  • + +
  • flex
  • + +
  • make
  • + +
  • intltool
  • + +
  • nasm
  • + +
+
+ +
c-basic-legacyBuild and run 32bit C/C++ language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • binutils
  • + +
  • bison
  • + +
  • glibc-locale
  • + +
  • flex
  • + +
  • devpkg-zlib
  • + +
  • make
  • + +
+
+ +
c-basic-mingwCross compile C/C++ language programs to Windows
+ +
Status: + + Active + +
+ + +
c-basic-staticBuild and run C/C++ language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
c-extras-gcc7Build and run C/C++ language programs using the GCC 7.x compiler
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
c-extras-gcc8Build and run C/C++ language programs using the GCC 8.x compiler
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
cabextractManipulate or unpack CAB archives.
+ +
Status: + + Active + +
+ + +
calcArbitrary precision console calculator.
+ +
Status: + + Active + +
+ + +
capstoneLightweight multi-platform, multi-architecture disassembly framework
+ +
Status: + + Active + +
+ + +
cassandraA distributed (peer-to-peer) system for the management and storage of structured data
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
casyncContent Addressable Data Synchronizer to distribute frequently-updated file system images over the Internet.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • curl
  • + +
+
+ +
ccacheCache compilations to avoid repeating same computation and speed project build times.
+ +
Status: + + Active + +
+ + +
cephDistributed object store and file system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • libglib
  • + +
  • libxslt
  • + +
  • lib-openssl
  • + +
  • curl
  • + +
+
+ +
cheeseWebcam photo booth software for GNOME.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gstreamer
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
clamavClam AntiVirus is toolkit to detect malware and viruses, originally for Unix, with third-pary support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
clocCount lines of code for many programming languages.
+ +
Status: + + Active + +
+ + +
cloud-apiAPI helpers for cloud access.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
+
+ +
cloud-controlRun a cloud orchestration server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • sudo
  • + +
  • cloud-api
  • + +
  • network-basic
  • + +
  • openssl
  • + +
  • python3-basic
  • + +
  • sqlite
  • + +
  • git
  • + +
  • storage-cluster
  • + +
  • kvm-host
  • + +
  • xorriso
  • + +
  • openssh-client
  • + +
+
+ +
cloud-native-basicContains Clear Linux OS native software for cloud.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ethtool
  • + +
  • libstdcpp
  • + +
  • iproute2
  • + +
  • p11-kit
  • + +
+
+ +
clr-devopsRun all Clear Linux OS devops workloads.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mixer
  • + +
  • os-installer
  • + +
  • java-basic
  • + +
  • httpd
  • + +
  • os-core-update
  • + +
  • nginx
  • + +
  • rust-basic
  • + +
  • scm-server
  • + +
  • koji
  • + +
+
+ +
clr-installerImage creation and installation for Clear Linux OS.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-firmware-extras
  • + +
  • wpa_supplicant
  • + +
  • jq
  • + +
  • libstdcpp
  • + +
  • linux-firmware-wifi
  • + +
  • openssh-server
  • + +
  • kbd
  • + +
  • iproute2
  • + +
  • curl
  • + +
+
+ +
clr-installer-guiGraphical installation for Clear Linux OS.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gparted
  • + +
  • clr-installer
  • + +
  • desktop-gnomelibs
  • + +
  • NetworkManager
  • + +
+
+ +
clr-network-troubleshooterTool to test network availability and suggest actions to fix issues.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • python3-basic
  • + +
  • perl-basic
  • + +
+
+ +
clr-user-bundlesManage third-party bundles.
+ +
Status: + + Active + +
+ + +
cmusA small, fast, and powerful console music player.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
+
+ +
cockpitWeb-based administration for GNU/Linux servers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • libglib
  • + +
  • lib-openssl
  • + +
  • polkit
  • + +
+
+ +
collectdDaemon which collects system performance statistics periodically
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
  • python-basic
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
columbiadA full screen app chooser for HTPCs
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
compat-commonCommon legacy compatibility libraries
+ +
Status: + + Active + +
+ + +
computer-vision-basicBuild computer vision applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python-data-science
  • + +
  • computer-vision-models
  • + +
  • cloud-api
  • + +
  • devpkg-opencv
  • + +
  • openblas
  • + +
  • machine-learning-tensorflow
  • + +
  • computer-vision-openvino
  • + +
+
+ +
computer-vision-modelsDeep learning models for computer vision.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
computer-vision-openvinoBasic openvino bundle for computer vision
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • computer-vision-models
  • + +
  • python3-basic
  • + +
+
+ +
conkyA light-weight system monitor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
containers-basicRun container applications from Dockerhub.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • gnupg
  • + +
  • libglib
  • + +
  • git
  • + +
  • p11-kit
  • + +
  • iproute2
  • + +
+
+ +
containers-basic-devAll packages required to build the containers-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • containers-basic
  • + +
  • docbook-utils
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-attr
  • + +
  • devpkg-gcr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • libxslt
  • + +
  • devpkg-readline
  • + +
  • unzip
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-popt
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-pcre2
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • less
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • net-tools
  • + +
  • devpkg-nghttp2
  • + +
  • gjs
  • + +
  • devpkg-boost
  • + +
  • devpkg-libffi
  • + +
  • flex
  • + +
  • devpkg-util-linux
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-expat
  • + +
  • devpkg-libassuan
  • + +
  • graphviz
  • + +
  • devpkg-libidn
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • devpkg-libusb
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libcap
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-audit
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-vala
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libtasn1
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-lz4
  • + +
  • devpkg-zstd
  • + +
  • tzdata
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-zlib
  • + +
  • devpkg-nettle
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • gzip
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gnutls
  • + +
  • pygobject
  • + +
  • devpkg-libX11
  • + +
  • strace
  • + +
+
+ +
containers-virtRun container applications from Dockerhub in lightweight virtual machines.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • containers-basic
  • + +
+
+ +
containers-virt-devAll packages required to build the containers-virt bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • docbook-utils
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-attr
  • + +
  • devpkg-gcr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • containers-basic-dev
  • + +
  • libxslt
  • + +
  • devpkg-readline
  • + +
  • unzip
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-popt
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-pcre2
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • less
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • net-tools
  • + +
  • devpkg-nghttp2
  • + +
  • gjs
  • + +
  • devpkg-boost
  • + +
  • devpkg-libffi
  • + +
  • musl
  • + +
  • flex
  • + +
  • devpkg-util-linux
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-expat
  • + +
  • devpkg-libassuan
  • + +
  • graphviz
  • + +
  • devpkg-libidn
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • devpkg-libusb
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libcap
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-audit
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-vala
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • containers-virt
  • + +
  • devpkg-libtasn1
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-lz4
  • + +
  • devpkg-zstd
  • + +
  • tzdata
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-pixman
  • + +
  • devpkg-zlib
  • + +
  • devpkg-nettle
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • gzip
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gnutls
  • + +
  • pygobject
  • + +
  • devpkg-libpng
  • + +
  • devpkg-libX11
  • + +
  • strace
  • + +
+
+ +
CopyQClipboard manager with searchable and editable history.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
+
+ +
coturnThe TURN Server is a VoIP media traffic NAT traversal server and gateway.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • perl-basic
  • + +
+
+ +
cpioCopies files into or out of a cpio or tar archive.
+ +
Status: + + Active + +
+ + +
cronieRun specified programs at scheduled times.
+ +
Status: + + Active + +
+ + +
cryptographyEncrypt, decrypt, sign and verify objects.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnupg
  • + +
  • openssh-client
  • + +
  • openssl
  • + +
+
+ +
cryptoprocessor-managementManage the Trusted Platform Module (TPM).
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-openssl
  • + +
+
+ +
cryptoprocessor-management-devAll packages required to build the cryptoprocessor-management bundle.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • binutils
  • + +
  • diffutils
  • + +
  • docbook-utils
  • + +
  • devpkg-popt
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-pcre2
  • + +
  • git
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-iptables
  • + +
  • patch
  • + +
  • devpkg-elfutils
  • + +
  • which
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-pcre
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • devpkg-json-c
  • + +
  • libxslt
  • + +
  • devpkg-curl
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libunwind
  • + +
  • make
  • + +
  • p11-kit
  • + +
  • findutils
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-libcap
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-audit
  • + +
  • devpkg-lz4
  • + +
  • devpkg-readline
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • unzip
  • + +
  • tzdata
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmicrohttpd
  • + +
  • xz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-xz
  • + +
  • devpkg-boost
  • + +
  • gzip
  • + +
  • devpkg-libX11
  • + +
  • cryptoprocessor-management
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libxml2
  • + +
  • openssl
  • + +
  • devpkg-libtasn1
  • + +
  • valgrind
  • + +
  • flex
  • + +
  • devpkg-acl
  • + +
  • os-core-dev
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-glib
  • + +
  • devpkg-libseccomp
  • + +
  • doxygen
  • + +
  • devpkg-util-linux
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • strace
  • + +
+
+ +
curlCommand line tool to transfer data to/from a URL.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
cve-bin-toolCommon Vulnerabilities and Exposures (CVE) scanning tool.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
d-basicBuild and run D language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • llvm
  • + +
+
+ +
darktablePhotography workflow application with raw image development.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
database-extrasRun an SQL database.
+ +
Status: + + Pending-Delete + +
+ + +
dddGraphical debugger front-end; GDB, DBX, Ladebug, JDB, Perl, Python.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gdb
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
deprecated-python2WARNING: bundle will be removed soon, provides deprecated python2.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openblas
  • + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • p11-kit
  • + +
+
+ +
desktopRun the GNOME GUI desktop environment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • wpa_supplicant
  • + +
  • desktop-locales
  • + +
  • alsa-utils
  • + +
  • sysadmin-basic
  • + +
  • desktop-apps
  • + +
  • polkit
  • + +
  • which
  • + +
  • x11-server
  • + +
  • libX11client
  • + +
  • desktop-assets
  • + +
  • hardware-printing
  • + +
  • gstreamer
  • + +
  • tzdata
  • + +
  • desktop-gnomelibs
  • + +
  • linux-firmware-extras
  • + +
  • gjs
  • + +
  • openssl
  • + +
  • pulseaudio
  • + +
  • NetworkManager-extras
  • + +
  • fuse
  • + +
  • pygobject
  • + +
  • lib-imageformat
  • + +
+
+ +
desktop-appsApplications for the desktop.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gnome-weather
  • + +
  • libva-utils
  • + +
  • python3-basic
  • + +
  • desktop-gnomelibs
  • + +
  • seahorse
  • + +
  • file-roller
  • + +
  • graphviz
  • + +
  • libX11client
  • + +
+
+ +
desktop-apps-extrasLarger set of applications for the desktop.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • desktop-gnomelibs
  • + +
  • python3-basic
  • + +
+
+ +
desktop-assetsImages and Icons for the desktop
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • desktop-gnomelibs
  • + +
  • fonts-basic
  • + +
+
+ +
desktop-autostartBundle to automatically launch the GUI upon boot.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • desktop
  • + +
+
+ +
desktop-awesomeRun a minimal desktop environment with awesome WM.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • feh
  • + +
  • x11-server
  • + +
  • rxvt-unicode
  • + +
+
+ +
desktop-devAll packages required to build the desktop bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-parted
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-libXmu
  • + +
  • devpkg-network-manager-applet
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-mesa
  • + +
  • cryptography
  • + +
  • bison
  • + +
  • devpkg-kmod
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-attr
  • + +
  • devpkg-gcr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-bluez
  • + +
  • devpkg-libmtp
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-compat-enchant-soname1
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-webkitgtk
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-gdm
  • + +
  • devpkg-graphite
  • + +
  • libxslt
  • + +
  • devpkg-libgee
  • + +
  • docutils
  • + +
  • devpkg-nautilus
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-enchant
  • + +
  • devpkg-pulseaudio
  • + +
  • devpkg-clutter-gst
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libnotify
  • + +
  • devpkg-gutenprint
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-exiv2
  • + +
  • devpkg-zlib
  • + +
  • devpkg-newt
  • + +
  • devpkg-gtkmm3
  • + +
  • unzip
  • + +
  • devpkg-atk
  • + +
  • devpkg-gnome-software
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-pygobject
  • + +
  • devpkg-libgweather
  • + +
  • devpkg-libgudev
  • + +
  • inkscape
  • + +
  • devpkg-libmspack
  • + +
  • devpkg-libXvMC
  • + +
  • parallel
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-geoclue
  • + +
  • devpkg-opencv
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libssh2
  • + +
  • openssl
  • + +
  • devpkg-libwebp
  • + +
  • os-core-dev
  • + +
  • gpgme
  • + +
  • devpkg-flatpak
  • + +
  • devpkg-cmrt
  • + +
  • doxygen
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-flac
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • sysadmin-basic-dev
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-libgnomekbd
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-libical
  • + +
  • devpkg-popt
  • + +
  • devpkg-libstoragemgmt
  • + +
  • devpkg-atkmm
  • + +
  • devpkg-libexif
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-libgd
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libyami
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-uhttpmock
  • + +
  • devpkg-font-util
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-speex
  • + +
  • less
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-pacrunner
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-mutter
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • procps-ng
  • + +
  • devpkg-grilo
  • + +
  • devpkg-postgresql
  • + +
  • devpkg-xdg-desktop-portal
  • + +
  • devpkg-glibmm
  • + +
  • devpkg-gnome-online-accounts
  • + +
  • net-tools
  • + +
  • pandoc
  • + +
  • devpkg-gnome-menus
  • + +
  • devpkg-cogl
  • + +
  • NetworkManager
  • + +
  • ghostscript
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-geocode-glib
  • + +
  • devpkg-libXt
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-mozjs60
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-xkbcomp
  • + +
  • poppler
  • + +
  • devpkg-colord
  • + +
  • desktop
  • + +
  • devpkg-boost
  • + +
  • gjs
  • + +
  • devpkg-LibRaw
  • + +
  • iptables
  • + +
  • devpkg-libX11
  • + +
  • devpkg-fftw
  • + +
  • devpkg-libass
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libva
  • + +
  • devpkg-gnome-panel
  • + +
  • flex
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • devpkg-glu
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libsrtp
  • + +
  • libxml2
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-xtrans
  • + +
  • intltool
  • + +
  • devpkg-ntfs-3g
  • + +
  • devpkg-evolution
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-qpdf
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-gexiv2
  • + +
  • fontforge
  • + +
  • devpkg-gtkspell3
  • + +
  • devpkg-wayland
  • + +
  • devpkg-expat
  • + +
  • iproute2
  • + +
  • graphviz
  • + +
  • devpkg-gnome-bluetooth
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-libidn
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-libgphoto2
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-gcab
  • + +
  • devpkg-evolution-data-server
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-pcre
  • + +
  • webkitgtk
  • + +
  • devpkg-libndp
  • + +
  • devpkg-clutter
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-libusb
  • + +
  • devpkg-openssl
  • + +
  • devpkg-fribidi
  • + +
  • devpkg-libmypaint
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libwnck3
  • + +
  • devpkg-systemd
  • + +
  • devpkg-ostree
  • + +
  • devpkg-gnome-settings-daemon
  • + +
  • devpkg-libcap
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-R
  • + +
  • devpkg-audit
  • + +
  • devpkg-libthai
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-SDL2_image
  • + +
  • texinfo
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-xf86-input-wacom
  • + +
  • devpkg-libconfig
  • + +
  • devpkg-pipewire
  • + +
  • devpkg-vala
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libdazzle
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libwacom
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-pangomm
  • + +
  • devpkg-talloc
  • + +
  • devpkg-tiff
  • + +
  • devpkg-cheese
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-gimp
  • + +
  • devpkg-babl
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • devpkg-apr
  • + +
  • devpkg-libatasmart
  • + +
  • devpkg-xorg-server
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libXfont2
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • devpkg-pciutils
  • + +
  • devpkg-libgdata
  • + +
  • devpkg-brotli
  • + +
  • devpkg-libpeas
  • + +
  • devpkg-liboauth
  • + +
  • devpkg-metacity
  • + +
  • binutils
  • + +
  • devpkg-at-spi2-core
  • + +
  • diffutils
  • + +
  • devpkg-gnome-desktop
  • + +
  • devpkg-cups-filters
  • + +
  • fonttools
  • + +
  • devpkg-gspell
  • + +
  • devpkg-libXfont
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-gsound
  • + +
  • git
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-orc
  • + +
  • devpkg-woff2
  • + +
  • devpkg-taglib
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-json-c
  • + +
  • devpkg-shared-mime-info
  • + +
  • devpkg-curl
  • + +
  • devpkg-fwupd
  • + +
  • zenity
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-cairo
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-nss
  • + +
  • devpkg-libsass
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-lz4
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-cairomm
  • + +
  • devpkg-libogg
  • + +
  • gnupg
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-libsmbios
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-libvpx
  • + +
  • devpkg-libgtop
  • + +
  • devpkg-SDL
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-pixman
  • + +
  • subversion
  • + +
  • tzdata
  • + +
  • devpkg-libpinyin
  • + +
  • devpkg-lua
  • + +
  • devpkg-jansson
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • devpkg-gjs
  • + +
  • devpkg-gnome-autoar
  • + +
  • devpkg-NetworkManager
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-libnl
  • + +
  • xz
  • + +
  • devpkg-gstreamer
  • + +
  • gzip
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-pango
  • + +
  • devpkg-rest
  • + +
  • devpkg-appstream-glib
  • + +
  • devpkg-rdma-core
  • + +
  • devpkg-libgsystem
  • + +
  • devpkg-libxklavier
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gst-plugins-base
  • + +
  • pygobject
  • + +
  • devpkg-libiscsi
  • + +
  • devpkg-libpng
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-gegl
  • + +
  • devpkg-gsl
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-opus
  • + +
  • aspell
  • + +
  • devpkg-nspr
  • + +
  • strace
  • + +
+
+ +
desktop-enlightenmentRun the enlightenment desktop environment.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • x11-server
  • + +
  • python3-basic
  • + +
  • gstreamer
  • + +
+
+ +
desktop-gnomelibsHelper bundle with common libraries and desktop utilities.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-samba
  • + +
  • lib-opengl
  • + +
  • perl-basic
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
desktop-i3Run the i3 desktop environment.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • feh
  • + +
  • x11-server
  • + +
+
+ +
desktop-kdeApplications for the desktop from the KDE ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-samba
  • + +
  • hardware-bluetooth
  • + +
  • alsa-utils
  • + +
  • tzdata
  • + +
  • qt-basic
  • + +
  • x11-server
  • + +
  • NetworkManager-extras
  • + +
  • pulseaudio
  • + +
  • libxslt
  • + +
  • sddm
  • + +
  • gpgme
  • + +
  • fuse
  • + +
  • x11-tools
  • + +
  • desktop-kde-libs
  • + +
  • polkit
  • + +
+
+ +
desktop-kde-appsApplications for the desktop from the KDE ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-basic
  • + +
  • desktop-kde-libs
  • + +
  • perl-basic
  • + +
+
+ +
desktop-kde-gamesGames for the desktop from the KDE ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-basic
  • + +
  • desktop-kde-libs
  • + +
  • kgeography
  • + +
  • perl-basic
  • + +
+
+ +
desktop-kde-libsHelper libraries from the KDE ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
desktop-localesTranslations and documentation for desktop components.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • glibc-locale
  • + +
  • perl-basic
  • + +
+
+ +
desktop-lxqtRun the LXQt desktop environment.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • fonts-basic
  • + +
  • qt-basic
  • + +
  • x11-server
  • + +
+
+ +
dev-utilsAssist application development.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-tools
  • + +
  • patch
  • + +
  • diffutils
  • + +
  • openssl
  • + +
  • python3-basic
  • + +
  • cpio
  • + +
  • llvm
  • + +
  • man-pages
  • + +
  • perl-basic
  • + +
  • cloc
  • + +
  • git
  • + +
  • gdb
  • + +
  • icdiff
  • + +
  • inotify-tools
  • + +
  • rsync
  • + +
  • valgrind
  • + +
  • docutils
  • + +
  • devpkg-llvm
  • + +
  • bc
  • + +
  • strace
  • + +
+
+ +
dev-utils-devAll packages required to build the dev-utils bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXmu
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-mesa
  • + +
  • cryptography
  • + +
  • bison
  • + +
  • devpkg-kmod
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-graphite
  • + +
  • libxslt
  • + +
  • docutils
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • unzip
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • cpio
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-libwebp
  • + +
  • os-core-dev
  • + +
  • devpkg-guile
  • + +
  • doxygen
  • + +
  • devpkg-popt
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libgd
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-alsa-lib
  • + +
  • less
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-metrics-discovery
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-postgresql
  • + +
  • net-tools
  • + +
  • devpkg-libXt
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-boost
  • + +
  • devpkg-libffi
  • + +
  • devpkg-numactl
  • + +
  • flex
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-xtrans
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-subunit
  • + +
  • devpkg-systemd
  • + +
  • bc
  • + +
  • devpkg-libcap
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-audit
  • + +
  • devpkg-LVM2
  • + +
  • openblas
  • + +
  • texinfo
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • texlive
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-json-c
  • + +
  • wget
  • + +
  • devpkg-curl
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-cairo
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-zstd
  • + +
  • subversion
  • + +
  • tzdata
  • + +
  • devpkg-SDL
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-zlib
  • + +
  • devpkg-lua
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • gzip
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libpng
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gsl
  • + +
  • perl-basic-dev
  • + +
  • strace
  • + +
+
+ +
dev-utils-guiAssist application development (gui components).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • tcl-basic
  • + +
  • qt-basic
  • + +
  • dev-utils
  • + +
  • ddd
  • + +
  • libX11client
  • + +
+
+ +
developer-gpuTools and libraries for GPU application development.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-mesa
  • + +
  • hardware-gpu
  • + +
  • qt-basic
  • + +
  • libX11client
  • + +
+
+ +
devhelpAPI documentation browser for GNOME
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • webkitgtk
  • + +
  • libX11client
  • + +
+
+ +
devpkg-aclAll content for pkgconfig file acl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-alsa-libAll content for pkgconfig file alsa-lib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-appstream-glibAll content for pkgconfig file appstream-glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • libX11client
  • + +
+
+ +
devpkg-aprAll content for pkgconfig file apr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-apr-utilAll content for pkgconfig file apr-util.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-apr
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-at-spi2-atkAll content for pkgconfig file at-spi2-atk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-at-spi2-core
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-at-spi2-coreAll content for pkgconfig file at-spi2-core.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libXtst
  • + +
  • devpkg-libX11
  • + +
+
+ +
devpkg-atkAll content for pkgconfig file atk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-atkmmAll content for pkgconfig file atkmm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glibmm
  • + +
  • devpkg-atk
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-atticaAll content for pkgconfig file attica.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qtbase
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-attrAll content for pkgconfig file attr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-auditAll content for pkgconfig file audit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-bablAll content for pkgconfig file babl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-lcms2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-baseBasic pkgconfig infrastructure.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
devpkg-bluezAll content for pkgconfig file bluez.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-boostAll content for boost.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-brotliAll content for pkgconfig file brotli.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-bzip2All content for pkgconfig file bzip2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-cairoAll content for pkgconfig file cairo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-mesa
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-pixman
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libX11
  • + +
  • devpkg-freetype
  • + +
+
+ +
devpkg-cairommAll content for pkgconfig file cairomm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libsigcplusplus
  • + +
  • devpkg-cairo
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-cheeseAll content for pkgconfig file cheese.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gstreamer
  • + +
  • devpkg-clutter
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-gst-plugins-base
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-clutter-gst
  • + +
  • libX11client
  • + +
+
+ +
devpkg-clutterAll content for pkgconfig file clutter.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libinput
  • + +
  • devpkg-pango
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-atk
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • devpkg-cogl
  • + +
  • libglib
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-cairo
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-wayland
  • + +
  • libX11client
  • + +
+
+ +
devpkg-clutter-gstAll content for pkgconfig file clutter-gst.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gstreamer
  • + +
  • devpkg-clutter
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • devpkg-cogl
  • + +
  • libglib
  • + +
  • devpkg-gst-plugins-base
  • + +
+
+ +
devpkg-cmrtAll content for pkgconfig file cmrt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-coglAll content for pkgconfig file cogl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-mesa
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-cairo
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-wayland
  • + +
  • libX11client
  • + +
+
+ +
devpkg-colordAll content for pkgconfig file colord.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-compat-enchant-soname1All content for pkgconfig file compat-enchant-soname1.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-compat-fuse-soname2All content for pkgconfig file compat-fuse-soname2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-compat-geglAll content for pkgconfig file compat-gegl.pc.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gegl
  • + +
+
+ +
devpkg-compat-gtksourceview-soname3All content for pkgconfig file compat-gtksourceview-soname3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
+
+ +
devpkg-cryptsetupAll content for pkgconfig file cryptsetup.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-cups-filtersAll content for pkgconfig file cups-filters.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-curlAll content for pkgconfig file curl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-cyrus-saslAll content for pkgconfig file cyrus-sasl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-dbusAll content for pkgconfig file dbus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-dbus-glibAll content for pkgconfig file dbus-glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-dbus
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-dpdkAll content for dpdk-dev.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-e2fsprogsAll content for pkgconfig file e2fsprogs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-eigenAll content for pkgconfig file eigen.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-elfutilsAll content for pkgconfig file elfutils.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-zlib
  • + +
  • devpkg-xz
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-enchantAll content for pkgconfig file enchant.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-evolutionAll content for pkgconfig file evolution.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-webkitgtk
  • + +
  • devpkg-gnome-desktop
  • + +
  • devpkg-evolution-data-server
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
+
+ +
devpkg-evolution-data-serverAll content for pkgconfig file evolution-data-server.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libical
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-nss
  • + +
  • devpkg-nspr
  • + +
+
+ +
devpkg-exiv2All content for pkgconfig file exiv2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-expatAll content for pkgconfig file expat.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-fannAll content for pkgconfig file fann.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-fftwAll content for pkgconfig file fftw.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-flacAll content for pkgconfig file flac.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libogg
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-flatpakAll content for pkgconfig file flatpak.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-ostree
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-font-utilAll content for pkgconfig file font-util.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-fontconfigAll content for pkgconfig file fontconfig.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-util-linux
  • + +
  • devpkg-expat
  • + +
  • devpkg-freetype
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-freeglutAll content for pkgconfig file freeglut.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-freetypeAll content for pkgconfig file freetype.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-zlib
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-fribidiAll content for pkgconfig file fribidi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-fuseAll content for pkgconfig file fuse.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-fwupdAll content for pkgconfig file fwupd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gcabAll content for pkgconfig file gcab.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-GConfAll content for pkgconfig file GConf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-dbus
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gcrAll content for pkgconfig file gcr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-p11-kit
  • + +
+
+ +
devpkg-gdk-pixbufAll content for pkgconfig file gdk-pixbuf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-shared-mime-info
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libX11
  • + +
+
+ +
devpkg-gdmAll content for pkgconfig file gdm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-geglAll content for pkgconfig file gegl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-babl
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-json-glib
  • + +
+
+ +
devpkg-geoclueAll content for pkgconfig file geoclue.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-geocode-glibAll content for pkgconfig file geocode-glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gexiv2All content for pkgconfig file gexiv2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-exiv2
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gfbgraphAll content for pkgconfig file gfbgraph.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-rest
  • + +
  • devpkg-gnome-online-accounts
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-json-glib
  • + +
+
+ +
devpkg-gflagsAll content for pkgconfig file gflags.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gimpAll content for pkgconfig file gimp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtkplus
  • + +
  • devpkg-base
  • + +
  • devpkg-cairo
  • + +
  • devpkg-gegl
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gjsAll content for pkgconfig file gjs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libffi
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
  • devpkg-cairo
  • + +
  • devpkg-mozjs60
  • + +
+
+ +
devpkg-glewAll content for pkgconfig file glew.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glu
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-glfwAll content for pkgconfig file glfw.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-glfw3All content for pkgconfig file glfw3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-glibAll content for pkgconfig file glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-pcre
  • + +
  • devpkg-libffi
  • + +
  • devpkg-base
  • + +
  • devpkg-zlib
  • + +
  • devpkg-util-linux
  • + +
+
+ +
devpkg-glibmmAll content for pkgconfig file glibmm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libsigcplusplus
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-glmAll content for pkgconfig file glm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-glogAll content for pkgconfig file glog.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gluAll content for pkgconfig file glu.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-mesa
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gmimeAll content for pkgconfig file gmime.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnome-autoarAll content for pkgconfig file gnome-autoar.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libarchive
  • + +
+
+ +
devpkg-gnome-bluetoothAll content for pkgconfig file gnome-bluetooth.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-gtk3
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnome-desktopAll content for pkgconfig file gnome-desktop.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libX11
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-iso-codes
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gnome-menusAll content for pkgconfig file gnome-menus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnome-online-accountsAll content for pkgconfig file gnome-online-accounts.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-gtk3
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnome-panelAll content for pkgconfig file gnome-panel.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-gtk3
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnome-settings-daemonAll content for pkgconfig file gnome-settings-daemon.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnome-softwareAll content for pkgconfig file gnome-software.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-appstream-glib
  • + +
  • devpkg-atk
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
+
+ +
devpkg-gnome-video-effectsAll content for pkgconfig file gnome-video-effects.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnu-efiAll content for pkgconfig file gnu-efi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gnutlsAll content for pkgconfig file gnutls.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libtasn1
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-nettle
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gobject-introspectionAll content for pkgconfig file gobject-introspection.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libffi
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-googletestAll content for pkgconfig file googletest.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gperftoolsAll content for pkgconfig file gperftools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-graphiteAll content for pkgconfig file graphite.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-graphvizAll content for pkgconfig file graphviz.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-griloAll content for pkgconfig file grilo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-grilo-pluginsAll content for pkgconfig file grilo-plugins.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gsettings-desktop-schemasAll content for pkgconfig file gsettings-desktop-schemas.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gslAll content for pkgconfig file gsl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gsoundAll content for pkgconfig file gsound.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gspellAll content for pkgconfig file gspell.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-enchant
  • + +
+
+ +
devpkg-gst-plugins-badAll content for pkgconfig file gst-plugins-bad.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gstreamer
  • + +
  • devpkg-gst-plugins-base
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gst-plugins-baseAll content for pkgconfig file gst-plugins-base.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gstreamer
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-orc
  • + +
+
+ +
devpkg-gstreamerAll content for pkgconfig file gstreamer.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-elfutils
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-gtkAll content for pkgconfig file gtk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-pango
  • + +
  • devpkg-atk
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • devpkg-cairo
  • + +
  • devpkg-gdk-pixbuf
  • + +
+
+ +
devpkg-gtk-docAll content for pkgconfig file gtk-doc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gtk3All content for pkgconfig file gtk3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXcursor
  • + +
  • devpkg-pango
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-atk
  • + +
  • devpkg-base
  • + +
  • devpkg-fribidi
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-cairo
  • + +
  • devpkg-libX11
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-wayland
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gtkmm3All content for pkgconfig file gtkmm3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-cairomm
  • + +
  • devpkg-pangomm
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-glibmm
  • + +
  • devpkg-atkmm
  • + +
  • devpkg-base
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gtkplusAll content for pkgconfig file gtkplus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-pango
  • + +
  • devpkg-atk
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-cairo
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • libX11client
  • + +
+
+ +
devpkg-gtkspell3All content for pkgconfig file gtkspell3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-enchant
  • + +
+
+ +
devpkg-guileAll content for pkgconfig file guile.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-gutenprintAll content for pkgconfig file gutenprint.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtkplus
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-harfbuzzAll content for pkgconfig file harfbuzz.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-graphite
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-hwlocAll content for pkgconfig file hwloc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxml2
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-icu4cAll content for pkgconfig file icu4c.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-ipmctlAll content for pkgconfig file ipmctl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-ipsetAll content for pkgconfig file ipset.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libmnl
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-iptablesAll content for pkgconfig file iptables.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-iso-codesAll content for pkgconfig file iso-codes.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-jack2All content for pkgconfig file jack2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-janssonAll content for pkgconfig file jansson.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-json-cAll content for pkgconfig file json-c.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-json-glibAll content for pkgconfig file json-glib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-kmodAll content for pkgconfig file kmod.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-krb5All content for pkgconfig file krb5.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-lcms2All content for pkgconfig file lcms2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-leptonicaAll content for pkgconfig file leptonica.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libabigailAll content for pkgconfig file libabigail.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxml2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libarchiveAll content for pkgconfig file libarchive.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libassAll content for pkgconfig file libass.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-fribidi
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-freetype
  • + +
+
+ +
devpkg-libassuanAll content for pkgconfig file libassuan.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libgpg-error
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libatasmartAll content for pkgconfig file libatasmart.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libcanberraAll content for pkgconfig file libcanberra.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-gtkplus
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libcapAll content for pkgconfig file libcap.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libcap-ngAll content for pkgconfig file libcap-ng.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libcgroupAll content for pkgconfig file libcgroup.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libconfigAll content for pkgconfig file libconfig.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libcrocoAll content for pkgconfig file libcroco.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libdatrieAll content for pkgconfig file libdatrie.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libdazzleAll content for pkgconfig file libdazzle.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libdrmAll content for pkgconfig file libdrm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libepoxyAll content for pkgconfig file libepoxy.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-mesa
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libevdevAll content for pkgconfig file libevdev.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libeventAll content for pkgconfig file libevent.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libexifAll content for pkgconfig file libexif.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libffiAll content for pkgconfig file libffi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libfontencAll content for pkgconfig file libfontenc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgcryptAll content for pkgconfig file libgcrypt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libgpg-error
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgdAll content for pkgconfig file libgd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgdataAll content for pkgconfig file libgdata.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-liboauth
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gnome-online-accounts
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-gcr
  • + +
+
+ +
devpkg-libgeeAll content for pkgconfig file libgee.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgnomekbdAll content for pkgconfig file libgnomekbd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-libxklavier
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
+
+ +
devpkg-libgpg-errorAll content for pkgconfig file libgpg-error.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgphoto2All content for pkgconfig file libgphoto2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libexif
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgsystemAll content for pkgconfig file libgsystem.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgtopAll content for pkgconfig file libgtop.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgudevAll content for pkgconfig file libgudev.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgusbAll content for pkgconfig file libgusb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libusb
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libgweatherAll content for pkgconfig file libgweather.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-geocode-glib
  • + +
+
+ +
devpkg-libicalAll content for pkgconfig file libical.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libidnAll content for pkgconfig file libidn.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libidn2All content for pkgconfig file libidn2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libinputAll content for pkgconfig file libinput.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libiscsiAll content for pkgconfig file libiscsi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libjpeg-turboAll content for pkgconfig file libjpeg-turbo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmediaartAll content for pkgconfig file libmediaart.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmicrohttpdAll content for pkgconfig file libmicrohttpd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gnutls
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmnlAll content for pkgconfig file libmnl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmspackAll content for pkgconfig file libmspack.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmtpAll content for pkgconfig file libmtp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libusb
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libmypaintAll content for pkgconfig file libmypaint.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-json-c
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libndpAll content for pkgconfig file libndp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnetfilter_conntrackAll content for pkgconfig file libnetfilter_conntrack.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnetfilter_cthelperAll content for pkgconfig file libnetfilter_cthelper.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnetfilter_cttimeoutAll content for pkgconfig file libnetfilter_cttimeout.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnetfilter_queueAll content for pkgconfig file libnetfilter_queue.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnfnetlinkAll content for pkgconfig file libnfnetlink.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnftnlAll content for pkgconfig file libnftnl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libmnl
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnlAll content for pkgconfig file libnl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libnotifyAll content for pkgconfig file libnotify.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • libX11client
  • + +
+
+ +
devpkg-liboauthAll content for pkgconfig file liboauth.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-curl
  • + +
  • devpkg-openssl
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-liboggAll content for pkgconfig file libogg.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libosinfoAll content for pkgconfig file libosinfo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpcapAll content for pkgconfig file libpcap.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpciaccessAll content for pkgconfig file libpciaccess.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpeasAll content for pkgconfig file libpeas.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpinyinAll content for pkgconfig file libpinyin.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpipelineAll content for pkgconfig file libpipeline.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpngAll content for pkgconfig file libpng.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-zlib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpslAll content for pkgconfig file libpsl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libpthread-stubsAll content for pkgconfig file libpthread-stubs.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-LibRawAll content for pkgconfig file LibRaw.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-lcms2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-librepoAll content for pkgconfig file librepo.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxml2
  • + +
  • devpkg-openssl
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • devpkg-curl
  • + +
  • libglib
  • + +
+
+ +
devpkg-librsvgAll content for pkgconfig file librsvg.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-cairo
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • libX11client
  • + +
+
+ +
devpkg-libsamplerateAll content for pkgconfig file libsamplerate.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsassAll content for pkgconfig file libsass.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsctpAll content for pkgconfig file libsctp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libseccompAll content for pkgconfig file libseccomp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsecretAll content for pkgconfig file libsecret.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsigcplusplusAll content for pkgconfig file libsigcplusplus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsmbiosAll content for pkgconfig file libsmbios.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsolvAll content for pkgconfig file libsolv.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsoupAll content for pkgconfig file libsoup.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libpsl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-zlib
  • + +
+
+ +
devpkg-libspectreAll content for pkgconfig file libspectre.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libsrtpAll content for pkgconfig file libsrtp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libssh2All content for pkgconfig file libssh2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-zlib
  • + +
  • devpkg-openssl
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libstoragemgmtAll content for pkgconfig file libstoragemgmt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libtasn1All content for pkgconfig file libtasn1.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libthaiAll content for pkgconfig file libthai.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libdatrie
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libtheoraAll content for pkgconfig file libtheora.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libogg
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libtirpcAll content for pkgconfig file libtirpc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libunwindAll content for pkgconfig file libunwind.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libusbAll content for pkgconfig file libusb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libuserAll content for pkgconfig file libuser.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libuvAll content for pkgconfig file libuv.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libvaAll content for pkgconfig file libva.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-wayland
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libvirtAll content for pkgconfig file libvirt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libvorbisAll content for pkgconfig file libvorbis.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libogg
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libvpxAll content for pkgconfig file libvpx.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libwacomAll content for pkgconfig file libwacom.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libwebpAll content for pkgconfig file libwebp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libwnck3All content for pkgconfig file libwnck3.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-startup-notification
  • + +
  • devpkg-libXres
  • + +
  • devpkg-pango
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-cairo
  • + +
  • devpkg-libX11
  • + +
+
+ +
devpkg-libX11All content for pkgconfig file libX11.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXauAll content for pkgconfig file libXau.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libxcbAll content for pkgconfig file libxcb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXdmcp
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-libXau
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXcompositeAll content for pkgconfig file libXcomposite.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXfixes
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXcursorAll content for pkgconfig file libXcursor.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXdamageAll content for pkgconfig file libXdamage.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXfixes
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXdmcpAll content for pkgconfig file libXdmcp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXextAll content for pkgconfig file libXext.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXfixesAll content for pkgconfig file libXfixes.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXfontAll content for pkgconfig file libXfont.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXfont2All content for pkgconfig file libXfont2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXftAll content for pkgconfig file libXft.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-base
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libX11
  • + +
  • devpkg-freetype
  • + +
+
+ +
devpkg-libXiAll content for pkgconfig file libXi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-base
  • + +
  • devpkg-libXext
  • + +
  • devpkg-libX11
  • + +
  • devpkg-libXfixes
  • + +
+
+ +
devpkg-libXineramaAll content for pkgconfig file libXinerama.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-libXext
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libxkbcommonAll content for pkgconfig file libxkbcommon.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libxkbfileAll content for pkgconfig file libxkbfile.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libxklavierAll content for pkgconfig file libxklavier.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libxml2All content for pkgconfig file libxml2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXmuAll content for pkgconfig file libXmu.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXt
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXpmAll content for pkgconfig file libXpm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXrandrAll content for pkgconfig file libXrandr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-base
  • + +
  • devpkg-libXext
  • + +
  • devpkg-libX11
  • + +
  • devpkg-libXrender
  • + +
+
+ +
devpkg-libXrenderAll content for pkgconfig file libXrender.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXresAll content for pkgconfig file libXres.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXScrnSaverAll content for pkgconfig file libXScrnSaver.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libxsltAll content for pkgconfig file libxslt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxml2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXtAll content for pkgconfig file libXt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXtstAll content for pkgconfig file libXtst.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXvAll content for pkgconfig file libXv.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXvMCAll content for pkgconfig file libXvMC.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXv
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXxf86miscAll content for pkgconfig file libXxf86misc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libXxf86vmAll content for pkgconfig file libXxf86vm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-libXext
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libyamiAll content for pkgconfig file libyami.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-libva
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-libzipAll content for pkgconfig file libzip.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-libzmqAll content for pkgconfig file libzmq.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libunwind
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-lksctp-toolsAll content for pkgconfig file lksctp-tools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-llvmAll content for pkgconfig file llvm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-lttng-ustAll content for pkgconfig file lttng-ust.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-userspace-rcu
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-luaAll content for pkgconfig file lua.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-LVM2All content for pkgconfig file LVM2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-systemd
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-lz4All content for pkgconfig file lz4.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mariadbAll content for pkgconfig file mariadb.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mediasdkAll content for pkgconfig file mediasdk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mesaAll content for pkgconfig file mesa.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libdrm
  • + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-metacityAll content for pkgconfig file metacity.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-gtk3
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-metrics-discoveryAll content for pkgconfig file metrics-discovery.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mozjs52All content for pkgconfig file mozjs52.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mozjs60All content for pkgconfig file mozjs60.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mpg123All content for pkgconfig file mpg123.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-multipath-toolsAll content for pkgconfig file multipath-tools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-mutterAll content for pkgconfig file mutter.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-pango
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-mesa
  • + +
  • devpkg-atk
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-cairo
  • + +
  • devpkg-libX11
  • + +
  • devpkg-wayland
  • + +
+
+ +
devpkg-nautilusAll content for pkgconfig file nautilus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • devpkg-gtk3
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-ncursesAll content for pkgconfig file ncurses.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-ndctlAll content for pkgconfig file ndctl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-nettleAll content for pkgconfig file nettle.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-network-manager-appletAll content for pkgconfig file network-manager-applet.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-NetworkManager
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-NetworkManagerAll content for pkgconfig file NetworkManager.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-newtAll content for pkgconfig file newt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-nftablesAll content for pkgconfig file nftables.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-nghttp2All content for pkgconfig file nghttp2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-nsprAll content for pkgconfig file nspr.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-nssAll content for pkgconfig file nss.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-nspr
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-ntfs-3gAll content for pkgconfig file ntfs-3g.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-numactlAll content for pkgconfig file numactl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-oath-toolkitAll content for pkgconfig file oath-toolkit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-oiioAll content for oiio-dev.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-open-iscsiAll content for pkgconfig file open-iscsi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-openblasAll content for pkgconfig file openblas.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openblas
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-opencvAll content for pkgconfig file opencv.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-openmpiAll content for pkgconfig file openmpi.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-opensslAll content for pkgconfig file openssl.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-openvswitchAll content for pkgconfig file openvswitch.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-opusAll content for pkgconfig file opus.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-orcAll content for pkgconfig file orc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-ostreeAll content for pkgconfig file ostree.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-otpAll content for otp-dev.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-p11-kitAll content for pkgconfig file p11-kit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pacrunnerAll content for pkgconfig file pacrunner.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-dbus
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-pangoAll content for pkgconfig file pango.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-libthai
  • + +
  • devpkg-base
  • + +
  • devpkg-fribidi
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-cairo
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libXft
  • + +
+
+ +
devpkg-pangommAll content for pkgconfig file pangomm.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glibmm
  • + +
  • devpkg-cairomm
  • + +
  • devpkg-pango
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-partedAll content for pkgconfig file parted.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pciutilsAll content for pkgconfig file pciutils.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pcreAll content for pkgconfig file pcre.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pcre2All content for pkgconfig file pcre2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pipewireAll content for pkgconfig file pipewire.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pixmanAll content for pkgconfig file pixman.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pkcs11-helperAll content for pkgconfig file pkcs11-helper.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pmdkAll content for pkgconfig file pmdk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-poptAll content for pkgconfig file popt.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-postgresqlAll content for pkgconfig file postgresql.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-procps-ngAll content for pkgconfig file procps-ng.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-protobuf-cAll content for pkgconfig file protobuf-c.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-pulseaudioAll content for pkgconfig file pulseaudio.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-pygobjectAll content for pkgconfig file pygobject.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libffi
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-qpdfAll content for pkgconfig file qpdf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-zlib
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-qt3dAll content for pkgconfig file qt3d.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qtbase
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-qtbaseAll content for pkgconfig file qtbase.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-qtdeclarativeAll content for pkgconfig file qtdeclarative.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qtbase
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-qtlocationAll content for pkgconfig file qtlocation.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qtbase
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-qtsvgAll content for pkgconfig file qtsvg.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qtbase
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-qttoolsAll content for pkgconfig file qttools.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qtbase
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-qtwebchannelAll content for pkgconfig file qtwebchannel.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qtbase
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-qtwebengineAll content for pkgconfig file qtwebengine.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-qtlocation
  • + +
  • devpkg-qtwebchannel
  • + +
  • devpkg-base
  • + +
  • devpkg-qtbase
  • + +
+
+ +
devpkg-RAll content for pkgconfig file R.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-rdma-coreAll content for pkgconfig file rdma-core.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-readlineAll content for pkgconfig file readline.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-restAll content for pkgconfig file rest.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxml2
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
+
+ +
devpkg-SDLAll content for pkgconfig file SDL.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2All content for pkgconfig file SDL2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2_gfxAll content for pkgconfig file SDL2_gfx.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-SDL2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2_imageAll content for pkgconfig file SDL2_image.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-SDL2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2_mixerAll content for pkgconfig file SDL2_mixer.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-SDL2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2_netAll content for pkgconfig file SDL2_net.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-SDL2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL2_ttfAll content for pkgconfig file SDL2_ttf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-SDL2
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL_gfxAll content for pkgconfig file SDL_gfx.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-SDL
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL_imageAll content for pkgconfig file SDL_image.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-SDL
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL_mixerAll content for pkgconfig file SDL_mixer.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-SDL
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL_netAll content for pkgconfig file SDL_net.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-SDL
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-SDL_ttfAll content for pkgconfig file SDL_ttf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-SDL
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-shared-mime-infoAll content for pkgconfig file shared-mime-info.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-speexAll content for pkgconfig file speex.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-sqlite-autoconfAll content for pkgconfig file sqlite-autoconf.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-startup-notificationAll content for pkgconfig file startup-notification.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-subunitAll content for pkgconfig file subunit.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-systemdAll content for pkgconfig file systemd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-taglibAll content for pkgconfig file taglib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-tallocAll content for pkgconfig file talloc.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-tbbAll content for tbb.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-telemetrics-clientAll content for pkgconfig file telemetrics-client.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-tesseractAll content for pkgconfig file tesseract.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-leptonica
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-tiffAll content for pkgconfig file tiff.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-uhttpmockAll content for pkgconfig file uhttpmock.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-usbredirAll content for pkgconfig file usbredir.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libusb
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-userspace-rcuAll content for pkgconfig file userspace-rcu.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-util-linuxAll content for pkgconfig file util-linux.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-util-macrosAll content for pkgconfig file util-macros.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-v4l-utilsAll content for pkgconfig file v4l-utils.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-systemd
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-valaAll content for pkgconfig file vala.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-glib
  • + +
  • libglib
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-waylandAll content for pkgconfig file wayland.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-wayland-protocolsAll content for pkgconfig file wayland-protocols.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-webkitgtkAll content for pkgconfig file webkitgtk.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-gtk3
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-base
  • + +
  • devpkg-glib
  • + +
  • libglib
  • + +
+
+ +
devpkg-woff2All content for pkgconfig file woff2.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-brotli
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-wxWidgetsAll content for pkgconfig file wxWidgets
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xapian-coreAll content for pkgconfig file xapian-core.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xcb-protoAll content for pkgconfig file xcb-proto.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xcb-util-cursorAll content for pkgconfig file xcb-util-cursor.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libX11
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-xdg-desktop-portalAll content for pkgconfig file xdg-desktop-portal.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xf86-input-wacomAll content for pkgconfig file xf86-input-wacom.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xkbcompAll content for pkgconfig file xkbcomp.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-libX11
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-base
  • + +
+
+ +
devpkg-xkeyboard-configAll content for pkgconfig file xkeyboard-config.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xmlsec1All content for pkgconfig file xmlsec1.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libxml2
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-base
  • + +
  • devpkg-nss
  • + +
  • devpkg-nspr
  • + +
+
+ +
devpkg-xorg-serverAll content for pkgconfig file xorg-server.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-xorgproto
  • + +
  • devpkg-mesa
  • + +
  • devpkg-base
  • + +
  • devpkg-pixman
  • + +
  • devpkg-libpciaccess
  • + +
+
+ +
devpkg-xorgprotoAll content for pkgconfig file xorgproto.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xtransAll content for pkgconfig file xtrans.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-xzAll content for pkgconfig file xz.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-zlibAll content for pkgconfig file zlib.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
devpkg-zstdAll content for pkgconfig file zstd.pc.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-base
  • + +
+
+ +
dfu-utilDevice firmware upgrade utilities.
+ +
Status: + + Active + +
+ + +
dhcp-serverRun a dhcp server.
+ +
Status: + + Active + +
+ + +
diffoscopeTool for in-depth comparison of files, archives, and directories.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
diffutilsTools for file comparisons and differences, creating patch files.
+ +
Status: + + Active + +
+ + +
digikamAn advanced digital photo management application.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • perl-basic
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
djangoPython model-view-template web framework.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • Sphinx
  • + +
  • python3-basic
  • + +
+
+ +
dnfThe dnf tool for use with mixer on Clear Linux OS.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • file
  • + +
  • pygobject
  • + +
  • python3-basic
  • + +
+
+ +
docbook-utilsShell scripts to manage DocBook documents.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
docker-composeTool for defining and running multi-container Docker applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • containers-basic
  • + +
  • python3-basic
  • + +
+
+ +
docutilsTools for converting plaintext into other formats (e.g. HTML, XML, LaTeX).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
dolphinFile manager focusing on usability.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
domoticaHome Automation software collection.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • cloud-api
  • + +
  • qt-basic
  • + +
  • python3-basic
  • + +
+
+ +
dosfstoolsDOS filesystem, or (V)FAT, tools.
+ +
Status: + + Active + +
+ + +
dovecotSecurity-focused IMAP and POP3 email server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
doxygenDocumentation system for C++, Java, IDL, Python, and PHP.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
dpdkData Plane Development Kit core.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
dragonA multimedia player where the focus is on simplicity, instead of features
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
dropwatchKernel dropped packet monitor
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • binutils
  • + +
+
+ +
dtcDevice Tree Compiler used to describe non-discoverable hardware.
+ +
Status: + + Active + +
+ + +
duperemoveTool for finding duplicated extents and submitting them for deduplication.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
earlyoomUtility for pre-oomkiller process control
+ +
Status: + + Active + +
+ + +
editorsRun popular terminal text editors.
+ +
Status: + + Active + +
+ + +
editors-devAll packages required to build the editors bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • which
  • + +
  • patch
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • gzip
  • + +
  • unzip
  • + +
  • plzip
  • + +
  • devpkg-ncurses
  • + +
  • glibc-locale
  • + +
  • editors
  • + +
  • git
  • + +
  • dev-utils
  • + +
  • os-core-dev
  • + +
  • devpkg-systemd
  • + +
  • make
  • + +
  • xz
  • + +
  • strace
  • + +
+
+ +
educationEducational applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • education-tertiary
  • + +
  • education-preschool
  • + +
  • qt-basic
  • + +
  • education-primary
  • + +
  • desktop-gnomelibs
  • + +
  • education-secondary
  • + +
  • desktop-kde-libs
  • + +
  • gimp
  • + +
  • libX11client
  • + +
+
+ +
education-preschoolEducational applications for the preschool level.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • desktop-gnomelibs
  • + +
  • qt-basic
  • + +
  • desktop-kde-libs
  • + +
  • libX11client
  • + +
+
+ +
education-primaryEducational applications for the primary school level.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • kgeography
  • + +
  • qt-basic
  • + +
  • kmplot
  • + +
  • desktop-gnomelibs
  • + +
  • desktop-kde-libs
  • + +
  • libX11client
  • + +
+
+ +
education-secondaryEducational applications for the secondary school level.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • kgeography
  • + +
  • qt-basic
  • + +
  • kmplot
  • + +
  • desktop-gnomelibs
  • + +
  • desktop-kde-libs
  • + +
  • libX11client
  • + +
+
+ +
education-tertiaryEducational applications for the tertiary school/university level.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • R-basic
  • + +
  • qt-basic
  • + +
  • kmplot
  • + +
  • desktop-gnomelibs
  • + +
  • desktop-kde-libs
  • + +
  • libX11client
  • + +
+
+ +
eid-mwThe middleware, viewer and Firefox extension for the Belgian electronic identity card (Belgian eID)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • libglib
  • + +
  • lib-openssl
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
elasticsearchA powerful open source search and analytics engine based on the Lucene library.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • java-runtime
  • + +
+
+ +
emacsExtensible, customizable terminal text editor.
+ +
Status: + + Active + +
+ + +
emacs-x11Highly customizable text editor, gui build.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
enterprise-loginEnable enterprise login systems like Active Directory.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • samba
  • + +
  • libglib
  • + +
+
+ +
eogEye of GNOME for image viewing and cataloging.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
ethtoolUtility for displaying and modifying some parameters of network interface controller.
+ +
Status: + + Active + +
+ + +
eventviewsLibrary for creating events
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
evinceGNOME document viewer for multiple formats (PDF, Postscript, djvu, tiff, dvi, XPS, etc).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • gstreamer
  • + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
evolutionApplication for integrated email, calendar, and address book functionality.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
  • webkitgtk
  • + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
extremetuxracerDownhill penguin racing game featuring Tux.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
faas-cliCLI for use with OpenFaaS - a serverless functions framework for Docker & Kubernetes.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
fdupesA program for identifying or deleting duplicate files residing within specified directories.
+ +
Status: + + Active + +
+ + +
fehFast X11 image viewer, managed via command-line.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
fileFile type identification utility.
+ +
Status: + + Active + +
+ + +
file-rollerGNOME archive manager utility.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • gstreamer
  • + +
  • libX11client
  • + +
+
+ +
filelightView disk usage information
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
findutilsGNU utilities to locate files (e.g., find, xargs, and locate).
+ +
Status: + + Active + +
+ + +
fioFlexible I/O tester, often used for load simulation.
+ +
Status: + + Active + +
+ + +
firefoxWeb browser with support for modern web applications from mozilla.org.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • desktop-gnomelibs
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
firewalldA firewall daemon with D-Bus interface providing a dynamic firewall
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
firmware-updateUpdate the system's firmware.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libX11client
  • + +
  • cryptography
  • + +
  • fwupdate
  • + +
  • polkit
  • + +
+
+ +
flacFree Lossless Audio Codec (FLAC) audio format tools.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
flareSingle-player 2D isometric action role-playing game (RPG).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
flatpakRun sandboxed desktop application bundles, or build flatpak packages.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • git
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
flexTool for generating programs that recognize lexical patterns in text.
+ +
Status: + + Active + +
+ + +
fluidsynthA real-time software synthesizer based on the SoundFont 2 specifications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
fontforgeOutline and bitmap font editor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
fonts-basicFonts and fonts tooling.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • lib-opengl
  • + +
+
+ +
fonttoolsTools to manipulate system and user fonts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • openblas
  • + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
fossilA simple, high-reliability, distributed software configuration management system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
fuseFilesystem in Userspace (FUSE) to export a virtual filesystem to Linux kernel, or mount filesystem implementation for non-privileged users.
+ +
Status: + + Active + +
+ + +
fwupdateFirmware update tool for UEFI and other standards.
+ +
Status: + + Active + +
+ + +
gamesPlay games in Clear Linux OS.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • diffutils
  • + +
  • python3-basic
  • + +
  • lib-opengl
  • + +
  • NetworkManager-extras
  • + +
  • perl-basic
  • + +
  • zenity
  • + +
  • p11-kit
  • + +
  • os-core-legacy
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
games-devAll packages required to build the games bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXmu
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-mesa
  • + +
  • cryptography
  • + +
  • bison
  • + +
  • devpkg-SDL_net
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-kmod
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-attr
  • + +
  • devpkg-gcr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-bluez
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-webkitgtk
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-graphite
  • + +
  • libxslt
  • + +
  • docutils
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-pulseaudio
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libnotify
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-newt
  • + +
  • unzip
  • + +
  • devpkg-atk
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-opencv
  • + +
  • devpkg-SDL2_ttf
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-libwebp
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-flac
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libical
  • + +
  • devpkg-popt
  • + +
  • devpkg-libexif
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-font-util
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-speex
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-pacrunner
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • net-tools
  • + +
  • pandoc
  • + +
  • NetworkManager
  • + +
  • ghostscript
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-libXt
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-mozjs60
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-colord
  • + +
  • gjs
  • + +
  • devpkg-boost
  • + +
  • iptables
  • + +
  • devpkg-libX11
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libva
  • + +
  • devpkg-GConf
  • + +
  • devpkg-fftw
  • + +
  • devpkg-SDL_image
  • + +
  • flex
  • + +
  • devpkg-SDL2_net
  • + +
  • devpkg-glu
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-SDL_gfx
  • + +
  • devpkg-xtrans
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-SDL_ttf
  • + +
  • devpkg-wayland
  • + +
  • devpkg-expat
  • + +
  • iproute2
  • + +
  • graphviz
  • + +
  • devpkg-libidn
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-pcre
  • + +
  • devpkg-libndp
  • + +
  • devpkg-clutter
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-libusb
  • + +
  • devpkg-openssl
  • + +
  • devpkg-fribidi
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libcap
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-libthai
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-SDL2_image
  • + +
  • texinfo
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-vala
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-tiff
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • devpkg-brotli
  • + +
  • devpkg-network-manager-applet
  • + +
  • binutils
  • + +
  • devpkg-at-spi2-core
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • games
  • + +
  • devpkg-SDL2_gfx
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-orc
  • + +
  • devpkg-woff2
  • + +
  • devpkg-taglib
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • devpkg-cairo
  • + +
  • findutils
  • + +
  • devpkg-nss
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libogg
  • + +
  • gnupg
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-libvpx
  • + +
  • subversion
  • + +
  • devpkg-SDL
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-pixman
  • + +
  • tzdata
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-zlib
  • + +
  • devpkg-jansson
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • devpkg-gjs
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-NetworkManager
  • + +
  • xz
  • + +
  • devpkg-libnl
  • + +
  • devpkg-gstreamer
  • + +
  • gzip
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-pango
  • + +
  • devpkg-rest
  • + +
  • devpkg-rdma-core
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gst-plugins-base
  • + +
  • pygobject
  • + +
  • devpkg-libpng
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-opus
  • + +
  • devpkg-gsl
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-nspr
  • + +
  • perl-basic-dev
  • + +
  • strace
  • + +
+
+ +
gdalGeospatial Data Abstraction Library.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • lib-opengl
  • + +
  • python3-basic
  • + +
  • postgresql
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gdbGNU debugger with support for Ada, Assembly, C, C++, D, Fortran, Go, and more.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
+
+ +
geanyA fast and lightweight IDE using GTK+.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
gearyA library full of GTK+ widgets for mobile phones
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • webkitgtk
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
geditGNOME text editor with full support for UTF-8 and syntax highlighting.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
geeqieA GTK based image viewer and browser
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
gftpMultithreaded FTP client for *NIX based systems.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
ghostscriptLoads and saves PNG files
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gimpGNU Image Manipulation Program.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gitDistributed version-control system for tracking changes.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • less
  • + +
  • p11-kit
  • + +
  • lib-openssl
  • + +
  • curl
  • + +
+
+ +
gjsJavaScript bindings for GObjects, GNOME.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
glibc-localeGNU/Linux locale files to support cultural conventions of a language and region.
+ +
Status: + + Active + +
+ + +
glmark2OpenGL 2.0 and ES 2.0 benchmark.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
globalGNU GLOBAL source code tagging system.
+ +
Status: + + Active + +
+ + +
gnome-base-libsCommon libraries used by GNOME and related applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • desktop-gnomelibs
  • + +
  • libX11client
  • + +
+
+ +
gnome-boxesLibrary for reading and writing virtual machine images in the Open Virtualization Format.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • webkitgtk
  • + +
  • kvm-host
  • + +
  • libX11client
  • + +
+
+ +
gnome-calculatorSoftware calculator integrated with the GNOME desktop environment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
gnome-charactersUtility application to find and insert unusual characters.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gjs
  • + +
  • libX11client
  • + +
+
+ +
gnome-chessPlay the classic two-player boardgame of chess
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gnome-clocksClocks applications for GNOME
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
gnome-color-managerFramework for GNOME to manage, install, and generate color profiles.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gnome-contactsContacts Manager for GNOME
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
gnome-disk-utilityApplications for managing and configuring disk drives and media.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
gnome-font-viewerFont viewer utility for GNOME.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
gnome-logsLog viewer for the systemd journal.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
gnome-mahjonggSingle player version of the classic Eastern tile game Mahjongg
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gnome-musicGNOME music player application with management features.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
gnome-photosApplication for browsing, editing, and organizing photos.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gstreamer
  • + +
  • NetworkManager-extras
  • + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gnome-screenshotTake screenshots of the desktop or a window and save it to a file.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
gnome-system-monitorProcess viewer and system resource monitor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
gnome-todoMinimalist personal task manager.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gjs
  • + +
  • python3-basic
  • + +
  • gstreamer
  • + +
  • libglib
  • + +
  • desktop-gnomelibs
  • + +
  • libX11client
  • + +
+
+ +
gnome-weatherView current weather conditions and forecasts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gnome-base-libs
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
gnupgThe GNU Privacy Guard suite of programs
+ +
Status: + + Active + +
+ + +
gnuplotGraphing utility that outputs to X11, PostScript, PNG, GIF, and others.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • libX11client
  • + +
+
+ +
go-basicBuild and run Go language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • git
  • + +
  • p11-kit
  • + +
+
+ +
go-basic-devAll packages required to build the go-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • binutils
  • + +
  • diffutils
  • + +
  • docbook-utils
  • + +
  • devpkg-popt
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-pcre2
  • + +
  • git
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-iptables
  • + +
  • patch
  • + +
  • devpkg-elfutils
  • + +
  • which
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-pcre
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-gnu-efi
  • + +
  • less
  • + +
  • devpkg-openssl
  • + +
  • devpkg-json-c
  • + +
  • libxslt
  • + +
  • devpkg-curl
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libunwind
  • + +
  • make
  • + +
  • p11-kit
  • + +
  • findutils
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-libcap
  • + +
  • procps-ng
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-audit
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-lz4
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-readline
  • + +
  • texinfo
  • + +
  • unzip
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • go-basic
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmicrohttpd
  • + +
  • xz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-xz
  • + +
  • devpkg-boost
  • + +
  • gzip
  • + +
  • devpkg-libX11
  • + +
  • devpkg-libffi
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-libtasn1
  • + +
  • valgrind
  • + +
  • flex
  • + +
  • devpkg-acl
  • + +
  • dev-utils
  • + +
  • os-core-dev
  • + +
  • devpkg-dbus
  • + +
  • devpkg-glib
  • + +
  • devpkg-libseccomp
  • + +
  • doxygen
  • + +
  • devpkg-util-linux
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • strace
  • + +
+
+ +
goaccessReal-time web log analyzer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
gpartedA Partition Magic clone, frontend to GNU Parted.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
gpasteClipboard management system
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
gpgmeGPG encryption tools.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • python3-basic
  • + +
+
+ +
gphoto2Command line interface to libgphoto2.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • gnome-base-libs
  • + +
+
+ +
GradioA GTK3 app for finding and listening to internet radio stations.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gstreamer
  • + +
  • libX11client
  • + +
+
+ +
grampsGramps is a genealogy program for Windows, Linux, Apple MacOS and other UNIX-like systems. It helps you track your family tree by allowing you to store, edit, and research genealogical data.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
graphvizLibrary for parsing graphs in xdot format.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gsequencerAdvanced Gtk+ Sequencer audio processing engine.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
gstreamerStreaming media framework with graph-based structure.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gtk-vncA GTK2 widget for VNC clients.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • pulseaudio
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
gtkwaveA wave viewer which reads LXT, LXT2, VZT, GHW and VCD/EVCD files.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
gvimA highly configurable version of the vi text editor with advanced features, such as a GUI.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
gwenviewAn image viewer with simple adjustments--ideal for browsing collections.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
gzipA GNU lossless data compression/decompression utility.
+ +
Status: + + Active + +
+ + +
haproxyThe Reliable, High Performance TCP/HTTP Load Balancer.
+ +
Status: + + Active + +
+ + +
hardinfoSystem Profiler and Benchmark
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
hardware-bluetoothSoftware to enable use of Bluetooth hardware.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
+
+ +
hardware-gpuFirmware and tools for GPU support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • linux-firmware-extras
  • + +
  • libstdcpp
  • + +
  • lib-opengl
  • + +
+
+ +
hardware-printingFirmware and tools for printer support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
hardware-uefiProvides bootloader tools for booting on a UEFI based system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-firmware-extras
  • + +
  • libglib
  • + +
  • linux-firmware
  • + +
  • os-core
  • + +
  • bootloader
  • + +
+
+ +
hardware-wifiFirmware and tools for basic WiFi support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • wpa_supplicant
  • + +
  • libstdcpp
  • + +
  • linux-firmware-wifi
  • + +
  • NetworkManager-extras
  • + +
  • libglib
  • + +
+
+ +
haskell-basicBuild and run Haskell language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
  • perl-basic
  • + +
  • devpkg-zlib
  • + +
  • git
  • + +
  • p11-kit
  • + +
  • make
  • + +
  • xz
  • + +
+
+ +
havegedDaemon for feeding entropy into the random pool
+ +
Status: + + Active + +
+ + +
hexchatA graphical IRC chat client; header and path for HexChat plugins.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • os-core-webproxy
  • + +
  • lib-openssl
  • + +
  • libX11client
  • + +
+
+ +
hpc-utilsProvide userspace management programs for various HPC-related programs.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • perl-basic
  • + +
+
+ +
htopInteractive text-mode process viewer.
+ +
Status: + + Active + +
+ + +
httpdApache HyperText Transfer Protocol (HTTP) Server daemon.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
hugoStatic Web site generator written in Go.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
hwlocHardware locality provides a portable abstraction of the topology of modern architectures.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
i3blocksNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
iasimageTool for creating Intel Automotive Service (IAS) images, a binary file format understood by Intel© Slim Bootloader.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
icdiffHiglights with color, beyond diff, to show changes between similar files.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
icecreamDistributed network compilation and stream download utility.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
iftopDisplay bandwidth usage on an interface.
+ +
Status: + + Active + +
+ + +
igt-gpu-toolsIntel graphics performance diagnostics.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
ImageMagickCreate, edit, or compose bitmap images.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
inkscapeProfessional vector graphics editor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • perl-basic
  • + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
inotify-toolsCommand line programs, with interface to inotify, to monitor filesystem events.
+ +
Status: + + Active + +
+ + +
intltoolUtility scripts for internationalizing XML.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
iotopPer process I/O bandwidth monitor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
ipeA drawing editor for creating figures in PDF format.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
iperfInternet protocol tool for measuring network performance.
+ +
Status: + + Active + +
+ + +
ipmitoolCommand-line interface to manage IPMI-enabled devices.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
iproute2Utilities for controlling TCP/IP networking and traffic control.
+ +
Status: + + Active + +
+ + +
iptablesShared Xtables code for extensions and iproute2.
+ +
Status: + + Active + +
+ + +
ipvsadmIP virtual server tool to implement transport-layer load balancing inside Linux kernel.
+ +
Status: + + Active + +
+ + +
irssiInternet Relay Chat (IRC) text-mode client program.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-openssl
  • + +
  • perl-basic
  • + +
+
+ +
isyncUtility to synchronize IMAP mailboxes with local maildir folders
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
iwdWireless daemon for Linux
+ +
Status: + + Active + +
+ + +
jack2JACK low-latency audio server for multi-processor machines (daemon activation).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
java-basicBuild and run Java language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • which
  • + +
  • python3-basic
  • + +
  • perl-basic
  • + +
  • p11-kit
  • + +
  • libX11client
  • + +
+
+ +
java-runtimeRuntime environment for Java language programs.
+ +
Status: + + Active + +
+ + +
java11-basicBuild and run Java 11 language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • which
  • + +
  • p11-kit
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
java12-basicBuild and run Java 12 language programs.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • java13-basic
  • + +
+
+ +
java13-basicBuild and run Java 13 language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • which
  • + +
  • p11-kit
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
java13-runtimeRuntime environment for Java 13 language programs.
+ +
Status: + + Active + +
+ + +
java9-basicBuild and run Java 9 language programs.
+ +
Status: + + Pending-Delete + +
+ + +
joeGNU terminal-based text editor.
+ +
Status: + + Active + +
+ + +
jqLightweight and flexible command-line JSON processor.
+ +
Status: + + Active + +
+ + +
jupyterJupyter metapackage to install all Jupyter components at one time.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • Sphinx
  • + +
  • python3-basic
  • + +
+
+ +
kameraAccess and manipulate pictures on a digital camera.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
kapidoxFrameworks API Documentation Tools
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
kateText editor that can open multiple files simultaneously.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
kbackupA program that lets you back up any directories or files
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kbdLibrary to manage the Linux keymaps.
+ +
Status: + + Active + +
+ + +
kblogA blogging library for KDE
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kcachegrindFrontend visualization tool for Valgrind's cachegrind & callggrind.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • perl-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
kcalcScientific calculator.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
kcharselectCharacter Selector
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kcolorchooserColor Chooser
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
kcronConfigure and schedule tasks
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
kde-frameworks5Common KDE Frameworks 5 libraries.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • lib-qt5webengine
  • + +
  • qt-basic
  • + +
+
+ +
kde-frameworks5-devAll packages required to build the kde-frameworks5 bundle.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXmu
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-mesa
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-bluez
  • + +
  • devpkg-compat-enchant-soname1
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-qtlocation
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-graphite
  • + +
  • libxslt
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-pulseaudio
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • unzip
  • + +
  • devpkg-atk
  • + +
  • devpkg-qtwebchannel
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libwebp
  • + +
  • gpgme
  • + +
  • os-core-dev
  • + +
  • devpkg-attica
  • + +
  • doxygen
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-flac
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libical
  • + +
  • devpkg-popt
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-pcre2
  • + +
  • Babel
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-font-util
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-speex
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-pacrunner
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-postgresql
  • + +
  • net-tools
  • + +
  • ghostscript
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-libXt
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-mozjs60
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-colord
  • + +
  • devpkg-boost
  • + +
  • devpkg-libass
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libva
  • + +
  • devpkg-fftw
  • + +
  • flex
  • + +
  • devpkg-glu
  • + +
  • libxml2
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-xtrans
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-xcb-proto
  • + +
  • fontforge
  • + +
  • devpkg-wayland
  • + +
  • devpkg-expat
  • + +
  • devpkg-libassuan
  • + +
  • graphviz
  • + +
  • devpkg-libidn
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-pcre
  • + +
  • devpkg-clutter
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-libusb
  • + +
  • devpkg-openssl
  • + +
  • devpkg-fribidi
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-libthai
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-SDL2_image
  • + +
  • texinfo
  • + +
  • devpkg-qtsvg
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-vala
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-tiff
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • qt-basic-dev
  • + +
  • binutils
  • + +
  • devpkg-at-spi2-core
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • fonttools
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-orc
  • + +
  • devpkg-qttools
  • + +
  • devpkg-taglib
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libgusb
  • + +
  • kde-frameworks5
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • devpkg-cairo
  • + +
  • findutils
  • + +
  • devpkg-nss
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libogg
  • + +
  • gnupg
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-libvpx
  • + +
  • subversion
  • + +
  • devpkg-SDL
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-pixman
  • + +
  • tzdata
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-zlib
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-gflags
  • + +
  • gzip
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-pango
  • + +
  • devpkg-rest
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gst-plugins-base
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libpng
  • + +
  • devpkg-libX11
  • + +
  • devpkg-opus
  • + +
  • devpkg-gsl
  • + +
  • devpkg-libvorbis
  • + +
  • strace
  • + +
+
+ +
kdebugsettingsAn application to enable/disable qCDebug
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kdeconnect-kdeA multi-platform application that enables communication between computer and smartphone.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kdenliveA non-linear video editor for Linux using the MLT video framework.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
kdfView Disk Usage
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kdiagramNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
kdiff3Feature-rich code comparison utility.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • kde-frameworks5
  • + +
+
+ +
keditbookmarksBookmark Organizer and Editor
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
keepalivedFailover and monitoring daemon for Linux Virtual Server (LVS) clusters.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
keepassxcCross-platform port of KeePass password manager with industry-standard AES.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • libX11client
  • + +
+
+ +
kernel-awsRun the Amazon Web Services (AWS) specific kernel.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • bootloader
  • + +
+
+ +
kernel-aws-dkmsSupport module for building/loading via Dynamic Kernel Module System (DKMS) in AWS kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • c-basic
  • + +
+
+ +
kernel-gceRun the Google Compute Engine (GCE) specific kernel.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • bootloader
  • + +
+
+ +
kernel-hypervRun the Microsoft Hyper-V specific kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • bootloader
  • + +
+
+ +
kernel-hyperv-ltsRun the Microsoft Hyper-V specific LTS kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • bootloader
  • + +
+
+ +
kernel-installInstalls kernel, initrd, kernel config, system map, and creates a bootloader entry for the new kernel.
+ +
Status: + + Active + +
+ + +
kernel-iot-lts2017-preempt-rtRun the Intel "PK" kernel, an enterprise-style kernel with backports, plus PREEMPT_RT support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-firmware
  • + +
  • bootloader
  • + +
+
+ +
kernel-iot-lts2018Run the Intel "PK" kernel, an enterprise-style kernel with backports.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-firmware
  • + +
  • bootloader
  • + +
+
+ +
kernel-iot-lts2018-sosRun the kernel needed for the Service OS
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-firmware
  • + +
  • bootloader
  • + +
+
+ +
kernel-iot-lts2019Run the Intel "PK" kernel, an enterprise-style kernel with backports.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-firmware
  • + +
  • bootloader
  • + +
+
+ +
kernel-kvmRun the Kernel-based Virtual Machine (KVM) specific kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qemu-guest-additions
  • + +
  • bootloader
  • + +
+
+ +
kernel-ltsRun the latest long-term support native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • kernel-lts2018
  • + +
+
+ +
kernel-lts-dkmsSupport module for building/loading via Dynamic Kernel Module System (DKMS) in LTS kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • kernel-lts2018-dkms
  • + +
+
+ +
kernel-lts2017Run the long-term support 4.14 native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • bootloader
  • + +
+
+ +
kernel-lts2018Run the long-term support 4.19 native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • bootloader
  • + +
+
+ +
kernel-lts2018-dkmsSupport for module building/loading via Dynamic Kernel Module System (DKMS) in LTS2018 kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-lts2018-dev
  • + +
  • c-basic
  • + +
+
+ +
kernel-lts2018-preempt-rtRun the Intel "PK" kernel 2018, an enterprise-style kernel with backports, plus PREEMPT_RT support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • bootloader
  • + +
+
+ +
kernel-mainline-vanillaRun the mainline current vanilla kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-firmware-extras
  • + +
  • qemu-guest-additions
  • + +
  • libglib
  • + +
  • linux-firmware
  • + +
  • hardware-uefi
  • + +
  • bootloader
  • + +
+
+ +
kernel-nativeRun the native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • hardware-uefi
  • + +
  • linux-firmware
  • + +
  • bootloader
  • + +
+
+ +
kernel-native-currentRun the mainline current native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-firmware-extras
  • + +
  • qemu-guest-additions
  • + +
  • libglib
  • + +
  • linux-firmware
  • + +
  • hardware-uefi
  • + +
  • bootloader
  • + +
+
+ +
kernel-native-dkmsSupport module for building/loading via Dynamic Kernel Module System (DKMS) in native kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-dev
  • + +
  • c-basic
  • + +
+
+ +
kernel-oracleRun the Oracle Cloud specific kernel.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • bootloader
  • + +
+
+ +
kernel-rtRun the native kernel with preempt_rt patchset.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-firmware-extras
  • + +
  • linux-firmware
  • + +
  • bootloader
  • + +
+
+ +
keychainManage SSH and GPG keys; allows one long-running ssh-agent process per system.
+ +
Status: + + Active + +
+ + +
kfindFind Files/Folders
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kfloppyFloppy Formatter
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kgeographyGeography Trainer
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kitineraryData model and extraction system for travel reservation information
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
kleopatraCertificate Manager and Unified Crypto GUI.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
kmediaplayerPlugin interface for media player features
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • lib-opengl
  • + +
+
+ +
kmousetoolClicks the mouse for you, reducing the effects of RSI
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • libX11client
  • + +
+
+ +
kmplotMathematical Function Plotter
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
knotesPopup notes
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kojiSet up a koji build service based on NFS mounts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • nfs-utils
  • + +
  • sudo
  • + +
  • package-utils
  • + +
  • httpd
  • + +
  • git
  • + +
  • postgresql
  • + +
  • mod_wsgi
  • + +
+
+ +
kolourpaintPaint Program
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
konquerorKDE file manager and Web browser.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
konsoleTerminal emulator for KDE.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
kontactKDE Personal Information Manager
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
konversationInternet Relay Chat (IRC) client built on KDE platform.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
kritaEdit and paint bitmap images.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
ksysguardTrack and control the processes running in your system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
ksystemlogSystem log viewer tool
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
kvm-hostRun Kernel-based Virtual Machines (KVM).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • iptables
  • + +
  • python3-basic
  • + +
  • ceph
  • + +
  • polkit
  • + +
  • libX11client
  • + +
+
+ +
kvm-host-devAll packages required to build the kvm-host bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-parted
  • + +
  • devpkg-libXmu
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-mesa
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-libvirt
  • + +
  • devpkg-attr
  • + +
  • dosfstools
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • polkit
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-graphite
  • + +
  • libxslt
  • + +
  • docutils
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • acpica-unix2
  • + +
  • unzip
  • + +
  • devpkg-atk
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libssh2
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • kvm-host
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-popt
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libevdev
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-xmlsec1
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • nfs-utils
  • + +
  • net-tools
  • + +
  • pandoc
  • + +
  • ghostscript
  • + +
  • devpkg-libXt
  • + +
  • devpkg-mozjs60
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-colord
  • + +
  • iptables
  • + +
  • devpkg-boost
  • + +
  • devpkg-usbredir
  • + +
  • elasticsearch
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libva
  • + +
  • devpkg-numactl
  • + +
  • flex
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • devpkg-glu
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-nftables
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-wayland
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • devpkg-libusb
  • + +
  • devpkg-fribidi
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-systemd
  • + +
  • bc
  • + +
  • devpkg-dpdk
  • + +
  • devpkg-libcap
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-libthai
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-vala
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • devpkg-gperftools
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • joe
  • + +
  • binutils
  • + +
  • devpkg-at-spi2-core
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-oath-toolkit
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-orc
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • devpkg-cairo
  • + +
  • findutils
  • + +
  • devpkg-nss
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libpthread-stubs
  • + +
  • subversion
  • + +
  • tzdata
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-pixman
  • + +
  • devpkg-zlib
  • + +
  • devpkg-lua
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-libnl
  • + +
  • devpkg-gflags
  • + +
  • gzip
  • + +
  • devpkg-pango
  • + +
  • devpkg-rest
  • + +
  • devpkg-rdma-core
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libpng
  • + +
  • devpkg-libX11
  • + +
  • devpkg-nspr
  • + +
  • strace
  • + +
+
+ +
kvm-host-extrasRun virtual machines as deployed infrastructure.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • kvm-host
  • + +
  • python3-basic
  • + +
+
+ +
latte-dockA dock based on Plasma Frameworks.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
lessTerminal-based file-pager for viewing text files.
+ +
Status: + + Active + +
+ + +
letsencrypt-clientObtain and renew valid SSL certificates through Let's Encrypt's ACME service.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • cloud-api
  • + +
  • python3-basic
  • + +
+
+ +
lftpFile transfer client for http, ftp, sftp and more.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • perl-basic
  • + +
+
+ +
lib-imageformatHelpers for reading images.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • lib-opengl
  • + +
+
+ +
lib-openglHelpers for 3D graphics.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
lib-opensslToolkit for Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • p11-kit
  • + +
+
+ +
lib-qt5webengineRun programs that use the Qt Web Engine module.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-basic
  • + +
+
+ +
lib-sambaHelper libraries for accessing samba shares.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • perl-basic
  • + +
+
+ +
libarchiveMulti-format archive and compression library.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
libglibCommon C routines used by Gtk+ and other libs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
libnlLibrary for applications that deal with netlink sockets.
+ +
Status: + + Active + +
+ + +
libreofficeFree office productivity suite.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
  • libstdcpp
  • + +
  • gstreamer
  • + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
libreoffice-extras-lang-frFrench language support for LibreOffice.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libreoffice
  • + +
+
+ +
libreoffice-extras-lang-trTurkish language support for LibreOffice.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libreoffice
  • + +
+
+ +
libstdcppC++ runtime support.
+ +
Status: + + Active + +
+ + +
libva-utilsCollection of utilities and examples to exercise VA-API (Video Acceleration API)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
libX11clientGrouping only bundle for use in X using bundles.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • lib-opengl
  • + +
+
+ +
libxml2XML parsing library, version 2.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
libxsltXML stylesheet transformation library for converting XML into HTML.
+ +
Status: + + Active + +
+ + +
libzmqZMQ tools and libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
lightdmLightDM login manager with GTK greeter.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • x11-server
  • + +
  • fonts-basic
  • + +
  • libglib
  • + +
  • polkit
  • + +
+
+ +
linux-devFiles for building modules against the native kernel.
+ +
Status: + + WIP + +
+ + +
linux-firmwareFirmware for kernel drivers.
+ +
Status: + + WIP + +
+ + +
linux-firmware-extrasExtra firmware for the kernel.
+ +
Status: + + WIP + +
+ + +
linux-firmware-qatFirmware for Intel QuickAssist
+ +
Status: + + WIP + +
+ + +
linux-firmware-wifiWifi adapter firmware.
+ +
Status: + + WIP + +
+ + +
linux-iot-lts2018-devFiles for building modules against IoT LTS2018 kernel.
+ +
Status: + + WIP + +
+ + +
linux-iot-lts2018-sos-devFiles for building modules against IoT LTS2018 SOS kernel.
+ +
Status: + + WIP + +
+ + +
linux-lts-devFiles for building modules against LTS kernel.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • linux-lts2018-dev
  • + +
+
+ +
linux-lts2017-devFiles for building modules against LTS2017 kernel.
+ +
Status: + + WIP + +
+ + +
linux-lts2018-devFiles for building modules against LTS2018 kernel.
+ +
Status: + + Active + +
+ + +
linux-toolsTools for use in Linux.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • binutils
  • + +
  • python3-basic
  • + +
  • perl-basic
  • + +
+
+ +
lldbLLVM's software debugger
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
+
+ +
llvmLLVM/Clang modular and reusable compiler toolchain.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
llvm8LLVM/Clang modular and reusable compiler toolchain, version 8.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
llvm9LLVM/Clang modular and reusable compiler toolchain, version 9.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • llvm
  • + +
+
+ +
lm-sensorsHardware health monitoring with access to temperature, voltage, and fan speed sensors, and their setup.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
localesMachine-readable data files, shared objects, and programs for localization and internationalization.
+ +
Status: + + Deprecated + +
+ + +
Includes bundle(s): +
    + +
  • glibc-locale
  • + +
+
+ +
logrotateAutomatic rotation compression and removal and mailing of log files.
+ +
Status: + + Active + +
+ + +
ltpLinux Test Project.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
lttngThe LTTng control and utility library is a library used to control the tracing sessions of a LTTng-session daemon
+ +
Status: + + Active + +
+ + +
lua-basicProgramming language designed for extending applications.
+ +
Status: + + Active + +
+ + +
lynxA text-based Web browser
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gzip
  • + +
+
+ +
LyXDocument processor and WYSIWYM LaTeX editor.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • texlive
  • + +
  • qt-basic
  • + +
+
+ +
lz4Fast compression algorithm to compress and decompress lz4 files.
+ +
Status: + + Active + +
+ + +
machine-learning-basicBuild machine learning applications with a full suite of libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • machine-learning-mycroft
  • + +
  • devpkg-eigen
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-protobuf-c
  • + +
  • c-basic
  • + +
  • devpkg-tbb
  • + +
  • graphviz
  • + +
  • cloud-api
  • + +
  • machine-learning-tensorflow
  • + +
  • devpkg-fann
  • + +
  • machine-learning-pytorch
  • + +
  • devpkg-glog
  • + +
  • openblas
  • + +
  • devpkg-googletest
  • + +
  • python-data-science
  • + +
  • devpkg-gflags
  • + +
  • devpkg-boost
  • + +
  • devpkg-opencv
  • + +
  • computer-vision-basic
  • + +
  • Sphinx
  • + +
  • python-extras
  • + +
+
+ +
machine-learning-mycroftBuild machine learning applications with Mycroft, an open-source voice assistant, and more.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python-data-science
  • + +
+
+ +
machine-learning-pytorchBuild machine learning applications with PyTorch, an optimized tensor library for deep learning.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • Sphinx
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
+
+ +
machine-learning-tensorflowBuild machine learning applications using Tensorflow, a library for numerical computation using deep neural networks.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • lib-opengl
  • + +
  • openblas
  • + +
  • perl-basic
  • + +
+
+ +
machine-learning-web-uiWeb-based, interactive tools for machine learning.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python-data-science
  • + +
  • cloud-api
  • + +
  • python3-basic
  • + +
  • R-extras
  • + +
  • Sphinx
  • + +
  • jupyter
  • + +
+
+ +
mail-utilsProcess, read, and send email.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • mutt
  • + +
  • notmuch
  • + +
+
+ +
mail-utils-devAll packages required to build the mail-utils bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • docbook-utils
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • libxslt
  • + +
  • devpkg-xapian-core
  • + +
  • devpkg-readline
  • + +
  • unzip
  • + +
  • devpkg-libmicrohttpd
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • os-core-dev
  • + +
  • gpgme
  • + +
  • doxygen
  • + +
  • devpkg-popt
  • + +
  • devpkg-pcre2
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • net-tools
  • + +
  • devpkg-gmime
  • + +
  • devpkg-libffi
  • + +
  • flex
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-util-linux
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-expat
  • + +
  • devpkg-libassuan
  • + +
  • graphviz
  • + +
  • devpkg-libidn
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libtasn1
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-lz4
  • + +
  • gnupg
  • + +
  • mail-utils
  • + +
  • tzdata
  • + +
  • devpkg-zlib
  • + +
  • devpkg-lua
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • gzip
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gnutls
  • + +
  • strace
  • + +
+
+ +
makeBuild automation tool that controls generation of executables and other target files.
+ +
Status: + + Active + +
+ + +
maker-3dprinting3D printing tools for makers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • qt-basic
  • + +
  • Sphinx
  • + +
  • maker-basic
  • + +
  • openscad
  • + +
+
+ +
maker-basicBasic tools for makers and experimenters.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python-extras
  • + +
  • minicom
  • + +
  • inkscape
  • + +
  • libX11client
  • + +
+
+ +
maker-cncCNC carving tools for makers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • pygobject
  • + +
  • maker-basic
  • + +
  • python-extras
  • + +
  • inkscape
  • + +
  • openscad
  • + +
+
+ +
maker-electronicsElectronics design and programming tools for makers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • Sphinx
  • + +
  • qt-basic
  • + +
  • python3-basic
  • + +
  • maker-basic
  • + +
+
+ +
maker-gisGIS/Mapping tools for makers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
  • gdal
  • + +
  • maker-basic
  • + +
  • Babel
  • + +
  • desktop-kde-libs
  • + +
+
+ +
man-pagesLinux man-pages to document kernel and C library interfaces for user-space programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • perl-basic
  • + +
+
+ +
mariadbMariaDB Connector/C dynamic library/Database daemon.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • perl-basic
  • + +
+
+ +
meldvisual file difference and merging tool, targeted at developers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • desktop-gnomelibs
  • + +
  • python3-basic
  • + +
+
+ +
memcachedhigh performance multithreaded event-based key/value cache store.
+ +
Status: + + Active + +
+ + +
mercurialA scalable distributed software configuration management (SCM) tool.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
minetestA Voxel multi-player game inspired by minecraft.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • minetestserver
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
minetestserverA headless game server for minetest.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
minicomA text-based serial port communications program.
+ +
Status: + + Active + +
+ + +
mixerTool to create custom Clear Linux OS releases.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gzip
  • + +
  • openssl
  • + +
  • cpio
  • + +
  • dnf
  • + +
  • clr-installer
  • + +
  • git
  • + +
  • xz
  • + +
  • zstd
  • + +
+
+ +
mkosiGenerate disk images.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
mod_wsgiPython WSGI adapter module for Apache
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
monoOpen source implementation of .NET platform, including runtime and compiler.
+ +
Status: + + Active + +
+ + +
mosquittomosquitto MQTT library (C bindings)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
mpg123MPEG layer 1/2/3 audio player and decoder. MPEG 1.0 layer 3 known as MP3.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • pulseaudio
  • + +
  • libstdcpp
  • + +
+
+ +
mpvMultimedia player and streamer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
mtd-utilsMemory technology device utilities (usually flash) exposing interface between hardware drivers and upper system layers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
mtrNetwork diagnostic tool for analyzing latency, combining the functionality of the 'traceroute' and 'ping' programs.
+ +
Status: + + Active + +
+ + +
mumbleA voice server/client for game chatting.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • lib-openssl
  • + +
  • libX11client
  • + +
+
+ +
murmurMumble daemon (murmurd)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
MuseScoreFree music composition and notation software
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
+
+ +
muslC standard library compiler toolchain.
+ +
Status: + + Active + +
+ + +
muttSmall but powerful mail client.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • perl-basic
  • + +
+
+ +
nasmGeneral purpose x86 assembler.
+ +
Status: + + Active + +
+ + +
nautilusDefault file manager for GNOME.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gstreamer
  • + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
ncatUtility for reading and writing data across networks.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
ncduDisk usage analyzer with ncurses interface.
+ +
Status: + + Active + +
+ + +
neomuttMutt mail client fork with additional features.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gpgme
  • + +
  • openldap
  • + +
  • notmuch
  • + +
+
+ +
neovimFork of Vim aiming to improve user experience, plugins, and GUIs
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • + +
  • python3-basic
  • + +
+
+ +
net-toolsBasic Networking Tools
+ +
Status: + + Active + +
+ + +
netdataReal-time performance monitoring, in the greatest possible detail, over the web.
+ +
Status: + + Active + +
+ + +
nethogsSmall net top tool for grouping bandwidth use per process.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
netkit-telnetBasic telnet client.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
network-basicRun network utilities and modify network settings.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • perl-basic
  • + +
+
+ +
network-basic-devAll packages required to build the network-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • docbook-utils
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libnetfilter_queue
  • + +
  • devpkg-libnetfilter_cttimeout
  • + +
  • libxslt
  • + +
  • devpkg-pkcs11-helper
  • + +
  • docutils
  • + +
  • devpkg-readline
  • + +
  • unzip
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • network-basic
  • + +
  • devpkg-popt
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-pcre2
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-pacrunner
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libnetfilter_cthelper
  • + +
  • devpkg-libtirpc
  • + +
  • procps-ng
  • + +
  • net-tools
  • + +
  • pandoc
  • + +
  • devpkg-nghttp2
  • + +
  • iptables
  • + +
  • devpkg-boost
  • + +
  • devpkg-libffi
  • + +
  • devpkg-ipset
  • + +
  • flex
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-nftables
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-expat
  • + +
  • iproute2
  • + +
  • graphviz
  • + +
  • devpkg-libidn
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libcap
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-apr
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • devpkg-cairo
  • + +
  • findutils
  • + +
  • devpkg-nss
  • + +
  • devpkg-lz4
  • + +
  • devpkg-zstd
  • + +
  • tzdata
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-zlib
  • + +
  • devpkg-nettle
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-libnl
  • + +
  • gzip
  • + +
  • devpkg-rdma-core
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libpng
  • + +
  • devpkg-libX11
  • + +
  • perl-basic-dev
  • + +
  • strace
  • + +
+
+ +
network-monitor-nodeRun network security monitoring node.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • suricata
  • + +
+
+ +
network-security-monitoringVarious tools to test and improve network security.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • wireshark
  • + +
  • network-monitor-node
  • + +
  • network-basic
  • + +
  • qt-basic
  • + +
  • nmap
  • + +
  • libX11client
  • + +
+
+ +
network-time-sensitiveVarious tools and plugins to set up TSN/TCC.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • alsa-utils
  • + +
  • network-basic
  • + +
+
+ +
NetworkManagerConfigure network interfaces and maintain active network connection.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • wpa_supplicant
  • + +
  • curl
  • + +
+
+ +
NetworkManager-extrasNetworkManager plugins and desktop integration
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • wpa_supplicant
  • + +
  • openldap
  • + +
  • python3-basic
  • + +
  • NetworkManager
  • + +
  • libX11client
  • + +
+
+ +
nfs-utilsServer and client tooling for network file systems (NFS).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
+
+ +
nginxHTTP server, reverse proxy, IMAP/POP3 proxy server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
nginx-mainlineLightweight HTTP server and IMAP/POP3 proxy server, mainline release.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
nginx-mainline-extrasDynamic modules for nginx-mainline
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • nginx-mainline
  • + +
  • lib-openssl
  • + +
+
+ +
nginx-unitA dynamic application server, capable of running beside NGINX
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
+
+ +
nimImperative, multi-paradigm, compiled programming language
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • c-basic
  • + +
+
+ +
nloadMonitor network traffic and bandwidth usage.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
nmapUtility for network device discovery and security auditing.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
nodejs-basicRun JavaScript server side for fast, scalable network applications.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
+
+ +
notmuchSystem for indexing, searching, reading, and tagging large collections of email messages in maildir or mh format.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
+
+ +
obs-studioOBS Studio Library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
ocaml-basicBuild and run ocaml language programs.
+ +
Status: + + Active + +
+ + +
octaveHigh-level programming language, primarily intended for numerical computations.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • openblas
  • + +
  • qt-basic
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
offlineimapSynchronize emails between two repositories via IMAP.
+ +
Status: + + Deprecated + +
+ + +
oktetaKDE hex editor for viewing and editing the raw data of files.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • kde-frameworks5
  • + +
+
+ +
okularUniversal document viewer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
openblasOptimized BLAS (linear algebra) library based on GotoBLAS2 1.13 BSD version.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
openldapLightweight Directory Access Protocol (LDAP) client and server tools.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
openmpiHPC tools for running on jobs on clusters.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
openqaOpenQA infrastructure, providing a significant part of release validation testing.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • kvm-host
  • + +
  • httpd
  • + +
  • postgresql
  • + +
  • perl-extras
  • + +
+
+ +
openscadThe programmers solid 3D CAD modeller.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • libX11client
  • + +
+
+ +
openssh-clientConnect to SSH servers
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
openssh-serverRun a secure shell (SSH) server for access from remote machines.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openssh-client
  • + +
  • lib-openssl
  • + +
+
+ +
opensslToolkit for Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
openstack-commonA full suite of various open-stack components.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • cloud-api
  • + +
  • libstdcpp
  • + +
  • openblas
  • + +
  • keepalived
  • + +
  • perl-basic
  • + +
  • devpkg-apr-util
  • + +
  • rsync
  • + +
  • haproxy
  • + +
  • Babel
  • + +
  • python-extras
  • + +
  • xorriso
  • + +
  • memcached
  • + +
  • rabbitmq-server
  • + +
  • libX11client
  • + +
+
+ +
openvswitchA production quality, multilayer virtual switch--open vswitch kernel modules.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
+
+ +
os-cloudguestRun any initialization processes required of a generic cloud guest virtual machine (VM).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • sudo
  • + +
  • python-basic
  • + +
  • openssh-server
  • + +
  • ethtool
  • + +
  • libglib
  • + +
+
+ +
os-cloudguest-aliyunRun any initialization processes required of an Aliyun cloud guest virtual machine (VM).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • sudo
  • + +
  • libglib
  • + +
+
+ +
os-cloudguest-awsRun any initialization processes required of an AWS cloud guest virtual machine (VM).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • sudo
  • + +
  • libglib
  • + +
+
+ +
os-cloudguest-azureRun any initialization process requried of an Azure cloud guest virtual machine (VM).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • sudo
  • + +
  • openssl
  • + +
  • python3-basic
  • + +
  • net-tools
  • + +
  • openssh-server
  • + +
  • ethtool
  • + +
  • parted
  • + +
+
+ +
os-cloudguest-gceRun any initialization processes required of an Google Compute Engine (GCE) cloud guest virtual machine (VM).
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • sudo
  • + +
  • which
  • + +
  • python3-basic
  • + +
  • libglib
  • + +
  • lib-openssl
  • + +
+
+ +
os-cloudguest-kvmRun any initialization processes required for qemu-kvm.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qemu-guest-additions
  • + +
+
+ +
os-cloudguest-oracleRun any initialization processes required of an Oracle Cloud guest.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • sudo
  • + +
  • libglib
  • + +
  • openssh-server
  • + +
+
+ +
os-cloudguest-vmwareRun any initialization processes required for VMWare virtual machines (VM).
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
os-cloudguest-vmware-guiRun any initialization processes required for VMWare VMs.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • os-cloudguest-vmware
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
os-clr-on-clrRun any process required for Clear Linux OS development.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libdrm
  • + +
  • devpkg-telemetrics-client
  • + +
  • network-basic
  • + +
  • nodejs-basic
  • + +
  • devpkg-mesa
  • + +
  • devpkg-xcb-proto
  • + +
  • c-basic
  • + +
  • perl-basic
  • + +
  • devpkg-libXdamage
  • + +
  • sysadmin-basic
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-libXxf86vm
  • + +
  • devpkg-libXfixes
  • + +
  • mixer
  • + +
  • storage-utils
  • + +
  • cabextract
  • + +
  • storage-utils-dev
  • + +
  • devpkg-fribidi
  • + +
  • global
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-libxcb
  • + +
  • kvm-host
  • + +
  • scons
  • + +
  • devpkg-xorgproto
  • + +
  • unbundle
  • + +
  • mail-utils
  • + +
  • devpkg-gtk
  • + +
  • mkosi
  • + +
  • dev-utils-dev
  • + +
  • go-basic
  • + +
  • os-core-update-dev
  • + +
  • xorriso
  • + +
  • os-core
  • + +
  • koji
  • + +
  • network-basic-dev
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-libva
  • + +
  • python3-basic
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libzip
  • + +
  • editors
  • + +
  • dev-utils
  • + +
  • os-core-dev
  • + +
  • package-builder
  • + +
  • devpkg-pmdk
  • + +
  • mail-utils-dev
  • + +
  • sysadmin-basic-dev
  • + +
+
+ +
os-clr-on-clr-devAll packages required to build the os-clr-on-clr bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-parted
  • + +
  • devpkg-libXmu
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-mesa
  • + +
  • cryptography
  • + +
  • bison
  • + +
  • devpkg-kmod
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-attr
  • + +
  • dosfstools
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-gcr
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libnetfilter_queue
  • + +
  • devpkg-bluez
  • + +
  • polkit
  • + +
  • devpkg-libnetfilter_cttimeout
  • + +
  • devpkg-compat-enchant-soname1
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-qtlocation
  • + +
  • devpkg-wayland-protocols
  • + +
  • go-basic-dev
  • + +
  • devpkg-graphite
  • + +
  • devpkg-libabigail
  • + +
  • storage-utils-dev
  • + +
  • ccache
  • + +
  • libxslt
  • + +
  • devpkg-pkcs11-helper
  • + +
  • devpkg-librepo
  • + +
  • docutils
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-enchant
  • + +
  • devpkg-pulseaudio
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-xapian-core
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-exiv2
  • + +
  • acpica-unix2
  • + +
  • devpkg-zlib
  • + +
  • devpkg-newt
  • + +
  • unzip
  • + +
  • devpkg-atk
  • + +
  • devpkg-qtwebchannel
  • + +
  • kvm-host-dev
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libmspack
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • cpio
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libzip
  • + +
  • devpkg-libwebp
  • + +
  • os-core-dev
  • + +
  • devpkg-attica
  • + +
  • gpgme
  • + +
  • devpkg-guile
  • + +
  • doxygen
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-flac
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • sysadmin-basic-dev
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-userspace-rcu
  • + +
  • devpkg-apr-util
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-graphviz
  • + +
  • devpkg-libical
  • + +
  • devpkg-popt
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-libgd
  • + +
  • devpkg-pcre2
  • + +
  • Babel
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-font-util
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-speex
  • + +
  • devpkg-xmlsec1
  • + +
  • less
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-pacrunner
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libnetfilter_cthelper
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • nfs-utils
  • + +
  • procps-ng
  • + +
  • devpkg-libsolv
  • + +
  • devpkg-postgresql
  • + +
  • net-tools
  • + +
  • pandoc
  • + +
  • devpkg-gmime
  • + +
  • ghostscript
  • + +
  • devpkg-libXt
  • + +
  • devpkg-mozjs60
  • + +
  • devpkg-nghttp2
  • + +
  • network-basic-dev
  • + +
  • poppler
  • + +
  • devpkg-colord
  • + +
  • gjs
  • + +
  • devpkg-boost
  • + +
  • iptables
  • + +
  • elasticsearch
  • + +
  • devpkg-libX11
  • + +
  • devpkg-libffi
  • + +
  • devpkg-fftw
  • + +
  • devpkg-libva
  • + +
  • devpkg-numactl
  • + +
  • devpkg-usbredir
  • + +
  • flex
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • devpkg-glu
  • + +
  • devpkg-fontconfig
  • + +
  • libxml2
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-util-linux
  • + +
  • dev-utils-dev
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-libuser
  • + +
  • intltool
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-qtwebengine
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-xcb-proto
  • + +
  • fontforge
  • + +
  • devpkg-wayland
  • + +
  • devpkg-expat
  • + +
  • iproute2
  • + +
  • graphviz
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-libidn
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-pcre
  • + +
  • plzip
  • + +
  • devpkg-libndp
  • + +
  • devpkg-clutter
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-libusb
  • + +
  • devpkg-openssl
  • + +
  • devpkg-fribidi
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-subunit
  • + +
  • devpkg-systemd
  • + +
  • bc
  • + +
  • devpkg-dpdk
  • + +
  • devpkg-libcap
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-R
  • + +
  • devpkg-audit
  • + +
  • devpkg-libthai
  • + +
  • devpkg-LVM2
  • + +
  • openblas
  • + +
  • texinfo
  • + +
  • devpkg-qtsvg
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-vala
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-talloc
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • devpkg-apr
  • + +
  • devpkg-gperftools
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • devpkg-pciutils
  • + +
  • joe
  • + +
  • mail-utils-dev
  • + +
  • texlive
  • + +
  • devpkg-brotli
  • + +
  • devpkg-hwloc
  • + +
  • devpkg-eigen
  • + +
  • binutils
  • + +
  • devpkg-at-spi2-core
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-oath-toolkit
  • + +
  • fonttools
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-json-glib
  • + +
  • zip
  • + +
  • devpkg-orc
  • + +
  • file
  • + +
  • devpkg-woff2
  • + +
  • devpkg-qttools
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-json-c
  • + +
  • wget
  • + +
  • devpkg-curl
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-cairo
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-nss
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libogg
  • + +
  • gnupg
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libsamplerate
  • + +
  • os-clr-on-clr
  • + +
  • subversion
  • + +
  • devpkg-SDL
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • editors-dev
  • + +
  • devpkg-pixman
  • + +
  • tzdata
  • + +
  • devpkg-lua
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-jansson
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-NetworkManager
  • + +
  • devpkg-libnl
  • + +
  • curl
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-gflags
  • + +
  • devpkg-libuv
  • + +
  • gzip
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-pango
  • + +
  • devpkg-rest
  • + +
  • devpkg-rdma-core
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gst-plugins-base
  • + +
  • pygobject
  • + +
  • devpkg-libpng
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-opus
  • + +
  • devpkg-gsl
  • + +
  • devpkg-libvorbis
  • + +
  • aspell
  • + +
  • devpkg-nspr
  • + +
  • perl-basic-dev
  • + +
  • strace
  • + +
+
+ +
os-coreRun a minimal Linux userspace.
+ +
Status: + + Active + +
+ + +
os-core-devAll packages required to build the os-core bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • binutils
  • + +
  • diffutils
  • + +
  • docbook-utils
  • + +
  • devpkg-popt
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • devpkg-pcre2
  • + +
  • git
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • graphviz
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-iptables
  • + +
  • patch
  • + +
  • devpkg-elfutils
  • + +
  • which
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-pcre
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • devpkg-json-c
  • + +
  • libxslt
  • + +
  • devpkg-curl
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libunwind
  • + +
  • make
  • + +
  • p11-kit
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-libcap
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-audit
  • + +
  • devpkg-lz4
  • + +
  • devpkg-readline
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • unzip
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-gtk-doc
  • + +
  • xz
  • + +
  • devpkg-xz
  • + +
  • gzip
  • + +
  • openssl
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libxml2
  • + +
  • valgrind
  • + +
  • flex
  • + +
  • devpkg-acl
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-glib
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-util-linux
  • + +
  • doxygen
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • strace
  • + +
+
+ +
os-core-legacyProvides basic 32 bit libs
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • os-core
  • + +
+
+ +
os-core-plusRun a more full featured but still small Linux userspace.
+ +
Status: + + Active + +
+ + +
os-core-searchProvides swupd search capability.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • os-core
  • + +
  • python3-basic
  • + +
+
+ +
os-core-updateProvides basic suite for running Clear Linux OS for IA Updater.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • os-core-webproxy
  • + +
  • os-core
  • + +
  • os-core-plus
  • + +
+
+ +
os-core-update-devAll packages required to build the os-core-update bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • docbook-utils
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • os-core-update
  • + +
  • libxslt
  • + +
  • docutils
  • + +
  • devpkg-readline
  • + +
  • unzip
  • + +
  • devpkg-libmicrohttpd
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-popt
  • + +
  • devpkg-pcre2
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • less
  • + +
  • devpkg-pacrunner
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • net-tools
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-boost
  • + +
  • devpkg-libffi
  • + +
  • flex
  • + +
  • devpkg-util-linux
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • kbd
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libnftnl
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libtasn1
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • devpkg-libarchive
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-lz4
  • + +
  • devpkg-zstd
  • + +
  • tzdata
  • + +
  • devpkg-zlib
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • gzip
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-libX11
  • + +
  • strace
  • + +
+
+ +
os-core-webproxyProvides basic suite for using http proxies.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • os-core
  • + +
  • p11-kit
  • + +
+
+ +
os-installerRun image creation and installation for Clear Linux OS.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • wpa_supplicant
  • + +
  • linux-firmware-extras
  • + +
  • python3-basic
  • + +
  • linux-firmware-wifi
  • + +
  • less
  • + +
  • kbd
  • + +
  • iproute2
  • + +
  • curl
  • + +
+
+ +
os-testsuiteProvides minimal functionality for core testing functions.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • sudo
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • parallel
  • + +
  • cpio
  • + +
  • openssh-server
  • + +
  • perl-basic
  • + +
  • git
  • + +
  • rsync
  • + +
  • make
  • + +
  • file
  • + +
  • acl
  • + +
  • curl
  • + +
+
+ +
os-testsuite-0dayHelpers for the 0day kernel testing framework.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • acpica-unix2
  • + +
  • python3-basic
  • + +
  • llvm
  • + +
  • perl-basic
  • + +
  • c-basic
  • + +
  • pandoc
  • + +
  • dev-utils
  • + +
  • devpkg-mariadb
  • + +
  • memcached
  • + +
  • intltool
  • + +
  • devpkg-hwloc
  • + +
+
+ +
os-testsuite-automotiveProvides minimal functionality for automotive testing functions.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • os-testsuite-graphics
  • + +
  • net-tools
  • + +
  • os-testsuite
  • + +
+
+ +
os-testsuite-graphicsProvides minimal functionality for graphics testing functions.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • glmark2
  • + +
+
+ +
os-testsuite-phoronixRun the Phoronix test suite.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gnupg
  • + +
  • devpkg-numactl
  • + +
  • os-testsuite-phoronix-server
  • + +
  • phoronix-test-suite
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-libvorbis
  • + +
  • os-testsuite-phoronix-desktop
  • + +
+
+ +
os-testsuite-phoronix-desktopRun the Phoronix test suite (desktop version).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gnupg
  • + +
  • devpkg-numactl
  • + +
  • phoronix-test-suite
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-libvorbis
  • + +
+
+ +
os-testsuite-phoronix-serverRun the Phoronix test suite (server version).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gnupg
  • + +
  • devpkg-numactl
  • + +
  • phoronix-test-suite
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-libvorbis
  • + +
+
+ +
os-utils-guiProvides a graphical desktop environment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • wpa_supplicant
  • + +
  • linux-firmware-extras
  • + +
  • openssl
  • + +
  • python3-basic
  • + +
  • linux-firmware-wifi
  • + +
  • alsa-utils
  • + +
  • pulseaudio
  • + +
  • cryptography
  • + +
  • fonts-basic
  • + +
  • x11-server
  • + +
  • perl-basic
  • + +
  • xfce4-desktop
  • + +
  • lib-imageformat
  • + +
  • graphviz
  • + +
+
+ +
os-utils-gui-devAll packages required to build the os-utils-gui bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-parted
  • + +
  • devpkg-libXmu
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-mesa
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-attr
  • + +
  • devpkg-gcr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-bluez
  • + +
  • devpkg-libmtp
  • + +
  • devpkg-webkitgtk
  • + +
  • devpkg-compat-enchant-soname1
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-graphite
  • + +
  • libxslt
  • + +
  • docutils
  • + +
  • devpkg-enchant
  • + +
  • devpkg-pulseaudio
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-libnotify
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • devpkg-exiv2
  • + +
  • unzip
  • + +
  • devpkg-gtkmm3
  • + +
  • devpkg-atk
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libgudev
  • + +
  • inkscape
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libwebp
  • + +
  • os-core-dev
  • + +
  • devpkg-cmrt
  • + +
  • doxygen
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-flac
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-libcanberra
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libxkbfile
  • + +
  • devpkg-popt
  • + +
  • devpkg-libstoragemgmt
  • + +
  • devpkg-atkmm
  • + +
  • devpkg-libexif
  • + +
  • devpkg-libsecret
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-libgd
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-uhttpmock
  • + +
  • devpkg-font-util
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-speex
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-pacrunner
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-glibmm
  • + +
  • devpkg-gnome-online-accounts
  • + +
  • net-tools
  • + +
  • ghostscript
  • + +
  • devpkg-xkbcomp
  • + +
  • devpkg-libXt
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-mozjs60
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-colord
  • + +
  • gjs
  • + +
  • devpkg-boost
  • + +
  • devpkg-libX11
  • + +
  • devpkg-libva
  • + +
  • devpkg-libffi
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-fftw
  • + +
  • flex
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • devpkg-glu
  • + +
  • devpkg-fontconfig
  • + +
  • libxml2
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-xtrans
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-xcb-proto
  • + +
  • fontforge
  • + +
  • devpkg-gtkspell3
  • + +
  • devpkg-wayland
  • + +
  • devpkg-expat
  • + +
  • devpkg-libassuan
  • + +
  • graphviz
  • + +
  • devpkg-libidn
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-gsettings-desktop-schemas
  • + +
  • devpkg-libgphoto2
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-pcre
  • + +
  • devpkg-clutter
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-libusb
  • + +
  • devpkg-openssl
  • + +
  • devpkg-fribidi
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libwnck3
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libcap
  • + +
  • devpkg-R
  • + +
  • devpkg-audit
  • + +
  • devpkg-libthai
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-libconfig
  • + +
  • devpkg-vala
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-pangomm
  • + +
  • devpkg-talloc
  • + +
  • devpkg-tiff
  • + +
  • devpkg-xorg-server
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • devpkg-libatasmart
  • + +
  • os-utils-gui
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libXfont2
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • devpkg-libgdata
  • + +
  • devpkg-brotli
  • + +
  • devpkg-liboauth
  • + +
  • binutils
  • + +
  • devpkg-at-spi2-core
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • fonttools
  • + +
  • devpkg-libXfont
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-orc
  • + +
  • devpkg-woff2
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-json-c
  • + +
  • devpkg-shared-mime-info
  • + +
  • devpkg-curl
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-cairo
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-nss
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-lz4
  • + +
  • devpkg-cairomm
  • + +
  • devpkg-libogg
  • + +
  • gnupg
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libsamplerate
  • + +
  • subversion
  • + +
  • tzdata
  • + +
  • devpkg-SDL
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-pixman
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-zlib
  • + +
  • devpkg-lua
  • + +
  • devpkg-jansson
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • devpkg-gjs
  • + +
  • devpkg-gtk-doc
  • + +
  • xz
  • + +
  • devpkg-libnl
  • + +
  • devpkg-gstreamer
  • + +
  • gzip
  • + +
  • devpkg-pango
  • + +
  • devpkg-rest
  • + +
  • devpkg-libxklavier
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gst-plugins-base
  • + +
  • pygobject
  • + +
  • devpkg-libiscsi
  • + +
  • devpkg-libpng
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-opus
  • + +
  • devpkg-gsl
  • + +
  • devpkg-libvorbis
  • + +
  • perl-basic-dev
  • + +
  • strace
  • + +
+
+ +
p11-kitLoad and enumerate PKCS#11 modules.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • findutils
  • + +
+
+ +
package-builderMinimal bundle for building packages via Clear Linux OS common tooling.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • sudo
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • gnupg
  • + +
  • plzip
  • + +
  • package-utils
  • + +
  • git
  • + +
  • make
  • + +
  • Sphinx
  • + +
  • zstd
  • + +
  • curl
  • + +
+
+ +
package-utilsUtilities for creating, building, and managing packages.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
+
+ +
pandocThe universal markup converter
+ +
Status: + + Active + +
+ + +
parallelShell tool for executing jobs in parallel using one or more computers.
+ +
Status: + + Active + +
+ + +
ParaViewVTK-based Data Analysis and Visualization Application
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
partedThe GNU disk partition manipulation program.
+ +
Status: + + Active + +
+ + +
passStore, retrieve, generate, and synchronize passwords securely.
+ +
Status: + + Active + +
+ + +
patchUpdates text files according to instructions contained in a separate file.
+ +
Status: + + Active + +
+ + +
pdnsPowerDNS authoritative name server (DNSSEC enabled).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
+
+ +
pdns-recursorPowerDNS recursive caching name server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
performance-toolsRun performance and power measurements.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • iotop
  • + +
  • linux-tools
  • + +
  • powertop
  • + +
  • python3-basic
  • + +
  • bcc
  • + +
  • net-tools
  • + +
  • perl-basic
  • + +
  • ethtool
  • + +
  • bpftrace
  • + +
  • htop
  • + +
  • sysstat
  • + +
  • strace
  • + +
  • iproute2
  • + +
  • procps-ng
  • + +
+
+ +
perl-basicRun Perl language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
perl-basic-devAll packages required to build the perl-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • binutils
  • + +
  • diffutils
  • + +
  • docbook-utils
  • + +
  • devpkg-popt
  • + +
  • devpkg-libcgroup
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • glibc-locale
  • + +
  • perl-basic
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-attr
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • patch
  • + +
  • devpkg-elfutils
  • + +
  • which
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • devpkg-json-c
  • + +
  • libxslt
  • + +
  • devpkg-curl
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libunwind
  • + +
  • make
  • + +
  • p11-kit
  • + +
  • findutils
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libcap
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-audit
  • + +
  • devpkg-lz4
  • + +
  • devpkg-readline
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • unzip
  • + +
  • net-tools
  • + +
  • devpkg-zlib
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-nettle
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-xz
  • + +
  • gzip
  • + +
  • openssl
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-libtasn1
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • flex
  • + +
  • devpkg-acl
  • + +
  • dev-utils
  • + +
  • os-core-dev
  • + +
  • devpkg-dbus
  • + +
  • devpkg-gnutls
  • + +
  • doxygen
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-util-linux
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • strace
  • + +
+
+ +
perl-extrasImprove user experience with a common set of prebuilt Perl libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • perl-basic
  • + +
+
+ +
perl-graphicsPerl graphics libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • webkitgtk
  • + +
  • x11-server
  • + +
  • perl-basic
  • + +
+
+ +
phoronix-test-suiteRun only the phoronix-test-suite
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • unzip
  • + +
  • php-basic
  • + +
+
+ +
php-basicRun PHP language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
php-basic-devAll packages required to build the php-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • docbook-utils
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-graphite
  • + +
  • libxslt
  • + +
  • devpkg-enchant
  • + +
  • devpkg-readline
  • + +
  • unzip
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-libzip
  • + +
  • devpkg-libwebp
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-popt
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libgd
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-postgresql
  • + +
  • net-tools
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-boost
  • + +
  • devpkg-libffi
  • + +
  • flex
  • + +
  • libxml2
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-util-linux
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • nasm
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libtasn1
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • devpkg-cairo
  • + +
  • findutils
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-lz4
  • + +
  • php-basic
  • + +
  • tzdata
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-zlib
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • gzip
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libpng
  • + +
  • devpkg-libX11
  • + +
  • strace
  • + +
+
+ +
php-extrasVarious nonstandard PHP extensions
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • php-basic
  • + +
  • lib-opengl
  • + +
+
+ +
pidginMulti-protocol instant messagging (IM) client.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gstreamer
  • + +
  • Remmina
  • + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
plzipParallel losless data compressor based on the LZMA algorithm.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
pmdkPersistent Memory Development Kit tools and libraries for working with non-volatile memory.
+ +
Status: + + Active + +
+ + +
po4aPO for anything: Maintain the translations of your documentation
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
polkitApplication development toolkit for controlling system-wide privileges.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
+
+ +
popplerPDF rendering library based on xpdf-3.0 code base.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
  • qt-basic
  • + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
postfixMail transfer agent (MTA) that routes and delivers electronic mail. SMTP server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
postgresqlObject-relational SQL database.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
postgresql11Object-relational SQL database, version 11.x
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
powertopDiagnose issues with power consumption and power management.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
procps-ngLibrary to control and query process state
+ +
Status: + + Active + +
+ + +
productivityA set of console utilities for task management and communication.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • python3-basic
  • + +
  • mail-utils
  • + +
+
+ +
psensorA graphical hardware temperature monitor for Linux
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
psppa program for statistical analysis of sampled data
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
pulseaudioPulseAudio Simplified Synchronous Client Interface.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-openssl
  • + +
  • libX11client
  • + +
+
+ +
pwgenPassword generator creating easily memorable passwords, while being as secure as possible.
+ +
Status: + + Active + +
+ + +
pxe-serverRun a PXE server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • nginx
  • + +
  • iptables
  • + +
+
+ +
pygobjectCommon development files in the pygobject ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
python-basicRun Python language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python2-basic
  • + +
  • p11-kit
  • + +
  • python3-basic
  • + +
+
+ +
python-basic-devAll packages required to build the python-basic bundle.
+ +
Status: + + Deprecated + +
+ + +
python-data-scienceThe Python data-science stack; the best of http://pydata.org.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python-extras
  • + +
  • cloud-api
  • + +
  • c-basic
  • + +
+
+ +
python-extrasImprove user experience with a common set of prebuilt Python libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • cloud-api
  • + +
  • python3-basic
  • + +
  • openblas
  • + +
  • python3-tcl
  • + +
  • Sphinx
  • + +
  • graphviz
  • + +
+
+ +
python-qtRun python programs that use the Qt runtime.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-basic
  • + +
+
+ +
python-testingImprove user experience with a common set of prebuilt Python libraries for testing.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • Sphinx
  • + +
  • cloud-api
  • + +
  • python3-basic
  • + +
+
+ +
python2-basicRun legacy Python 2 language programs.
+ +
Status: + + Active + +
+ + +
python3-basicRun Python 3 language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • p11-kit
  • + +
+
+ +
python3-basic-staticProvides static libraries for the Python ecosystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
python3-tclPython 3 TCL/TK support.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • tcl-basic
  • + +
  • python3-basic
  • + +
+
+ +
qalculate-gtkMulti-purpose cross-platform desktop calculator.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
qbittorrentA BitTorrent client in Qt
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
qemu-guest-additionsA lightweight multi-platform, multi-architecture disassembly framework.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
qt-basicRun programs that use the Qt runtime.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • qt-core
  • + +
  • fonts-basic
  • + +
  • lib-opengl
  • + +
  • libX11client
  • + +
+
+ +
qt-basic-devAll packages required to build the qt-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXmu
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-mesa
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-bluez
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-qtlocation
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-graphite
  • + +
  • libxslt
  • + +
  • devpkg-pulseaudio
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • unzip
  • + +
  • devpkg-atk
  • + +
  • devpkg-qtwebchannel
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libwebp
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-flac
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-libical
  • + +
  • devpkg-popt
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-font-util
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-speex
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-pacrunner
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-postgresql
  • + +
  • net-tools
  • + +
  • ghostscript
  • + +
  • devpkg-libXt
  • + +
  • devpkg-mozjs60
  • + +
  • devpkg-colord
  • + +
  • devpkg-boost
  • + +
  • devpkg-libva
  • + +
  • devpkg-libffi
  • + +
  • devpkg-fftw
  • + +
  • flex
  • + +
  • devpkg-glu
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-libdrm
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-ncurses
  • + +
  • qt-basic
  • + +
  • devpkg-xcb-proto
  • + +
  • fontforge
  • + +
  • devpkg-wayland
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-pcre
  • + +
  • devpkg-clutter
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-libusb
  • + +
  • devpkg-openssl
  • + +
  • devpkg-fribidi
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-libthai
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-qtsvg
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-vala
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • devpkg-qt3d
  • + +
  • binutils
  • + +
  • devpkg-at-spi2-core
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • fonttools
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-orc
  • + +
  • devpkg-qttools
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • devpkg-cairo
  • + +
  • findutils
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libogg
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libsamplerate
  • + +
  • subversion
  • + +
  • tzdata
  • + +
  • devpkg-SDL
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-pixman
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-zlib
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gstreamer
  • + +
  • gzip
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-pango
  • + +
  • devpkg-rest
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gst-plugins-base
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libpng
  • + +
  • devpkg-libX11
  • + +
  • devpkg-opus
  • + +
  • devpkg-gsl
  • + +
  • devpkg-libvorbis
  • + +
  • strace
  • + +
+
+ +
qt-coreRun programs that use the core Qt runtime components only.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
+
+ +
qt-creatorCross-platform IDE for Qt
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
quaggaBGP/OSPF/ISIS/RIP/RIPNG routing daemon suite.
+ +
Status: + + Active + +
+ + +
quasselNext-generation distributed IRC client.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
+
+ +
quasselcoreQuassel IRC server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-core
  • + +
+
+ +
R-basicRun R language programs for statistical computing and data analysis.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-R
  • + +
  • less
  • + +
  • libX11client
  • + +
+
+ +
R-datasetsLarge datasets for R programming.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • R-basic
  • + +
+
+ +
R-extrasImprove the user experience with a common set of prebuilt R libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • R-rstudio
  • + +
  • python3-basic
  • + +
  • R-basic
  • + +
  • c-basic
  • + +
  • pandoc
  • + +
  • R-stan
  • + +
  • R-datasets
  • + +
+
+ +
R-extras-devAll packages required to build the R-extras bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXmu
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-mesa
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-bluez
  • + +
  • devpkg-libzmq
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-qtlocation
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-graphite
  • + +
  • libxslt
  • + +
  • docutils
  • + +
  • devpkg-pulseaudio
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • unzip
  • + +
  • devpkg-atk
  • + +
  • devpkg-qtwebchannel
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-icu4c
  • + +
  • devpkg-openblas
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libwebp
  • + +
  • devpkg-guile
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-libfontenc
  • + +
  • devpkg-flac
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-graphviz
  • + +
  • devpkg-libical
  • + +
  • devpkg-popt
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-libgd
  • + +
  • devpkg-pcre2
  • + +
  • Babel
  • + +
  • devpkg-libevdev
  • + +
  • devpkg-font-util
  • + +
  • patch
  • + +
  • gnuplot
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-speex
  • + +
  • devpkg-xmlsec1
  • + +
  • less
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-pacrunner
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-postgresql
  • + +
  • net-tools
  • + +
  • pandoc
  • + +
  • R-extras
  • + +
  • ghostscript
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-libXt
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-mozjs60
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-colord
  • + +
  • devpkg-boost
  • + +
  • devpkg-libX11
  • + +
  • devpkg-LibRaw
  • + +
  • devpkg-libass
  • + +
  • devpkg-libffi
  • + +
  • devpkg-fftw
  • + +
  • devpkg-libva
  • + +
  • devpkg-numactl
  • + +
  • openmpi
  • + +
  • flex
  • + +
  • devpkg-glu
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-libdrm
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-qtwebengine
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-xcb-proto
  • + +
  • fontforge
  • + +
  • devpkg-wayland
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-pcre
  • + +
  • devpkg-clutter
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-libusb
  • + +
  • devpkg-openssl
  • + +
  • devpkg-fribidi
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-subunit
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libcap
  • + +
  • devpkg-R
  • + +
  • devpkg-audit
  • + +
  • devpkg-leptonica
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-SDL2_image
  • + +
  • devpkg-libthai
  • + +
  • openblas
  • + +
  • texinfo
  • + +
  • devpkg-qtsvg
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-vala
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-tiff
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • devpkg-pciutils
  • + +
  • texlive
  • + +
  • devpkg-hwloc
  • + +
  • devpkg-eigen
  • + +
  • binutils
  • + +
  • devpkg-at-spi2-core
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • fonttools
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-json-glib
  • + +
  • zip
  • + +
  • devpkg-orc
  • + +
  • devpkg-qttools
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-json-c
  • + +
  • wget
  • + +
  • devpkg-curl
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-cairo
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-nss
  • + +
  • devpkg-mariadb
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libogg
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-libvpx
  • + +
  • subversion
  • + +
  • devpkg-SDL
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-pixman
  • + +
  • tzdata
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-lua
  • + +
  • devpkg-zlib
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-gstreamer
  • + +
  • devpkg-gflags
  • + +
  • gzip
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-pango
  • + +
  • devpkg-rest
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-tesseract
  • + +
  • devpkg-gst-plugins-base
  • + +
  • devpkg-libpng
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-opus
  • + +
  • devpkg-gsl
  • + +
  • devpkg-libvorbis
  • + +
  • devpkg-nspr
  • + +
  • strace
  • + +
+
+ +
R-rstudioRStudio is an integrated development environment (IDE) for the R programming language
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • lib-qt5webengine
  • + +
  • qt-basic
  • + +
+
+ +
R-rstudio-serverRStudio is an integrated development environment (IDE) for the R programming language
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • R-extras
  • + +
  • lib-qt5webengine
  • + +
  • qt-basic
  • + +
+
+ +
R-stanImprove the user experience with a common set of prebuilt R libraries (stan components).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • R-basic
  • + +
  • R-datasets
  • + +
  • python3-basic
  • + +
+
+ +
rabbitmq-serverAn message-broker software
+ +
Status: + + Active + +
+ + +
RawTherapeeA powerful cross-platform raw photo processing program.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • libglib
  • + +
  • gnome-base-libs
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
rcloneCommand-line program to synchronize files and directories to and from various network and cloud providers.
+ +
Status: + + Active + +
+ + +
rebootmgrPerforms scheduled or immediate system reboots after the kernel or critical OS components change.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
redis-nativeAdvanced key-value database.
+ +
Status: + + Active + +
+ + +
redshiftAdjust the color temperature of your monitor in the evenings to reduce eye strain
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
RemminaRemote desktop that supports VNC, NX, XDMCP, SPICE, and SSH protocols.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
resticBackup program that supports multiple cloud storage providers.
+ +
Status: + + Active + +
+ + +
rhythmboxMusic playback and management application.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gstreamer
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
rrdtoolRound Robin Database and graphing tool for time-series data.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libglib
  • + +
  • findutils
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
rsyncA fast, versatile, remote (and local) file-copying tool
+ +
Status: + + Active + +
+ + +
rsyslogReliable system and kernel logging daemon.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • curl
  • + +
+
+ +
ruby-basicRun Ruby language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • p11-kit
  • + +
+
+ +
runtime-libs-boostBasic C++ / Boost runtime libraries.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
rust-basicBuild and run Rust language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • git
  • + +
  • binutils
  • + +
  • libstdcpp
  • + +
  • p11-kit
  • + +
+
+ +
rxvt-unicodeNo detailed summary available
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
s3fs-fuseMount Amazon S3 buckets using FUSE.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
  • curl
  • + +
+
+ +
sambaSMB Fileserver and Active Directory (AD) Domain server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-samba
  • + +
  • openldap
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • perl-basic
  • + +
+
+ +
samtoolsC library for high-throughput sequencing data formats
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
+
+ +
scm-serverRun a source code management server.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • perl-basic
  • + +
  • openssh-server
  • + +
  • git
  • + +
  • nginx
  • + +
+
+ +
sconsPython build system and replacement for make.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
sddmSDDM display manager
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • x11-server
  • + +
  • polkit
  • + +
  • fonts-basic
  • + +
  • libX11client
  • + +
+
+ +
seahorseGraphical interface for managing and using encryption keys.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • openldap
  • + +
  • libX11client
  • + +
+
+ +
service-osProvides the needed software for Service OS.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • thermal_daemon
  • + +
  • openvswitch
  • + +
  • iasimage
  • + +
  • kernel-iot-lts2018-sos
  • + +
+
+ +
service-os-devAll packages required to build the service-os bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • docbook-utils
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-util-macros
  • + +
  • libxslt
  • + +
  • devpkg-readline
  • + +
  • acpica-unix2
  • + +
  • unzip
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-telemetrics-client
  • + +
  • devpkg-popt
  • + +
  • devpkg-pcre2
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libmnl
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-boost
  • + +
  • devpkg-libffi
  • + +
  • devpkg-numactl
  • + +
  • flex
  • + +
  • devpkg-util-linux
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • devpkg-libusb
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-openvswitch
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libtasn1
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • service-os
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-lz4
  • + +
  • tzdata
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-zlib
  • + +
  • xz
  • + +
  • gdb
  • + +
  • devpkg-gtk-doc
  • + +
  • gzip
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-libX11
  • + +
  • strace
  • + +
+
+ +
shellsRun various shells.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • zsh
  • + +
  • libstdcpp
  • + +
+
+ +
simplescreenrecorderA feature-rich screen recorder that supports X11 and OpenGL.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
  • libX11client
  • + +
+
+ +
smartmontoolsHard disk diagnostic utilities, containing smarctl and smartd, for monitoring storage.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
socatMultipurpose relay
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
software-defined-cockpitRun the automotive software defined cockpit which has graphic, media, sound and connectivity.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • wpa_supplicant
  • + +
  • gstreamer
  • + +
  • alsa-utils
  • + +
  • pulseaudio
  • + +
  • v4l-utils
  • + +
  • libX11client
  • + +
+
+ +
software-defined-cockpit-devAll packages required to build the software-defined-cockpit bundle.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-libXmu
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-mesa
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-bluez
  • + +
  • devpkg-mpg123
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-gst-plugins-bad
  • + +
  • devpkg-graphite
  • + +
  • libxslt
  • + +
  • docutils
  • + +
  • devpkg-xcb-util-cursor
  • + +
  • devpkg-pulseaudio
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • unzip
  • + +
  • devpkg-atk
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-opencv
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libwebp
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-flac
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-popt
  • + +
  • devpkg-libexif
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libevdev
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-speex
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • net-tools
  • + +
  • ghostscript
  • + +
  • devpkg-SDL2
  • + +
  • devpkg-libXt
  • + +
  • devpkg-mediasdk
  • + +
  • devpkg-mozjs60
  • + +
  • devpkg-nghttp2
  • + +
  • devpkg-colord
  • + +
  • devpkg-boost
  • + +
  • devpkg-libva
  • + +
  • devpkg-libffi
  • + +
  • devpkg-fftw
  • + +
  • flex
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • devpkg-glu
  • + +
  • devpkg-fontconfig
  • + +
  • devpkg-libsrtp
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-xtrans
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-wayland
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-libtheora
  • + +
  • devpkg-pcre
  • + +
  • devpkg-clutter
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-libusb
  • + +
  • devpkg-openssl
  • + +
  • devpkg-fribidi
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-systemd
  • + +
  • devpkg-libcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-libthai
  • + +
  • devpkg-LVM2
  • + +
  • devpkg-SDL2_image
  • + +
  • texinfo
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-vala
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-tiff
  • + +
  • devpkg-v4l-utils
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • binutils
  • + +
  • devpkg-at-spi2-core
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-orc
  • + +
  • devpkg-tbb
  • + +
  • devpkg-taglib
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-dbus-glib
  • + +
  • devpkg-libidn2
  • + +
  • software-defined-cockpit
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • devpkg-cairo
  • + +
  • findutils
  • + +
  • devpkg-lz4
  • + +
  • devpkg-libogg
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-zstd
  • + +
  • devpkg-libsamplerate
  • + +
  • devpkg-libvpx
  • + +
  • subversion
  • + +
  • devpkg-SDL
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • devpkg-pixman
  • + +
  • tzdata
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-zlib
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-libnl
  • + +
  • devpkg-gstreamer
  • + +
  • gzip
  • + +
  • devpkg-qtdeclarative
  • + +
  • devpkg-pango
  • + +
  • devpkg-rest
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gst-plugins-base
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libpng
  • + +
  • devpkg-libX11
  • + +
  • devpkg-opus
  • + +
  • devpkg-gsl
  • + +
  • devpkg-libvorbis
  • + +
  • strace
  • + +
+
+ +
software-testingSoftware to run or create test suites.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python-testing
  • + +
  • Sphinx
  • + +
  • python3-basic
  • + +
  • perl-basic
  • + +
+
+ +
SolaarDevice manager for Logitech's Unifying Receiver peripherals
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
Solaar-guiGUI for Device manager for Logitech's Unifying Receiver peripherals
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • Solaar
  • + +
  • python3-basic
  • + +
+
+ +
soxAudio file format and effects library
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
+
+ +
spectacleKDE screenshot capture utility.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
SphinxPython-based documentation tool supporting multiple outputs and programming languages.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • Babel
  • + +
+
+ +
spice-gtkSPICE Client GLib 2.0 library.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • gstreamer
  • + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • lib-openssl
  • + +
  • libX11client
  • + +
+
+ +
sqliteSQL database engine with file format that is stable, cross-platform, and backwards compatible.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
squidFull-featured Web proxy cache server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • openldap
  • + +
  • libstdcpp
  • + +
  • perl-basic
  • + +
+
+ +
sshfsFUSE client based on the SSH File Transfer Protocol
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
+
+ +
ssocrOptical character recognition (OCR) for 7-segment displays.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
stacerUbuntu System Optimizer
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • qt-core
  • + +
+
+ +
stellariumReal-time photo-realistic sky generator.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
+
+ +
storage-clusterRun a storage server.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • parted
  • + +
  • xfsprogs
  • + +
  • python3-basic
  • + +
  • ceph
  • + +
+
+ +
storage-utilsRun disk and filesystem management functions.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • nfs-utils
  • + +
  • smartmontools
  • + +
  • xfsprogs
  • + +
  • samba
  • + +
  • libglib
  • + +
  • parted
  • + +
  • dosfstools
  • + +
  • pmdk
  • + +
+
+ +
storage-utils-devAll packages required to build the storage-utils bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • docbook-utils
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • libxslt
  • + +
  • docutils
  • + +
  • devpkg-readline
  • + +
  • unzip
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-userspace-rcu
  • + +
  • devpkg-popt
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-multipath-tools
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • llvm
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • net-tools
  • + +
  • pandoc
  • + +
  • ghostscript
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-boost
  • + +
  • devpkg-libffi
  • + +
  • flex
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • libxml2
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-util-linux
  • + +
  • devpkg-libuser
  • + +
  • intltool
  • + +
  • devpkg-ntfs-3g
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-expat
  • + +
  • devpkg-libassuan
  • + +
  • graphviz
  • + +
  • devpkg-libidn
  • + +
  • storage-utils
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • devpkg-libusb
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libcap
  • + +
  • devpkg-audit
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-talloc
  • + +
  • devpkg-libtasn1
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • devpkg-libarchive
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-lz4
  • + +
  • gnupg
  • + +
  • devpkg-zstd
  • + +
  • tzdata
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-zlib
  • + +
  • devpkg-ipmctl
  • + +
  • devpkg-jansson
  • + +
  • gdb
  • + +
  • devpkg-nettle
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-open-iscsi
  • + +
  • xz
  • + +
  • devpkg-libnl
  • + +
  • gzip
  • + +
  • devpkg-rdma-core
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libX11
  • + +
  • strace
  • + +
+
+ +
straceSystem call diagnostic, instructional, and debugging tool.
+ +
Status: + + Active + +
+ + +
stream-serverRun an audio or visual streaming server.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • gstreamer
  • + +
+
+ +
su-execSimply execute a program with different privileges.
+ +
Status: + + Active + +
+ + +
subversionVersion Control System.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
sudoProvide limited super user privileges to specific users.
+ +
Status: + + Active + +
+ + +
supertuxkartKart racing game featuring Tux and his friends.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
suricataNetwork threat detection engine.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • Sphinx
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
+
+ +
SVT-AV1AV1-compliant encoder library core.
+ +
Status: + + Active + +
+ + +
swayi3-compatible Wayland compositor
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libX11client
  • + +
+
+ +
swupd-client-pre-releasePre-release binary for the Clear Linux OS for IA Updater.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • curl
  • + +
  • os-core-update
  • + +
+
+ +
sxivMinimal image viewer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
syndicationRSS/Atom parser library.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
+
+ +
synergyKeyboard and mouse sharing across networks.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • postgresql
  • + +
  • lib-openssl
  • + +
  • libX11client
  • + +
+
+ +
sysadmin-basicRun common utilities, useful for managing a system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • diffutils
  • + +
  • powertop
  • + +
  • glibc-locale
  • + +
  • file
  • + +
  • zstd
  • + +
  • iproute2
  • + +
  • which
  • + +
  • patch
  • + +
  • less
  • + +
  • kbd
  • + +
  • p11-kit
  • + +
  • findutils
  • + +
  • procps-ng
  • + +
  • sudo
  • + +
  • kernel-install
  • + +
  • acpica-unix2
  • + +
  • unzip
  • + +
  • tzdata
  • + +
  • iperf
  • + +
  • htop
  • + +
  • xz
  • + +
  • parallel
  • + +
  • gzip
  • + +
  • tmux
  • + +
  • man-pages
  • + +
  • libglib
  • + +
  • minicom
  • + +
  • strace
  • + +
+
+ +
sysadmin-basic-devAll packages required to build the sysadmin-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • docbook-utils
  • + +
  • devpkg-kmod
  • + +
  • bison
  • + +
  • devpkg-attr
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • libxslt
  • + +
  • docutils
  • + +
  • devpkg-readline
  • + +
  • unzip
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-libssh2
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-popt
  • + +
  • devpkg-pcre2
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • less
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • procps-ng
  • + +
  • devpkg-libtirpc
  • + +
  • net-tools
  • + +
  • pandoc
  • + +
  • devpkg-boost
  • + +
  • devpkg-libffi
  • + +
  • devpkg-numactl
  • + +
  • flex
  • + +
  • devpkg-util-linux
  • + +
  • intltool
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-ncurses
  • + +
  • sysadmin-basic
  • + +
  • devpkg-expat
  • + +
  • devpkg-libidn
  • + +
  • graphviz
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • devpkg-libusb
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-systemd
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-libcap
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-audit
  • + +
  • devpkg-LVM2
  • + +
  • texinfo
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-apr
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • devpkg-pciutils
  • + +
  • binutils
  • + +
  • diffutils
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • which
  • + +
  • devpkg-cryptsetup
  • + +
  • devpkg-json-c
  • + +
  • devpkg-curl
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-lz4
  • + +
  • tzdata
  • + +
  • devpkg-zlib
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-libnl
  • + +
  • gzip
  • + +
  • devpkg-rdma-core
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-libpng
  • + +
  • devpkg-libX11
  • + +
  • aspell
  • + +
  • strace
  • + +
+
+ +
sysadmin-hostmgmtUtilities and Services for managing large-scale clusters of networked hosts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • ansible
  • + +
  • ipmitool
  • + +
  • python3-basic
  • + +
  • git
  • + +
  • openssh-client
  • + +
  • pxe-server
  • + +
+
+ +
sysadmin-remoteEnable the host to be managed remotely by configuration management tools.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • sudo
  • + +
  • cockpit
  • + +
  • python3-basic
  • + +
  • openssh-server
  • + +
+
+ +
syslinuxKernel loader which uses a FAT, ext2/3 or iso9660 filesystem or a PXE network
+ +
Status: + + Active + +
+ + +
sysprofKernel based performance profiler
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
  • libX11client
  • + +
+
+ +
sysstatUtilities for monitoring system performance and usage activity.
+ +
Status: + + Active + +
+ + +
systemd-networkd-autostartEnables systemd-networkd as the default network manager
+ +
Status: + + Active + +
+ + +
tcl-basicRun Tk/Tcl language programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
telemetricsclient and server solution used to collect data from running Clear Linux OS systems.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • findutils
  • + +
  • lib-openssl
  • + +
+
+ +
tensorflow-servingTensorFlow Serving is a flexible, high-performance serving system for machine learning models.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
tesseractAn OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
testdiskRecover various partition failures and deleted files
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
+
+ +
texinfoUnix-style documentation system for on-line information and printed output.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
texliveMajor TeX-related typesetting programs, macro packages, and fonts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
texmakerCross-platfrom LaTeX editor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
+
+ +
the_silver_searcherA code-searching tool similar to ack, but faster.
+ +
Status: + + Active + +
+ + +
thermal_daemonThermal management.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • libstdcpp
  • + +
+
+ +
thunderbirdEmail and news client with RSS, chat, and integrated SPM filter support.
+ +
Status: + + Active + +
+ + +
tigervncA TigerVNC remote display system.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
  • libX11client
  • + +
+
+ +
tilixA tiling terminal emulator for Linux using GTK+ 3
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
time-server-basicRun an network time protocol (NTP) server.
+ +
Status: + + Active + +
+ + +
TLPAdvanced Power Management for Linux
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • perl-basic
  • + +
+
+ +
tmuxTerminal multiplexer (similar to screen).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
+
+ +
totemMovie player for the GNOME desktop based on GStreamer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gstreamer
  • + +
  • gnome-base-libs
  • + +
  • libX11client
  • + +
+
+ +
traefikA cloud based reverse proxy and load balancer
+ +
Status: + + Active + +
+ + +
tzdataTimezone database.
+ +
Status: + + Active + +
+ + +
ugetGTK+ download manager featuring download classification and HTML import.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • gstreamer
  • + +
  • libglib
  • + +
  • lib-openssl
  • + +
  • curl
  • + +
  • libX11client
  • + +
+
+ +
unbundleRecursively resolves a package list from a bundle definition.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
unisonBi-directional file synchronization tool.
+ +
Status: + + Active + +
+ + +
unzipList, test, or extract files from a ZIP archive.
+ +
Status: + + Active + +
+ + +
user-basicMeta bundle capturing most console user work flows.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • storage-utils
  • + +
  • network-basic
  • + +
  • mail-utils
  • + +
  • openssh-server
  • + +
  • editors
  • + +
  • os-core-update
  • + +
  • dev-utils
  • + +
  • shells
  • + +
  • sysadmin-basic
  • + +
  • kvm-host
  • + +
+
+ +
user-basic-devAll packages required to build the user-basic bundle.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • devpkg-parted
  • + +
  • devpkg-libXmu
  • + +
  • docbook-utils
  • + +
  • devpkg-libXv
  • + +
  • devpkg-libxslt
  • + +
  • devpkg-mesa
  • + +
  • cryptography
  • + +
  • bison
  • + +
  • devpkg-kmod
  • + +
  • devpkg-gobject-introspection
  • + +
  • devpkg-libsoup
  • + +
  • devpkg-attr
  • + +
  • dosfstools
  • + +
  • devpkg-bzip2
  • + +
  • devpkg-e2fsprogs
  • + +
  • devpkg-fuse
  • + +
  • devpkg-libnetfilter_queue
  • + +
  • polkit
  • + +
  • devpkg-libnetfilter_cttimeout
  • + +
  • devpkg-util-macros
  • + +
  • devpkg-wayland-protocols
  • + +
  • devpkg-graphite
  • + +
  • storage-utils-dev
  • + +
  • libxslt
  • + +
  • devpkg-pkcs11-helper
  • + +
  • docutils
  • + +
  • devpkg-xapian-core
  • + +
  • devpkg-iso-codes
  • + +
  • devpkg-readline
  • + +
  • devpkg-xorgproto
  • + +
  • acpica-unix2
  • + +
  • unzip
  • + +
  • devpkg-atk
  • + +
  • kvm-host-dev
  • + +
  • devpkg-libmicrohttpd
  • + +
  • devpkg-libgudev
  • + +
  • devpkg-libXvMC
  • + +
  • devpkg-icu4c
  • + +
  • openssl
  • + +
  • cpio
  • + +
  • devpkg-libxml2
  • + +
  • devpkg-gtk3
  • + +
  • devpkg-libssh2
  • + +
  • devpkg-libwebp
  • + +
  • gpgme
  • + +
  • devpkg-guile
  • + +
  • os-core-dev
  • + +
  • doxygen
  • + +
  • devpkg-gdk-pixbuf
  • + +
  • sysadmin-basic-dev
  • + +
  • devpkg-userspace-rcu
  • + +
  • devpkg-lcms2
  • + +
  • devpkg-popt
  • + +
  • devpkg-librsvg
  • + +
  • devpkg-libgd
  • + +
  • devpkg-pcre2
  • + +
  • devpkg-libevdev
  • + +
  • patch
  • + +
  • devpkg-libcap-ng
  • + +
  • devpkg-libXres
  • + +
  • llvm
  • + +
  • devpkg-alsa-lib
  • + +
  • devpkg-xmlsec1
  • + +
  • less
  • + +
  • devpkg-libXpm
  • + +
  • devpkg-pacrunner
  • + +
  • devpkg-glew
  • + +
  • devpkg-libxkbcommon
  • + +
  • devpkg-at-spi2-atk
  • + +
  • devpkg-freetype
  • + +
  • devpkg-libmnl
  • + +
  • devpkg-p11-kit
  • + +
  • devpkg-libnetfilter_cthelper
  • + +
  • devpkg-libinput
  • + +
  • devpkg-freeglut
  • + +
  • devpkg-libtirpc
  • + +
  • nfs-utils
  • + +
  • procps-ng
  • + +
  • devpkg-postgresql
  • + +
  • net-tools
  • + +
  • pandoc
  • + +
  • devpkg-gmime
  • + +
  • ghostscript
  • + +
  • devpkg-libXt
  • + +
  • devpkg-mozjs60
  • + +
  • devpkg-nghttp2
  • + +
  • network-basic-dev
  • + +
  • devpkg-colord
  • + +
  • iptables
  • + +
  • devpkg-boost
  • + +
  • devpkg-libX11
  • + +
  • elasticsearch
  • + +
  • devpkg-libffi
  • + +
  • devpkg-libva
  • + +
  • devpkg-startup-notification
  • + +
  • devpkg-numactl
  • + +
  • devpkg-usbredir
  • + +
  • flex
  • + +
  • devpkg-glu
  • + +
  • devpkg-compat-fuse-soname2
  • + +
  • devpkg-fontconfig
  • + +
  • libxml2
  • + +
  • devpkg-qtbase
  • + +
  • devpkg-util-linux
  • + +
  • dev-utils-dev
  • + +
  • devpkg-libdrm
  • + +
  • devpkg-libuser
  • + +
  • intltool
  • + +
  • devpkg-xtrans
  • + +
  • devpkg-libnfnetlink
  • + +
  • devpkg-cyrus-sasl
  • + +
  • devpkg-libepoxy
  • + +
  • devpkg-ncurses
  • + +
  • devpkg-xcb-proto
  • + +
  • devpkg-wayland
  • + +
  • devpkg-expat
  • + +
  • iproute2
  • + +
  • graphviz
  • + +
  • devpkg-libassuan
  • + +
  • devpkg-libidn
  • + +
  • devpkg-libpciaccess
  • + +
  • devpkg-elfutils
  • + +
  • devpkg-pcre
  • + +
  • plzip
  • + +
  • devpkg-gnu-efi
  • + +
  • devpkg-openssl
  • + +
  • devpkg-libusb
  • + +
  • devpkg-fribidi
  • + +
  • kbd
  • + +
  • devpkg-libnftnl
  • + +
  • devpkg-libXtst
  • + +
  • p11-kit
  • + +
  • devpkg-libunwind
  • + +
  • devpkg-subunit
  • + +
  • devpkg-systemd
  • + +
  • bc
  • + +
  • devpkg-dpdk
  • + +
  • devpkg-libcap
  • + +
  • devpkg-libpcap
  • + +
  • devpkg-libpipeline
  • + +
  • devpkg-audit
  • + +
  • devpkg-libthai
  • + +
  • devpkg-LVM2
  • + +
  • openblas
  • + +
  • texinfo
  • + +
  • devpkg-libdatrie
  • + +
  • devpkg-vala
  • + +
  • os-core-update-dev
  • + +
  • devpkg-googletest
  • + +
  • devpkg-harfbuzz
  • + +
  • devpkg-libnetfilter_conntrack
  • + +
  • devpkg-xz
  • + +
  • devpkg-libXft
  • + +
  • nasm
  • + +
  • devpkg-talloc
  • + +
  • devpkg-tiff
  • + +
  • devpkg-libtasn1
  • + +
  • devpkg-libXxf86misc
  • + +
  • devpkg-apr
  • + +
  • devpkg-gperftools
  • + +
  • dev-utils
  • + +
  • devpkg-dbus
  • + +
  • devpkg-libseccomp
  • + +
  • Sphinx
  • + +
  • devpkg-pciutils
  • + +
  • joe
  • + +
  • mail-utils-dev
  • + +
  • texlive
  • + +
  • binutils
  • + +
  • devpkg-at-spi2-core
  • + +
  • diffutils
  • + +
  • devpkg-libjpeg-turbo
  • + +
  • devpkg-oath-toolkit
  • + +
  • devpkg-libcgroup
  • + +
  • glibc-locale
  • + +
  • devpkg-libgcrypt
  • + +
  • git
  • + +
  • devpkg-json-glib
  • + +
  • devpkg-orc
  • + +
  • devpkg-libgpg-error
  • + +
  • devpkg-libevent
  • + +
  • devpkg-libidn2
  • + +
  • devpkg-iptables
  • + +
  • devpkg-libXcursor
  • + +
  • which
  • + +
  • yasm
  • + +
  • devpkg-krb5
  • + +
  • devpkg-cryptsetup
  • + +
  • user-basic
  • + +
  • devpkg-libcroco
  • + +
  • devpkg-json-c
  • + +
  • devpkg-libgusb
  • + +
  • devpkg-curl
  • + +
  • wget
  • + +
  • devpkg-libarchive
  • + +
  • devpkg-cairo
  • + +
  • make
  • + +
  • findutils
  • + +
  • devpkg-nss
  • + +
  • devpkg-ndctl
  • + +
  • devpkg-lz4
  • + +
  • gnupg
  • + +
  • devpkg-libpthread-stubs
  • + +
  • devpkg-openmpi
  • + +
  • devpkg-zstd
  • + +
  • subversion
  • + +
  • tzdata
  • + +
  • devpkg-SDL
  • + +
  • devpkg-sqlite-autoconf
  • + +
  • devpkg-libXScrnSaver
  • + +
  • editors-dev
  • + +
  • devpkg-pixman
  • + +
  • devpkg-xkeyboard-config
  • + +
  • devpkg-lua
  • + +
  • devpkg-zlib
  • + +
  • devpkg-jansson
  • + +
  • devpkg-nettle
  • + +
  • gdb
  • + +
  • xz
  • + +
  • devpkg-gtk-doc
  • + +
  • devpkg-libnl
  • + +
  • devpkg-gflags
  • + +
  • gzip
  • + +
  • devpkg-pango
  • + +
  • devpkg-rest
  • + +
  • devpkg-rdma-core
  • + +
  • valgrind
  • + +
  • devpkg-glib
  • + +
  • devpkg-acl
  • + +
  • devpkg-libpng
  • + +
  • devpkg-gnutls
  • + +
  • devpkg-gsl
  • + +
  • aspell
  • + +
  • devpkg-nspr
  • + +
  • strace
  • + +
+
+ +
uwsgiThe uWSGI server
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
+
+ +
v4l-utilsUserspace tools and conversion library for Video 4 Linux.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-imageformat
  • + +
  • libstdcpp
  • + +
+
+ +
valgrindSuite of tools for debugging and finding memory-management problems in programs.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
vimVi Improved, a configurable, improved version of the vi text editor.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • perl-basic
  • + +
+
+ +
vinagreA VNC client for GNOME desktop.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gstreamer
  • + +
  • libX11client
  • + +
+
+ +
virt-managerVirtualization Management tool (CLI Only)
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • kvm-host
  • + +
  • desktop-gnomelibs
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
virt-manager-guiEnable controlling virt-manager through a GUI.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • virt-viewer
  • + +
  • gtk-vnc
  • + +
  • virt-manager
  • + +
  • spice-gtk
  • + +
  • libX11client
  • + +
+
+ +
virt-viewerVirtual Machine Viewer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • gstreamer
  • + +
  • libX11client
  • + +
+
+ +
vlcMultimedia player and streamer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-samba
  • + +
  • libstdcpp
  • + +
  • gstreamer
  • + +
  • qt-basic
  • + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
vnc-serverEnable the host to be a VNC desktop server.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • tigervnc
  • + +
  • desktop
  • + +
  • openssh-server
  • + +
+
+ +
vppVector Packet Processing
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • python3-basic
  • + +
+
+ +
webkitgtkLegacy Web content engine for GTK+ 3.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • gstreamer
  • + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
weechatInternet Relay Chat (IRC) client, extensible with plugins and scripts.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • libglib
  • + +
  • lib-openssl
  • + +
  • curl
  • + +
+
+ +
weston-extrasHeader files for Weston plugin development.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • libX11client
  • + +
+
+ +
wgetNetwork utility to retrieve content from web servers.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • findutils
  • + +
  • lib-openssl
  • + +
  • openssl
  • + +
+
+ +
whichUtility to show full path of commands and locate executables.
+ +
Status: + + Active + +
+ + +
wineRun PE32 executables with Linux.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-opengl
  • + +
  • libstdcpp
  • + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
wiresharkNetwork packet capture and traffic analysis tool.
+ +
Status: + + WIP + +
+ + +
Includes bundle(s): +
    + +
  • qt-basic
  • + +
  • postgresql
  • + +
+
+ +
wpa_supplicantUtility providing key negotiation for WPA wireless networks.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • linux-firmware-wifi
  • + +
+
+ +
x11-serverProvide a functional X11 Server (Xorg or wayland-based).
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
x11-toolsTools useful when running under X11.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • xterm
  • + +
  • perl-basic
  • + +
  • x11vnc
  • + +
  • libX11client
  • + +
+
+ +
x11vncA virtual network computing (VNC) server for real X displays.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libX11client
  • + +
+
+ +
xfce4-desktopRun the Xfce GUI desktop environment.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • which
  • + +
  • fonts-basic
  • + +
  • libX11client
  • + +
+
+ +
xfsprogsUtilities to manage the XFS filesystem.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libstdcpp
  • + +
+
+ +
xorrisoNo detailed summary available
+ +
Status: + + Active + +
+ + +
xpraruns X clients, typically on a remote host, and directs their display to the local machine without losing any state.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • python3-basic
  • + +
  • libX11client
  • + +
+
+ +
xscreensaverA minimal installation of xscreensaver.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • perl-basic
  • + +
  • libX11client
  • + +
+
+ +
xscreensaver-extrasAll the xscreensaver extras.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • lib-imageformat
  • + +
  • xscreensaver
  • + +
  • libX11client
  • + +
+
+ +
xtermThe basic X.Org terminal program desktop launcher.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
+
+ +
xzCommand-line tools for XZ and LZMA compressed files.
+ +
Status: + + Active + +
+ + +
yakuakeQuake-style terminal emulator based on KDE Konsole technology.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libX11client
  • + +
  • libstdcpp
  • + +
  • qt-basic
  • + +
  • kde-frameworks5
  • + +
+
+ +
yarnFast, reliable, and secure dependency management.
+ +
Status: + + Deprecated + +
+ + +
yasmModular assembler with multiple syntaxes support.
+ +
Status: + + Active + +
+ + +
zabbixNetwork and application monitoring tool.
+ +
Status: + + Active + +
+ + +
zabbix-agentNetwork and application monitoring tool - agent only.
+ +
Status: + + Active + +
+ + +
zathuraMinimalistic document viewer
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • texlive
  • + +
  • libX11client
  • + +
+
+ +
zenityDisplay graphical dialog boxes from shell scripts
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • libglib
  • + +
  • webkitgtk
  • + +
  • libX11client
  • + +
+
+ +
zipCompressor/archiver for .zip files.
+ +
Status: + + Active + +
+ + +
zncAdvanced, modular IRC network bouncer.
+ +
Status: + + Active + +
+ + +
Includes bundle(s): +
    + +
  • lib-openssl
  • + +
  • libstdcpp
  • + +
+
+ +
zshZ Shell, an interactive shell and powerful shell script command processor.
+ +
Status: + + Active + +
+ + +
zstdRealtime losless data compression/decompression tool.
+ +
Status: + + Active + +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/reference/collaboration/collaboration.html b/zh_CN/reference/collaboration/collaboration.html new file mode 100644 index 000000000..be799efa4 --- /dev/null +++ b/zh_CN/reference/collaboration/collaboration.html @@ -0,0 +1,1114 @@ + + + + + + + + + + + + + + Documentation guidelines — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Documentation guidelines

+

See a missing topic in the documentation? Find an existing document that could +be improved? Help us out by contributing! If you haven’t contributed before, +take a moment to review our Contribution guidelines.

+

Do you have questions about the documentation that were not answered by these +guidelines? Send your question to the mailing list.

+
+

Contribution guidelines

+

The Clear Linux OS documentation is hosted in GitHub and is written using +reStructuredText. Use our guidelines and best practices to write consistent, +readable documentation.

+ +
+
+

How to contribute

+

There are multiple ways to contribute and help improve our documentation:

+
    +
  • Make a suggestion: Have a documentation suggestion but no time to write it +yourself? Send your suggestion to the mailing list.
  • +
  • Log an issue: If you find a problem in our documentation (such as typos or +out-of-date information), log an issue in the documentation repository.
  • +
  • Contribute directly via GitHub: Whether you’ve found a typo, have better +instructions or examples, or have a new page to add, submit your improvement +or addition as a pull request on the documentation repository.
  • +
  • Test documentation: Step through our instructional guides and tutorials to +verify the instructions. Log or correct any out-of-date information.
  • +
+

All contributions must follow our code of conduct.

+
+
+

Contribute via GitHub

+

Our documentation is hosted in GitHub and we follow the standard GitHub flow:

+
    +
  1. Clone the documentation repository.
  2. +
  3. Create your own fork of the repository.
  4. +
  5. Create a branch for your contribution.
  6. +
  7. Add your commits.
  8. +
  9. Open a pull request.
  10. +
  11. Discuss, review, and update your contributions.
  12. +
  13. Once the maintainer approves, your contribution is merged and published as +part of the documentation.
  14. +
+
+
+

References

+

We use the following references to guide the grammar, style, and formatting of +our documentation:

+ +
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/reference/collaboration/structure-formatting.html b/zh_CN/reference/collaboration/structure-formatting.html new file mode 100644 index 000000000..15696e01b --- /dev/null +++ b/zh_CN/reference/collaboration/structure-formatting.html @@ -0,0 +1,1542 @@ + + + + + + + + + + + + + + Structure and formatting — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Structure and formatting

+

Content should be organized to support scanning. Consistent organization, +formatting, and writing style helps readers quickly find what they need and to +understand the content more effectively. This document describes our +organization and formatting guidelines.

+

Refer to Writing guide to learn how we keep our documents clear and +concise.

+ +
+

Markup

+

Our documentation is written in the reStructuredText markup language, using +Sphinx roles and directives. We use Sphinx to generate the final documentation. +You can read more about reStructuredText and Sphinx on their respective +websites:

+ +

You can view the content directly in the .rst markup files, or generate the HTML +content by installing and building the documentation locally. To run the +documentation locally, follow the instructions found in the +documentation repository README.

+
+

New pages

+

There are a few additional steps to consider when adding a new page to the +documentation. First, identify where your new page should be located within the +existing Documentation organization. Second, make sure the new page is picked +up in the Sphinx build and easily linkable from other content.

+

Each page must be included in a Sphinx toctree in order to be included in the +documentation content tree. Typically, pages are added to the section landing +page toctree.

+

For example, the Documentation guidelines page toctree looks like:

+
.. toctree::
+   :maxdepth: 1
+
+   writing-guide
+   structure-formatting
+
+
+

Additionally, each page must include a uniquely named reST label directly before +the page title, to enable the Sphinx ref role for linking to a page.

+

For example, this page “Structure and formating” has the label +.. _structure-formatting:

+
.. _structure-formatting:
+
+Structure and formatting
+########################
+
+
+

This page can then be referenced from other pages in the documentation using the +:ref: role:

+
:ref:`structure-formatting`
+
+
+
+
+
+

Documentation organization

+

The documentation is organized into five general sections:

+
    +
  1. Concepts: Introduction and overview of Clear Linux OS specific concepts or +features.
  2. +
  3. Get started: Information about getting started with Clear Linux OS.
  4. +
  5. Guides: Detailed information and instruction on using Clear Linux OS features.
  6. +
  7. Tutorials: Step-by-step instruction for using Clear Linux OS in specific use cases.
  8. +
  9. Reference: Supplementary and reference information for Clear Linux OS.
  10. +
+
+

Page structure

+

Each page in the documentation should follow the basic format of:

+
    +
  • Overview: 1-2 sentences describing what this page shows and why it matters
  • +
  • Prerequisites: Describe any pre-work necessary to the content (if appropriate)
  • +
  • Content
  • +
  • Next steps: List links to next steps (if appropriate)
  • +
  • Related topics: List links to related content (if appropriate)
  • +
+
+
+

Headings

+

Use headings to section and organize your content for better readability and +clarity.

+
    +
  • All files must have a top level heading, which is the title for the page.
  • +
  • Up to three additional levels of headings are allowed under the title heading.
  • +
  • Each heading should be followed by at least one paragraph of content. Avoid +two or more consecutive headings.
  • +
+

Refer to the Writing guide for tips on using headings to create +scannable content.

+

To mark up headings in the .rst file:

+
    +
  • Use hash-tags to underline the file’s main title:

    +
    Main title
    +##########
    +
    +
    +
  • +
  • Use asterisks to underline the file’s first level headings:

    +
    First level heading
    +*******************
    +
    +
    +
  • +
  • Use equal signs to underline the file’s second level of headings:

    +
    Second level heading
    +====================
    +
    +
    +
  • +
  • Use dashes to underline the file’s third level of headings:

    +
    Third level heading
    +-------------------
    +
    +
    +
  • +
+
+
+

In-page navigation

+

If a page has three or more sections, provide quick links to each section. Place +the quick links after the overview section.

+

Use the standard reST contents directive with depth: 1 for quick links.

+
+
+
+

Inline text formatting

+

We use the Microsoft Writing Style Guide as our starting point for text +formatting. We apply the formatting using reST and Sphinx markup.

+

Use our quick reference for the most commonly used inline text elements:

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ElementConventionreST/Sphinx
AcronymsDefine acronym when first used. After +first use and definition, use the +acronym only.

Use the :abbr: role, in +the following format:

+

:abbr:`Acronym (Def)`

+
Bundle namesBoldUse the :command: role.
Callouts Use .. note::
Code/command examplesMonospace, visually distinct +from rest of text. Use an +indented call-out box.Use .. code-block:: +with the correct language +setting.
CommandsBoldUse the :command: role.
Command flagsBoldUse the :command: role.
Console outputMonospace, visual distinction +from rest of text. Use an +indented call-out box.Use .. code-block:: +with console as the +language setting.
EmphasisItalic*strong*
Environment variablesUse the case format of the +environment variable.Use :envvar:
Example commands with +optional or replaceable +parts

Use angle brackets for swapping +in the specific name, +e.g. <package-name>.

+

Use square brackets for optional +parts, +e.g. [–build].

+
 
Example URLs (not linked)Plain text 
File extensionsLowercase 
File names, directories, pathsTitle style capitalizationUse the :file: role.
GUI labels Use :guilabel:
Inline comments Use ..
Keystrokes Use :kbd:
Local navigation .. contents:: :local: +with a depth of 1
Menu selection Use :menuselection:
New terms

Italic for first use, normal for all +subsequent uses.

+

If it is used outside of the source +of definition, link the term.

+
*term*
Product nameFollow correct trademark and +attribution guidelines. 
Tool names

Correctly capitalized, no quotes, +bold, or italics as the basic rule.

+

If the tool name is the command, like +most Linux tools, treat it like a +command.

+

If the tool name is lowercase and +used at the start of a sentence, use +bold.

+
 
+
+

White space and line length

+

Limit line length to 78 characters. The GitHub web interface forces this +limitation for readability.

+

Remove trailing whitespace from your documents.

+
+
+
+

Code blocks and examples

+

When providing example code or commands use the Sphinx code-block directive. +Select the appropriate syntax highlighting for the example command or code.

+

For example, if showing console output, use console highlighting:

+
.. code-block:: console
+
+
+

Sphinx provides other ways of marking up example code if needed.

+
+
+

Lists and instructions

+

Use a numbered list when the order or priority of the items is important, such +as step-by-step instructions.

+

Use a bulleted list when the order of the items is not important.

+

For both list types, keep all items in the list parallel. See +Parallelism.

+

Use standard reST list markup.

+
+

Numbered lists

+

Numbered lists are most frequently used for procedures. Use numbered lists to +show sequence for the items. Follow our guidelines for numbered lists:

+
    +
  • Make sure the list is sequential and not just a collection of items.
  • +
  • Introduce a numbered list with a sentence. End the setup text with a +colon. Example: “To configure the unit, perform the following steps:”
  • +
  • Each item in the list should be parallel.
  • +
  • Treat numbered list items as full sentences with correct ending +punctuation.
  • +
  • You may interrupt numbered lists with other content, if relevant, +e.g. explanatory text, commands, or code.
  • +
  • Second-level steps are acceptable; avoid third-level steps.
  • +
  • Avoid single-step procedures; the minimum number of steps in a procedure +is two.
  • +
  • Do not create numbered lists that emulate flowcharts. The reader should be +able to execute the list of steps from first to last without branching or +looping.
  • +
  • Avoid over-using numbered lists, except in procedural documents such as +tutorials and step-by-step guides.
  • +
+
+
+

Bulleted lists

+

Use bulleted lists to reduce wordiness and paragraph density, especially when +a sequence is not required. Here are some guidelines for bulleted lists:

+
    +
  • Introduce a bulleted list with a sentence. End the setup text with a +colon. Example: “To repair the unit, you will need the following items:”
  • +
  • Each item in the list should be parallel.
  • +
  • Avoid interrupting bulleted lists with other paragraph styles.
  • +
  • Second-level bullets are acceptable; avoid third-level bullets.
  • +
+

Use the correct ending punctuation for sentence style bullet lists. For example:

+

Use this:

+
When setting the user code, remember:
+
+* Use a number that has a meaning for you.
+* Change the code once a month.
+* Do not disclose the user code to anyone, including the security company.
+
+
+

Not this:

+
When setting the user code remember:
+
+* make the user code easy to remember. Use a number that has a meaning for you
+* change the code once a month
+* do not disclose the user code to anyone else. This includes the security
+  company
+
+
+
+
+

Instructions

+

When presenting instructions, such as in a tutorial, present them in a numbered +list according to these guidelines:

+
    +
  • Each step (list item) should describe one action.

    +
  • +
  • If the same steps are repeated, refer to the earlier steps rather than +repeating them.

    +
  • +
  • When a step includes a command or code block as an example, put the command +or code block after the step that includes them.

    +
  • +
  • Use supporting images where appropriate. If the series of steps is supported +by one figure, refer to the figure in the introductory text.

    +

    For example: “See Figure 15 and do the following:”

    +

    When a series of steps is supported by two or more figures, refer to the +specific figure in the relevant step and show the figure immediately after +the reference. Do not write: “See figures 15 through 22 and do the +following:”

    +
  • +
+
+
+
+

Notices

+

We use four special types of notices: notes, cautions, warnings, and dangers. +Here are some specific rules and tips regarding use of these notices:

+
    +
  • Do not use a notice directly after a heading. Notices must follow a variant of +body text.
  • +
  • Do not include more than one notice in a single notice block.
  • +
  • Avoid back-to-back notices.
  • +
  • If back-to-back notices are not avoidable, make sure each distinct notice in +the notice block is clearly defined.
  • +
+

Use the standard reST admonition directive.

+
+

Notes, cautions, and warnings

+

Use notes sparingly. Avoid having more than one note per section. If you exceed +this number consistently, consider rewriting the notes as main body text.

+

Use cautions and warnings to alert readers of potential problems or pitfalls. +Use conditional phrases in cautions and warnings, such as “If you do X, then Y +will occur.”

+

These are examples of typical notices and the conditions for their usage:

+
+

注解

+

Notes are extra bits of information that supplement the main content. Notes +should be relatively short.

+
+
+

警告

+

Cautions are low-level hazard messages that alert the user of possible +equipment, product, and software damage, including loss of data.

+
+
+

警告

+

Warnings are mid-level hazards that are likely to cause product damage.

+
+
+
+ +
+

Images

+

Use images or figures to convey information that may be difficult to explain +using words alone. Well-planned graphics reduce the amount of text required to +explain a topic or example.

+

Follow these guidelines when using graphics in support of your documentation:

+
    +
  • Keep it simple. Use images that serve a specific purpose in your document, +and contain only the information the reader needs.

    +
  • +
  • Avoid graphics that will need frequent updating. Don’t include information in +a graphic that might change with each release, such as product versions.

    +
  • +
  • Use either PNG or JPEG bitmap files for screenshots and SVG files for vector +graphics.

    +
  • +
  • Place the image immediately after the text it helps clarify, or as close as +possible.

    +
  • +
  • Use the Sphinx figure directive to insert images and figures into the +document. Include both alt text, a figure name, and caption.

    +

    For example:

    +
    .. figure:: figures/topic-1.png
    +   :alt: An image supporting the topic.
    +
    +   Figure 1: This is the figure 1 caption.
    +
    +
    +
  • +
  • Include at least one direct reference to an image from the main text, using +the figure number. For example:

    +

    Use this:

    +
    Figure 1
    +
    +
    +

    Not this:

    +
    The figure above or below
    +
    +
    +
  • +
+

Images should follow these naming and location conventions:

+
    +
  • Save the image files in a figures folder at the same level as the file +that will reference the image.
  • +
  • Name image files according to the following rules:
      +
    • Use only lower case letters.
    • +
    • Separate multiple words in filenames using dashes.
    • +
    • Name images using the filename of the file they appear on and add a number +to indicate their place in the file. For example, the third figure added to +the welcome.rst file must be named welcome-3.png.
    • +
    +
  • +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/reference/collaboration/writing-guide.html b/zh_CN/reference/collaboration/writing-guide.html new file mode 100644 index 000000000..66b0d5cf3 --- /dev/null +++ b/zh_CN/reference/collaboration/writing-guide.html @@ -0,0 +1,1502 @@ + + + + + + + + + + + + + + Writing guide — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Writing guide

+

We want our documentation to be easy to read and understand. This document +describes guidelines for writing documentation that is clear, concise, +confident, and courteous.

+

Refer to Structure and formatting for details on organizing content and how +we use reStructuredText and Sphinx.

+ +
+

Use simple English

+

Write using simple English: Be brief and communicate only the information that +is needed. Be friendly and informative. Emphasize clarity and avoid +unecessary complicated or technical terms. Make the content accessible to +non-native speakers.

+
+

Be brief

+

Use short sentences and paragraphs. Stick to the principle of one main +idea per sentence, plus one additional point if needed. Each paragraph +should address one main idea. Remember the basic structure of a paragraph: +Introduction, body, and conclusion.

+
+
+

Be friendly

+

We write for our peers and want to be familiar. Take a personal tone as if you +were speaking directly to the reader. Use “you” to address the reader and “we” +to refer to our view. Be professional, respectful, and cooperative.

+

Assume your audience has the same level of technical understanding and expertise +as you did when you first started collaborating. Do not talk down to our +readers, but also do not assume they know everything about the subject. Offer +brief explanations or summaries of common knowledge if a significant portion of +readers might benefit.

+
+
+

Use simple words

+

Use simple words to increase reader comprehension and reduce ambiguity. Follow +our tips for making good word choices:

+
    +
  • Avoid jargon: Write for your audience, using everyday language where +possible, and technical terms where appropriate. Avoid clichés, idioms, and +metaphors.

    +
  • +
  • Be consistent: Use one term for each concept or action and use it +consistently.

    +
  • +
  • Avoid “fancy” words and phrases: If there is a simpler word or phrase, +use it.

    +

    For example:

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Use thisNot this
    start, begincommence
    soconsequently
    more thanin excess of
    ifin the event of
    beforeprior to
    if you wantshould one wish
    useutilize
    exampleinstance
    +
  • +
+
+
+

Avoid overuse of product name

+

Use product names only when necessary. Typically, you can rewrite sentences to +remove the product name with no change in meaning, which keeps the content +concise and scannable.

+

Avoid using the product name in page titles and headings.

+
+
+
+

Make content scannable

+

Organize your content to make it scannable for the reader, which helps them find +what they need quickly, and to understand the information more efficiently.

+
    +
  • Put the most important content first. Make sure your introduction clearly +communicates what the reader can find on the page. Present the point of the +document first, and organize supporting information towards the end of the +page.
  • +
  • Write scannable headings. Expect readers of documentation to skim and scan +the content, and to leave if they dont find what they need quickly. Good +headings add organization to your content and help the reader to find and +understand content more effectively. Follow our guidelines for writing +effective Headings.
  • +
  • Write great link text. Great link text tells the reader what they can +expect when they click on a link. It also helps make the page more scannable. +Follow our guidelines for writing Link text.
  • +
+
+

Headings

+

Use these guidelines to write effective headings:

+
    +
  • Be concise and descriptive. Use only the words necessary to describe the +section.
  • +
  • Use sentence case. Capitalize only the first word and proper nouns in a +heading.
  • +
  • Avoid punctuation. Unless your heading is a question, don’t use sentence +punctuation in headings.
  • +
  • Use parallel structure. Headings at the same level should use the same +grammatical pattern. This provides structure to the document and helps users +find information more easily. See Parallelism.
  • +
  • Use strong verbs. Strong, active verbs get to the point. Avoid -ing verbs, +such as Running, Testing, etc.
  • +
+

For example, two headings at the same level:

+

Use this:

+
Install software
+
+Configure software
+
+
+

Not this:

+
Installing the Software on the Platform
+
+Software Configuration.
+
+
+
+ +
+
+

Use strong verbs

+

Passive verbs make writing stuffy and formal. Use strong verbs to get to the +point and avoid unnecessary words and phrases.

+
+

Use imperatives

+

Commands, also called imperatives, are the fastest and most direct way of giving +someone instructions. For example:

+

Use this:

+
Send it to me.
+
+
+

Not this:

+
I would appreciate it if you would send it to me.
+
+
+
+
+

Use present tense

+

Use simple present tense instead of future tense for most text. Search for the +words “will” or “shall” to find future tense instances. Future tense is +acceptable for conditional statements, such as in a caution or a warning. For +example:

+

Use this:

+
The system operates at a nominal temperature of 180 degrees Fahrenheit.
+
+
+

Not this:

+
The system will operate at a nominal temperature of 180 degrees Fahrenheit.
+
+
+
+
+

Avoid nominalizations

+

Avoid nominalizations, which are nouns formed from verbs.

+

For example:

+ ++++ + + + + + + + + + + + + + + + + + + + +
VerbNominalization
completecompletion
provideprovision
failfailure
installinstallation
+

For example:

+

Use this:

+
We discussed the matter.
+
+
+

Not this:

+
We had a discussion about the matter.
+
+
+

Or:

+

Use this:

+
IT has installed the software.
+
+
+

Not this:

+
IT has completed the installation of the software.
+
+
+
+
+

Avoid words ending in -ing

+

Avoid using words ending in -ing unless they are part of a technical name. For +example:

+

Use this:

+
There is no way to verify this.
+
+
+

Not this:

+
There is no way of verifying this.
+
+
+
+
+

Use the active voice

+

Use active voice whenever possible to show who or what is performing an +action.

+
    +
  • Active voice follows standard English word order: SUBJECT–VERB–OBJECT +(where the OBJECT is optional).
  • +
  • Passive voice reverses the order and weakens the verb: OBJECT–be VERB–by +SUBJECT (where the OBJECT is optional).
  • +
+

For example:

+

Use this:

+
I made a mistake.
+
+
+

Not this:

+
A mistake was made. *(By whom?)*
+
+
+

Or:

+

Use this:

+
We released version 2.0 in June.
+
+
+

Not this:

+
Version 2.0 was released in June.
+
+
+
+
+
+

Avoid long noun phrases

+

Noun phrases (a noun and other words that describe or modify it) can be +difficult to understand. Try to limit the number of modifiers in a noun phrase +to two. For example:

+

Use this:

+
Integration policies for power management mechanisms.
+
+
+

Not this:

+
Power management mechanism integration policies.
+
+
+
+
+

Parallelism

+

Parallelism refers to the practice of using similar patterns of grammar, and +sometimes length, to coordinate words, phrases, and clauses.

+

Use parallel construction in lists. The table below shows some unparallel +structures and how they can be made parallel with a little rewording.

+ ++++ + + + + + + + + + + + + + + + + + + + +
Parallel (do)Unparallel (don’t)
    +
  1. Mount the panel.
  2. +
  3. Install the battery.
  4. +
  5. Wire the keypad.
  6. +
+
    +
  1. Mount the panel.
  2. +
  3. Battery installation.
  4. +
  5. Wiring the keypad.
  6. +
+
I like practicing my accordion, +reading sci-fi, and eating +peanut butter and pickle +sandwiches.I like practicing my accordion, +reading sci-fi, and to eat +peanut butter and pickle +sandwiches.
For breakfast he likes coffee +and bacon.For breakfast he likes coffee +and to fry bacon.
Apples or bananas are a good +snack.Apples or a banana are a good +snack.
+
+
+

Grammar and punctuation

+

This section covers common grammatical topics relevant to our +documentation. For detailed explanations of correct grammar and punctuation, +use one of our preferred references.

+
+

Capitalization

+

The capitalization style for all documentation is sentence case. Words should +only be capitalized when they are proper nouns or refer to trademarked product +names.

+
+

注解

+

Do not capitalize a word to indicate it is more important than other +words. Never change the case of variable, function or file names - always +keep the original case.

+
+ +
+

Software version capitalization

+

When listing software or hardware version numbers, the word “version” or letter +“v” are lowercase. The v is closed with the number (no period).

+

For example:

+
    +
  • Widget Pro version 5.0
  • +
  • Widget Master v2.1.12
  • +
+
+
+
+

Contractions

+

Avoid using contractions, such as it’s, they’re, and you’re, because they may be +unclear to non-native English-speaking audiences.

+
+
+

Quotation marks

+

Follow these guidelines for quotation marks:

+
    +
  • Restrict use of quotation marks to terms as terms.
  • +
  • Do not use quotation marks for emphasis; use italics for emphasis.
  • +
  • Avoid using single-quote marks.
  • +
+
+
+

Commas and colons

+

This section addresses common use of commas, semicolons, and colons in our +documentation. Refer to one of our preferred references +for further details.

+
+

Use the serial comma

+

When writing a series of items, use the serial comma before the final and and +or to avoid confusion and ambiguity. For example:

+

Use this:

+
Mom, Dad, and I are going to the game.
+
+
+

Not this:

+
Mom, Dad and I are going to the game.
+
+
+
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/reference/compatible-hardware.html b/zh_CN/reference/compatible-hardware.html new file mode 100644 index 000000000..9aa732951 --- /dev/null +++ b/zh_CN/reference/compatible-hardware.html @@ -0,0 +1,1169 @@ + + + + + + + + + + + + + + Compatible Hardware — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Compatible Hardware

+

This document describes hardware that has been tested and confirmed as +compatible with Clear Linux* OS. This list is not comprehensive and will continue to +grow.

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1. Compatible Hardware
Processor SKUPlatform
Intel® Core™ i5-6260U 
Intel® Core™ i5-6560UDell XPS* 13 9350
Intel® Celeron® J3455NUC6CAYS
Intel® Core™ i5-4250U 
Intel® Core™ i7-5557U 
Intel® Core™ i9-7900XGigabyte* X299
Intel® Core™ i3-4130Lenovo Thinkserver* TS140
Intel® Core™ i7-7567UNUC7i7BNH
Intel® Core™ i7-8809GNUC8i7HVK
Intel® Core™ i5-7260UNUC7i5BNH
Intel® Core™ i7-8650UNUC7i7DNKE
Intel® Core™ i5-7300UNUC7i5DNHE
Intel® Xeon® Gold 6138 
Intel® Xeon® E5-2699A v4Dell PowerEdge* R630
Intel® Xeon® E5-2620 v3 
Intel® Core™ i5-6600Gigabyte* Z170X-UD5
Intel® Core™ i5-4250UD54250WYK
Intel® Xeon® E5-2699 v3S2600WT2
Intel® Atom™ J3455NUC6CAYB
Intel® Xeon® Bronze 31040W23H8
Intel® Atom™ C2750SuperMicro* A1SAi
Intel® Atom™ E3825CircuitCo MinnowBoard MAX*
Intel® Core™ i7-8700Gigabyte* H370 WIFI
Intel® Core™ i7-3667ULenovo ThinkPad* X1 Carbon laptop
Intel® Core™ i5-4210UDell XPS* 13 laptop
Intel® Celeron® J3455NUC6CAYB
Intel® Core™ i7-4790Gigabyte* desktop
Intel® Core™ i5-6260UNUC6I6SYH
Intel® Core™ i7-5557UNUC5I7RYH
Intel® Core™ i7-4700MQLenovo ThinkPad* T540p
Intel® Core™ i7-5557UNUC5I7RYB
Intel® Core™ i5-6260UNUC6I5SYH
+

* Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/reference/image-types.html b/zh_CN/reference/image-types.html new file mode 100644 index 000000000..14eaaa1ce --- /dev/null +++ b/zh_CN/reference/image-types.html @@ -0,0 +1,1137 @@ + + + + + + + + + + + + + + Clear Linux* OS image types — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Clear Linux* OS image types

+

Clear Linux* OS offers many types of images for different platforms and environments.

+

The naming convention of a Clear Linux OS image filename is:

+
clear-[version number]-[image type].[compression type]
+
+
+
    +
  • The [version number] field specifies the version number.
  • +
  • The [image type] field specifies the type of image and its corresponding +file format.
  • +
  • The [compression type] field specifies the compression type. Two types of +compressions are used: GNU* zip (.gz) and XZ (.xz).
  • +
+

Table 1 lists the currently available images that are platform independent. +Table 2 lists the currently available images that are platform specific.

+ + ++++ + + + + + + + + + + + + + +
Table 1: Types of platform-independent Clear Linux OS images
Image TypeDescription
live-desktop.img or live-desktop.isoImage for booting to GNOME* desktop to preview or install the OS.
live-server.img or live-server.isoImage for booting to server command prompt to preview or install the OS.
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2: Types of platform-specific Clear Linux OS images
Image TypeDescription
aws.imgImage suitable for use with Amazon* AWS*.
azure.vhdVirtual Hard Disk for use on Microsoft* Azure* cloud platform.
azure-docker.vhdVirtual Hard Disk for use on Microsoft Azure cloud platform with Docker* pre-installed.
azure-machine-learning.vhdVirtual Hard Disk for use on Microsoft Azure cloud platform with the machine-learning-basic bundle installed.
cloudguest.imgImage with generic cloud guest virtual machine (VM) requirements installed.
gce.tarImage with the Google Compute Engine (GCE) specific kernel.
hyperv.vhdxVirtual Hard Disk for use with Microsoft Hyper-V* hypervisor. Includes optimized kernel for Hyper-V.
kvm.imgImage for booting in a simple VM with start_qemu.sh. Includes +optimized kernel for KVM.
kvm-legacy.imgImage for booting in a simple VM using legacy BIOS, if using start_qemu.sh make sure to remove -bios parameter.
pxe.tarImage suitable for use with PXE server.
vmware.vmdkVirtual Machine Disk for VMware* platforms inclduing Player, Workstation, and ESXi.
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/reference/index.html b/zh_CN/reference/index.html new file mode 100644 index 000000000..5d89f2093 --- /dev/null +++ b/zh_CN/reference/index.html @@ -0,0 +1,1064 @@ + + + + + + + + + + + + + + Reference — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Reference

+

This section provides additional information on the Clear Linux OS project and +features.

+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/reference/system-requirements.html b/zh_CN/reference/system-requirements.html new file mode 100644 index 000000000..73387de13 --- /dev/null +++ b/zh_CN/reference/system-requirements.html @@ -0,0 +1,1121 @@ + + + + + + + + + + + + + + 建议的最低系统要求 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ + + + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/search.html b/zh_CN/search.html new file mode 100644 index 000000000..8bc709867 --- /dev/null +++ b/zh_CN/search.html @@ -0,0 +1,1059 @@ + + + + + + + + + + + + + + 搜索 — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ + + + +
+ +
+ +
+ +
+
+ + +
+ +
+

+ © Copyright 2019. + + 最后更新于 1月 17, 2020. + + +

+
+ Built with Sphinx using a theme provided by Read the Docs. + +
+ +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/searchindex.js b/zh_CN/searchindex.js new file mode 100644 index 000000000..873b06454 --- /dev/null +++ b/zh_CN/searchindex.js @@ -0,0 +1,1400 @@ +Search.setIndex({docnames:["FAQ/index","about","disclaimers","documentation_license","get-started/bare-metal-install-desktop","get-started/bare-metal-install-server","get-started/bootable-usb","get-started/cloud-install/aws-web","get-started/cloud-install/azure","get-started/cloud-install/gce","get-started/cloud-install/qingcloud","get-started/compatibility-check","get-started/index","get-started/install-configfile","get-started/virtual-machine-install/hyper-v","get-started/virtual-machine-install/kvm","get-started/virtual-machine-install/virtualbox-cl-installer","get-started/virtual-machine-install/vmw-player","get-started/virtual-machine-install/vmw-player-preconf","get-started/virtual-machine-install/vmware-esxi-install-cl","get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image","guides/clear/autoproxy","guides/clear/autospec","guides/clear/bundles","guides/clear/compatible-kernels","guides/clear/debug","guides/clear/ister","guides/clear/mixer","guides/clear/security","guides/clear/stateless","guides/clear/swupd","guides/clear/telemetrics","guides/index","guides/kernel/kernel-development","guides/kernel/kernel-modules","guides/kernel/kernel-modules-dkms","guides/maintenance/architect-lifecycle","guides/maintenance/assign-static-ip","guides/maintenance/bulk-provision","guides/maintenance/cpu-performance","guides/maintenance/deploy-at-scale","guides/maintenance/developer-workstation","guides/maintenance/download-verify-decompress","guides/maintenance/enable-user-space","guides/maintenance/fix-broken-install","guides/maintenance/hostname","guides/maintenance/increase-virtual-disk-size","guides/maintenance/query-upstream","guides/maintenance/resource-limits","guides/maintenance/restart","guides/maintenance/time","guides/maintenance/validate-signatures","guides/network/custom-clear-container","guides/network/dpdk","guides/network/ipxe-install","guides/network/network-bonding","guides/network/openssh-server","guides/network/vnc","guides/stacks/dars","guides/stacks/dlrs/dlrs","guides/stacks/greengrass","index","reference/bundles/bundles","reference/collaboration/collaboration","reference/collaboration/structure-formatting","reference/collaboration/writing-guide","reference/compatible-hardware","reference/image-types","reference/index","reference/system-requirements","tutorials/apache-hadoop","tutorials/apache-spark","tutorials/archive/kata_migration","tutorials/dlrs","tutorials/docker","tutorials/flatpak","tutorials/fmv","tutorials/index","tutorials/kata","tutorials/kubernetes","tutorials/kubernetes-bp","tutorials/nvidia","tutorials/nvidia-cuda","tutorials/parallels","tutorials/proxy","tutorials/redis","tutorials/smb","tutorials/smb-desktop","tutorials/tensorflow-machine-learning","tutorials/wordpress","tutorials/wordpress/web-server-install","tutorials/wordpress/wp-install","tutorials/yubikey-u2f"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":1,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.todo":1,sphinx:55},filenames:["FAQ/index.rst","about.rst","disclaimers.rst","documentation_license.rst","get-started/bare-metal-install-desktop.rst","get-started/bare-metal-install-server.rst","get-started/bootable-usb.rst","get-started/cloud-install/aws-web.rst","get-started/cloud-install/azure.rst","get-started/cloud-install/gce.rst","get-started/cloud-install/qingcloud.rst","get-started/compatibility-check.rst","get-started/index.rst","get-started/install-configfile.rst","get-started/virtual-machine-install/hyper-v.rst","get-started/virtual-machine-install/kvm.rst","get-started/virtual-machine-install/virtualbox-cl-installer.rst","get-started/virtual-machine-install/vmw-player.rst","get-started/virtual-machine-install/vmw-player-preconf.rst","get-started/virtual-machine-install/vmware-esxi-install-cl.rst","get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.rst","guides/clear/autoproxy.rst","guides/clear/autospec.rst","guides/clear/bundles.rst","guides/clear/compatible-kernels.rst","guides/clear/debug.rst","guides/clear/ister.rst","guides/clear/mixer.rst","guides/clear/security.rst","guides/clear/stateless.rst","guides/clear/swupd.rst","guides/clear/telemetrics.rst","guides/index.rst","guides/kernel/kernel-development.rst","guides/kernel/kernel-modules.rst","guides/kernel/kernel-modules-dkms.rst","guides/maintenance/architect-lifecycle.rst","guides/maintenance/assign-static-ip.rst","guides/maintenance/bulk-provision.rst","guides/maintenance/cpu-performance.rst","guides/maintenance/deploy-at-scale.rst","guides/maintenance/developer-workstation.rst","guides/maintenance/download-verify-decompress.rst","guides/maintenance/enable-user-space.rst","guides/maintenance/fix-broken-install.rst","guides/maintenance/hostname.rst","guides/maintenance/increase-virtual-disk-size.rst","guides/maintenance/query-upstream.rst","guides/maintenance/resource-limits.rst","guides/maintenance/restart.rst","guides/maintenance/time.rst","guides/maintenance/validate-signatures.rst","guides/network/custom-clear-container.rst","guides/network/dpdk.rst","guides/network/ipxe-install.rst","guides/network/network-bonding.rst","guides/network/openssh-server.rst","guides/network/vnc.rst","guides/stacks/dars.rst","guides/stacks/dlrs/dlrs.rst","guides/stacks/greengrass.rst","index.rst","reference/bundles/bundles.rst","reference/collaboration/collaboration.rst","reference/collaboration/structure-formatting.rst","reference/collaboration/writing-guide.rst","reference/compatible-hardware.rst","reference/image-types.rst","reference/index.rst","reference/system-requirements.rst","tutorials/apache-hadoop.rst","tutorials/apache-spark.rst","tutorials/archive/kata_migration.rst","tutorials/dlrs.rst","tutorials/docker.rst","tutorials/flatpak.rst","tutorials/fmv.rst","tutorials/index.rst","tutorials/kata.rst","tutorials/kubernetes.rst","tutorials/kubernetes-bp.rst","tutorials/nvidia.rst","tutorials/nvidia-cuda.rst","tutorials/parallels.rst","tutorials/proxy.rst","tutorials/redis.rst","tutorials/smb.rst","tutorials/smb-desktop.rst","tutorials/tensorflow-machine-learning.rst","tutorials/wordpress.rst","tutorials/wordpress/web-server-install.rst","tutorials/wordpress/wp-install.rst","tutorials/yubikey-u2f.rst"],objects:{},objnames:{},objtypes:{},terms:{"0 ":[3,5,6,8,15,16,27,46,52,53,59,60,62,65,73,75,81,85],"0%":30,"0)":[31,53,76],"0,":[53,73],"0-":[15,22,31,47,52,53,58,75,79,85],"0.":[8,16,22,52,57,59,70,73,74,79],"0/":[22,52,79],"00 ":[16,73],"00-":8,"00.":53,"000 ":31,"0000-":37,"00000":70,"00000000":37,"000000000 ":76,"000000000000 ":37,"0000:":53,"0000\n":76,"0022-":15,"00:":[8,38,47,53],"00\"":8,"00\n":47,"00bf4f8c8c0ec006633a48fd9ee746b30bb9df17\n":33,"01-":76,"01/":62,"018536+":8,"01:":[38,53],"01\n":47,"02.":8,"0200]":53,"02:":[38,47],"02\n":47,"03.":53,"03:":[8,38,47,53],"04 ":15,"04.":53,"04:":[8,38,47],"04\n":73,"05,":38,"05.":52,"0501-":33,"0502-":33,"05:":[47,76],"06.":[59,73],"0666)":82,"07\n":73,"08:":76,"08d400baffde\n":52,"09-":76,"0:":47,"0;":[31,76],"0\"":[13,53,70],"0\n":[8,27,33,35,47,52,53,54,58,73,76],"0c1282\n":6,"0ceae320279b\n":52,"0d-":8,"0day ":62,"0day\n":62,"0w23h8":66,"0x3 ":53,"0x402 ":15,"0xf ":53,"1 ":[4,5,6,7,8,11,15,16,17,19,20,22,27,30,31,36,38,41,42,44,46,47,51,52,53,54,57,60,64,67,69,70,73,79,82,86],"1)":[31,53,57,59,69,70,73,75,76],"1,":[15,27,31,38,46,53,60,73,79],"1-":[27,31,60,64],"1.":[8,27,31,35,38,47,51,53,55,58,59,62,64,65,70,73,75,79,83,88,90,91],"1/":[52,62,73],"10 ":[5,7,26,27,31,57,60],"10":[4,5,7,9,14,16,17,18,19,20,27,57],"10.":[8,18,71,73,79,82],"100 ":31,"100":85,"100%":[30,52],"100.":[73,79],"1000 ":[31,85],"1000":[73,85],"1000000 ":58,"1000000:":58,"1000000\n":76,"1000\n":73,"1001-":33,"10022 ":15,"10022":15,"100:":71,"100\"":71,"101 ":76,"1024 ":53,"103.":73,"104.":73,"1080\"":79,"10:":20,"10\n":56,"10]":88,"10g":15,"10gb ":15,"11 ":[5,7,62,76],"11":[4,5,7,9,16,17,18,19,20],"11.":[59,62,73,75,76],"110.":73,"111,":76,"112,":76,"113 ":73,"113\n":73,"114 ":76,"11:":76,"12 ":[7,8,62],"12":[4,5,7,8,9,16,18,19,20,59,65,73],"12-":8,"12.":[52,58,73],"122 ":31,"1234":57,"127.":[52,57,59,73,74,79],"128mb ":[17,19,69],"12_compat":[59,73],"13 ":[5,7,47,62,66],"13":[4,5,7,9,18,19,20],"13-":0,"13.":[8,22,73,76],"13330":53,"13t23:":8,"14 ":[5,18,62,83],"14":[4,5,7,9,18,19],"14%":52,"14.":[6,8,31,73],"144 ":73,"144\n":73,"147 ":76,"148,":76,"14\n":83,"15 ":[8,17,30,31,64,73],"15":[4,5,9,13,18,19,31],"15.":52,"150)":76,"150,":76,"15000 ":47,"150m\"":13,"150mb":[4,5],"151 ":76,"1521":53,"1521\"":53,"1521]":53,"1539023189\n":31,"1539023621\n":31,"15700/":26,"15780.":8,"159,":76,"15960.":8,"15g ":6,"15m\n":54,"15th ":63,"16 ":[6,47],"16":[4,5,9,19,54,79],"16-":[59,73],"16.":73,"16050.":8,"16150.":8,"162 ":76,"162,":76,"1648877 ":88,"16500.":8,"168.":[27,38,54,55,57],"16810.":8,"16:":76,"16e3ed0df8da\n":52,"16m\"":27,"17 ":6,"17":[4,5,9],"17%":88,"17.":52,"17/":62,"170,":76,"173 ":76,"174,":76,"175\n":54,"17650\n":52,"17660\n":52,"17790\n":52,"177\n":57,"17820\n":52,"17850\n":52,"17870\n":52,"17:":76,"18":[4,5,9],"18.":[15,45,59,73],"180 ":65,"18080.":8,"181)":76,"184'":7,"184)":7,"184.":7,"18620.":8,"187 ":76,"18860.":8,"18940 ":7,"19 ":[4,62],"19":[4,5,9],"19.":[15,73],"190 ":76,"19100":7,"192,":76,"192.":[27,38,54,55,57],"195 ":76,"19600":8,"197 ":76,"197,":76,"1985 ":62,"1995.":62,"19:":[62,76],"19b4411cf4bd\n":52,"1:":[7,38,59,64,73,74,75,83,86,87,88,90,91],"1;":31,"1<":70,"1>":50,"1\"":[53,59,73],"1\n":[8,13,31,47,54,64,73],"1]":[60,75],"1_linux.":73,"1e:":53,"1g ":6,"1s\n":55,"2 ":[0,4,5,6,7,8,11,13,14,15,17,18,19,20,27,31,42,45,46,53,54,57,62,64,67,69],"2)":[69,75,85],"2,":[27,38,46,54],"2-":[45,53],"2.":[5,7,16,33,47,53,57,58,59,62,65,70,73,75,83,86,88],"2/":[52,62],"20 ":[5,27,31,46,62,69,79],"20":[5,9,27],"20.":[33,47],"200.":[71,79],"2000x1200 ":57,"2000x1200\n":57,"2001-":33,"201/":55,"2012-":[8,52],"2017 ":[8,26,52],"2017":8,"2017-":[8,76],"2018,":62,"2019 ":[32,47],"2019_r1)":73,"20450 ":46,"2048 ":[16,60],"2048,":53,"2048kb/":53,"2048mb ":19,"207 ":[73,76],"207\n":73,"209-":7,"209.":7,"21 ":[59,73],"21":5,"21.":[47,76],"21000 ":47,"215 ":76,"215)":76,"21:":76,"22 ":[5,32,56,64],"22":5,"22,":15,"2236710e4fc11e4a646ce956c7802788\n":31,"224 ":73,"224)":73,"224,":73,"22533 ":70,"22674 ":70,"227,":60,"227]":60,"22854 ":70,"229)":76,"22\n":[73,84],"23 ":[59,73],"23":5,"23.":47,"23046 ":70,"23150 ":70,"23300\n":30,"234]":[4,5],"237180 ":30,"2375 ":15,"2375-":15,"24 ":5,"24":5,"244.":79,"24430\n":30,"245 ":8,"245":8,"245'":8,"245)":8,"245\"":8,"247.":73,"248.":73,"249)":76,"24\n":[55,73],"25":5,"25.":[27,57],"25180\n":31,"253,":54,"255 ":4,"255.":[54,73],"256;":76,"256]":76,"256m":5,"256mb":[4,5],"26":5,"26)":76,"2620 ":66,"26228 ":70,"26240 ":73,"26240":59,"2699 ":66,"2699a ":66,"27 ":[5,76],"27":5,"27)":76,"27000,":78,"2723b7d20716\n":52,"27550 ":59,"27550.":73,"279 ":73,"279505430 ":76,"279\n":73,"28 ":88,"28":5,"28%":52,"284)":76,"28881 ":88,"28g ":6,"29":5,"29790 ":52,"2:":[6,13,22,73,75,83,86,87,88,90,91],"2;":13,"2>":[50,57,79],"2\n":[13,31,52,57,75],"2]":[75,88],"2d ":62,"2f070e8e71679f2b1f28794e3a6c42ee\n":31,"2g ":6,"2gb ":[17,19],"2gb":17,"2gb)":19,"2n ":8,"2nd ":[73,92],"3 ":[4,6,7,8,11,15,26,46,47,53,54,57,62,65,69,70],"3)":[31,59,73],"3,":[27,38,46,53,60,73],"3-":[22,37,47,73],"3.":[6,8,16,18,19,20,47,52,57,59,62,64,73,75,76,83,87,88,90],"3/":52,"30 ":[5,15,47],"30":5,"30-":55,"300 ":46,"300.":71,"30010":13,"30010-":13,"30010/":13,"30140 ":83,"30140-":83,"309 ":73,"309\n":73,"30;":[59,73],"30]":31,"30g ":6,"31 ":[4,5],"31":5,"3104":66,"316 ":76,"32 ":[6,46,59,62,73],"32":5,"32.":16,"32\n":73,"32bit ":62,"32gb ":17,"32m ":46,"32m\"":[13,27,46],"33 ":6,"33,":76,"333 ":76,"335.":6,"33974 ":52,"33982 ":52,"33\n":73,"34 ":47,"34":13,"34-":7,"34.":7,"340 ":73,"340\n":73,"345 ":47,"346676+":8,"35\n":73,"36 ":76,"366 ":73,"3667u":66,"366\n":73,"37 ":13,"37-":8,"377.":52,"381f4b604537b2cb7fb5b583a8a847a50c4ed776f8e677e2354932eb82f18898\n":[59,73],"38792 ":8,"39-":7,"39.":7,"3:":[27,75,83,87,88,90,91],"3\n":[13,57,73,91],"3]":[60,88],"3a-":8,"3ad ":55,"3ad\n":55,"3bb7-":6,"3d ":62,"3de":28,"3dprinting\n":62,"3e634d6e0792\n":52,"3g ":6,"3g.":62,"3g\n":62,"3q4d:":52,"4 ":[5,6,7,31,47,52,53,59,62,69,73,75,91],"4,":15,"4-":90,"4.":[3,8,16,17,31,33,45,47,52,58,59,62,69,73,75,76,83,88,90],"4/":52,"40 ":31,"400 ":7,"404 ":[27,73],"404.":31,"404\n":73,"4096 ":[15,53],"4130":66,"42%":52,"42.":76,"4200":56,"4210u":66,"422":0,"423 ":30,"4250u":66,"429":0,"42b7-":6,"43gb\n":[59,73],"44 ":76,"443\"":79,"445\"":79,"4542 ":88,"46.":47,"4650u ":31,"47 ":47,"4700mq":66,"4790":66,"48 ":6,"49 ":6,"49:":76,"4:":[15,16,75,83,88,90,91],"4\"":8,"4\n":[8,31,47,52,55],"4]":88,"4b0ca67300727477913c331ff124928a98bcf2fb12c011a855f17cd73137a890 ":51,"4d0d60207a904ebbab96680a51ac1339\n":45,"4f34-":6,"4g ":6,"4m ":6,"4m":6,"5 ":[4,6,7,19,20,32,46,57,60,62,73,75],"5)":76,"5,":[59,73,76],"5-":60,"5.":[34,35,47,57,65,81,83,88,90,91],"50 ":[6,47],"50%":30,"50-":[48,78],"50.":79,"50000\n":54,"50c212235d3c33a3c035e586ff14359d03895c7bc701bb5dfd62dbe0e91fb486":[59,73],"51 ":[6,13],"51-":72,"512 ":[46,59,73],"512m ":46,"512m\"":[38,46],"528 ":47,"52\"":27,"53 ":62,"54":57,"5414c3a12993 ":52,"5414c3a12993\n":52,"5557u":66,"559 ":47,"57%":52,"59)":31,"59.":8,"5900 ":57,"5900":57,"5900)":57,"5900\n":57,"5901 ":57,"5902 ":57,"5902":57,"5903 ":57,"5905":57,"5924":15,"5924,":15,"59\"":8,"5:":[83,88,90,91],"5\"":57,"5class ":60,"5class.":60,"5g ":[6,46],"5g":27,"5g\"":27,"5mb\n":52,"6 ":[6,7,8,16,57,60,75,76,88,90],"6-":76,"6.":[8,16,19,20,57,73,83,88,90],"6/":30,"60,":54,"60-":79,"60000/":38,"600mb ":[19,69],"6138":66,"616mb":52,"61c178102228 ":[59,73],"6260u":66,"628 ":47,"62gib\n":52,"63 ":[4,5,45],"63.":73,"631":0,"632.":45,"635 ":73,"6357dbd072bea7287c5f0b85d31d70df344f5d8843fbfa09":[59,73],"635\n":73,"6379.":85,"63\n":73,"64 ":[16,69],"64":45,"64-":[11,17,18,19,20,58,81,83],"6560u":66,"6600":66,"67:":53,"69.":73,"691544026 ":76,"696\n":33,"6:":[83,88,90,91],"6\"":57,"6g ":6,"6h\n":54,"7 ":[6,7,8,47,57,58,76,82,86,90,91],"7-":[42,52,62],"7.":[6,8,62,83,88,90],"70":92,"70-":[37,54,92],"704f3382-":6,"7077":71,"70ghz\n":31,"71%":52,"71-":31,"71b60f15003e\n":52,"723)":76,"7238f35abcd0\n":52,"7260u":66,"7300u":66,"742192751c1a\n":52,"75.":73,"7567u":66,"7694989e97de\n":52,"76gb":[59,73],"777 ":27,"78 ":64,"79 ":76,"7900x":66,"7:":[7,83,88,90,91],"7g ":6,"7hz3\n":52,"7tnomss9w7gjfpjzy75hgbp+":70,"7zip ":16,"7zip":16,"8 ":[4,5,6,7,46,47,57,60,62,73,75,91],"8(":60,"8,":76,"8-":45,"8.":[33,46,58,62,70,73,83,88],"8/":33,"80 ":74,"80)":74,"80-":54,"8000 ":73,"8000:":73,"8000\"":73,"802":37,"802.":55,"806.":52,"8080 ":74,"8080":[71,74],"8080:":74,"8086 ":53,"8086:":53,"8192b":31,"82757ec1648a ":[59,73],"82757ec1648a":[59,73],"82757ec1648a906c504e50e43df74ad5fc333deee043dbfe6559c86908fac15e\n":[59,73],"827\n":[59,73],"82\n":73,"83.":73,"84 ":73,"846e526765e3 ":[59,73],"84\n":73,"85%":52,"8650u":66,"87.":73,"8700":66,"88%":52,"8809g":66,"8888 ":[59,73],"8888":59,"8888.":73,"8888/":[59,73],"8888:":[59,73],"89\n":73,"8:":[6,46,83,88,90,91],"8\"":70,"8\n":[13,22,33,52],"8]":88,"8ead5f2c0c33\n":52,"8g ":[6,46],"8g\"":46,"9 ":[4,5,7,47,57,62],"9(":60,"9.":[62,73,83],"9000 ":55,"9000":55,"9000<":70,"9048e5e50717ea4497b757314bad98ea3763c145)":52,"91.":[8,73],"913802006 ":76,"92\n":52,"9350":66,"94 ":[4,5],"954m ":6,"960c184f-":6,"96a8565d0ca54b0c80364a1e5e7b0f88 ":7,"97.":[73,88],"97e+":70,"98d3514e5a984e8cbbdf46a2f0d6b397\n":45,"99%":88,"9912422 ":88,"9:":[18,76,83],"9]":[15,22],"9a-":79,"9c2d8d184e5da67c95d601382adf14862e4f2228)":52,"9g ":6,"\u4e00\u4e2a ":27,"\u4e00\u4e2a\u4ece ":58,"\u4e00\u4e2a\u5305\u542b\u8f6f\u4ef6 ":36,"\u4e00\u4e2a\u5f00\u53d1 ":40,"\u4e00\u4e9b\u5185\u6838\u6a21\u5757\u63d0\u4f9b\u5355\u72ec\u7684\u5f52\u6863\u6587\u4ef6\u6765\u4e13\u95e8\u652f\u6301 ":35,"\u4e00\u53f0\u6839\u636e\u4f8b ":27,"\u4e00\u5f00\u59cb\u5148\u63d0\u53d6 ":33,"\u4e00\u5f00\u59cb\u53ea\u5305\u542b\u6700\u5c11\u7684 ":27,"\u4e00\u5f00\u59cb\u5e76\u6ca1\u6709\u73b0\u6210\u7684\u9ed8\u8ba4\u7528\u6237\u540d\u6216 ":28,"\u4e00\u8282\u4e86\u89e3\u6709\u5173\u4f7f\u7528 ":7,"\u4e00\u8282\u5f15\u5bfc\u7528\u6237\u4e86\u89e3 ":12,"\u4e0a ":6,"\u4e0a\u4f20 ":[19,20,60],"\u4e0a\u521b\u5efa ":[9,12],"\u4e0a\u5220\u9664\u6240\u521b\u5efa\u7684 ":10,"\u4e0a\u5220\u9664\u6240\u7533\u8bf7\u7684\u516c\u7f51ip":10,"\u4e0a\u5b89\u88c5 ":16,"\u4e0a\u6258\u7ba1\u7684\u6bcf\u4e2a ":38,"\u4e0a\u6784\u5efa ":27,"\u4e0a\u6e38 ":33,"\u4e0a\u7269\u7406\u88f8\u673a\u7cfb\u7edf\u7684\u4e00\u79cd\u65b9\u5f0f\u662f\u4f7f\u7528\u9884\u5f15\u5bfc\u6267\u884c\u73af\u5883 ":40,"\u4e0a\u767b\u5f55 ":9,"\u4e0a\u7684 ":[12,22,27,30,33,34,35,57,62],"\u4e0a\u7684\u5b9e\u65f6\u684c\u9762\u6620\u50cf\u4fee\u590d\u635f\u574f\u7684 ":44,"\u4e0a\u7684\u7f51\u5361\u8fde\u63a5\u5230\u5e73\u53f0 ":53,"\u4e0a\u8fd0\u884c ":24,"\u4e0a\u8fd0\u884c\u7684 ":16,"\u4e0a\u8ff0\u793a\u4f8b\u4e2d\u663e\u793a\u7684\u663e\u793a ":57,"\u4e0a\u90e8\u7f72\u63a8\u7406\u529f\u80fd ":60,"\u4e0a\u90e8\u7f72\u9884\u914d\u7f6e\u7684 ":18,"\u4e0a\u91c7\u7528\u4e86 ":39,"\u4e0a\u9664 ":5,"\u4e0b\u4e00\u6b65\u4e2d\u7528\u6b64\u4fe1\u606f\u4ee3\u66ff ":15,"\u4e0b\u4f8b\u5c06\u672a\u538b\u7f29\u7684\u6620\u50cf\u70e7\u5f55\u81f3 ":6,"\u4e0b\u627e\u5230 ":26,"\u4e0b\u62c9\u83dc\u5355\u65c1\u8fb9\u7684\u84dd\u8272 ":16,"\u4e0b\u8868\u5217\u51fa\u4e86 ":60,"\u4e0b\u8f7d ":[4,6,9,11,13,15,21,22,26,33,51,53,54,59,60],"\u4e0b\u8f7d\u4e0e\u60a8\u7684 ":42,"\u4e0b\u8f7d\u5230 ":60,"\u4e0b\u8f7d\u5230\u6d4f\u89c8\u5668\u4e2d\u5b9a\u4e49\u7684 ":7,"\u4e0b\u8f7d\u548c\u89e3\u538b\u7f29\u6700\u65b0\u7684 ":14,"\u4e0b\u8f7d\u5b9e\u65f6\u684c\u9762\u6620\u50cf\u5e76\u5c06\u5176\u523b\u5f55\u5230 ":[4,44],"\u4e0b\u8f7d\u5e76\u5728 ":44,"\u4e0b\u8f7d\u5e76\u5b89\u88c5 ":[16,42],"\u4e0b\u8f7d\u6216\u521b\u5efa ":53,"\u4e0b\u8f7d\u6240\u9700\u6620\u50cf\u7684 ":26,"\u4e0b\u8f7d\u6700\u65b0\u7684 ":13,"\u4e0b\u8f7dssh":10,"\u4e0b\u8ff0\u5904\u7406\u5668\u5bb6\u65cf\u7ecf\u8fc7\u9a8c\u8bc1\u53ef\u4ee5\u8fd0\u884c ":69,"\u4e0b\u8ff0\u5b89\u88c5\u65b9\u6cd5\u9700\u8981\u901a\u8fc7\u6709\u7ebf ":5,"\u4e0b\u9762\u662f\u4e00\u4e2a\u5177\u6709 ":53,"\u4e0b\u9762\u6807\u6ce8\u4e3a ":16,"\u4e0b\u9762\u7684\u65b9\u6cd5\u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177 ":37,"\u4e0b\u9762\u7684\u793a\u4f8b\u6307\u793a ":49,"\u4e0b\u9762\u7684\u793a\u4f8b\u663e\u793a ":57,"\u4e0b\u9762\u7ee7\u7eed\u4ecb\u7ecd ":5,"\u4e0d\u4f1a\u4e3a\u4f7f\u7528\u9ed8\u8ba4\u7f51\u7edc\u521b\u5efa\u7684\u865a\u62df\u4e3b\u673a\u81ea\u52a8\u5206\u914d\u516c\u7f51ip":10,"\u4e0d\u4f1a\u521b\u5efa ":60,"\u4e0d\u4f1a\u901a\u8fc7\u542f\u7528 ":14,"\u4e0d\u4f7f\u7528 ":21,"\u4e0d\u5141\u8bb8\u4f7f\u7528\u7b26\u53f7 ":9,"\u4e0d\u518d\u63d0\u4f9b\u65e7\u7248 ":26,"\u4e0d\u542b ":35,"\u4e0d\u5e26\u53c2\u6570\u8fd0\u884c ":21,"\u4e0d\u662f ":57,"\u4e0d\u671f\u671b\u663e\u793a ":57,"\u4e0d\u8981\u4f7f\u7528\u60a8\u7684 ":57,"\u4e0d\u8981\u4f7f\u7528\u6700\u521d\u672a\u8f6c\u6362\u7684 ":20,"\u4e0d\u8981\u5b89\u88c5 ":16,"\u4e0d\u9700\u8981\u66f4\u6539 ":57,"\u4e0e ":[11,21,27,31,42,51,57],"\u4e0e\u5176\u4ed6\u7684 ":61,"\u4e0e\u8fd0\u884c\u7528\u4e8e\u5305\u7ba1\u7406\u7684 ":43,"\u4e13\u7528\u7f51\u7edc\u4e0a\u7684 ":54,"\u4e14 ":[27,31],"\u4e14\u5df2\u7ed1\u5b9a\u4e86\u516c\u7f51ip":10,"\u4e14\u5e94\u5728\u4e0d\u518d\u9700\u8981\u65f6\u901a\u8fc7 ":31,"\u4e14\u9ed8\u8ba4\u5c06\u8bb0\u5f55\u53d1\u9001\u5230 ":31,"\u4e24\u4e2a ":31,"\u4e24\u4e2a\u5e73\u53f0\u4f7f\u7528 ":53,"\u4e24\u4e2a\u6620\u50cf\u90fd\u5fc5\u987b\u5305\u542b ":53,"\u4e2a ":15,"\u4e2a\u865a\u62df ":16,"\u4e2d\u4e5f\u53ef\u4ee5\u4f7f\u7528\u8be5\u6b3e ":26,"\u4e2d\u4f7f\u7528\u6df1\u5ea6\u5b66\u4e60\u53c2\u8003\u5806\u6808\u8fd0\u884c ":59,"\u4e2d\u518d\u6b21\u5217\u51fa ":27,"\u4e2d\u5217\u51fa\u7684 ":54,"\u4e2d\u521b\u5efa ":56,"\u4e2d\u521b\u5efa\u4e00\u4e2a\u6307\u5411 ":49,"\u4e2d\u521b\u5efa\u7684\u6620\u50cf\u53ef\u4ee5\u5728 ":27,"\u4e2d\u534f\u52a9\u81ea\u52a8\u521b\u5efa\u548c\u7ef4\u62a4 ":22,"\u4e2d\u542f\u7528 ":[15,17,18,56],"\u4e2d\u5b8c\u6210 ":60,"\u4e2d\u6240\u793a\u7684 ":7,"\u4e2d\u6240\u793a\u7684\u4e0d\u540c\u5e73\u53f0\u914d\u7f6e\u8fd0\u884c ":7,"\u4e2d\u6240\u8bbe ":27,"\u4e2d\u6240\u8ff0\u6b65\u9aa4\u76f4\u63a5\u5728 ":20,"\u4e2d\u627e\u5230 ":58,"\u4e2d\u627e\u5230\u53ef\u7528\u7684 ":8,"\u4e2d\u627e\u5230\u5e76\u9009\u62e9 ":7,"\u4e2d\u6307\u5b9a\u7684\u8ba2\u9605\u4e3b\u9898\u5411 ":60,"\u4e2d\u63d0\u4f9b\u7684 ":54,"\u4e2d\u63d0\u4f9b\u7684\u6240\u6709\u53ef\u7528 ":8,"\u4e2d\u663e\u793a\u4e86 ":7,"\u4e2d\u663e\u793a\u7684 ":7,"\u4e2d\u663e\u793a\u7684\u5bf9\u8bdd\u6846\u4e2d\u7684\u8bf4\u660e\u4f7f\u7528 ":7,"\u4e2d\u663e\u793a\u7684\u9875\u9762 ":8,"\u4e2d\u67e5\u627e\u5b8c\u6574 ":27,"\u4e2d\u68c0\u67e5\u5f15\u5bfc\u671f\u95f4\u4f7f\u7528\u7684\u53c2\u6570\u4ee5\u627e\u5230 ":38,"\u4e2d\u751f\u6210\u548c\u5b89\u88c5\u7528\u6237 ":9,"\u4e2d\u7684 ":[21,27,33,39,47,52,53,57,59,60],"\u4e2d\u7684\u5206\u7c7b\u6216\u5bf9\u8c61\u68c0\u6d4b ":60,"\u4e2d\u7684\u53d8\u91cf\u7531 ":27,"\u4e2d\u7684\u5927\u591a\u6570\u5305\u901a\u5e38\u4f7f\u7528 ":33,"\u4e2d\u7684\u5b89\u88c5\u811a\u672c\u4e3a ":16,"\u4e2d\u7684\u6240\u6709 ":9,"\u4e2d\u7684\u6b65\u9aa4 ":60,"\u4e2d\u7684\u8bf4\u660e\u8bbe\u7f6e ":59,"\u4e2d\u7684\u8fdc\u7a0b\u7cfb\u7edf\u65e5\u5fd7\u8bb0\u5f55\u53ef\u901a\u8fc7 ":40,"\u4e2d\u7684\u9065\u6d4b\u4e3a ":31,"\u4e2d\u7684\u9065\u6d4b\u662f\u7528\u4e8e\u6536\u96c6\u6765\u81ea\u6b63\u5728\u8fd0\u884c\u7684 ":31,"\u4e2d\u83b7\u53d6\u6700\u65b0\u7684 ":18,"\u4e2d\u8bbe\u7f6e ":[35,53],"\u4e2d\u8f93\u5165\u6709\u6548\u7684 ":5,"\u4e2d\u8fd0\u884c ":60,"\u4e2d\u9009\u62e9 ":[4,16],"\u4e2d\u901a\u5e38\u53ef\u4ee5\u9650\u5236\u6216\u7981\u7528 ":39,"\u4e2d\u9700\u8981\u521b\u5efa\u65b0\u7684 ":16,"\u4e3a ":[35,53,54,56,57,60],"\u4e3a\u4e0b\u5217 ":24,"\u4e3a\u4e0d\u540c\u5e73\u53f0\u548c\u73af\u5883\u63d0\u4f9b\u591a\u79cd\u7c7b\u578b\u7684 ":42,"\u4e3a\u4e13\u7528\u7f51\u7edc\u7684\u7f51\u7edc\u9002\u914d\u5668\u5206\u914d\u4e00\u4e2a\u9759\u6001 ":54,"\u4e3a\u4e86\u5f15\u5bfc ":20,"\u4e3a\u4e86\u5f15\u5bfc\u65b0\u5b89\u88c5\u7684 ":19,"\u4e3a\u4e86\u80fd\u4ee5 ":43,"\u4e3a\u4e86\u8ba9 ":27,"\u4e3a\u524d ":60,"\u4e3a\u53ef\u9009\u9879 ":5,"\u4e3a\u5c06 ":15,"\u4e3a\u5de5\u4f5c\u8d1f\u8f7d\u751f\u6210 ":59,"\u4e3a\u65b0\u7684 ":60,"\u4e3a\u6784\u5efa\u57fa\u4e8e ":40,"\u4e3a\u6839\u6587\u4ef6\u7cfb\u7edf ":46,"\u4e3a\u751f\u4ea7\u8ba1\u7b97\u673a\u63d0\u4f9b\u66f4\u65b0\u5185\u5bb9\u7684 ":40,"\u4e3a\u7ec4\u5408\u521b\u5efa\u65b0\u7684 ":27,"\u4e3a\u83b7\u5f97 ":17,"\u4e3a\u865a\u62df\u673a\u63d0\u4f9b ":15,"\u4e3b\u673a ":57,"\u4e3b\u673a\u4e0a\u4e34\u65f6\u542f\u7528 ":20,"\u4e3b\u673a\u4e0a\u8fd0\u884c\u7684 ":20,"\u4e3b\u673a\u4e0a\u90e8\u7f72\u9884\u914d\u7f6e\u7684 ":20,"\u4e3b\u673a\u4e0a\u914d\u7f6e\u548c\u542f\u52a8 ":57,"\u4e3b\u673a\u4e4b\u95f4\u8bbe\u7f6e\u4e00\u4e2a ":57,"\u4e3b\u673a\u5ba2\u6237\u7aef\u542f\u7528 ":20,"\u4e3b\u673a\u5e76\u83b7\u5f97 ":57,"\u4e3b\u673a\u5efa\u7acb ":57,"\u4e3b\u673a\u6216\u8fde\u63a5\u5230 ":20,"\u4e3b\u9898\u53ef\u80fd\u5305\u62ec\u7528\u4e8e\u5206\u7c7b\u793a\u4f8b\u7684 ":60,"\u4e4b\u4e0a\u5c06 ":24,"\u4e4b\u4e0a\u6216 ":18,"\u4e4b\u540e\u5982\u56fe13\u901a\u8fc7\u5bfc\u822a\u680f\u70b9\u51fb ":10,"\u4e4b\u540e\u5c06\u8df3\u8f6c\u5230\u7533\u8bf7\u516c\u7f51ip":10,"\u4e4b\u540e\u70b9\u51fb\u56fe1\u4e2d\u6240\u793a\u7684 ":10,"\u4e4b\u5916\u4f7f\u7528 ":33,"\u4e5f\u4e0d\u4f1a\u5bf9\u8be5 ":51,"\u4e5f\u4e0d\u80fd\u7528\u4f5c\u60a8\u7684 ":40,"\u4e5f\u53ef\u4ee5\u4f7f\u7528 ":8,"\u4e5f\u53ef\u4ee5\u5feb\u901f\u6d4b\u8bd5 ":10,"\u4e5f\u53ef\u4ee5\u660e\u786e\u662f\u5426\u5df2\u5c4f\u853d ":21,"\u4e5f\u53ef\u4ee5\u70b9\u51fb\u865a\u62df\u673a\u5b9e\u4f8b\u9875\u4e0a\u7684 ":9,"\u4e5f\u53ef\u4ee5\u9009\u62e9\u8981\u4ece\u4e2d\u542f\u52a8\u7684\u5176\u4ed6\u7248\u672c\u6216 ":27,"\u4e5f\u53ef\u5728 ":[31,40],"\u4e5f\u79f0\u4e3a ":[8,38],"\u4e86\u89e3 ":[22,27,35],"\u4e86\u89e3\u4f7f\u7528 ":27,"\u4e86\u89e3\u5173\u4e8e\u6240\u6709 ":[17,20],"\u4e86\u89e3\u53d7\u652f\u6301\u7684 ":53,"\u4e86\u89e3\u5728 ":9,"\u4e86\u89e3\u5982\u4f55\u4ece\u5934\u6784\u5efa ":27,"\u4e86\u89e3\u6709\u5173 ":[21,22,27],"\u4e86\u89e3\u6709\u5173\u5b89\u88c5 ":[26,27],"\u4e86\u89e3\u6709\u5173\u6784\u5efa ":27,"\u4e86\u89e3\u914d\u7f6e\u7ec4\u5408\u4e2d\u7684 ":27,"\u4e91 ":37,"\u4e91/":41,"\u4ec5 ":26,"\u4ec5\u4f7f\u7528\u6700\u65b0 ":6,"\u4ec5\u5728\u5177\u6709\u6307\u5b9a\u5b50\u7f51\u4e2d ":54,"\u4ec5\u5f53\u586b\u5199 ":[4,5],"\u4ec5\u5f53\u9009\u62e9\u4f7f\u7528\u65b9\u6cd5 ":57,"\u4ec5\u63a5\u53d7\u6765\u81ea ":57,"\u4ecb\u7ecd\u4e86\u5c06\u865a\u62df\u76d8\u5206\u533a\u4ece ":46,"\u4ece ":[4,5,6,7,15,16,17,18,19,20,27,33,59],"\u4ece\u4e91\u4e2d\u90e8\u7f72 ":60,"\u4ece\u5b9e\u65f6\u684c\u9762\u5b89\u88c5 ":[11,12,44,60,70,76,86,90,91],"\u4ece\u5de6\u4fa7\u8fb9\u680f\u4e0a\u9009\u62e9 ":9,"\u4ece\u5de6\u4fa7\u8fb9\u680f\u9009\u62e9 ":9,"\u4ece\u5de6\u8fb9\u7684 ":16,"\u4ece\u5f39\u51fa\u83dc\u5355\u4e2d\u9009\u62e9 ":42,"\u4ece\u60a8\u7684\u4e3b\u673a\u7cfb\u7edf\u6216\u4efb\u4f55\u53ef\u4ee5\u8bbf\u95ee\u4e3b\u673a ":59,"\u4ece\u672c\u5730\u89e3\u538b\u7f29\u5230 ":22,"\u4ece\u73b0\u6709\u7684 ":52,"\u4ece\u7ec4\u5408\u4e2d\u5220\u9664 ":27,"\u4ece\u800c\u5141\u8bb8\u8fd9\u4e9b\u5ba2\u6237\u7aef\u6267\u884c ":54,"\u4ece\u800c\u5728\u4e0a\u6e38 ":40,"\u4ece\u800c\u5c06\u66f4\u591a ":53,"\u4ece\u83dc\u5355\u4e2d\u9009\u62e9 ":13,"\u4ece\u865a\u62df\u673a ":16,"\u4ed4\u7ec6\u9605\u8bfb\u540e\u6309\u7167\u56fe11\u70b9\u51fb ":10,"\u4ee3\u7801 ":8,"\u4ee5 ":[10,13,15,22,27,43,60],"\u4ee5\u4e0b\u5c4f\u5e55\u622a\u56fe\u663e\u793a\u4f7f\u7528\u5b8c\u5168\u9650\u5b9a\u7684 ":57,"\u4ee5\u4e0b\u6307\u5357\u63d0\u4f9b\u4e86\u4f7f\u7528 ":32,"\u4ee5\u4e0b\u662f\u5927\u89c4\u6a21\u5b89\u88c5 ":40,"\u4ee5\u4e0b\u793a\u4f8b\u4f7f\u7528 ":57,"\u4ee5\u4e0b\u793a\u4f8b\u5047\u8bbe\u7f51\u5361\u4f7f\u7528 ":53,"\u4ee5\u4e0b\u793a\u4f8b\u663e\u793a\u4e86 ":38,"\u4ee5\u4e0b\u793a\u4f8b\u663e\u793a\u4e86\u4e00\u4e2a ":38,"\u4ee5\u4e0b\u793a\u4f8b\u663e\u793a\u4e86\u5df2\u6210\u529f\u4e3a\u663e\u793a ":57,"\u4ee5\u4e0b\u793a\u4f8b\u663e\u793a\u4e86\u5e26\u6709 ":38,"\u4ee5\u4e0b\u793a\u4f8b\u663e\u793a\u4e86\u7528\u6237 ":57,"\u4ee5\u4e0b\u8bf4\u660e\u4f7f\u7528\u5b8c\u5168\u9650\u5b9a\u7684 ":57,"\u4ee5\u4f7f\u7528 ":[8,9,55],"\u4ee5\u4fbf ":[22,38,54],"\u4ee5\u4fbf\u53ef\u4ee5\u4f7f\u7528 ":35,"\u4ee5\u4fbf\u53ef\u4ee5\u5b89\u5168\u5730\u8fde\u63a5\u5230 ":[7,10],"\u4ee5\u4fbf\u5728\u8fb9\u7f18\u8bbe\u5907\u4e0a\u521b\u5efa ":60,"\u4ee5\u4fbf\u589e\u52a0 ":58,"\u4ee5\u4fbf\u5c06 ":33,"\u4ee5\u4fbf\u60a8\u5728\u811a\u672c\u7684 ":31,"\u4ee5\u4fbf\u7531 ":35,"\u4ee5\u4fbf\u76d1\u542c\u8fd9\u4e9b\u529f\u80fd\u7684\u4e13\u7528 ":54,"\u4ee5\u4fbf\u8bbf\u95ee ":17,"\u4ee5\u4fbf\u901a\u8fc7 ":54,"\u4ee5\u5173\u95ed ":8,"\u4ee5\u5206\u949f\u4e3a\u5355\u4f4d ":31,"\u4ee5\u521b\u5efa\u81ea\u5b9a\u4e49\u6346\u7ed1\u5305\u548c ":33,"\u4ee5\u53ca ":28,"\u4ee5\u53ca\u4e00\u4e2a\u542b\u6709 ":36,"\u4ee5\u53ca\u5982\u4f55\u5229\u7528 ":17,"\u4ee5\u53ca\u5982\u4f55\u5728\u8fd0\u884c ":19,"\u4ee5\u53ca\u5982\u4f55\u9009\u62e9\u6027\u5730\u6784\u5efa\u60a8\u81ea\u5df1\u7684 ":58,"\u4ee5\u53ca\u5c06\u6a21\u5757\u6dfb\u52a0\u5230 ":35,"\u4ee5\u53ca\u5f85\u521b\u5efa ":22,"\u4ee5\u53ca\u663e\u793a ":57,"\u4ee5\u53ca\u7528\u4e8e\u5bf9\u8c61\u68c0\u6d4b\u793a\u4f8b\u7684 ":60,"\u4ee5\u53ca\u8fd4\u56de\u5230 ":7,"\u4ee5\u540e\u5982\u679c\u5e0c\u671b\u66f4\u6539\u5206\u914d\u7684 ":16,"\u4ee5\u5728\u673a\u5668\u4e0a\u542f\u7528\u548c\u914d\u7f6e ":14,"\u4ee5\u5c06 ":7,"\u4ee5\u6258\u7ba1\u4e0a\u4e00\u6b65\u4e0b\u8f7d\u7684 ":9,"\u4ee5\u641c\u7d22\u5e76\u627e\u5230 ":7,"\u4ee5\u66f4\u6539\u5c06\u8981\u7f16\u8bd1\u7684 ":33,"\u4ee5\u67e5\u770b ":8,"\u4ee5\u6807\u8bc6\u7f51\u683c\u4f4d\u7f6e ":45,"\u4ee5\u68c0\u67e5\u7528\u6765\u521b\u5efa\u9884\u6784\u5efa\u6620\u50cf\u7684 ":46,"\u4ee5\u7ee7\u7eed\u8fde\u63a5\u5230\u65b0\u7684 ":8,"\u4ee5\u83b7\u53d6\u65b0\u7684\u53ef\u7528 ":27,"\u4ee5\u83b7\u53d6\u7279\u5b9a\u4e8e\u4f53\u7cfb\u7ed3\u6784\u7684 ":54,"\u4ee5\u8bbf\u95ee ":8,"\u4ee5\u8bbf\u95ee\u8fdc\u7a0b ":[7,10],"\u4ee5\u9002\u5e94 ":15,"\u4eea\u8868\u677f\u548c\u5df2\u9009\u62e9\u5e76\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u7684\u65b0\u7684 ":7,"\u4eea\u8868\u677f\u5b8c\u6210\u4ee5\u4e0b\u6b65\u9aa4\u4ee5\u4f7f ":7,"\u4eea\u8868\u677f\u901a\u8fc7 ":8,"\u4efb\u4f55 ":40,"\u4efb\u4f55\u652f\u6301 ":58,"\u4f18\u5148\u8003\u8651\u53d1\u6325 ":39,"\u4f18\u5316\u7684 ":58,"\u4f18\u5316\u8865\u4e01\u53ef\u4ee5\u5728\u6211\u4eec\u7684 ":24,"\u4f1a\u52a8\u6001\u66f4\u65b0\u4e13\u7528\u7f51\u7edc\u7684 ":54,"\u4f1a\u5728 ":[27,38],"\u4f1a\u5728\u5916\u90e8 ":21,"\u4f1a\u5728\u7f8e\u56fd\u56fd\u5bb6\u6f0f\u6d1e\u6570\u636e\u5e93 ":28,"\u4f1a\u5b9a\u4e49\u6279\u5904\u7406\u5927\u5c0f\u4e3a ":60,"\u4f1a\u5c06\u5185\u6838\u6a21\u5757\u6e90\u4ee3\u7801\u653e\u5728 ":35,"\u4f1a\u5c06\u6a21\u5757 ":35,"\u4f1a\u5c1d\u8bd5\u68c0\u6d4b\u4ee3\u7406\u81ea\u52a8\u914d\u7f6e ":21,"\u4f1a\u5c1d\u8bd5\u901a\u8fc7\u6240\u751f\u6210\u7684 ":22,"\u4f1a\u6539\u53d8 ":27,"\u4f1a\u663e\u793a ":35,"\u4f1a\u68c0\u6d4b ":22,"\u4f1a\u7981\u7528\u82f1\u7279\u5c14 ":39,"\u4f1a\u81ea\u52a8\u4e0b\u8f7d\u548c\u7f13\u5b58\u4e0a\u6e38 ":27,"\u4f1a\u81ea\u52a8\u66f4\u65b0 ":27,"\u4f1a\u81ea\u52a8\u9009\u62e9\u552f\u4e00\u7684\u663e\u793a ":57,"\u4f1a\u89e6\u53d1 ":36,"\u4f1a\u8bdd\u4ee5\u83b7\u53d6\u663e\u793a ":57,"\u4f1a\u8bdd\u542f\u52a8\u5e76\u663e\u793a\u4e00\u4e2a\u552f\u4e00\u7684\u663e\u793a ":57,"\u4f1a\u8bdd\u663e\u793a ":57,"\u4f1a\u901a\u8fc7\u63d2\u5165 ":39,"\u4f20\u5165 ":21,"\u4f20\u9012\u7ed9\u6e90 ":22,"\u4f46 ":47,"\u4f46\u4e0d\u59a8\u5728\u8868 ":41,"\u4f46\u4e0d\u9002\u7528\u4e8e ":15,"\u4f46\u4f1a\u79fb\u9664 ":27,"\u4f46\u4f7f\u7528 ":39,"\u4f46\u4f7f\u7528\u6700\u65b0\u7684 ":24,"\u4f46\u5176\u4e2d\u5305\u62ec ":27,"\u4f46\u56de\u62a5\u662f\u60a8\u53ef\u4ee5\u5bf9 ":40,"\u4f46\u5b89\u88c5 ":31,"\u4f46\u662f ":43,"\u4f46\u7531\u4e8e\u60a8\u53ea\u9700\u6dfb\u52a0\u4e00\u4e2a ":30,"\u4f4d\u4e8e ":[22,25,26,53],"\u4f5c\u4e3a\u6e05\u5355\u5b58\u50a8\u7684\u66f4\u65b0\u5143\u6570\u636e\u5219\u63cf\u8ff0\u4e86\u66f4\u65b0\u7684\u6240\u6709 ":27,"\u4f7f ":[1,27,54],"\u4f7f\u5176\u770b\u8d77\u6765\u50cf\u6765\u81ea ":54,"\u4f7f\u5176\u80fd\u5728 ":57,"\u4f7f\u7528 ":[1,4,5,6,7,8,18,20,21,22,27,28,30,32,33,34,38,39,41,42,43,45,46,48,49,50,51,52,56,60],"\u4f7f\u7528\u4e00\u4e2a\u7edf\u4e00\u7684\u8bc1\u4e66\u5b58\u50a8\u5e93 ":28,"\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efa ":47,"\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u521d\u59cb\u5316 ":47,"\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u542f\u52a8 ":59,"\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u5b89\u88c5 ":[47,53],"\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u901a\u8fc7 ":31,"\u4f7f\u7528\u5148\u524d\u63d0\u4f9b\u7ed9\u521d\u59cb ":54,"\u4f7f\u7528\u5185\u6838\u914d\u7f6e\u5de5\u5177\u5bf9 ":33,"\u4f7f\u7528\u521d\u59cb\u5316\u671f\u95f4 ":53,"\u4f7f\u7528\u540c\u4e00 ":15,"\u4f7f\u7528\u547d\u4ee4 ":30,"\u4f7f\u7528\u5728\u4e0a\u4e00\u6b65\u590d\u5236\u5230\u526a\u8d34\u677f\u7684 ":8,"\u4f7f\u7528\u5728\u4e0a\u4e00\u6b65\u83b7\u53d6\u7684\u516c\u5171 ":8,"\u4f7f\u7528\u5982\u4e0b\u6240\u793a\u7684 ":8,"\u4f7f\u7528\u5b83\u53ef\u4ee5\u901a\u8fc7\u8fdc\u7a0b\u684c\u9762\u8fde\u63a5\u5230 ":57,"\u4f7f\u7528\u5b8c\u5168\u9650\u5b9a\u7684 ":57,"\u4f7f\u7528\u5b9e\u65f6\u670d\u52a1\u5668\u5c06 ":[12,16,31,40,83],"\u4f7f\u7528\u60a8\u7684 ":57,"\u4f7f\u7528\u60a8\u7684\u6d3b\u52a8 ":57,"\u4f7f\u7528\u6587\u672c\u7f16\u8f91\u5668\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a ":55,"\u4f7f\u7528\u65b0\u5b9e\u73b0\u7684 ":21,"\u4f7f\u7528\u65b9\u6cd5 ":57,"\u4f7f\u7528\u663e\u793a ":57,"\u4f7f\u7528\u6700\u65b0\u7248\u672c\u7684 ":28,"\u4f7f\u7528\u6b64\u65b9\u6cd5\u53ef\u5c06 ":[4,5],"\u4f7f\u7528\u6b64\u8bc1\u4e66\u6587\u4ef6\u7b7e\u7f72 ":27,"\u4f7f\u7528\u6b64\u8bc1\u4e66\u9a8c\u8bc1 ":27,"\u4f7f\u7528\u73b0\u6709 ":8,"\u4f7f\u7528\u7f51\u7ebf\u5c06\u5e73\u53f0 ":53,"\u4f7f\u7528\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u6216\u4e91\u63d0\u4f9b\u5546\u89c4\u5b9a\u7684\u6d41\u7a0b\u6216\u589e\u52a0 ":46,"\u4f7f\u7528\u8868 ":41,"\u4f7f\u7528\u8be5\u6b3e ":26,"\u4f7f\u7528\u8f6f\u4ef6\u5305\u7ba1\u7406\u5668\u76d1\u63a7\u8f6f\u4ef6\u7248\u672c\u517c\u5bb9\u6027\u6216\u6bd4\u8f83\u5927\u91cf ":30,"\u4f7f\u7528\u9002\u5f53\u7684 ":57,"\u4f7f\u7528\u9002\u7528\u4e8e\u60a8\u7684\u5e73\u53f0\u7684 ":16,"\u4f8b\u5982 ":[4,5,6,16,21,31,60],"\u4f8b\u5982\u5728 ":[34,35],"\u4f8b\u5982\u5c06 ":27,"\u4f8b\u5982\u6309 ":[4,44],"\u4f8b\u5982\u82f1\u7279\u5c14\u6838\u82af\u663e\u5361/":69,"\u4f9d\u6b21\u9009\u62e9 ":10,"\u4fbf\u53ef\u4f7f\u7528\u6b64\u5de5\u5177\u4ece ":31,"\u4fdd\u5b58\u8be5 ":53,"\u4fdd\u7559\u6240\u6709\u8bb0\u5f55 ":31,"\u4fe1\u606f\u6765\u5c1d\u8bd5\u63a8\u65ad ":22,"\u4fee\u590d\u6e90\u4ee3\u7801\u95ee\u9898\u548c/":22,"\u4fee\u6539 ":[15,53],"\u4fee\u6539\u6587\u4ef6\u9876\u90e8\u7684 ":33,"\u4fee\u6539\u8fde\u63a5\u4ee5\u4f7f\u7528\u9759\u6001 ":37,"\u501f\u52a9 ":[21,30],"\u501f\u52a9\u9065\u6d4b\u8fd9\u4e00 ":31,"\u503c\u5728 ":48,"\u503e\u5411\u4e8e\u4f7f\u7528\u6765\u81ea ":33,"\u505c\u6b62/":31,"\u50cf\u4efb\u4f55 ":40,"\u5141\u8bb8 ":[15,21,27,31,35],"\u5141\u8bb8\u64cd\u4f5c\u7cfb\u7edf\u5229\u7528\u4e0a\u6e38 ":28,"\u5141\u8bb8\u8fd9\u4e9b\u884d\u751f\u7248\u5c06 ":36,"\u5145\u5206\u4e86\u89e3\u60a8\u9700\u8981\u4e0e ":40,"\u5148\u70b9\u51fb\u56fe2\u4e2d\u6240\u793a\u7684 ":10,"\u514b\u9686 ":[33,58],"\u514d\u8d39\u5957\u9910\u7684 ":7,"\u5165\u95e8\u6307\u5357\u548c\u4ee5\u4e0b\u5185\u5bb9\u5728\u65b0\u7cfb\u7edf\u4e0a\u5b8c\u6574\u5b89\u88c5 ":31,"\u5168\u65b0\u5b89\u88c5\u7684 ":37,"\u516c\u7f51ip":10,"\u516c\u94a5/":8,"\u5173\u95ed ":[4,16],"\u5173\u95ed\u518d\u5f00\u542f ":38,"\u5173\u95ed\u8fd0\u884c\u7684 ":15,"\u5176\u4e2d ":[8,14,31,46,53,57,60],"\u5176\u4e2d\u5305\u542b ":[22,33],"\u5176\u4e2d\u663e\u793a\u6709\u5173 ":7,"\u5176\u4e2d\u7684\u4e3b\u8981\u9879\u76ee\u4e3a ":27,"\u5176\u4ed6 ":4,"\u5176\u4f4d\u7f6e\u548c\u540d\u79f0 ":22,"\u5176\u4f59\u4e09\u4e2a\u662f ":6,"\u5176\u6307\u5b9a\u540e\u7f00\u4e3a ":42,"\u5177\u5907\u4f7f\u7528 ":36,"\u5177\u6709\u4ee5\u592a\u7f51/":54,"\u5177\u6709\u53ef\u4ee5\u4ece ":40,"\u5177\u6709\u7c7b\u6807\u7b7e\u7684\u524d ":60,"\u517c\u5bb9\u6027\u65f6\u95f4\u6233\u5728 ":27,"\u517c\u5bb9\u7684 ":69,"\u5185\u5b58\u548c ":69,"\u5185\u5b58\u548c\u56db\u4e2a ":53,"\u5185\u5bb9 ":[30,36],"\u5185\u6838 ":[31,33],"\u5185\u6838\u4e5f\u63d0\u4f9b\u4e86 ":33,"\u5185\u6838\u4f1a\u5c06 ":39,"\u5185\u6838\u4f7f\u7528 ":35,"\u5185\u6838\u5305 ":33,"\u5185\u6838\u5c31\u53ef\u4ee5\u7f16\u8bd1\u5e76\u6253\u5305\u6210 ":33,"\u5185\u6838\u6587\u4ef6\u547d\u540d\u4e3a ":54,"\u5185\u6838\u6a21\u5757\u53ef\u80fd\u5df2\u7ecf\u662f ":[34,35],"\u5185\u6838\u6a21\u5757\u662f\u80fd\u591f\u63d2\u5165\u5230 ":[34,35],"\u5185\u6838\u6a21\u5757\u6e90\u4ee3\u7801\u76ee\u5f55\u4e2d\u5fc5\u9700\u7684 ":35,"\u5185\u6838\u80fd\u591f\u4f7f\u7528 ":35,"\u518d\u6b21\u70b9\u51fb ":19,"\u518d\u6b21\u8bd5\u7528 ":27,"\u518d\u6b21\u8fd0\u884c ":22,"\u518d\u70b9\u51fb ":10,"\u518d\u70b9\u51fb\u4e0a\u65b9 ":10,"\u518d\u70b9\u51fb\u6700\u53f3\u4fa7 ":10,"\u51cc\u52a8\u00ae":69,"\u51fa\u73b0 ":[4,5],"\u51fa\u73b0\u63d0\u793a\u65f6\u8f93\u5165 ":46,"\u51fd\u6570 ":31,"\u5206\u533a\u4e3a ":46,"\u5206\u533a\u548c ":46,"\u5206\u533a\u7684\u5927\u5c0f\u4e3a ":27,"\u5206\u53d1\u5230 ":40,"\u5206\u6790 ":31,"\u5206\u7c7b\u5b57\u7b26\u4e32\u7684\u6700\u5927\u957f\u5ea6\u4e3a ":31,"\u5206\u914d\u7684\u7528\u6237\u540d\u6765\u81ea\u7535\u5b50\u90ae\u4ef6\u5730\u5740 ":9,"\u5206\u914d\u7ed9 ":53,"\u5206\u914d\u9759\u6001 ":32,"\u5206\u949f\u7a97\u53e3\u5185\u53ef\u4f20\u9012\u7684\u8bb0\u5f55\u6570\u4e0d\u4f1a\u8d85\u8fc7 ":31,"\u5207\u6362\u5230 ":53,"\u5217\u4e2d\u663e\u793a\u7684\u4fe1\u606f\u5217\u51fa\u4e86\u6bcf\u4e2a\u53ef\u7528\u6620\u50cf\u7684 ":8,"\u5217\u51fa\u5176\u4ed6 ":30,"\u5217\u51fa\u5df2\u5b89\u88c5\u7684 ":30,"\u5217\u51fa\u65b0\u521b\u5efa\u7684 ":52,"\u5217\u663e\u793a ":37,"\u5217\u8868\u4e2d\u9009\u62e9 ":18,"\u5219 ":[8,51],"\u5219\u4e0d\u4f1a\u5c06\u9065\u6d4b\u8f6f\u4ef6 ":31,"\u5219\u4e0d\u80fd\u901a\u8fc7 ":57,"\u5219\u4e0d\u9700\u8981\u5305\u62ec ":8,"\u5219\u4f1a\u5728\u6b65\u9aa4 ":22,"\u5219\u4f1a\u5c06\u8bb0\u5f55\u53d1\u9001\u5230\u82f1\u7279\u5c14 ":31,"\u5219\u4f1a\u5ffd\u7565 ":21,"\u5219\u4f1a\u6210\u529f\u6784\u5efa ":22,"\u5219\u4f1a\u6309\u5982\u4e0b\u65b9\u5f0f\u4e3a\u8fd9\u4e9b ":38,"\u5219\u4f1a\u81ea\u52a8\u62c9\u53d6 ":27,"\u5219\u4f1a\u8fd4\u56de ":21,"\u5219\u4f4d\u4e8e ":22,"\u5219\u53ef\u4ee5\u6309\u7167 ":20,"\u5219\u53ef\u4f7f\u7528 ":21,"\u5219\u53ef\u5728 ":[27,31],"\u5219\u53ef\u5c1d\u8bd5\u624b\u52a8\u62c9\u53d6 ":27,"\u5219\u53ef\u80fd\u662f\u5148\u524d\u663e\u5f0f\u6dfb\u52a0\u7684\u4e00\u4e2a ":27,"\u5219\u5728\u4efb\u610f\u7ed9\u5b9a\u7684 ":31,"\u5219\u5b8c\u5168\u9650\u5b9a\u7684 ":57,"\u5219\u5fc5\u987b\u624b\u52a8\u521b\u5efa ":35,"\u5219\u6539\u7528\u56e0\u64cd\u4f5c\u7cfb\u7edf\u800c\u5f02\u7684 ":15,"\u5219\u6574\u4e2a\u5f52\u6863\u6587\u4ef6\u53ef\u4ee5\u4f20\u9012\u7ed9 ":35,"\u5219\u6700\u597d\u8bbe\u7f6e ":31,"\u5219\u68c0\u67e5\u8bbe\u5907\u662f\u5426\u7531 ":37,"\u5219\u7f51\u7edc\u914d\u7f6e\u7531 ":37,"\u5219\u8be5\u7cfb\u7edf\u5355\u5143\u540d\u79f0\u5c06\u53d1\u9001\u5230 ":49,"\u5219\u8bf7\u54a8\u8be2 ":27,"\u5219\u8bf7\u786e\u4fdd\u914d\u7f6e\u548c\u5de5\u5177\u94fe\u4f1a\u4e3a ":27,"\u5219\u8f93\u5165 ":46,"\u5219\u9700\u5728\u8f93\u5165 ":31,"\u5219\u9700\u5c06\u6b64\u4f9d\u5b58\u5173\u7cfb\u6dfb\u52a0\u5230 ":22,"\u5219\u9700\u9996\u5148\u83b7\u53d6 ":27,"\u5219\u987b\u5c06 ":27,"\u5219\u987b\u8bbe\u7f6e\u4ee3\u7406\u73af\u5883\u53d8\u91cf\u5e76\u4e3a ":27,"\u521b\u5efa ":[9,27,31,52,55,57,60],"\u521b\u5efa\u4e00\u4e2a ":[37,38,50,52,54,57,60],"\u521b\u5efa\u4e00\u4e2a\u5355\u72ec\u7684 ":54,"\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a ":[50,55],"\u521b\u5efa\u4e86 ":21,"\u521b\u5efa\u4e86\u4e00\u4e2a ":49,"\u521b\u5efa\u4ee5\u4e0b\u670d\u52a1\u5668\u914d\u7f6e\u5185\u5bb9\u5e76\u5c06\u5176\u6dfb\u52a0\u5230 ":27,"\u521b\u5efa\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\u7684 ":54,"\u521b\u5efa\u53ef\u5f15\u5bfc ":[4,5,12,13],"\u521b\u5efa\u540d\u4e3a ":31,"\u521b\u5efa\u548c\u7ba1\u7406 ":1,"\u521b\u5efa\u57fa\u4e8e ":36,"\u521b\u5efa\u5b58\u50a8 ":9,"\u521b\u5efa\u5b9a\u5236 ":31,"\u521b\u5efa\u6587\u4ef6\u5e76\u5c06 ":31,"\u521b\u5efa\u65b0\u6587\u4ef6 ":31,"\u521b\u5efa\u65b0\u7684 ":8,"\u521b\u5efa\u7528\u6237\u6216\u653e\u7f6e ":40,"\u521b\u5efa\u7684 ":22,"\u521b\u5efa\u8def\u5f84 ":57,"\u521b\u5efa\u914d\u7f6e\u6587\u4ef6 ":27,"\u521b\u5efassh":10,"\u521d\u59cb\u5316\u64cd\u4f5c\u4f1a\u5728\u5de5\u4f5c\u533a\u4e2d\u521b\u5efa\u76ee\u5f55\u7ed3\u6784\u5e76\u6dfb\u52a0 ":27,"\u521d\u59cb\u5316\u8fc7\u7a0b\u4e2d\u4f1a\u521b\u5efa ":27,"\u5220\u9664 ":[27,30],"\u5220\u9664\u516c\u7f51ip":10,"\u5229\u7528 ":[6,12,14,15,17,19,20],"\u5229\u7528\u4e0a\u4e00\u6b65\u83b7\u5f97\u7684 ":9,"\u5229\u7528\u5176 ":16,"\u5229\u7528\u5b89\u88c5\u7a0b\u5e8f ":19,"\u5229\u7528\u8be5\u547d\u4ee4\u83b7\u53d6\u8be5\u6620\u50cf\u7684 ":42,"\u5229\u7528\u9ed8\u8ba4\u7aef\u53e3 ":15,"\u5230 ":45,"\u5236\u4f5c ":[22,33],"\u5237\u65b0 ":27,"\u524d ":60,"\u524d\u63d0\u662f\u5b83\u4eec\u53ef\u4ee5\u8c03\u7528 ":59,"\u52a0\u4e0a\u5b8c\u5168\u9650\u5b9a\u7684 ":57,"\u52a0\u4e0a\u663e\u793a ":57,"\u52a0\u5165 ":31,"\u52a0\u6df1\u5bf9 ":43,"\u52a0\u8f7d ":53,"\u52a1\u5fc5\u5728 ":56,"\u52a1\u5fc5\u6309\u7167\u672c\u8282\u4e2d\u7684\u6b65\u9aa4\u64cd\u4f5c\u4e4b\u540e\u7981\u7528 ":20,"\u5305\u542b ":[49,55],"\u5305\u542b\u4e0e\u7f51\u7edc\u7ed3\u6784\u5bf9\u5e94\u7684 ":60,"\u5305\u542b\u5176\u4ed6 ":30,"\u5305\u542b\u5206\u914d\u7ed9\u903b\u8f91\u63a5\u53e3\u7684\u4e00\u4e2a ":55,"\u5305\u542b\u5728 ":9,"\u5305\u542b\u6700\u5c11\u7684 ":27,"\u5305\u542b\u6765\u81ea\u82f1\u7279\u5c14\u00ae":60,"\u5305\u542b\u8981\u5728\u6620\u50cf\u4e2d\u9884\u5b89\u88c5\u7684\u6240\u6709 ":27,"\u5305\u62ec ":59,"\u5305\u62ec\u5b83\u7684\u672c\u5730 ":27,"\u5305\u62ec\u5c06\u7f51\u5361\u7ed1\u5b9a\u5230 ":53,"\u5305\u62ec\u6700\u65b0\u7684 ":59,"\u5305\u62ec\u9488\u5bf9 ":42,"\u5305\u662f ":33,"\u5305\u7684\u4e0a\u6e38 ":27,"\u5305\u7684\u672c\u5730\u5b9a\u4e49\u7684 ":27,"\u5347\u7ea7\u5185\u6838\u540e\u81ea\u52a8\u8fd0\u884c ":35,"\u5373 ":[5,22,33,56],"\u5373\u4f1a\u5728 ":57,"\u5373\u4f7f\u6d41\u91cf\u901a\u8fc7 ":57,"\u5373\u4f7f\u7528 ":57,"\u5373\u4fbf\u5173\u95ed\u4e86 ":57,"\u5373\u5185\u5bb9\u5de5\u4f5c\u6d41\u7a0b*":36,"\u5373\u901a\u8fc7 ":57,"\u5378\u4e0b ":4,"\u5378\u4e0b\u5b9e\u65f6\u684c\u9762 ":44,"\u5378\u8f7d\u4e0a\u4e00\u6b65\u4e2d\u8bc6\u522b\u7684 ":6,"\u538b\u7f29\u6240\u6709\u53d1\u5e03\u7684 ":42,"\u539f\u8bed\u7684\u82f1\u7279\u5c14\u00ae":59,"\u53c2\u6570\u4e2d\u7684 ":53,"\u53c2\u6570\u4ee5\u53ca ":38,"\u53c2\u6570\u521b\u5efa\u540d\u4e3a ":8,"\u53c2\u6570\u542f\u52a8 ":59,"\u53c2\u6570\u5c06\u8be5\u8d44\u6e90\u7ec4\u653e\u7f6e\u5728 ":8,"\u53c2\u6570\u7684 ":38,"\u53c2\u8003 ":[16,27],"\u53c2\u89c1\u56fe ":16,"\u53c2\u9605 ":[34,35],"\u53ca\u5176\u5b50\u76ee\u5f55 ":30,"\u53d1\u51fa ":33,"\u53d1\u884c\u7248\u4f7f\u7528\u4e86\u4e00\u4e2a\u540d\u4e3a ":23,"\u53d1\u884c\u7248\u548c ":57,"\u53d1\u884c\u7248\u63d0\u4f9b\u7684\u5de5\u5177\u8bbe\u8ba1\u4e86 ":21,"\u53d6\u6d88\u5206\u914d\u865a\u62df\u673a\u8d44\u6e90\u4ee5\u4f7f ":8,"\u53d6\u6d88\u9009\u4e2d ":[18,19,20],"\u53d8\u4e3a\u672c\u5730 ":27,"\u53d8\u91cf\u5206\u914d\u7ed9 ":53,"\u53d8\u91cf\u8bbe\u7f6e\u4e3a ":[53,60],"\u53e6\u8bf7\u53c2\u9605 ":5,"\u53e6\u8bf7\u53c2\u9605\u4e0b\u9762\u7684 ":5,"\u53e6\u8bf7\u53c2\u9605\u5173\u4e8e\u5982\u4f55 ":40,"\u53e6\u8bf7\u53c2\u9605\u6709\u5173\u5982\u4f55 ":40,"\u53ea\u4e3a\u65b0\u7684\u865a\u62df\u673a\u5206\u914d ":16,"\u53ea\u6709 ":35,"\u53ea\u6709\u7cfb\u7edf\u7ba1\u7406\u5458\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u505c\u6b62\u548c\u7981\u7528 ":57,"\u53ea\u8981\u5bf9\u672c\u5730 ":25,"\u53ea\u8981\u770b\u4e00\u773c\u6240\u90e8\u7f72\u7684 ":40,"\u53ea\u8981\u8fd9\u4e9b\u53d1\u884c\u7248\u6ee1\u8db3\u4e0a\u9762\u5217\u51fa\u7684 ":59,"\u53ea\u9700 ":22,"\u53ea\u9700\u5220\u9664 ":29,"\u53ef\u4ece ":28,"\u53ef\u4ee5\u4f7f\u7528 ":[22,25,39,48,59,69],"\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684\u914d\u7f6e\u5c06 ":5,"\u53ef\u4ee5\u4f7f\u7528\u81ea\u5b9a\u4e49 ":29,"\u53ef\u4ee5\u542f\u52a8\u4e00\u4e2a\u8fd0\u884c ":9,"\u53ef\u4ee5\u5728 ":[22,48],"\u53ef\u4ee5\u5728\u4ee3\u7801\u4e2d\u4f7f\u7528 ":31,"\u53ef\u4ee5\u5728\u4efb\u610f\u4ee3\u7406\u73af\u5883\u4e0b\u4f7f\u7528 ":21,"\u53ef\u4ee5\u5728\u5355\u6838 ":69,"\u53ef\u4ee5\u5728\u6b64\u6587\u4ef6\u5939\u4e2d\u6267\u884c ":27,"\u53ef\u4ee5\u5728\u76f8\u5e94\u7684\u5355\u5143\u6587\u4ef6\u6216\u914d\u7f6e\u653e\u7f6e\u76ee\u5f55\u4e2d\u4f7f\u7528\u8d44\u6e90\u9650\u5236\u6307\u4ee4\u6765\u63a7\u5236\u5404\u4e2a ":48,"\u53ef\u4ee5\u5c06\u4e0a\u6e38 ":27,"\u53ef\u4ee5\u6267\u884c ":25,"\u53ef\u4ee5\u6307\u5b9a\u4e3a ":57,"\u53ef\u4ee5\u6307\u5b9a\u8981\u5728\u6620\u50cf\u4e2d\u9884\u5b89\u88c5\u7684 ":27,"\u53ef\u4ee5\u63d0\u4f9b ":31,"\u53ef\u4ee5\u76f4\u63a5\u7f16\u8f91 ":[33,37],"\u53ef\u4ee5\u76f4\u89c2\u5730\u7ed8\u5236\u548c\u8bb0\u5f55\u6765\u81ea ":39,"\u53ef\u4ee5\u901a\u8fc7\u521b\u5efa ":48,"\u53ef\u4ee5\u901a\u8fc7\u6dfb\u52a0 ":39,"\u53ef\u4ee5\u914d\u7f6e ":27,"\u53ef\u4f7f\u7528 ":31,"\u53ef\u514b\u9686\u78c1\u76d8\u5f62\u5f0f\u7684\u6620\u50cf\u6a21\u677f\u90fd\u662f\u5728\u865a\u62df\u673a\u73af\u5883\u4e2d\u5206\u53d1 ":40,"\u53ef\u5173\u95ed\u5e76\u5220\u9664 ":22,"\u53ef\u5207\u6362\u5230 ":5,"\u53ef\u5229\u7528 ":69,"\u53ef\u53c2\u9605 ":19,"\u53ef\u5728 ":58,"\u53ef\u5728\u53ea\u6709 ":17,"\u53ef\u5bf9\u751f\u6210\u7684 ":22,"\u53ef\u5e2e\u52a9\u60a8\u5f00\u59cb\u4f7f\u7528 ":1,"\u53ef\u6267\u884c\u6587\u4ef6\u7684\u66f4\u591a\u4fe1\u606f\u53ef\u5728 ":28,"\u53ef\u6269\u5c55\u7684\u5f39\u6027 ":40,"\u53ef\u63a5\u53d7\u503c\u4ecb\u4e8e ":31,"\u53ef\u67e5\u627e ":21,"\u53ef\u8003\u8651\u4f7f\u7528 ":33,"\u53ef\u8003\u8651\u5728 ":33,"\u53ef\u8003\u8651\u63d0\u4ea4\u5728 ":[34,35],"\u53ef\u80fd\u4f1a\u5728 ":15,"\u53ef\u80fd\u9ed8\u8ba4\u4f7f\u7528\u4ece\u7cfb\u7edf ":39,"\u53ef\u9009 ":22,"\u53ef\u9009\u4e3b\u9898\u8fc7\u6ee4\u5668\u5b57\u6bb5\u662f ":60,"\u53ef\u91ca\u653e ":31,"\u53f3\u8fb9\u7684 ":16,"\u53f3\u952e\u70b9\u51fb\u8fde\u63a5\u8282\u70b9\u5e76\u9009\u62e9 ":57,"\u540c\u65f6\u4f1a\u7b7e\u7f72 ":27,"\u540c\u65f6\u5c06 ":27,"\u540c\u65f6\u8fd8\u4f1a\u53d1\u5e03\u6620\u50cf\u7684\u76f8\u5e94 ":26,"\u540c\u65f6\u8fd8\u53ef\u8fd4\u56de ":31,"\u540d\u4e3a ":[19,20,54],"\u540d\u7ed3\u679c\u4f1a\u53d1\u5e03\u5230 ":60,"\u540e\u624d\u4f1a\u9ad8\u4eae\u663e\u793a ":[4,5],"\u540e\u7aef\u670d\u52a1\u5668\u53ef\u5b89\u88c5\u5728\u4efb\u610f ":31,"\u540e\u8ddf ":30,"\u5411 ":[33,34,35,54],"\u5411\u4e0a/":5,"\u5411\u5f15\u5bfc\u7f51\u7edc\u6620\u50cf\u7684\u547d\u4ee4\u884c\u6dfb\u52a0\u4e00\u4e2a\u5185\u6838\u53c2\u6570\u6765\u4fee\u6539 ":38,"\u5411\u672c\u5730 ":31,"\u5411\u6bcf\u65e5\u6d88\u606f ":35,"\u5426\u5219 ":[52,55,57],"\u542b\u6709 ":40,"\u542b\u9884\u5236\u4f5c\u7684 ":35,"\u542f\u52a8 ":[13,15,17,18,27,46,54,57,59],"\u542f\u52a8\u4e00\u4e2a ":57,"\u542f\u52a8\u4e24\u4e2a ":57,"\u542f\u52a8\u5df2\u6784\u5efa\u7684 ":52,"\u542f\u52a8\u65b0\u7684 ":[7,10],"\u542f\u52a8\u7ec4\u5408\u65f6\u4f1a\u81ea\u52a8\u521b\u5efa ":27,"\u542f\u52a8\u811a\u672c\u548c\u865a\u62df\u56fa\u4ef6\u590d\u5236\u5230 ":22,"\u542f\u7528 ":[4,5,16,19,20,32,43,44,50],"\u542f\u7528\u5e76\u914d\u7f6e ":32,"\u542f\u7528\u6b64\u952e ":31,"\u547d\u4ee4\u4e14\u540e\u8ddf\u5192\u53f7\u548c\u663e\u793a ":57,"\u547d\u4ee4\u4ece ":47,"\u547d\u4ee4\u4f1a\u5c06 ":22,"\u547d\u4ee4\u5378\u8f7d ":6,"\u547d\u4ee4\u53ef\u6302\u8f7d\u5df2\u4e0b\u8f7d\u7684 ":22,"\u547d\u4ee4\u540e\u8fd0\u884c\u547d\u4ee4 ":31,"\u547d\u4ee4\u540e\u9762\u4e3a\u8bbe\u5907\u6807\u8bc6\u7b26/":6,"\u547d\u4ee4\u542f\u52a8 ":57,"\u547d\u4ee4\u5728 ":52,"\u547d\u4ee4\u5b89\u88c5 ":8,"\u547d\u4ee4\u63d0\u53d6 ":33,"\u547d\u4ee4\u63d0\u793a\u7b26\u6216 ":16,"\u547d\u4ee4\u641c\u7d22\u4ee5 ":[34,35],"\u547d\u4ee4\u6682\u65f6\u7ec8\u6b62\u6d3b\u52a8\u7684 ":57,"\u547d\u4ee4\u66f4\u6539 ":7,"\u547d\u4ee4\u66f4\u65b0 ":[7,33],"\u547d\u4ee4\u6709\u52a9\u4e8e\u8fd8\u539f ":22,"\u547d\u4ee4\u6765\u786e\u5b9a\u6b63\u5728\u4f7f\u7528\u7684 ":51,"\u547d\u4ee4\u67e5\u627e\u6d3b\u52a8\u7684 ":57,"\u547d\u4ee4\u67e5\u770b ":33,"\u547d\u4ee4\u6839\u636e\u5bf9\u4ee3\u7801\u548c\u73b0\u6709\u63a7\u5236\u6587\u4ef6\u7684\u5206\u6790\u751f\u6210 ":22,"\u547d\u4ee4\u767b\u5f55\u5230 ":8,"\u547d\u4ee4\u767b\u5f55\u5230\u60a8\u7684 ":8,"\u547d\u4ee4\u884c\u5de5\u5177\u542f\u52a8\u5e76\u8fd0\u884c\u57fa\u4e8e ":8,"\u547d\u4ee4\u8bbe\u7f6e ":57,"\u547d\u4ee4\u8bc6\u522b ":6,"\u547d\u4ee4\u8f93\u51fa\u4e2d\u7684 ":37,"\u547d\u4ee4\u9009\u9879\u5c06\u8c03\u7528 ":31,"\u547d\u4ee4\u9a8c\u8bc1\u5b83\u662f\u5426\u53ea\u63a5\u53d7\u6765\u81ea ":57,"\u548c ":[1,4,5,6,8,13,15,17,18,21,22,23,25,27,28,29,31,32,33,35,38,39,40,42,46,49,54,55,57,58,59,69],"\u548c*":36,"\u548c\u5176\u4ed6 ":21,"\u548c\u5b8c\u5168\u9650\u5b9a\u7684 ":57,"\u548c\u65b9\u6cd5 ":57,"\u548c\u82f1\u7279\u5c14 ":59,"\u548c\u82f1\u7279\u5c14\u00ae":60,"\u548c\u975e ":5,"\u56e0\u4e3a ":[9,19,21,27,35,49,52],"\u56e0\u4e3a\u4ee5\u5b9e\u65f6\u6a21\u5f0f\u8fd0\u884c\u6bd4\u5c06 ":69,"\u56e0\u4e3a\u5728 ":9,"\u56e0\u4e3a\u5b83\u5df2\u7ecf\u5728 ":60,"\u56e0\u4e3a\u5b83\u7684\u5927\u5c0f\u6bd4 ":51,"\u56e0\u4e3a\u5b83\u901a\u5e38\u63d0\u4f9b\u5728\u652f\u6301 ":35,"\u56e0\u4e3a\u6211\u4eec\u5df2\u5c06\u5b83\u4ece\u539f ":27,"\u56e0\u4e3a\u7528\u4e8e\u5f15\u5bfc ":54,"\u56e0\u4e3a\u7cfb\u7edf\u4f7f\u7528 ":52,"\u56e0\u4e3a\u7f51\u5361\u540d\u79f0\u5728 ":55,"\u56e0\u4e3a\u8fdb\u7a0b\u5728\u5355\u72ec\u7684 ":48,"\u56e0\u6b64 ":30,"\u56e0\u6b64\u5728\u8fd0\u884c\u540c\u4e00\u7248\u672c\u7684 ":30,"\u56e0\u6b64\u5982\u679c ":51,"\u56e0\u6b64\u60a8\u5fc5\u987b\u5728\u8bbe\u7f6e ":59,"\u56e0\u6b64\u7a81\u51fa\u663e\u793a ":8,"\u56e0\u6b64\u9700\u8981\u5c06 ":22,"\u56fa\u4ef6\u53ef\u4ee5\u652f\u6301\u8fd0\u884c ":11,"\u56fa\u4ef6\u6620\u50cf\u7684\u9009\u9879\u6dfb\u52a0\u5230 ":54,"\u56fa\u4ef6\u662f\u5426\u53ef\u4ee5\u8fd0\u884c ":11,"\u56fa\u4ef6\u914d\u7f6e\u4e2d\u542f\u7528 ":14,"\u56fe ":[1,4,5,6,7,8,9,16,17,18,19,20,21,25,29,31,36,38,42,44,46,53,54,57,59],"\u56fe10:":10,"\u56fe11:":10,"\u56fe12:":10,"\u56fe13:":10,"\u56fe14:":10,"\u56fe15:":10,"\u56fe16:":10,"\u56fe17:":10,"\u56fe18:":10,"\u56fe19:":10,"\u56fe1:":10,"\u56fe20:":10,"\u56fe21:":10,"\u56fe2:":10,"\u56fe3:":10,"\u56fe4:":10,"\u56fe5:":10,"\u56fe6:":10,"\u56fe7:":10,"\u56fe8:":10,"\u56fe9:":10,"\u56fe\u50cf\u7684 ":60,"\u5728 ":[4,5,7,13,14,15,17,18,19,20,24,27,28,29,31,33,35,38,39,44,46,47,53,54,55,56,57,58,59,60],"\u5728\u4e0a\u6e38/":47,"\u5728\u4e0b\u4e00\u6b65\u5229\u7528 ":31,"\u5728\u4e3b\u673a ":15,"\u5728\u4e3b\u673a\u4e0a\u5b89\u88c5 ":15,"\u5728\u4e3b\u673a\u7cfb\u7edf\u4e0a ":59,"\u5728\u4e3b\u673a\u7cfb\u7edf\u4e0a\u4ece ":16,"\u5728\u4e3b\u673a\u7cfb\u7edf\u4e0a\u542f\u52a8 ":16,"\u5728\u4f7f\u7528 ":57,"\u5728\u4f7f\u7528\u4e0b\u8f7d\u7684 ":42,"\u5728\u4f8b ":27,"\u5728\u5176\u4e0a\u4fa6\u542c\u63a2\u9488\u8fde\u63a5\u7684 ":31,"\u5728\u5176\u4ed6 ":29,"\u5728\u5185\u7684 ":42,"\u5728\u5185\u90e8\u5c06 ":24,"\u5728\u521d\u59cb\u5b89\u88c5 ":31,"\u5728\u5373\u5c06\u5b89\u88c5 ":16,"\u5728\u540d\u4e3a ":55,"\u5728\u5730\u5740\u680f\u4e2d\u8f93\u5165 ":31,"\u5728\u5b50\u83dc\u5355\u4e2d\u9009\u62e9 ":4,"\u5728\u5b89\u88c5 ":13,"\u5728\u5b89\u88c5\u4e86 ":11,"\u5728\u5bf9\u8bdd\u6846\u4e2d\u9009\u62e9 ":4,"\u5728\u5de5\u4f5c\u533a\u66f4\u65b0\u548c\u672c\u5730 ":27,"\u5728\u5de6\u4fa7\u5782\u76f4\u65b9\u5411\u6eda\u52a8\u81f3 ":4,"\u5728\u5de6\u4fa7\u7684 ":20,"\u5728\u5f15\u5bfc\u83dc\u5355\u4e2d\u9009\u62e9 ":[4,44],"\u5728\u60a8\u7684\u5ba2\u6237\u7aef\u7cfb\u7edf\u548c\u60a8\u7684 ":57,"\u5728\u63d0\u53d6\u7684\u6e90\u4ee3\u7801\u76ee\u5f55\u4e2d\u521b\u5efa\u6216\u4fee\u6539 ":35,"\u5728\u641c\u7d22\u680f\u4e2d\u952e\u5165 ":7,"\u5728\u64cd\u4f5c\u7cfb\u7edf\u8f6f\u4ef6\u66f4\u65b0\u540e\u4e0d\u8981\u91cd\u542f ":49,"\u5728\u64cd\u4f5c\u7cfb\u7edf\u8f6f\u4ef6\u66f4\u65b0\u540e\u91cd\u542f ":49,"\u5728\u652f\u6301\u7684 ":[17,18],"\u5728\u65b0\u7684\u865a\u62df\u673a\u4e0a\u624b\u52a8\u5b89\u88c5 ":19,"\u5728\u65b0\u7cfb\u7edf\u4e0a\u5b89\u88c5\u5e72\u51c0\u7684 ":60,"\u5728\u672c\u5730\u4e3b\u673a\u6216\u8fdc\u7a0b\u7cfb\u7edf\u4e0a\u5b89\u88c5 ":15,"\u5728\u672c\u5730\u7cfb\u7edf\u4e0b\u8f7d\u5e76\u89e3\u538b\u7f29 ":20,"\u5728\u6b64\u8f6f\u4ef6\u5305\u7684 ":22,"\u5728\u6b65\u9aa4 ":60,"\u5728\u6d4f\u89c8\u5668\u4e2d\u4ece ":7,"\u5728\u6d4f\u89c8\u5668\u4e2d\u5728 ":10,"\u5728\u70b9\u51fb ":10,"\u5728\u7533\u8bf7\u516c\u7f51ip":10,"\u5728\u76d8\u7b26\u524d\u9762\u6dfb\u52a0\u4e00\u4e2a ":6,"\u5728\u76ee\u6807\u8bbe\u5907\u4e0a\u5b89\u88c5 ":[4,5],"\u5728\u786e\u4fdd ":10,"\u5728\u7cfb\u7edf ":[17,18],"\u5728\u7cfb\u7edf\u4e0a\u8bbe\u7f6e\u5b58\u50a8\u5e93\u7684 ":[22,33],"\u5728\u7cfb\u7edf\u56fa\u4ef6 ":39,"\u5728\u7ec4\u9875\u9762\u4e0a\u9009\u62e9 ":60,"\u5728\u7ed1\u5b9a\u516c\u7f51ip":10,"\u5728\u7f16\u8f91\u5668\u4e2d\u6253\u5f00 ":33,"\u5728\u7f16\u8f91\u5668\u4e2d\u6253\u5f00\u5185\u6838 ":33,"\u5728\u7f51\u7edc\u4e2d\u5e76\u65e0 ":37,"\u5728\u81ea\u5df1\u7684 ":30,"\u5728\u82f1\u7279\u5c14\u5904\u7406\u5668\u4e0a\u4e5f\u79f0\u4e3a ":39,"\u5728\u865a\u62df\u673a\u4e0a\u5b89\u88c5 ":12,"\u5728\u865a\u62df\u673a\u7684 ":17,"\u5728\u865a\u62df\u73af\u5883\u4e2d\u8fd0\u884c ":15,"\u5728\u8f83\u65e9\u7684 ":37,"\u5728\u975e ":11,"\u5730\u5740\u4ee5\u53ca\u4e0e ":9,"\u5730\u5740\u4ee5\u914d\u7f6e ":53,"\u5730\u5740\u548c\u5b8c\u5168\u9650\u5b9a\u7684 ":57,"\u5730\u5740\u672a\u5217\u5728 ":38,"\u5730\u5740\u8fd0\u884c ":8,"\u57fa\u4e8e ":[23,58],"\u57fa\u4e8e\u60a8\u7684 ":33,"\u57fa\u51c6\u6d4b\u8bd5\u5de5\u4f5c\u8d1f\u8f7d\u5728 ":59,"\u57fa\u51c6\u6d4b\u8bd5\u6240\u5fc5\u9700\u7684 ":59,"\u57fa\u672c ":8,"\u57fa\u672c\u865a\u62df\u673a ":8,"\u586b\u5199\u5b8c ":4,"\u589e\u52a0\u5185\u5b58 ":15,"\u589e\u91cf\u5305\u53ef\u63d0\u4f9b ":27,"\u5904\u4e8c\u697c\u7684 ":45,"\u5904\u7406\u5668 ":69,"\u5904\u7406\u5668\u4e0a\u4e5f\u79f0\u4e3a ":39,"\u5904\u7684\u9ed8\u8ba4 ":60,"\u5904\u9644\u5e26\u9488\u5bf9\u82f1\u7279\u5c14\u00ae":60,"\u590d\u5236 ":7,"\u590d\u5236\u5230 ":31,"\u590d\u5236\u5e76\u7c98\u8d34 ":9,"\u590d\u5236\u5f53\u524d ":10,"\u5927\u4e8e ":31,"\u5927\u591a\u6570 ":57,"\u5927\u5c0f\u53d6\u51b3\u4e8e\u7528\u4f8b/":[4,5],"\u5927\u5c0f\u7684 ":17,"\u5927\u5c0f\u8bbe\u7f6e\u4e3a ":19,"\u5957\u63a5\u5b57\u6587\u4ef6 ":57,"\u5982 ":[5,16,20,25,28,36,40,44],"\u5982\u4e0a\u56fe ":5,"\u5982\u4f55\u5728\u9752\u4e91 ":12,"\u5982\u4f55\u6267\u884c ":38,"\u5982\u4f55\u7ba1\u7406 ":27,"\u5982\u4f55\u91cd\u7f6e ":50,"\u5982\u56fe ":[4,5,6,8,31,36,42,44,53,54],"\u5982\u56fe10\u70b9\u51fb\u5de6\u4fa7 ":10,"\u5982\u56fe12":10,"\u5982\u56fe17":10,"\u5982\u56fe20":10,"\u5982\u56fe21":10,"\u5982\u56fe8":10,"\u5982\u56fe9\u70b9\u51fb\u5bfc\u822a\u680f\u5de6\u4fa7\u7684 ":10,"\u5982\u679c ":[5,22,27,31,37,38,52],"\u5982\u679c\u4e0d\u4f7f\u7528 ":31,"\u5982\u679c\u4e4b\u524d\u6ca1\u6709\u521b\u5efa\u8fc7 ":10,"\u5982\u679c\u4ece ":8,"\u5982\u679c\u4f7f\u7528 ":[42,51,54],"\u5982\u679c\u4f7f\u7528\u57fa\u4e8e ":59,"\u5982\u679c\u4f7f\u7528\u7684\u662f\u8f83\u65e7\u7684 ":59,"\u5982\u679c\u5185\u6838\u6a21\u5757\u6e90\u4ee3\u7801\u4e2d\u4e0d\u542b ":35,"\u5982\u679c\u5185\u6838\u6a21\u5757\u7ef4\u62a4\u8005\u4f7f\u7528 ":35,"\u5982\u679c\u51fa\u73b0\u5bf9\u8bdd ":16,"\u5982\u679c\u5220\u9664\u7ec4\u5408\u4e2d\u4e0a\u6e38 ":27,"\u5982\u679c\u53ea\u80fd\u83b7\u53d6\u4e0d\u542b ":35,"\u5982\u679c\u559c\u6b22\u4f7f\u7528\u9884\u914d\u7f6e\u7684 ":19,"\u5982\u679c\u56e0\u4e0d\u518d\u9700\u8981\u800c\u65ad\u5f00\u865a\u62df ":18,"\u5982\u679c\u5728\u7ec4\u5408\u4e2d\u53d1\u73b0\u4e0d\u5e94\u8be5\u7eb3\u5165\u7684 ":27,"\u5982\u679c\u5728\u8fdb\u5165 ":5,"\u5982\u679c\u5b88\u62a4\u7a0b\u5e8f\u627e\u5230\u65e9\u4e8e ":31,"\u5982\u679c\u5c06\u5176\u8bbe\u4e3a ":31,"\u5982\u679c\u5e0c\u671b\u83b7\u5f97\u6d4b\u8bd5\u7528\u7684\u9759\u6001\u8ba1\u7b97\u673a ":31,"\u5982\u679c\u5e76\u6ca1\u6709\u4e3a\u6240\u6709 ":4,"\u5982\u679c\u60a8\u4e0d\u8bb0\u5f97\u6d3b\u52a8\u4f1a\u8bdd\u663e\u793a ":57,"\u5982\u679c\u60a8\u521a\u5f00\u59cb\u4f7f\u7528 ":61,"\u5982\u679c\u60a8\u5c1a\u672a\u8bbe\u7f6e ":8,"\u5982\u679c\u60a8\u5df2\u5b9a\u4e49\u4e86 ":8,"\u5982\u679c\u60a8\u662f\u9996\u6b21\u5b89\u88c5 ":13,"\u5982\u679c\u60a8\u66f4\u559c\u6b22\u4f7f\u7528\u9884\u914d\u7f6e ":17,"\u5982\u679c\u60a8\u7684 ":8,"\u5982\u679c\u60a8\u76ee\u524d\u6709\u4e00\u4e2a\u6765\u81ea\u65e7\u5185\u6838\u7684 ":33,"\u5982\u679c\u6240\u6709\u63a5\u53e3\u4e0a\u7684 ":55,"\u5982\u679c\u62e5\u6709\u81ea\u5df1\u7684\u81ea\u5b9a\u4e49 ":5,"\u5982\u679c\u65e0\u4ee3\u7406\u670d\u52a1\u5668\u6216\u662f ":21,"\u5982\u679c\u663e\u793a ":57,"\u5982\u679c\u672a\u52a0\u8f7d ":21,"\u5982\u679c\u672a\u5728 ":27,"\u5982\u679c\u672a\u5b89\u88c5 ":49,"\u5982\u679c\u6b64\u914d\u7f6e\u6587\u4ef6\u9644\u5e26 ":26,"\u5982\u679c\u6ca1\u6709 ":27,"\u5982\u679c\u6ca1\u6709\u914d\u7f6e\u6216\u53ef\u7528\u7684 ":20,"\u5982\u679c\u70e7\u5f55\u6620\u50cf\u524d\u4e0d\u5b8c\u5168\u5378\u8f7d ":6,"\u5982\u679c\u719f\u6089 ":21,"\u5982\u679c\u7981\u7528\u6b64\u914d\u7f6e\u952e ":31,"\u5982\u679c\u8981\u4f7f\u7528\u9759\u6001 ":5,"\u5982\u679c\u8981\u5728\u5176\u4ed6\u5e73\u53f0\u4e0a\u5b89\u88c5 ":8,"\u5982\u679c\u8981\u5728\u7ec4\u5408\u4e2d\u6dfb\u52a0\u5b9a\u5236 ":27,"\u5982\u679c\u8981\u771f\u6b63\u7ec8\u6b62\u6d3b\u52a8\u7684 ":57,"\u5982\u679c\u8981\u8fdb\u4e00\u6b65\u81ea\u5b9a\u4e49\u8be5 ":7,"\u5982\u679c\u8bbe\u5907\u7684 ":37,"\u5982\u679c\u8bbf\u95ee ":31,"\u5982\u679c\u8be5\u5355\u5143\u4f4d\u4e8e\u7cfb\u7edf\u4f4d\u7f6e ":49,"\u5982\u679c\u8f93\u51fa\u5728\u4efb\u4f55\u5730\u65b9\u5305\u542b ":51,"\u5982\u679c\u8fd0\u884c\u7684\u5185\u6838\u4e0d\u662f ":16,"\u5982\u679c\u9009\u62e9 ":31,"\u5982\u679c\u9009\u62e9\u65b9\u6cd5 ":57,"\u5982\u679c\u9009\u62e9\u6784\u5efa\u60a8\u81ea\u5df1\u7684 ":58,"\u5982\u679c\u9009\u62e9\u82f1\u7279\u5c14\u00ae":59,"\u5982\u9700 ":22,"\u5982\u9700\u5bf9 ":27,"\u59cb\u7ec8\u4f1a\u5148\u68c0\u67e5\u672c\u5730 ":27,"\u5b50\u7cfb\u7edf\u5141\u8bb8\u64cd\u4f5c\u7cfb\u7edf\u901a\u8fc7 ":39,"\u5b57\u6bb5\u4e2d\u4e3a\u65b0\u865a\u62df\u673a\u547d\u540d ":19,"\u5b57\u6bb5\u4e2d\u8f93\u5165 ":57,"\u5b58\u50a8\u5e93\u4e2d\u7684 ":35,"\u5b58\u50a8\u5e93\u4e2d\u7684\u5165\u95e8\u6307\u5357\u5b89\u88c5 ":38,"\u5b58\u50a8\u5e93\u4e2d\u83b7\u53d6\u6700\u65b0\u7684 ":[19,20],"\u5b58\u50a8\u5e93\u514b\u9686\u5230 ":31,"\u5b58\u50a8\u5e93\u7684 ":31,"\u5b58\u50a8\u6709\u4e13\u4f9b ":25,"\u5b58\u50a8\u672c\u5730 ":27,"\u5b83\u4e00\u6b21\u6700\u591a\u53ef\u53d1\u9001 ":31,"\u5b83\u4e3a ":38,"\u5b83\u4eec\u53ea\u63a5\u53d7\u6765\u81ea\u7531 ":57,"\u5b83\u4eec\u63a5\u53d7\u6765\u81ea\u7531 ":57,"\u5b83\u4eec\u662f ":30,"\u5b83\u4f1a\u751f\u6210\u670d\u52a1\u6240\u9700\u7684\u670d\u52a1\u5668 ":56,"\u5b83\u5141\u8bb8\u5728 ":60,"\u5b83\u5305\u62ec ":59,"\u5b83\u5305\u62ec\u4f7f\u7528\u82f1\u7279\u5c14\u00ae":59,"\u5b83\u5305\u62ec\u9488\u5bf9\u82f1\u7279\u5c14\u00ae":59,"\u5b83\u53ef\u4ee5\u5728\u4e3b\u6d41 ":40,"\u5b83\u53ef\u4ee5\u8fd0\u884c\u5728 ":18,"\u5b83\u5e94\u91c7\u7528 ":31,"\u5b83\u652f\u6301\u4f7f\u7528 ":60,"\u5b83\u662f\u4f7f\u7528 ":23,"\u5b83\u7684\u7ed3\u5c3e\u5e94\u8be5\u4e3a ":16,"\u5b83\u8fd0\u884c\u4e8e ":17,"\u5b88\u62a4\u7a0b\u5e8f\u4f1a\u5728 ":49,"\u5b88\u62a4\u7a0b\u5e8f\u5219\u4f1a\u4f7f\u7528\u6587\u4ef6 ":31,"\u5b88\u62a4\u7a0b\u5e8f\u5728\u5355\u4e2a\u5047\u8131\u673a\u8fd0\u884c\u5faa\u73af\u4e2d\u6700\u591a\u4f1a\u67e5\u627e ":31,"\u5b88\u62a4\u7a0b\u5e8f\u5c06\u6b64 ":21,"\u5b88\u62a4\u7a0b\u5e8f\u6240\u7528\u7684 ":31,"\u5b89\u5168\u8bc1\u4e66\u4f1a\u94fe\u63a5\u5230\u60a8\u7684 ":60,"\u5b89\u88c5 ":[4,5,8,11,19,22,25,26,27,31,50,54,57,59,60],"\u5b89\u88c5\u4e0e\u5df2\u5b89\u88c5\u5185\u6838\u76f8\u5bf9\u5e94\u7684 ":35,"\u5b89\u88c5\u4e86\u901a\u7528\u4e91\u6765\u5bbe\u865a\u62df\u673a ":42,"\u5b89\u88c5\u5230 ":22,"\u5b89\u88c5\u540e\u4f7f\u7528\u7684\u9ed8\u8ba4\u914d\u7f6e\u53ef\u4ee5\u5728 ":29,"\u5b89\u88c5\u540e\u53ef\u4ee5\u4f7f\u7528 ":5,"\u5b89\u88c5\u548c\u4f7f\u7528\u9002\u7528\u4e8e ":15,"\u5b89\u88c5\u5728 ":35,"\u5b89\u88c5\u5728\u865a\u62df\u73af\u5883\u4e2d\u6216\u5c06 ":61,"\u5b89\u88c5\u5728\u9ed8\u8ba4\u5b89\u88c5\u4e4b\u4e0a\u7684 ":30,"\u5b89\u88c5\u6587\u4ef6\u90fd\u5fc5\u987b\u5305\u542b ":38,"\u5b89\u88c5\u671f\u95f4\u53ef\u4f7f\u7528 ":28,"\u5b89\u88c5\u671f\u95f4\u9700\u8981\u80fd\u8bbf\u95ee ":4,"\u5b89\u88c5\u7684\u8f6f\u4ef6\u4e0d\u4f1a\u5199\u5165 ":29,"\u5b89\u88c5\u7a0b\u5e8f\u4f1a\u81ea\u52a8\u542f\u52a8 ":4,"\u5b89\u88c5\u7a0b\u5e8f\u521b\u5efa ":16,"\u5b89\u88c5\u7a0b\u5e8f\u542f\u52a8\u540e\u5982\u56fe ":4,"\u5b89\u88c5\u7a0b\u5e8f\u663e\u793a ":4,"\u5b89\u88c5\u7a0b\u5e8f\u9700\u8981\u81f3\u5c11 ":69,"\u5b8c\u5168\u7981\u7528 ":39,"\u5b8c\u6210 ":[16,60],"\u5b8c\u6210\u4f7f\u7528 ":7,"\u5b8c\u6210\u4f7f\u7528\u65b0\u7684 ":8,"\u5b8c\u6574\u6587\u4ef6\u7a0d\u540e\u5c06\u4e0a\u4f20\u81f3 ":9,"\u5b98\u65b9\u57fa\u7840\u7248 ":52,"\u5b9a\u4e49 ":[38,54],"\u5b9a\u4e49\u4e2d\u624b\u52a8\u79fb\u9664 ":27,"\u5b9a\u4e49\u5206\u914d\u9759\u6001 ":37,"\u5b9a\u4e49\u6587\u4ef6\u5305\u62ec\u7528\u6237\u521b\u5efa\u7684\u6240\u6709\u539f\u521b\u65b0 ":27,"\u5b9a\u4e49\u6587\u4ef6\u5b58\u50a8\u5728\u5de5\u4f5c\u533a\u7684 ":27,"\u5b9a\u5236\u6620\u50cf\u4e2d\u9884\u5b89\u88c5\u7684 ":26,"\u5b9a\u5411i/":[14,15],"\u5b9e\u65f6\u6620\u50cf\u70e7\u5f55\u81f3 ":61,"\u5b9e\u73b0\u7684 ":54,"\u5b9e\u73b0\u7684\u8ba1\u7b97\u673a\u6267\u884c ":54,"\u5b9e\u7528\u7a0b\u5e8f\u4ee5\u4fbf\u5c06\u6620\u50cf\u70e7\u5f55\u81f3 ":6,"\u5b9e\u7528\u7a0b\u5e8f\u68c0\u67e5 ":59,"\u5ba2\u6237\u7aef/":41,"\u5ba2\u6237\u7aef\u4e0b\u8f7d\u5f15\u5bfc\u548c\u5b89\u88c5 ":54,"\u5ba2\u6237\u7aef\u5219\u4f1a\u4f7f\u7528\u4f4d\u4e8e ":31,"\u5ba2\u6237\u7aef\u5b9a\u5411\u5230 ":54,"\u5ba2\u6237\u7aef\u5c06\u4f7f\u7528\u6b64 ":54,"\u5ba2\u6237\u7aef\u5e0c\u671b\u786e\u5b9a\u662f\u5426\u5b58\u5728\u65b0\u7248\u672c\u7684 ":27,"\u5ba2\u6237\u7aef\u6258\u7ba1 ":54,"\u5ba2\u6237\u7aef\u63d0\u4f9b ":54,"\u5ba2\u6237\u7aef\u63d0\u4f9b\u7684 ":54,"\u5ba2\u6237\u7aef\u7684 ":38,"\u5ba2\u6237\u7aef\u7cfb\u7edf\u4e0a\u7684 ":57,"\u5ba2\u6237\u7aef\u7cfb\u7edf\u4e0a\u9700\u8981\u5177\u6709 ":57,"\u5ba2\u6237\u7aef\u80fd\u591f\u901a\u8fc7\u7f51\u7edc\u5f15\u5bfc\u5e76\u5b89\u88c5 ":54,"\u5bb9\u5668 ":8,"\u5bb9\u5668\u5747\u4ee5\u5173\u8054\u7684 ":27,"\u5bb9\u5668\u6620\u50cf\u53d1\u5e03\u5728 ":52,"\u5bb9\u5668\u6620\u50cf\u6784\u5efa\u4e00\u4e2a\u81ea\u5b9a\u4e49 ":[32,74],"\u5bb9\u5668\u7684\u7248\u672c\u53ef\u5728 ":27,"\u5bb9\u5668\u7684\u7cfb\u7edf\u90fd\u53ef\u4e0e ":58,"\u5bc6\u94a5\u8bf7\u9009\u62e9\u4e4b\u524d\u4e0b\u8f7d\u5e76\u4fdd\u5b58\u5230\u672c\u5730\u7684 ":10,"\u5bf9 ":[5,33],"\u5bf9\u4e8e ":[7,19,20,31,39,57,60],"\u5bf9\u4e8e\u4e00\u822c ":69,"\u5bf9\u4e8e\u4e0d\u7531 ":48,"\u5bf9\u4e8e\u4f7f\u7528 ":60,"\u5bf9\u4e8e\u6bcf\u4e2a\u82f1\u7279\u5c14\u00ae":60,"\u5bf9\u4e8e\u8981\u5728 ":35,"\u5bf9\u5185\u6838\u6a21\u5757\u5f52\u6863\u6587\u4ef6\u8fd0\u884c ":35,"\u5bf9\u60a8\u7684 ":59,"\u5bf9\u8bdd\u6846\u663e\u793a\u5b89\u88c5\u914d\u7f6e\u5df2\u4fdd\u5b58\u5230 ":5,"\u5bfb\u627e ":[18,19],"\u5bfc\u822a\u5230 ":[5,22],"\u5bfc\u822a\u5230\u5e0c\u671b\u66f4\u6539\u7684\u7f51\u7edc ":5,"\u5bfc\u822a\u5230\u5e76\u6309\u4e0b ":5,"\u5bfc\u822a\u5230\u5e76\u9009\u62e9 ":5,"\u5bfc\u822a\u56de ":33,"\u5bfc\u822a\u81f3 ":16,"\u5bfc\u822a\u81f3\u5de6\u4fa7\u83dc\u5355\u7684 ":16,"\u5bfc\u822a\u81f3\u6700\u65b0\u7684 ":9,"\u5bfc\u822a\u81f3\u9876\u7ea7 ":16,"\u5c06 ":[4,5,7,9,15,16,18,22,27,30,31,33,36,37,38,39,40,43,44,52,53,54,55,56,59,60],"\u5c06\u4e0a\u6e38 ":27,"\u5c06\u4e0b\u8f7d\u548c\u89e3\u538b\u7f29\u7684\u9884\u914d\u7f6e ":18,"\u5c06\u4e13\u7528\u7f51\u7edc\u5206\u6210\u4e24\u4e2a ":54,"\u5c06\u4e3a ":54,"\u5c06\u4e3b\u673a\u540d\u8bbe\u4e3a ":31,"\u5c06\u4ece\u5c5e\u63a5\u53e3\u5206\u914d\u7ed9\u865a\u62df ":55,"\u5c06\u4f1a\u521b\u5efa ":10,"\u5c06\u5176\u4fdd\u5b58\u5230 ":38,"\u5c06\u5176\u5305\u542b\u5728 ":33,"\u5c06\u5176\u5b58\u50a8\u5728 ":31,"\u5c06\u5176\u8f6c\u6362\u4e3a ":59,"\u5c06\u5176\u96c6\u6210\u548c\u90e8\u7f72\u5230 ":22,"\u5c06\u5185\u5b58\u9650\u5236\u66f4\u6539\u4e3a ":60,"\u5c06\u5185\u6838\u6a21\u5757\u6dfb\u52a0\u5230 ":35,"\u5c06\u5185\u6838\u6a21\u5757\u6e90\u4ee3\u7801\u590d\u5236\u5230 ":35,"\u5c06\u5185\u6838\u6e90\u4ee3\u7801\u76ee\u5f55\u521d\u59cb\u5316\u4e3a\u65b0\u7684 ":33,"\u5c06\u51fa\u73b0 ":5,"\u5c06\u5206\u533a\u6302\u8f7d\u5230 ":44,"\u5c06\u542f\u7528 ":56,"\u5c06\u547d\u540d\u4e3a ":33,"\u5c06\u5927\u5c0f\u8bbe\u7f6e\u4e3a ":17,"\u5c06\u5f15\u5bfc\u56fa\u4ef6\u8bbe\u7f6e\u4e3a ":[19,20],"\u5c06\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u66f4\u6539\u4e3a ":31,"\u5c06\u6240\u9009\u7684 ":60,"\u5c06\u63d0\u4f9b\u7684 ":58,"\u5c06\u6620\u50cf\u6e90\u7c7b\u578b\u66f4\u6539\u4e3a ":9,"\u5c06\u6620\u50cf\u70e7\u5f55\u81f3 ":6,"\u5c06\u66f4\u65b0\u670d\u52a1\u5668\u4e0a\u7684\u65b0 ":27,"\u5c06\u6709\u5173 ":27,"\u5c06\u672a\u7ed1\u5b9a\u7684\u7f51\u5361\u5206\u914d\u7ed9 ":53,"\u5c06\u6ca1\u6709 ":54,"\u5c06\u6df1\u5ea6\u5b66\u4e60\u6a21\u578b\u8f6c\u6362\u4e3a ":60,"\u5c06\u7528\u6237\u6dfb\u52a0\u5230 ":27,"\u5c06\u76ee\u5f55\u547d\u540d\u4e3a ":20,"\u5c06\u76ee\u5f55\u66f4\u6539\u4e3a ":13,"\u5c06\u7b2c\u4e09\u5206\u533a\u5927\u5c0f\u8bbe\u7f6e\u4e3a ":13,"\u5c06\u865a\u62df\u673a\u5927\u5c0f\u589e\u52a0 ":15,"\u5c06\u8865\u4e01\u6587\u4ef6\u4ece ":33,"\u5c06\u89d2\u8272\u5206\u914d\u7ed9 ":38,"\u5c06\u8c03\u51fa\u56fe ":7,"\u5c06\u8fd9\u4e9b\u53d8\u91cf\u8bbe\u7f6e\u4e3a\u5b58\u50a8\u66f4\u65b0\u5185\u5bb9\u7684 ":27,"\u5c06\u8fde\u63a5\u81f3 ":9,"\u5c06\u901a\u8fc7 ":54,"\u5c06\u9700\u8981 ":27,"\u5c1d\u8bd5\u542f\u52a8 ":27,"\u5c1d\u8bd5\u5f00\u542f\u865a\u62df\u673a\u65f6 ":16,"\u5c55\u5f00 ":[9,19,20],"\u5d4c\u5165 ":27,"\u5d4c\u5957\u7684 ":27,"\u5de5\u4f5c\u533a\u5e76\u514b\u9686 ":22,"\u5de5\u4f5c\u533a\u5e76\u6784\u5efa ":22,"\u5de5\u5177\u4e2d\u589e\u52a0\u53ef\u9009\u7684 ":22,"\u5de5\u5177\u4e5f\u53ef\u4ee5\u6210\u4e3a ":27,"\u5de5\u5177\u4e5f\u7528 ":26,"\u5de5\u5177\u4ee5\u53ca ":41,"\u5de5\u5177\u4f1a\u81ea\u52a8\u7f13\u5b58\u5728 ":27,"\u5de5\u5177\u5305\u4ee5\u53ca\u9488\u5bf9\u82f1\u7279\u5c14\u00ae":60,"\u5de5\u5177\u5305\u548c ":60,"\u5de5\u5177\u542f\u7528 ":27,"\u5de5\u5177\u548c ":1,"\u5de5\u5177\u548c\u914d\u7f6e\u6587\u4ef6\u5b89\u88c5 ":13,"\u5de5\u5177\u5e76\u4e3a\u5176\u6388\u4e88 ":26,"\u5de5\u5177\u6216 ":9,"\u5de5\u5177\u662f ":26,"\u5de5\u5177\u6839\u636e ":27,"\u5de5\u5177\u6bcf\u5468\u5e73\u5747\u751f\u6210 ":26,"\u5de5\u5177\u7684\u5b9e\u73b0\u5747\u57fa\u4e8e ":21,"\u5de5\u5177\u81ea\u52a8\u751f\u6210 ":22,"\u5de5\u5177\u901a\u8fc7\u5206\u6790\u6e90\u4ee3\u7801\u548c ":22,"\u5df2\u5206\u914d\u4e86\u663e\u793a ":57,"\u5df2\u5728\u8bb8\u591a ":28,"\u5df2\u5b89\u88c5\u7684 ":30,"\u5df2\u6210\u529f\u751f\u6210\u5e76\u5b89\u88c5 ":8,"\u5df2\u6dfb\u52a0\u5230 ":59,"\u5e10\u6237\u548c ":9,"\u5e10\u6237\u8fdb\u884c ":9,"\u5e26\u4e0a\u6e38 ":27,"\u5e26\u6709 ":42,"\u5e26\u76f8\u5e94 ":27,"\u5e26\u76f8\u5e94\u672c\u5730 ":27,"\u5e74 ":[26,32],"\u5e76\u4e0a\u4f20\u5230 ":60,"\u5e76\u4e14 ":29,"\u5e76\u4e14\u53ef\u4ee5\u8fd0\u884c ":7,"\u5e76\u4e14\u5b83\u4eec\u5b58\u50a8\u5728 ":8,"\u5e76\u4e14\u5df2\u767b\u5f55\u5230 ":10,"\u5e76\u4e14\u60a8\u53ef\u4ee5\u4f7f\u7528\u8be5 ":8,"\u5e76\u4e14\u60a8\u9700\u8981 ":[34,35],"\u5e76\u4e14\u6b63\u5728\u4f7f\u7528\u73b0\u6709 ":8,"\u5e76\u4e3a\u4ee5\u4e0b\u793a\u4f8b\u4e2d\u7684\u7b2c ":47,"\u5e76\u4e3a\u8981\u4f7f\u7528\u7684 ":60,"\u5e76\u4f7f\u7528 ":[10,48,54,55,57],"\u5e76\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u91cd\u65b0\u542f\u52a8 ":54,"\u5e76\u4f7f\u7528\u5355\u6b65\u591a\u6846\u68c0\u6d4b ":60,"\u5e76\u4f9d\u9760 ":49,"\u5e76\u4fdd\u6301\u8be5 ":59,"\u5e76\u521b\u5efa ":54,"\u5e76\u5220\u9664 ":49,"\u5e76\u53ef\u80fd\u5305\u542b ":35,"\u5e76\u5728 ":[22,24],"\u5e76\u5728\u6ee1\u8db3\u4ee5\u4e0b\u4e24\u4e2a\u6761\u4ef6\u65f6\u5c06\u5176\u53d1\u9001\u5230\u53ef\u9009\u7684 ":49,"\u5e76\u5728\u8bbe\u5907\u5f15\u5bfc\u987a\u5e8f\u4e2d\u5c06 ":[4,5,44],"\u5e76\u5728\u8fd0\u884c\u4e8e ":24,"\u5e76\u5b58\u50a8\u5728\u7531 ":60,"\u5e76\u5b89\u88c5 ":[57,60],"\u5e76\u5bf9\u516c\u5171\u7f51\u7edc\u9690\u85cf ":54,"\u5e76\u5bf9\u7167 ":28,"\u5e76\u5c06 ":[16,38,53,57],"\u5e76\u5c06\u5176\u4fdd\u5b58\u5230 ":38,"\u5e76\u5c06\u5176\u63d0\u4ea4\u5230\u672c\u5730 ":33,"\u5e76\u5c06\u5176\u90e8\u7f72\u4e3a ":40,"\u5e76\u5c06\u5176\u91cd\u547d\u540d\u4e3a ":53,"\u5e76\u5c06\u60a8\u7684\u7528\u6237\u5e10\u6237\u6dfb\u52a0\u5230 ":39,"\u5e76\u5c06\u914d\u7f6e\u5934\u6587\u4ef6\u6dfb\u52a0\u5230 ":53,"\u5e76\u6267\u884c ":46,"\u5e76\u6309 ":[7,8],"\u5e76\u63a5\u53d7 ":[4,5],"\u5e76\u63d0\u4f9b\u9884\u5148\u5206\u914d\u7684\u663e\u793a ":57,"\u5e76\u652f\u6301\u82f1\u7279\u5c14\u00ae":59,"\u5e76\u6682\u65f6\u505c\u6b62 ":54,"\u5e76\u6839\u636e\u9700\u8981\u542f\u52a8 ":56,"\u5e76\u6bcf\u79d2\u5728 ":60,"\u5e76\u70b9\u51fb ":10,"\u5e76\u70b9\u51fb\u4e0a\u65b9 ":10,"\u5e76\u70b9\u51fb\u4e0b\u65b9 ":10,"\u5e76\u70b9\u51fb\u4e2d\u95f4\u7684 ":10,"\u5e76\u72ec\u7acb\u4e8e\u4e3a\u751f\u4ea7\u8ba1\u7b97\u673a\u63d0\u4f9b\u66f4\u65b0\u5185\u5bb9\u7684 ":40,"\u5e76\u7528\u4ee5\u4e0b\u547d\u4ee4\u7528 ":54,"\u5e76\u786e\u4fdd\u5176\u53ef\u7531 ":36,"\u5e76\u786e\u4fdd\u6839\u636e\u4f7f\u7528\u7684 ":60,"\u5e76\u7acb\u5373\u8bbe\u7f6e ":5,"\u5e76\u8981\u6c42\u60a8\u8bbe\u7f6e ":57,"\u5e76\u8bbe\u7f6e ":10,"\u5e76\u8fdb\u5165\u5bb9\u5668\u5185\u7684 ":58,"\u5e76\u9009\u62e9 ":5,"\u5e76\u901a\u8fc7 ":49,"\u5e76\u901a\u8fc7\u5207\u6362\u5230\u4e0d\u540c\u7684 ":33,"\u5e76\u901a\u8fc7\u63d0\u4f9b\u663e\u793a ":57,"\u5e93\u4ee5\u901a\u8fc7 ":21,"\u5e94\u7528\u7a0b\u5e8f\u662f\u5b89\u88c5 ":53,"\u5e94\u7528\u7a0b\u5e8f\u663e\u793a\u7684 ":53,"\u5e94\u7528\u7a0b\u5e8f\u7684 ":57,"\u5e94\u8bbe\u7f6e\u4e3a ":60,"\u5e94\u8be5\u4f1a\u770b\u5230\u4ee5 ":16,"\u5e94\u901a\u8fc7 ":31,"\u5efa\u7acb\u4e00\u4e2a ":[57,59],"\u5f00\u53d1\u5de5\u5177\u4f7f\u7528 ":33,"\u5f00\u53d1\u5de5\u5177\u5305\u62ec\u5c06 ":22,"\u5f00\u53d1\u5de5\u5177\u63d0\u4f9b\u4e24\u79cd\u5feb\u901f\u6d4b\u8bd5 ":22,"\u5f00\u53d1\u5de5\u5177\u83b7\u53d6\u548c\u7f16\u8bd1 ":33,"\u5f00\u53d1\u5de5\u5177\u8fd8\u5305\u62ec\u5c06 ":22,"\u5f00\u53d1\u7cfb\u7edf\u4e0a\u6d4b\u8bd5 ":22,"\u5f00\u542f ":[17,18],"\u5f00\u59cb\u4e3a ":60,"\u5f00\u673a\u81ea\u68c0\u9636\u6bb5\u6309 ":4,"\u5f00\u7bb1\u4f53\u9a8c ":15,"\u5f15\u5165\u4e86\u4e00\u79cd\u4f7f\u7528 ":25,"\u5f15\u5bfc ":44,"\u5f15\u5bfc\u5b89\u88c5\u7a0b\u5e8f ":19,"\u5f15\u5bfc\u65f6\u542f\u7528 ":27,"\u5f15\u5bfc\u7ba1\u7406\u5668\u4e2d\u51fa\u73b0 ":16,"\u5f15\u5bfc\u811a\u672c\u4f1a\u6307\u793a ":54,"\u5f15\u5bfc\u83dc\u5355\u4e2d\u7684 ":[4,44],"\u5f39\u51fa ":6,"\u5f52\u6863\u6587\u4ef6\u5305\u542b\u5fc5\u9700\u7684 ":35,"\u5f53\u518d\u6b21\u9700\u8981\u7528\u5230 ":39,"\u5f53\u524d\u548c\u53ef\u7528\u5185\u6838\u7248\u672c\u7684\u5217\u8868\u53ef\u5728 ":33,"\u5f53\u524d\u5e94\u8be5\u4f4d\u4e8e ":7,"\u5f53\u524d\u6700\u5927\u6709\u6548\u8d1f\u8f7d\u5927\u5c0f\u4e3a ":31,"\u5f53\u6240\u9700\u7684 ":5,"\u5f53\u7cfb\u7edf\u786e\u5b9a ":39,"\u5f71\u54cd ":22,"\u5fc5\u586b\u9009\u9879 ":4,"\u5fc5\u987b\u4e0e ":35,"\u5fc5\u987b\u4e3a\u6bcf\u4e2a\u7528\u6237\u5206\u914d\u4e00\u4e2a\u552f\u4e00\u7684\u663e\u793a ":57,"\u5fc5\u987b\u5148\u5728 ":22,"\u5fc5\u987b\u521b\u5efa\u4e00\u4e2a ":54,"\u5fc5\u987b\u5378\u8f7d ":6,"\u5fc5\u987b\u5378\u8f7d\u5b89\u88c5\u7a0b\u5e8f ":19,"\u5fc5\u987b\u542f\u7528 ":[19,20],"\u5fc5\u987b\u5728 ":35,"\u5fc5\u987b\u5728\u4ee3\u7801\u4e2d\u5305\u542b\u4ee5\u4e0b\u6807\u5934\u624d\u80fd\u4f7f\u7528 ":31,"\u5fc5\u987b\u5728\u865a\u62df\u673a\u4e0a\u4f5c\u4e3a\u865a\u62df ":16,"\u5fc5\u987b\u5c06 ":22,"\u5fc5\u987b\u5c06\u5176\u4e0a\u4f20\u81f3 ":20,"\u5fc5\u987b\u5c06\u5176\u8f6c\u6362\u4e3a ":20,"\u5fc5\u987b\u6267\u884c\u8fd9\u4e9b\u6b65\u9aa4\u6765\u521d\u59cb\u5316 ":57,"\u5fc5\u987b\u663e\u5f0f\u521d\u59cb\u5316 ":27,"\u5fc5\u987b\u8bbe\u7f6e\u4e3a ":55,"\u5fc5\u987b\u901a\u8fc7\u5148\u524d\u5bf9 ":31,"\u5feb\u901f\u5f00\u59cb\u4f7f\u7528 ":12,"\u5ffd\u7565\u5339\u914d ":30,"\u603b\u548c\u4e0e\u4ee5\u4e0b ":51,"\u603b\u548c\u7684\u7b7e\u540d\u4ee5\u53ca\u7528\u4e8e\u5bf9 ":51,"\u603b\u548c\u7b7e\u540d\u7684 ":51,"\u60a8\u4e0d\u9700\u8981\u5728 ":60,"\u60a8\u4e5f\u53ef\u4ee5\u5728\u914d\u7f6e\u6bcf\u4e2a\u5206\u533a\u65f6\u9009\u62e9 ":5,"\u60a8\u4e5f\u53ef\u4ee5\u5c06\u81ea\u5b9a\u4e49 ":60,"\u60a8\u4e5f\u53ef\u4ee5\u9996\u5148\u4f7f\u7528 ":5,"\u60a8\u4f1a\u770b\u5230 ":57,"\u60a8\u4f7f\u7528\u57fa\u4e8e ":7,"\u60a8\u4fbf\u53ef\u770b\u5230\u7ec4\u5408\u7248\u672c ":27,"\u60a8\u53ef\u4ee5\u4ece\u4efb\u4f55\u4e00\u4e2a ":59,"\u60a8\u53ef\u4ee5\u4ece\u8be5\u6620\u50cf\u5b89\u88c5 ":4,"\u60a8\u53ef\u4ee5\u4f7f\u7528 ":[16,34,35,51,52,59],"\u60a8\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b ":57,"\u60a8\u53ef\u4ee5\u4f7f\u7528\u5b83\u6765\u9a8c\u8bc1\u5728\u8fb9\u7f18\u8bbe\u5907\u4e0a\u8fd0\u884c\u7684 ":60,"\u60a8\u53ef\u4ee5\u4f7f\u7528\u60a8\u9009\u62e9\u7684\u4efb\u4f55 ":51,"\u60a8\u53ef\u4ee5\u4f9d\u7167\u56fe6":10,"\u60a8\u53ef\u4ee5\u521b\u5efa\u79c1\u6709\u7684 ":10,"\u60a8\u53ef\u4ee5\u53ea\u4f7f\u7528\u6620\u50cf ":59,"\u60a8\u53ef\u4ee5\u542f\u7528 ":33,"\u60a8\u53ef\u4ee5\u5728 ":[4,17],"\u60a8\u53ef\u4ee5\u5728\u4e3b\u76ee\u5f55\u4e2d\u7684 ":57,"\u60a8\u53ef\u4ee5\u5728\u6307\u5b9a\u6620\u50cf\u65f6\u4f7f\u7528\u7248\u672c\u6807\u7b7e ":8,"\u60a8\u53ef\u4ee5\u5728\u9009\u62e9 ":7,"\u60a8\u53ef\u4ee5\u5b89\u88c5 ":57,"\u60a8\u53ef\u4ee5\u5c06 ":57,"\u60a8\u53ef\u4ee5\u5c06\u8be5\u6a21\u578b\u66f4\u6362\u4e3a ":59,"\u60a8\u53ef\u4ee5\u6ce8\u518c ":8,"\u60a8\u53ef\u4ee5\u6dfb\u52a0\u5927\u578b\u6346\u7ed1\u5305 ":41,"\u60a8\u53ef\u4ee5\u6dfb\u52a0\u5b83\u7684 ":5,"\u60a8\u53ef\u4ee5\u76f4\u63a5\u4ece ":8,"\u60a8\u53ef\u4ee5\u79fb\u9664 ":33,"\u60a8\u53ef\u4ee5\u7f16\u8f91\u6240\u63d0\u4f9b\u7684 ":58,"\u60a8\u53ef\u4ee5\u8bbf\u95ee ":40,"\u60a8\u53ef\u4ee5\u8df3\u5230 ":5,"\u60a8\u53ef\u4ee5\u8df3\u5230\u4e0b\u9762\u7684 ":5,"\u60a8\u53ef\u4ee5\u9009\u62e9\u67e5\u770b ":30,"\u60a8\u53ef\u4ee5\u901a\u8fc7\u6ce8\u9500\u6765\u7ec8\u6b62 ":57,"\u60a8\u53ef\u80fd\u5e0c\u671b\u5728\u865a\u62df\u673a\u4e0a\u5b89\u88c5 ":17,"\u60a8\u53ef\u80fd\u8fd8\u9700\u786e\u4fdd ":31,"\u60a8\u53ef\u80fd\u9700\u8981 ":31,"\u60a8\u53ef\u80fd\u9700\u8981\u5728\u5b89\u88c5\u524d\u542f\u52a8\u6d4f\u89c8\u5668\u6765\u786e\u8ba4\u80fd\u5426\u8bbf\u95ee ":4,"\u60a8\u53ef\u80fd\u9700\u8981\u7f16\u8f91 ":35,"\u60a8\u5c06\u4e3a\u6240\u6709\u6f5c\u5728\u7684 ":57,"\u60a8\u5c06\u5411 ":57,"\u60a8\u5c06\u65e0\u6cd5\u5f15\u5bfc ":4,"\u60a8\u5c06\u6765\u5230\u7f51\u7edc\u4e0ecdn":10,"\u60a8\u5c06\u8fd4\u56de\u5230 ":5,"\u60a8\u5c31\u5e94\u8be5\u77e5\u9053 ":40,"\u60a8\u5c31\u5e94\u8be5\u77e5\u9053\u60a8\u7684 ":40,"\u60a8\u5df2\u4f7f\u7528 ":8,"\u60a8\u5df2\u542f\u52a8\u5e76\u8fd0\u884c\u57fa\u4e8e ":7,"\u60a8\u5df2\u6210\u529f\u5b89\u88c5 ":4,"\u60a8\u5df2\u6210\u529f\u5b89\u88c5\u5e76\u914d\u7f6e\u4e86 ":54,"\u60a8\u5df2\u6210\u529f\u6062\u590d ":44,"\u60a8\u5df2\u6210\u529f\u6267\u884c ":38,"\u60a8\u5df2\u8bbe\u7f6e\u4e86 ":[7,10],"\u60a8\u5e94\u770b\u5230\u4e0b\u9762\u56fe ":31,"\u60a8\u5e94\u8be5\u80fd\u591f\u5728\u5176\u4ed6 ":59,"\u60a8\u5e94\u8be5\u9009\u62e9 ":5,"\u60a8\u5fc5\u987b\u4ee5 ":55,"\u60a8\u5fc5\u987b\u4f7f\u7528 ":[7,9],"\u60a8\u5fc5\u987b\u4f7f\u7528\u4ee5\u4e0b\u4e24\u4e2a\u9009\u9879\u4e4b\u4e00\u8fde\u63a5\u5230\u7279\u5b9a\u7684\u6d3b\u52a8\u4f1a\u8bdd\u6216\u663e\u793a ":57,"\u60a8\u5fc5\u987b\u5177\u6709 ":57,"\u60a8\u5fc5\u987b\u521b\u5efa\u4e00\u4e2a\u65b0\u7684 ":60,"\u60a8\u5fc5\u987b\u5728 ":[52,54,60],"\u60a8\u5fc5\u987b\u5982\u4e0b\u6240\u8ff0\u624b\u52a8\u5b89\u88c5 ":59,"\u60a8\u5fc5\u987b\u5c06 ":59,"\u60a8\u5fc5\u987b\u63d0\u4f9b ":60,"\u60a8\u5fc5\u987b\u89e3\u6790 ":59,"\u60a8\u5fc5\u987b\u914d\u7f6e ":56,"\u60a8\u5fc5\u987b\u91cd\u65b0\u542f\u52a8 ":8,"\u60a8\u6210\u529f\u5730\u5728 ":[45,50],"\u60a8\u73b0\u5728\u53ef\u4ee5\u901a\u8fc7 ":9,"\u60a8\u73b0\u5728\u5c06\u5904\u4e8e ":43,"\u60a8\u73b0\u5728\u5df2\u7ecf\u4ee5 ":8,"\u60a8\u7684 ":[4,5,40,44],"\u60a8\u7684\u5165\u53e3\u70b9\u53d8\u6210 ":59,"\u60a8\u7684\u5ba2\u6237\u7aef\u7cfb\u7edf\u5c06\u4ece ":57,"\u60a8\u7684\u5e73\u53f0\u5fc5\u987b\u652f\u6301\u82f1\u7279\u5c14\u00ae":59,"\u60a8\u7684\u6d4f\u89c8\u5668\u5c06\u4e0b\u8f7d\u7684\u6587\u4ef6\u653e\u5728 ":7,"\u60a8\u7684\u73af\u5883\u53ef\u4ee5\u8fd0\u884c ":10,"\u60a8\u7684\u7f51\u5361\u548c\u7f51\u7edc\u4ea4\u6362\u673a\u5fc5\u987b\u652f\u6301 ":55,"\u60a8\u8fd8\u53ef\u4ee5\u67e5\u770b\u9002\u7528\u4e8e ":43,"\u60a8\u9009\u62e9\u7684\u8bbe\u7f6e\u4f1a\u51fa\u73b0\u5728\u83dc\u5355\u9009\u9879\u4e0b\u7684 ":5,"\u60a8\u9700\u8981\u4e86\u89e3\u5982\u4f55\u4f7f\u7528 ":1,"\u60a8\u9700\u8981\u4fee\u6539 ":33,"\u60a8\u9700\u8981\u5bf9 ":52,"\u60a8\u9700\u8981\u77e5\u9053\u6620\u50cf ":59,"\u6211\u4eec\u4e3a ":49,"\u6211\u4eec\u4e3a\u7f8e\u56fd\u9009\u62e9 ":4,"\u6211\u4eec\u4ece\u7248\u672c ":7,"\u6211\u4eec\u4f1a\u5f15\u5bfc\u4f8b ":27,"\u6211\u4eec\u4f7f\u7528 ":[27,31,42,59],"\u6211\u4eec\u4f7f\u7528\u4e86 ":51,"\u6211\u4eec\u4fee\u6539\u4e86 ":21,"\u6211\u4eec\u5229\u7528\u4ece\u7cfb\u7edf\u83b7\u53d6\u7684 ":21,"\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u521d\u59cb\u5316\u671f\u95f4\u6dfb\u52a0\u7684\u9ed8\u8ba4 ":27,"\u6211\u4eec\u56f4\u7ed5\u591a\u6570 ":21,"\u6211\u4eec\u5747\u4f1a\u751f\u6210\u591a\u4e2a ":26,"\u6211\u4eec\u5bf9\u865a\u62df\u673a\u4f7f\u7528 ":8,"\u6211\u4eec\u5c06\u4ece\u7248\u672c ":27,"\u6211\u4eec\u5c06\u4f7f\u7528 ":[44,58],"\u6211\u4eec\u5c06\u65b0\u7684\u9ed8\u8ba4\u7aef\u53e3\u8bbe\u7f6e\u4e3a ":56,"\u6211\u4eec\u5c06\u6dfb\u52a0\u6765\u81ea\u4e0a\u6e38\u7684 ":27,"\u6211\u4eec\u5efa\u8bae\u4f7f\u7528 ":[34,35],"\u6211\u4eec\u5efa\u8bae\u60a8\u5728 ":58,"\u6211\u4eec\u5efa\u8bae\u60a8\u5728\u5f00\u53d1\u9879\u76ee\u4e4b\u524d\u5148\u4e86\u89e3 ":41,"\u6211\u4eec\u5efa\u8bae\u60a8\u59cb\u7ec8\u67e5\u770b ":35,"\u6211\u4eec\u5efa\u8bae\u60a8\u5b66\u4e60 ":41,"\u6211\u4eec\u5efa\u8bae\u60a8\u8bbe\u7f6e ":4,"\u6211\u4eec\u5efa\u8bae\u60a8\u9009\u62e9 ":5,"\u6211\u4eec\u5efa\u8bae\u6dfb\u52a0 ":5,"\u6211\u4eec\u5f3a\u70c8\u5efa\u8bae\u60a8\u81f3\u5c11\u8981\u8bbe\u7f6e\u8fd9\u4e9b\u9009\u5b9a\u7684 ":5,"\u6211\u4eec\u6253\u9020\u4e86\u6df1\u5ea6\u5b66\u4e60\u53c2\u8003\u5806\u6808\u6765\u5e2e\u52a9 ":59,"\u6211\u4eec\u63a8\u8350 ":17,"\u6211\u4eec\u63a8\u8350\u4f8b ":13,"\u6211\u4eec\u63d0\u4f9b\u53ef\u5728 ":20,"\u6211\u4eec\u63d0\u4f9b\u811a\u672c\u5728 ":16,"\u6211\u4eec\u63d0\u4f9b\u8f6f\u4ef6 ":23,"\u6211\u4eec\u8981\u4e3a ":27,"\u6211\u4eec\u8981\u4fee\u6539\u9ed8\u8ba4\u7684 ":27,"\u6211\u4eec\u8fd8\u5efa\u8bae\u586b\u5199 ":4,"\u6211\u4eec\u8fd8\u63d0\u4f9b\u5173\u4e8e\u4e0b\u8f7d\u548c\u9a8c\u8bc1 ":[17,19,20],"\u6211\u4eec\u8fd8\u63d0\u4f9b\u6709\u5173\u5982\u4f55 ":1,"\u6211\u4eec\u9700\u8981\u5c06 ":22,"\u6216 ":[4,5,14,16,17,19,20,21,22,26,30,31,35,37,38,39,42,43,45,49,57,59,60],"\u6216\u4ece\u7ec4\u5408\u4e2d\u5220\u9664 ":27,"\u6216\u4ee5\u4e0a\u7684 ":6,"\u6216\u53c2\u9605 ":[34,35],"\u6216\u6253\u7b97\u52a0\u5bc6 ":57,"\u6216\u662f\u4e0a\u6e38 ":27,"\u6216\u7f51\u7edc\u8bf7\u6c42\u5747\u4f1a\u67e5\u8be2 ":21,"\u6216\u8005\u4e3a ":35,"\u6216\u8005\u4e5f\u53ef\u4ee5\u9009\u62e9\u5c06 ":8,"\u6216\u8005\u4f7f\u7528 ":39,"\u6216\u8005\u53ef\u7528\u4e8e ":7,"\u6216\u8005\u5982\u679c\u6b64\u524d\u66fe\u8c03\u7528 ":31,"\u6216\u8005\u5982\u679c\u7f51\u7edc\u4e0a\u6ca1\u6709 ":5,"\u6216\u8005\u5c06 ":59,"\u6216\u8005\u5c06\u8def\u5f84\u540d\u79f0\u8f93\u5165\u5230 ":8,"\u6216\u8005\u751f\u6210\u4e86\u5305\u542b\u6587\u672c ":8,"\u6216\u8005\u9009\u62e9 ":62,"\u6216\u8005\u9ed8\u8ba4\u914d\u7f6e\u6587\u4ef6\u53ef\u4ee5\u7531 ":29,"\u6216\u82f1\u7279\u5c14\u00ae":59,"\u6216\u8f6c\u5230 ":69,"\u6216\u8fdc\u7a0b\u684c\u9762\u8bbe\u7f6e\u4fbf\u53ef\u542f\u7528\u8fdc\u7a0b ":56,"\u6240\u4ee5\u4e0d\u518d\u9700\u8981 ":20,"\u6240\u6709 ":[21,33],"\u6240\u6709\u4ece\u5c5e\u63a5\u53e3\u548c\u6346\u7ed1\u63a5\u53e3\u4e0a\u7684 ":55,"\u6240\u6709\u63a7\u5236\u6587\u4ef6\u5747\u5e94\u4e0e\u6240\u751f\u6210 ":22,"\u6240\u6709\u8c03\u901f\u7a0b\u5e8f\u7684\u5217\u8868\u53ef\u4ee5\u5728\u6709\u5173 ":39,"\u6240\u6709\u9879\u5e94\u8fd4\u56de ":11,"\u6240\u751f\u6210 ":22,"\u6240\u793a\u7684 ":5,"\u6240\u8ff0\u7684\u82f1\u7279\u5c14\u00ae":24,"\u6240\u9700\u7684 ":22,"\u624b\u518c\u9875 ":35,"\u624b\u518c\u9875\u8be6\u7ec6\u4e86\u89e3 ":[34,35],"\u624b\u52a8\u5b89\u88c5 ":16,"\u6253\u5f00 ":[6,27,30,38,46,53,54,56],"\u6253\u5f00\u6d4f\u89c8\u5668\u5e76\u8bbf\u95ee\u56fe ":8,"\u6258\u7ba1\u7684 ":38,"\u6258\u7ba1\u76ee\u5f55\u4e0b ":38,"\u6258\u7ba1\u76ee\u5f55\u4e0b\u7684 ":38,"\u6267\u884c ":[31,51],"\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\u4ee5\u66f4\u6539 ":56,"\u6269\u5c55\u5206\u533a\u540e\u589e\u52a0\u6839 ":46,"\u6269\u5c55\u65b0\u589e\u4e86\u5bf9 ":54,"\u627e\u5230 ":[8,9,14,46],"\u627e\u5230\u521a\u521a\u521b\u5efa\u7684 ":10,"\u627e\u5230\u521a\u521a\u7533\u8bf7\u7684\u516c\u7f51ip":10,"\u627e\u5230\u5305\u542b\u73b0\u6709\u8865\u4e01\u53d8\u91cf\u5b9a\u4e49\u7684 ":33,"\u627e\u5230\u5bb9\u5668\u7684 ":59,"\u627e\u5230\u5e76\u9009\u62e9\u6b64\u524d\u89e3\u538b\u7f29\u7684 ":6,"\u627e\u5230\u6b63\u786e\u7684 ":30,"\u6302\u8f7d ":[16,19,20],"\u6302\u8f7d\u7684 ":25,"\u6307\u5357\u4e2d\u7684 ":16,"\u6307\u5357\u5b8c\u6210 ":[17,19],"\u6307\u5357\u9875\u9762\u6db5\u76d6\u4e86\u4ece ":61,"\u6307\u5411 ":27,"\u6307\u5b9a ":52,"\u6307\u5b9a\u6346\u7ed1\u5305\u5b58\u50a8\u5e93\u7684 ":52,"\u6307\u5b9a\u7684 ":57,"\u6307\u5b9a\u7684\u5b8c\u5168\u9650\u5b9a ":57,"\u6307\u5b9a\u8981\u8fde\u63a5\u5230\u7684 ":57,"\u6307\u7684\u662f\u5b89\u88c5 ":40,"\u6307\u793a ":[52,57],"\u6309 ":[4,5,8,44,57],"\u6309\u4e0b ":[6,46],"\u6309\u4e0b\u952e\u76d8\u53f3\u8fb9\u7684 ":16,"\u6309\u7167 ":[15,16,17,19,38,59,60],"\u6309\u7167\u4ee5\u4e0b\u683c\u5f0f\u5411 ":53,"\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\u5728\u76ee\u6807\u7cfb\u7edf\u4e0a\u5b89\u88c5 ":5,"\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\u5b89\u88c5 ":59,"\u6309\u7167\u56fe ":[5,7],"\u6309\u7167\u56fe14\u9009\u4e2d\u521a\u521a\u521b\u5efa\u7684 ":10,"\u6309\u7167\u56fe15\u9009\u62e9\u521a\u521a\u7533\u8bf7\u5b8c\u6210\u7684\u516c\u7f51ip":10,"\u6309\u7167\u64cd\u4f5c\u7cfb\u7edf\u8bf4\u660e\u521b\u5efa\u4e00\u4e2a\u53ef\u5f15\u5bfc\u7684 ":[4,5],"\u6309\u7167\u672c\u6307\u5357\u4f7f\u7528 ":35,"\u6309\u7167\u8bf4\u660e ":[11,13],"\u6309\u7167\u9002\u7528\u4e8e\u60a8\u7684\u7cfb\u7edf\u7684\u8bf4\u660e\u521b\u5efa\u53ef\u5f15\u5bfc\u7684 ":6,"\u6309\u94ae\u4ee5\u505c\u6b62 ":7,"\u6309\u94ae\u4ee5\u521b\u5efa ":10,"\u6309\u94ae\u4ee5\u663e\u793a ":7,"\u6309\u94ae\u4ee5\u8f6c\u5230 ":7,"\u6309\u94ae\u4ee5\u8f6c\u5230\u56fe ":7,"\u6309\u94ae\u4ee5\u8fdb\u884c\u521b\u5efa\u516c\u7f51ip":10,"\u6309\u94ae\u521b\u5efa ":9,"\u6309\u94ae\u5c06 ":9,"\u6309\u94ae\u5e76\u547d\u540d\u76ee\u5f55 ":19,"\u6309\u94ae\u9009\u62e9 ":10,"\u6309\u9700\u7f16\u8f91 ":26,"\u6346\u7ed1\u5305 ":42,"\u6346\u7ed1\u5305\u4e2d\u968f ":33,"\u6346\u7ed1\u5305\u4ee5\u5b89\u88c5 ":46,"\u6346\u7ed1\u5305\u4ee5\u83b7\u5f97 ":57,"\u6346\u7ed1\u5305\u4f1a\u5b89\u88c5 ":60,"\u6346\u7ed1\u5305\u4fa7\u91cd\u4e8e ":24,"\u6346\u7ed1\u5305\u4fa7\u91cd\u4e8e\u5728 ":24,"\u6346\u7ed1\u5305\u5305\u542b ":54,"\u6346\u7ed1\u5305\u5305\u542b\u4e00\u4e2a\u540d\u4e3a ":54,"\u6346\u7ed1\u5305\u5305\u542b\u4e00\u4e2a\u8f7b\u91cf\u7ea7 ":54,"\u6346\u7ed1\u5305\u53ef\u5b89\u88c5\u8f7b\u91cf\u7ea7\u670d\u52a1 ":28,"\u6346\u7ed1\u5305\u540e ":59,"\u6346\u7ed1\u5305\u542b\u4e00\u4e2a\u540d\u4e3a ":54,"\u6346\u7ed1\u5305\u63d0\u4f9b\u4e86 ":[35,40],"\u6346\u7ed1\u5305\u63d0\u4f9b\u4e86\u4e00\u4e2a\u9ad8\u6548\u7684\u4e91\u521d\u59cb\u5316\u89e3\u51b3\u65b9\u6848 ":40,"\u6346\u7ed1\u5305\u63d0\u4f9b\u4e86\u7528\u4e8e\u5728 ":56,"\u6346\u7ed1\u5305\u65f6\u4f1a\u5728 ":60,"\u6346\u7ed1\u5305\u65f6\u53ef\u7528\u7684 ":53,"\u6346\u7ed1\u5305\u6dfb\u52a0\u5230 ":54,"\u6346\u7ed1\u5305\u7684 ":58,"\u6346\u7ed1\u5305\u9009\u62e9 ":4,"\u6346\u7ed1\u6dfb\u52a0\u5230\u73b0\u6709 ":52,"\u63a5\u53e3\u767b\u5f55\u5230 ":8,"\u63a7\u5236\u53f0\u521b\u5efa\u548c\u542f\u52a8 ":[7,10],"\u63a7\u5236\u7ec4 ":48,"\u63a8\u9001\u901a\u7528\u6f0f\u6d1e ":28,"\u63cf\u8ff0\u4e86 ":54,"\u63cf\u8ff0\u4e86\u4e3a\u6267\u884c\u6279\u91cf\u4f9b\u5e94\u800c\u9700\u8981\u8bbe\u7f6e\u7684 ":38,"\u63d0\u4ea4\u5e76\u4fdd\u5b58\u5bf9 ":33,"\u63d0\u4ea4\u66f4\u6539\u5e76\u5c06\u5176\u4fdd\u5b58\u5230 ":33,"\u63d0\u4f9b ":[4,22],"\u63d0\u4f9b\u4e00\u4e2a\u4e13\u4e3a\u4e91\u73af\u5883\u8bbe\u8ba1\u7684 ":17,"\u63d0\u4f9b\u4e86 ":[27,40],"\u63d0\u4f9b\u4e86\u57fa\u672c\u7684 ":45,"\u63d0\u4f9b\u4e86\u7528\u4e8e\u6536\u96c6\u6709\u5173\u90e8\u7f72\u7684\u6709\u7528\u4fe1\u606f\u7684 ":1,"\u63d0\u4f9b\u4e86\u901a\u8fc7\u547d\u4ee4\u884c\u5728 ":8,"\u63d0\u4f9b\u4ee5\u4e0b ":60,"\u63d0\u4f9b\u547d\u4ee4\u6765\u914d\u7f6e\u7ec4\u5408\u7684 ":27,"\u63d0\u4f9b\u7684 ":27,"\u63d0\u53d6\u5728 ":33,"\u63d0\u793a\u6307\u5b9a\u865a\u62df\u673a\u4e16\u4ee3\u65f6\u9009\u62e9\u7b2c ":14,"\u63d2\u4ef6 ":33,"\u63d2\u5165 ":[6,16],"\u63d2\u5165\u5e76\u6302\u8f7d ":13,"\u641c\u7d22\u4e0a\u6e38 ":22,"\u64cd\u4f5c ":19,"\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u63d0\u4f9b\u4e86\u7528\u4e8e\u751f\u6210 ":1,"\u64cd\u4f5c\u7cfb\u7edf\u4f1a\u5728 ":6,"\u64cd\u4f5c\u7cfb\u7edf\u57fa\u672c ":7,"\u64cd\u4f5c\u7cfb\u7edf\u5b89\u5168\u8865\u4e01\u5927\u5c0f\u7ecf\u5e38\u53ea\u6709 ":30,"\u64cd\u4f5c\u7cfb\u7edf\u7684\u5f00\u6e90 ":17,"\u652f\u6301 ":[5,53,69],"\u652f\u6301\u4f7f\u7528 ":[4,5],"\u652f\u6301\u5728\u642d\u8f7d\u52a0\u901f\u5668\u7684\u82f1\u7279\u5c14\u00ae":60,"\u652f\u6301\u5728\u6ca1\u6709\u5185\u7f6e ":54,"\u652f\u6301\u5904\u7406\u5668\u4e0a\u7684\u6838\u5fc3\u6682\u65f6\u4ee5\u9ad8\u4e8e\u989d\u5b9a ":39,"\u6536\u5230\u4e0e ":8,"\u6536\u96c6 ":36,"\u6539\u4e3a ":39,"\u6539\u53d8\u6216\u9650\u5236 ":39,"\u6559\u7a0b\u4e2d\u7684\u8bf4\u660e\u5728 ":59,"\u6559\u7a0b\u7684\u6b65\u9aa4 ":60,"\u6570\u5b66\u5185\u6838\u5e93\u8fdb\u884c\u4f18\u5316\u7684 ":59,"\u6570\u636e\u5206\u6790\u53c2\u8003\u5806\u6808 ":58,"\u6570\u636e\u5206\u6790\u53c2\u8003\u5806\u6808\u63d0\u4f9b\u4e86\u4e24\u4e2a\u9884\u6784\u5efa\u7684 ":58,"\u6570\u636e\u5b58\u50a8 ":[19,20],"\u6574\u4e2a ":28,"\u6587\u4ef6 ":[16,19],"\u6587\u4ef6\u4e2d\u4f5c\u4e3a ":27,"\u6587\u4ef6\u4e2d\u4f7f\u7528\u4e0a\u9650\u548c\u4e0b\u9650\u57fa\u4e8e\u7528\u6237\u4e3a ":48,"\u6587\u4ef6\u4e2d\u5305\u542b ":27,"\u6587\u4ef6\u4e2d\u53d1\u73b0 ":15,"\u6587\u4ef6\u4e2d\u641c\u7d22 ":22,"\u6587\u4ef6\u4e2d\u7684 ":27,"\u6587\u4ef6\u4e2d\u7684\u5d4c\u5957 ":27,"\u6587\u4ef6\u4e2d\u7684\u66f4\u6539\u4f1a\u8986\u76d6 ":31,"\u6587\u4ef6\u4e2d\u914d\u7f6e\u7684 ":27,"\u6587\u4ef6\u4e5f\u5305\u542b ":25,"\u6587\u4ef6\u4f1a\u5b89\u88c5\u5339\u914d ":31,"\u6587\u4ef6\u4fbf\u53ef\u4f7f\u7528 ":30,"\u6587\u4ef6\u5219\u8981\u4e48\u662f\u4fee\u6539\u540e\u7684\u4e0a\u6e38 ":27,"\u6587\u4ef6\u5305\u62ec ":31,"\u6587\u4ef6\u53ea\u4f1a\u4ece\u7ec4\u5408\u4e2d\u5220\u9664 ":27,"\u6587\u4ef6\u53ef\u4ee5\u5305\u62ec\u5176\u4ed6 ":27,"\u6587\u4ef6\u53ef\u4ee5\u8f93\u5165\u5230 ":33,"\u6587\u4ef6\u53ef\u901a\u8fc7 ":30,"\u6587\u4ef6\u547d\u540d\u4e3a ":54,"\u6587\u4ef6\u548c ":21,"\u6587\u4ef6\u590d\u5236\u5230 ":[13,31],"\u6587\u4ef6\u5939\u5305\u542b\u5728 ":[22,33],"\u6587\u4ef6\u5939\u538b\u7f29\u5230 ":60,"\u6587\u4ef6\u59cb\u7ec8\u4f18\u5148\u4e8e\u540c\u540d\u7684\u4e0a\u6e38 ":27,"\u6587\u4ef6\u5b89\u88c5\u5230 ":27,"\u6587\u4ef6\u5c06\u6307\u793a ":35,"\u6587\u4ef6\u5c31\u50cf\u5728\u5fc3\u4eea\u7684\u7f16\u8f91\u5668\u4e2d\u6253\u5f00 ":27,"\u6587\u4ef6\u5e94\u4f20\u9012\u7ed9 ":60,"\u6587\u4ef6\u6216 ":35,"\u6587\u4ef6\u63d0\u4f9b\u540d\u4e3a ":31,"\u6587\u4ef6\u662f ":27,"\u6587\u4ef6\u662f\u60a8\u521b\u5efa\u7684 ":27,"\u6587\u4ef6\u66f4\u6362\u4e3a ":27,"\u6587\u4ef6\u6dfb\u52a0 ":27,"\u6587\u4ef6\u7684 ":21,"\u6587\u4ef6\u7684\u4fe1\u606f\u5b58\u50a8\u5728\u540d\u4e3a ":27,"\u6587\u4ef6\u7684\u5185\u6838\u547d\u4ee4\u884c\u53c2\u6570 ":35,"\u6587\u4ef6\u7684\u672c\u5730\u7f16\u8f91\u7248\u672c\u7684 ":27,"\u6587\u4ef6\u7cfb\u7edf\u5c42\u6b21\u7ed3\u6784\u5728\u7528\u6237\u62e5\u6709\u7684\u533a\u57df\u548c ":29,"\u6587\u4ef6\u800c\u975e\u8f6f\u4ef6\u5305\u6765\u7ba1\u7406\u8f6f\u4ef6\u5e76\u66ff\u6362 ":30,"\u6587\u4ef6\u81ea\u8eab\u53ef\u4ee5\u5305\u542b\u5176\u4ed6 ":27,"\u6587\u4ef6\u9002\u7528\u4e8e ":15,"\u6587\u6863 ":[20,60],"\u6587\u6863\u4e2d ":60,"\u6587\u6863\u4f4d\u4e8e ":31,"\u6587\u6863\u4fdd\u5b58\u5230 ":38,"\u6587\u6863\u63d0\u4f9b\u4e86\u5982\u4f55\u7f16\u5199 ":38,"\u6587\u6863\u7684\u6b65\u9aa4 ":60,"\u65ad\u5f00 ":[18,19,20],"\u65b0\u5b89\u88c5\u7684 ":29,"\u65b0\u5efassh":10,"\u65b0\u7248\u672c\u59cb\u7ec8\u6dfb\u52a0\u5230 ":8,"\u65b0\u7684 ":22,"\u65b0\u7684\u865a\u62df\u673a\u5c06\u521b\u5efa\u5b8c\u6210\u5e76\u51fa\u73b0\u5728 ":16,"\u65e0\u6cd5\u4ee5 ":31,"\u65e0\u8bba\u662f\u5728\u5185\u90e8\u90e8\u7f72\u73af\u5883\u4e2d\u8fd8\u662f\u5728\u4e91\u89e3\u51b3\u65b9\u6848\u63d0\u4f9b\u5546 ":40,"\u65e0\u8bba\u662f\u7ba1\u7406 ":31,"\u65e0\u9700\u5355\u72ec\u542f\u52a8/":31,"\u65e2\u53ef\u7ee7\u7eed\u4f7f\u7528\u4e0a\u6e38 ":40,"\u65e5\u540e\u59cb\u7ec8\u53ef\u4ee5\u4f7f\u7528 ":4,"\u65e5\u5fd7\u5219\u4f4d\u4e8e ":22,"\u65e5\u8d77\u5c06\u4e0d\u518d\u652f\u6301 ":32,"\u65f6\u624d\u9700\u8981 ":57,"\u6620\u50cf ":51,"\u6620\u50cf\u4e0b\u8f7d\u5230 ":22,"\u6620\u50cf\u4e2d\u79fb\u9664 ":52,"\u6620\u50cf\u4ee5 ":42,"\u6620\u50cf\u4f1a\u81ea\u52a8\u64e6\u9664 ":54,"\u6620\u50cf\u5747\u6709\u4e00\u4e2a\u76f8\u5e94\u7684 ":42,"\u6620\u50cf\u5e76\u5c06 ":22,"\u6620\u50cf\u62e5\u6709 ":46,"\u6620\u50cf\u6587\u4ef6 ":[18,20],"\u6620\u50cf\u6863\u6848\u6587\u4ef6\u4e0a\u4f20\u81f3\u6307\u5b9a\u7684 ":9,"\u6620\u50cf\u7ee7\u7eed\u4f7f\u7528 ":37,"\u6620\u50cf\u9700\u8981\u4f7f\u7528\u82f1\u7279\u5c14\u00ae":59,"\u662f ":[4,5,14,27,39,45,53,57,60],"\u662f\u4e00\u4e2a ":[17,19,20,39],"\u662f\u4e00\u4e2a\u57fa\u4e8e ":57,"\u662f\u4e00\u4e2a\u7528\u4e8e\u9632\u6b62\u5e73\u53f0\u8fc7\u70ed\u7684 ":39,"\u662f\u4e00\u4e2a\u7c7b\u578b ":18,"\u662f\u4e3b\u673a\u540d\u548c\u5192\u53f7 ":57,"\u662f\u5426\u9700\u8981\u63d0\u4f9b ":57,"\u662f\u5728 ":[22,46],"\u662f\u5b58\u50a8\u4e2d\u95f4\u8868\u793a ":60,"\u662f\u63cf\u8ff0\u5ba2\u6237\u7aef-":54,"\u662f\u663e\u793a ":57,"\u662f\u6700\u65b0\u7684 ":4,"\u662f\u7528\u4e8e ":17,"\u663e\u793a ":[16,57],"\u663e\u793a\u4e3a ":56,"\u663e\u793a\u4e86 ":57,"\u663e\u793a\u4e86\u4e24\u4e2a ":57,"\u663e\u793a\u503c ":53,"\u663e\u793a\u7aef\u53e3 ":53,"\u66f4\u591a\u8be6\u7ec6\u4fe1\u606f\u8bf7\u53c2\u9605 ":58,"\u66f4\u6362\u4e3a\u4e3b\u673a\u7684 ":59,"\u66f4\u6539 ":57,"\u66f4\u6539\u5185\u6838\u6e90\u4ee3\u7801\u548c ":33,"\u66f4\u65b0 ":[35,40],"\u66f4\u65b0\u5230\u7248\u672c ":7,"\u66f4\u65b0\u5230\u7ec4\u5408\u7248\u672c ":27,"\u66f4\u65b0\u548c\u6784\u5efa ":27,"\u66f4\u65b0\u60a8\u7684 ":27,"\u66f4\u65b0\u7ec4\u5408\u4e2d\u7684 ":27,"\u66f4\u65b0\u81f3 ":27,"\u66f4\u65b0\u81f3\u7248\u672c ":27,"\u66ff\u6362 ":57,"\u66ff\u6362\u4e3a ":[57,60],"\u66ff\u6362\u4e3a\u4e0a\u9762\u547d\u4ee4\u4e2d\u7684 ":37,"\u66ff\u6362\u4e3a\u4e4b\u524d\u8fd0\u884c\u7684 ":37,"\u66ff\u6362\u4e3a\u6240\u9700\u7684\u9759\u6001\u8ba1\u7b97\u673a ":31,"\u6700\u540e\u8fdb\u5165 ":15,"\u6700\u5927\u957f\u5ea6\u4e3a ":[4,5],"\u6700\u5c0f\u5b89\u88c5\u53ef\u4ee5\u5728\u4ec5\u6709 ":19,"\u6700\u5c0f\u5b89\u88c5\u53ef\u5728 ":19,"\u6700\u5c0f\u957f\u5ea6\u4e3a ":[4,5],"\u6700\u5c11\u9700\u8981 ":17,"\u6708 ":32,"\u6709 ":[17,18],"\u6709\u4e09\u79cd\u65b9\u6cd5\u53ef\u4ee5\u7528\u6765\u5728 ":57,"\u6709\u4e24\u79cd\u65b9\u6cd5\u53ef\u627e\u5230\u9884\u6784\u5efa ":46,"\u6709\u4e9b ":4,"\u6709\u4e9b\u5de5\u5177\u53ef\u534f\u52a9\u5904\u7406\u7531 ":37,"\u6709\u5173 ":[28,34,35,52,55,59,60],"\u6709\u5173\u4f7f\u7528 ":[17,18,33],"\u6709\u5173\u5728 ":40,"\u6709\u5173\u5728\u88f8\u673a\u7cfb\u7edf\u4e2d\u5b89\u88c5 ":47,"\u6709\u5173\u5982\u4f55 ":60,"\u6709\u5173\u5982\u4f55\u4e3a ":30,"\u6709\u5173\u5982\u4f55\u5728 ":60,"\u6709\u5173\u5982\u4f55\u5728\u5176\u4e0a\u5b89\u88c5 ":17,"\u6709\u5173\u7684\u6240\u6709\u53ef\u7528 ":18,"\u6709\u52a9\u4e8e\u4e91\u5f00\u53d1\u4eba\u5458\u5728\u642d\u8f7d\u52a0\u901f\u5668\u7684\u82f1\u7279\u5c14\u00ae":60,"\u670d\u52a1\u521b\u5efa ":56,"\u670d\u52a1\u5668 ":31,"\u670d\u52a1\u5668\u4e0e ":27,"\u670d\u52a1\u5668\u4ee5\u91cd\u65b0\u52a0\u8f7d ":37,"\u670d\u52a1\u5668\u548c ":[38,54],"\u670d\u52a1\u5668\u6258\u7ba1 ":36,"\u670d\u52a1\u5668\u662f\u5426\u5728 ":27,"\u670d\u52a1\u5668\u7684 ":[19,27],"\u670d\u52a1\u5668\u7684\u9009\u9879\u6dfb\u52a0\u5230 ":54,"\u670d\u52a1\u5668\u7aef\u53e3 ":57,"\u670d\u52a1\u5668\u80fd\u591f\u4ece\u7f51\u7edc\u5f15\u5bfc ":38,"\u670d\u52a1\u5668\u914d\u7f6e\u4e3a\u4ec5\u63a5\u53d7\u6765\u81ea ":57,"\u670d\u52a1\u624b\u52a8\u542f\u7528 ":39,"\u670d\u52a1\u624d\u80fd\u4f7f\u7528\u52a0\u5bc6\u767b\u5f55 ":56,"\u670d\u52a1\u6587\u4ef6 ":57,"\u670d\u52a1\u7684 ":56,"\u670d\u52a1\u811a\u672c ":57,"\u670d\u52a1\u811a\u672c\u6587\u4ef6 ":57,"\u672c\u4f8b\u4e2d\u4e0b\u8f7d\u4e86 ":33,"\u672c\u4f8b\u4e2d\u5c06\u6e90\u4ee3\u7801\u63d0\u53d6\u5230\u4e86 ":33,"\u672c\u4f8b\u4e2d\u6dfb\u52a0\u4e86 ":33,"\u672c\u4f8b\u4e2d\u7684\u8865\u4e01\u6587\u4ef6\u540d\u4e3a ":33,"\u672c\u4f8b\u4ecb\u7ecd\u4e86\u7b2c\u4e00\u6b21\u4e3a\u65b0\u7ec4\u5408\u8bbe\u7f6e ":27,"\u672c\u4f8b\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528\u73b0\u6709\u89c4\u683c\u6587\u4ef6\u901a\u8fc7\u9884\u5c01\u88c5\u7684\u4e0a\u6e38\u8f6f\u4ef6\u5305\u6765\u6784\u5efa ":22,"\u672c\u4f8b\u4ecb\u7ecd\u5982\u4f55\u4fee\u6539\u73b0\u6709\u8f6f\u4ef6\u5305\u6765\u521b\u5efa\u5b9a\u5236 ":22,"\u672c\u4f8b\u4ecb\u7ecd\u5982\u4f55\u6784\u5efa\u65b0\u7684 ":22,"\u672c\u4f8b\u4f1a\u521b\u5efa\u7b80\u6613\u7684 ":22,"\u672c\u4f8b\u4f1a\u5bf9 ":22,"\u672c\u4f8b\u8868\u660e\u4e3b\u673a\u7684\u5904\u7406\u5668\u548c ":11,"\u672c\u4f8b\u8981\u6c42\u5b89\u88c5 ":31,"\u672c\u4f8b\u91c7\u7528 ":22,"\u672c\u6307\u5357\u4e2d\u4ecb\u7ecd\u7684\u8fc7\u7a0b\u53ea\u80fd\u9a8c\u8bc1\u548c\u4fee\u590d ":44,"\u672c\u6307\u5357\u4e2d\u7684\u8fd9\u4e9b\u6b65\u9aa4\u4f7f\u7528 ":58,"\u672c\u6307\u5357\u4ecb\u7ecd ":39,"\u672c\u6307\u5357\u4ecb\u7ecd\u4e86\u4e00\u79cd\u4f7f\u7528 ":54,"\u672c\u6307\u5357\u4ecb\u7ecd\u4e86\u5229\u7528\u914d\u7f6e\u6587\u4ef6\u548c ":13,"\u672c\u6307\u5357\u4ecb\u7ecd\u4e86\u5982\u4f55\u4f7f\u7528 ":33,"\u672c\u6307\u5357\u4ecb\u7ecd\u4e86\u5f53\u65e0\u6cd5\u8bbf\u95ee\u9ed8\u8ba4 ":50,"\u672c\u6307\u5357\u4ecb\u7ecd\u4e86\u63a8\u8350\u7684\u57fa\u672c\u57fa\u7840\u8bbe\u65bd\u4ee5\u53ca\u7ef4\u62a4 ":36,"\u672c\u6307\u5357\u4ecb\u7ecd\u4e86\u7528\u4e8e\u4f7f\u7528 ":47,"\u672c\u6307\u5357\u4ecb\u7ecd\u53ef\u7528\u7684 ":42,"\u672c\u6307\u5357\u4ecb\u7ecd\u5728\u60a8\u7684\u73af\u5883\u4e2d\u5927\u89c4\u6a21\u90e8\u7f72 ":40,"\u672c\u6307\u5357\u4ecb\u7ecd\u5728\u9700\u8981\u66f4\u5927\u5bb9\u91cf\u65f6\u5982\u4f55\u589e\u52a0\u9884\u6784\u5efa\u7684 ":46,"\u672c\u6307\u5357\u4ecb\u7ecd\u5982\u4f55\u4ece ":47,"\u672c\u6307\u5357\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528 ":[35,44,49,57],"\u672c\u6307\u5357\u4ecb\u7ecd\u5982\u4f55\u4fee\u6539\u548c\u67e5\u770b ":45,"\u672c\u6307\u5357\u4ecb\u7ecd\u5982\u4f55\u5206\u914d\u9759\u6001 ":37,"\u672c\u6307\u5357\u4ecb\u7ecd\u5982\u4f55\u7ec4\u5408\u4f7f\u7528 ":38,"\u672c\u6307\u5357\u4ecb\u7ecd\u5982\u4f55\u8bbe\u7f6e ":56,"\u672c\u6307\u5357\u4ecb\u7ecd\u5982\u4f55\u901a\u8fc7\u7f51\u7edc\u4f7f\u7528 ":54,"\u672c\u6307\u5357\u4ecb\u7ecd\u5982\u4f55\u914d\u7f6e ":55,"\u672c\u6307\u5357\u4ecb\u7ecd\u5982\u4f55\u9a8c\u8bc1 ":51,"\u672c\u6307\u5357\u5047\u5b9a\u60a8\u5df2\u5728\u4e3b\u673a\u7cfb\u7edf\u4e2d\u5b89\u88c5\u4e86 ":47,"\u672c\u6307\u5357\u5047\u8bbe\u60a8\u5df2\u7ecf\u5728\u76ee\u6807\u7cfb\u7edf\u4e0a\u5b89\u88c5\u4e86 ":44,"\u672c\u6307\u5357\u5047\u8bbe\u60a8\u7684\u73af\u5883\u4e2d\u7684\u6838\u5fc3 ":40,"\u672c\u6307\u5357\u5e2e\u52a9\u60a8\u786e\u5b9a\u542f\u52a8\u60a8\u7684 ":41,"\u672c\u6307\u5357\u5e76\u4e0d\u80fd\u53d6\u4ee3\u60a8\u81ea\u5df1\u7684 ":40,"\u672c\u6307\u5357\u63cf\u8ff0\u4e86 ":31,"\u672c\u6307\u5357\u63d0\u4f9b\u4e86\u4e00\u4e2a ":41,"\u672c\u6307\u5357\u63d0\u4f9b\u4e86\u4e3a\u65b0\u5b89\u88c5\u7684 ":43,"\u672c\u6307\u5357\u6db5\u76d6\u4e86\u5b89\u88c5\u540e ":38,"\u672c\u6307\u5357\u7684\u5176\u4f59\u90e8\u5206\u5c06\u8fd9\u4e9b\u65b9\u6cd5\u79f0\u4e3a\u65b9\u6cd5 ":57,"\u672c\u6307\u5357\u8bf4\u660e\u4e86\u5982\u4f55\u4f7f\u7528 ":58,"\u672c\u6307\u5357\u8bf4\u660e\u4e86\u5982\u4f55\u542f\u7528 ":60,"\u672c\u6559\u7a0b\u4e2d\u4f7f\u7528\u7684\u662f\u6d41\u91cf\u8ba1\u8d39\u6a21\u5f0f\u5e76\u4e14\u8bbe\u7f6e\u4e862mbp":10,"\u672c\u6559\u7a0b\u4e2d\u63d0\u4f9b\u4e86\u4e24\u79cd\u53ef\u4ee5\u4e0e ":60,"\u672c\u6559\u7a0b\u4ec5\u652f\u6301 ":60,"\u672c\u6559\u7a0b\u4ecb\u7ecd\u5982\u4f55\u5728 ":59,"\u672c\u6559\u7a0b\u4ecb\u7ecd\u5982\u4f55\u901a\u8fc7 ":7,"\u672c\u6559\u7a0b\u4ecb\u7ecd\u5982\u4f55\u901a\u8fc7\u9752\u4e91 ":10,"\u672c\u6559\u7a0b\u4f7f\u7528 ":[59,60],"\u672c\u6559\u7a0b\u4f7f\u7528\u6709\u8d44\u683c\u4eab\u53d7 ":7,"\u672c\u6587\u4ecb\u7ecd\u8fd9\u4e9b ":24,"\u672c\u6587\u622a\u56fe\u91c7\u7528\u4e86 ":18,"\u672c\u6587\u6863\u7684\u622a\u5c4f\u663e\u793a\u4e86 ":17,"\u672c\u6b65\u9aa4\u793a\u4f8b\u53ef\u5728\u56fe ":46,"\u672c\u793a\u4f8b ":52,"\u672c\u793a\u4f8b\u4e2d\u7684\u5185\u6838\u6a21\u5757\u540d\u79f0\u4e3a ":35,"\u672c\u793a\u4f8b\u4f7f\u7528 ":59,"\u672c\u793a\u4f8b\u4f7f\u7528\u4ee5\u4e0b ":53,"\u672c\u793a\u4f8b\u4f7f\u7528\u540d\u79f0 ":59,"\u672c\u793a\u4f8b\u4f7f\u7528\u7aef\u53e3 ":59,"\u672c\u793a\u4f8b\u57fa\u4e8e\u624b\u518c\u9875\u4e0a\u7684\u793a\u4f8b ":55,"\u672c\u793a\u4f8b\u5c06\u4e3b\u673a\u540d\u8bbe\u7f6e\u4e3a ":45,"\u672c\u793a\u4f8b\u5c06\u56db\u7aef\u53e3\u7f51\u5361\u7684\u6240\u6709\u56db\u4e2a\u7aef\u53e3\u6346\u7ed1\u4e3a ":55,"\u672c\u7ae0\u8282\u4ecb\u7ecd\u5982\u4f55\u5728 ":10,"\u672c\u8282\u4ecb\u7ecd\u914d\u7f6e ":31,"\u672c\u8bf4\u660e\u4e3a ":16,"\u672c\u90e8\u5206\u4ecb\u7ecd\u5728\u5355\u8282\u70b9\u4e2d\u8fd0\u884c ":59,"\u672c\u90e8\u5206\u4ecb\u7ecd\u5728\u5355\u8282\u70b9\u4e2d\u8fd0\u884c\u9488\u5bf9 ":59,"\u672c\u9875\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528\u5b9e\u65f6\u670d\u52a1\u5668\u6620\u50cf\u4ece\u53ef\u5f15\u5bfc ":5,"\u672c\u9875\u4ecb\u7ecd\u5982\u4f55\u5f15\u5bfc ":4,"\u672c\u9875\u8bf4\u660e\u5728 ":9,"\u672c\u9875\u8bf4\u660e\u5982\u4f55\u521b\u5efa\u65b0\u7684 ":19,"\u672c\u9875\u8bf4\u660e\u5982\u4f55\u5229\u7528 ":[13,15,16],"\u672c\u9875\u8bf4\u660e\u5982\u4f55\u5728 ":[14,18,20],"\u672c\u9875\u9762\u63d0\u4f9b\u4e86\u6709\u5173 ":61,"\u673a\u5668 ":16,"\u673a\u5668\u5b66\u4e60 ":8,"\u673a\u5668\u9519\u8bef\u68c0\u67e5\u4ee5\u53ca\u672a\u5904\u7406\u786c\u4ef6\u6545\u969c\u7684 ":31,"\u6743\u9650\u624d\u80fd\u5728 ":31,"\u6761\u76ee\u7528\u4e8e\u5220\u9664 ":56,"\u6765\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528 ":61,"\u6765\u4f7f\u7528\u5185\u6838\u547d\u4ee4\u884c\u5f15\u5bfc\u53c2\u6570\u9650\u5236 ":39,"\u6765\u6279\u91cf\u4f9b\u5e94 ":38,"\u6765\u6784\u5efa ":[22,27,58],"\u6765\u7ec8\u6b62 ":57,"\u6765\u8bbe\u7f6e ":57,"\u6784\u5efa ":[22,27,52],"\u6784\u5efa\u4fee\u6539\u540e\u7684 ":22,"\u6784\u5efa\u57fa\u51c6 ":58,"\u6784\u5efa\u65e5\u5fd7\u548c\u5176\u4ed6 ":22,"\u6784\u5efa\u6d41\u7a0b\u9700\u8981 ":22,"\u6784\u6210\u7684 ":27,"\u67b6\u6784\u4f18\u5316\u7684 ":59,"\u67d0\u4e9b ":6,"\u67d0\u4e9b\u5185\u6838\u6a21\u5757\u5728 ":[34,35],"\u67d0\u4e9b\u786c\u4ef6\u53ef\u80fd\u4f1a\u5217\u51fa ":5,"\u67e5\u627e ":[5,15,20,27],"\u67e5\u627e\u4e0e\u6b64\u5b57\u8bcd\u5339\u914d\u7684 ":30,"\u67e5\u627e\u5173\u4e8e\u5982\u4f55\u66f4\u65b0\u8f6f\u4ef6\u5305\u548c\u7ba1\u7406 ":59,"\u67e5\u627e\u5305\u542b\u4f9b\u5e94\u5546\u548c\u8bbe\u5907 ":53,"\u67e5\u627e\u5305\u542b\u641c\u7d22\u5b57\u8bcd\u7684 ":30,"\u67e5\u770b ":[4,13,16,22,27,69],"\u67e5\u770b\u4e0e ":43,"\u67e5\u770b\u4f7f\u7528 ":26,"\u67e5\u770b\u5668 ":57,"\u67e5\u770b\u5668\u5e94\u7528\u7a0b\u5e8f\u624d\u80fd\u8fde\u63a5\u5230 ":57,"\u67e5\u770b\u5668\u5e94\u7528\u7a0b\u5e8f\u63d0\u4f9b\u663e\u793a ":57,"\u67e5\u770b\u5668\u5e94\u7528\u7a0b\u5e8f\u73b0\u5728\u5c06\u8fde\u63a5\u5230 ":57,"\u67e5\u770b\u5668\u8fde\u63a5\u81f3 ":15,"\u67e5\u770b\u5f53\u524d\u53d1\u5e03\u7684 ":9,"\u67e5\u770b\u672c\u5730 ":27,"\u67e5\u770b\u7ec4\u5408\u4e2d\u5b89\u88c5\u7684\u9ed8\u8ba4 ":27,"\u67e5\u770b\u7ec4\u5408\u7248\u672c ":27,"\u67e5\u770b\u9002\u5408\u4ece\u4e2d\u8fdb\u884c\u7ec4\u5408\u7684 ":27,"\u67e5\u9605 ":[16,53],"\u6821\u9a8c\u548c ":42,"\u6838\u5fc3\u8f6f\u4ef6\u7684 ":60,"\u6839\u636e ":[9,22,32,74],"\u6839\u636e\u6240\u9009\u7684 ":57,"\u6839\u636e\u6620\u50cf\u7684 ":26,"\u6839\u636e\u662f\u5426\u8981\u53c2\u4e0e`":5,"\u6839\u636e\u6700\u65b0\u7684\u4e0a\u6e38 ":27,"\u6839\u636e\u8868 ":[4,5],"\u6839\u636e\u9700\u8981\u6dfb\u52a0\u5176\u4ed6 ":13,"\u683c\u5f0f\u4ee5\u53ca\u4e0e\u6743\u91cd\u5bf9\u5e94\u7684 ":60,"\u684c\u9762\u5b89\u88c5\u7a0b\u5e8f ":4,"\u68c0\u67e5 ":[35,36,37],"\u68c0\u67e5\u4e3b\u673a\u662f\u5426\u53ef\u4ee5\u5728\u4e00\u4e2a\u5bb9\u5668\u4e2d\u8fd0\u884c ":11,"\u68c0\u67e5\u4e3b\u673a\u7684\u5904\u7406\u5668\u548c ":11,"\u68c0\u67e5\u4e3b\u673a\u7cfb\u7edf\u7684\u5904\u7406\u5668\u548c ":11,"\u68c0\u67e5\u5904\u7406\u5668\u548c ":[4,5,12,13],"\u68c0\u6d4b\u5230 ":6,"\u6a21\u5757 ":60,"\u6a21\u5757\u4ee5\u8fd0\u884c ":53,"\u6a21\u578b\u4e0e ":60,"\u6a21\u578b\u4f18\u5316\u5668\u7684\u4e2d\u95f4\u8868\u793a\u6587\u4ef6 ":60,"\u6a21\u578b\u6587\u4ef6 ":60,"\u6a21\u5f0f\u4fbf\u4e8e ":28,"\u6b22\u8fce\u6765\u5230 ":61,"\u6b63\u5728\u8fd0\u884c\u4f46\u4e0d\u5e26 ":21,"\u6b63\u786e\u6784\u5efa ":27,"\u6b64 ":[8,48,60],"\u6b64\u5168\u5c40\u8bbe\u7f6e\u7531\u4f7f\u7528 ":[22,33],"\u6b64\u547d\u4ee4\u5c06\u542f\u7528\u5e76\u542f\u52a8 ":31,"\u6b64\u5904\u4f7f\u7528 ":6,"\u6b64\u5916\u53ef\u4ee5\u4f7f\u7528 ":33,"\u6b64\u5de5\u5177\u4f4d\u4e8e ":31,"\u6b64\u5de5\u5177\u5219\u4f1a\u4ece ":31,"\u6b64\u5e93\u5b58\u5728\u4e8e ":22,"\u6b64\u64cd\u4f5c\u4f1a\u4fdd\u5b58\u73b0\u6709\u7684 ":54,"\u6b64\u64cd\u4f5c\u4f1a\u542f\u52a8 ":5,"\u6b64\u64cd\u4f5c\u4f1a\u8ba9 ":54,"\u6b64\u64cd\u4f5c\u4f1a\u91cd\u65b0\u542f\u52a8 ":17,"\u6b64\u64cd\u4f5c\u5047\u8bbe\u5141\u8bb8 ":29,"\u6b64\u64cd\u4f5c\u53ef\u8ba9\u6240\u6709 ":30,"\u6b64\u64cd\u4f5c\u5c06\u521b\u5efa\u6587\u4ef6 ":31,"\u6b64\u64cd\u4f5c\u5c06\u5220\u9664 ":31,"\u6b64\u6587\u4ef6\u6240\u5728\u7684\u8def\u5f84\u662f\u901a\u8fc7\u6587\u4ef6 ":27,"\u6b64\u6587\u4ef6\u7684 ":31,"\u6b64\u65b9\u6cd5\u662f\u6307\u5229\u7528 ":40,"\u6b64\u65f6\u4e0d\u5e94\u518d\u51fa\u73b0 ":27,"\u6b64\u65f6\u5c06\u51fa\u73b0\u56fe ":7,"\u6b64\u65f6\u60a8\u5c06\u524d\u5f80 ":9,"\u6b64\u65f6\u8bf7\u6309\u7167 ":37,"\u6b64\u6620\u50cf\u7684 ":26,"\u6b64\u670d\u52a1\u5668\u901a\u8fc7 ":31,"\u6b64\u6b65\u9aa4\u7684\u8f93\u51fa\u4e3a\u5b9e\u65f6\u6620\u50cf ":27,"\u6b64\u6eda\u52a8\u53d1\u5e03\u7248\u672c\u7ba1\u7406\u6a21\u578b\u7c7b\u4f3c\u4e8e ":30,"\u6b64\u76ee\u5f55\u53ea\u662f\u4f9b ":27,"\u6b64\u76ee\u5f55\u7684\u8def\u5f84\u662f\u901a\u8fc7 ":27,"\u6b64\u793a\u4f8b\u5c06\u8fd4\u56de\u5305\u542b ":47,"\u6b64\u793a\u4f8b\u67e5\u8be2 ":47,"\u6b64\u793a\u4f8b\u67e5\u8be2\u53d1\u884c\u7248 ":47,"\u6b64\u793a\u4f8b\u6bcf\u79d2\u5728 ":60,"\u6b64\u7ec4\u5408\u4f1a\u914d\u7f6e\u66f4\u65b0\u4f4d\u7f6e ":27,"\u6b64\u811a\u672c\u5c06\u542f\u52a8 ":15,"\u6b64\u811a\u672c\u5c06\u542f\u52a8\u5e76\u5217\u51fa\u6240\u6709\u5df2\u5b9a\u4e49\u7684\u9009\u9879\u5e76\u63d0\u793a\u8f93\u5165 ":31,"\u6b64\u9009\u9879\u6307\u5b9a ":31,"\u6b64\u9009\u9879\u6307\u5b9a\u63a5\u6536 ":31,"\u6b64\u9009\u9879\u6307\u793a ":49,"\u6b64\u9009\u9879\u652f\u6301\u4f7f\u7528 ":60,"\u6b64\u9009\u9879\u662f\u6307\u5b88\u62a4\u7a0b\u5e8f\u5728 ":31,"\u6b64\u914d\u7f6e\u952e\u53ef\u4e0e ":31,"\u6b64\u914d\u7f6e\u952e\u7684\u9ed8\u8ba4\u503c\u4e3a ":31,"\u6bcf\u4e2a ":30,"\u6bcf\u4e2a\u5185\u90e8\u7248\u672c\u5747\u7531\u4e00\u7ec4\u7279\u5b9a\u7684 ":30,"\u6bcf\u4e2a\u5b50\u7c7b\u522b\u7684\u957f\u5ea6\u4e0d\u8d85\u8fc7 ":31,"\u6bcf\u4e2a\u5e73\u53f0\u5fc5\u987b\u81f3\u5c11\u6709\u4e00\u4e2a ":53,"\u6bcf\u4e2a\u6620\u50cf\u5747\u6709\u4e00\u4e2a ":26,"\u6bcf\u4e2a\u7248\u672c\u7684 ":27,"\u6bcf\u4e2a\u91ca\u653e\u7684 ":42,"\u6bcf\u53f0 ":53,"\u6bcf\u5f53\u5728 ":34,"\u6bcf\u6b21\u4f7f\u7528 ":8,"\u6bcf\u6b21\u66f4\u6539\u7ec4\u5408\u4e2d\u7684 ":27,"\u6bd4\u5982\u8c03\u6574 ":10,"\u6d3e\u751f\u4e14\u9488\u5bf9 ":58,"\u6d41\u91cf\u53ef\u4ee5\u901a\u8fc7 ":57,"\u6d4f\u89c8 ":9,"\u6d4f\u89c8\u5230 ":27,"\u6d4f\u89c8\u5668 ":[19,20],"\u6df1\u5ea6\u5b66\u4e60\u53c2\u8003\u5806\u6808 ":59,"\u6df1\u5ea6\u5b66\u4e60\u53c2\u8003\u5806\u6808\u548c\u672c\u6559\u7a0b\u7684\u6027\u80fd\u6d4b\u8bd5\u7ed3\u679c\u662f\u4f7f\u7528 ":59,"\u6df1\u5ea6\u5b66\u4e60\u53c2\u8003\u5806\u6808\u662f\u4e3a\u4e86\u5728 ":59,"\u6dfb\u52a0 ":[16,30,35,46,57],"\u6dfb\u52a0\u4e00\u4e2a\u6216\u591a\u4e2a\u6765\u81ea ":22,"\u6dfb\u52a0\u4e86\u6700\u5c11\u7684 ":27,"\u6dfb\u52a0\u5185\u6838\u53c2\u6570 ":38,"\u6dfb\u52a0\u5230 ":[43,57,59,60],"\u6dfb\u52a0\u5b9a\u5236 ":27,"\u6dfb\u52a0\u663e\u5361\u9a71\u52a8\u7a0b\u5e8f ":15,"\u6dfb\u52a0\u81f3 ":15,"\u6dfb\u52a0\u8ba2\u9605\u4ee5\u8fdb\u884c\u8ba2\u9605\u6216\u53d1\u5e03\u6765\u81ea ":60,"\u6e90\u4ee3\u7801\u4e2d\u8bb0\u5f55\u4e86\u4ee5 ":31,"\u6e90\u4ee3\u7801\u6811\u4e2d\u7684\u8865\u4e01\u76ee\u5f55\u590d\u5236\u5230 ":33,"\u7075\u6d3b\u4e3b\u673a\u540d\u662f\u4e00\u4e2a\u81ea\u7531\u683c\u5f0f\u7684 ":45,"\u70b9\u51fb ":[4,6,9,16,17,18,19,20,57],"\u70b9\u51fb\u00b7":[17,18],"\u70b9\u51fb\u53f3\u4fa7\u7684 ":20,"\u70b9\u51fb\u5de6\u4e0a\u90e8\u5c4f\u5e55\u83dc\u5355\u4e2d\u7684 ":9,"\u70b9\u51fb\u6807\u8bb0\u4e3a ":16,"\u70b9\u51fb\u767b\u5f55\u5373\u53ef\u767b\u5f55\u5230 ":10,"\u70e7\u5f55\u6620\u50cf\u4f1a\u683c\u5f0f\u5316 ":6,"\u7136\u540e\u4f7f\u7528 ":8,"\u7136\u540e\u518d\u68c0\u67e5\u4e0a\u6e38 ":27,"\u7136\u540e\u518d\u7528 ":22,"\u7136\u540e\u5728 ":26,"\u7136\u540e\u5c06 ":13,"\u7136\u540e\u5c06\u5b83\u4eec\u6dfb\u52a0\u5230 ":33,"\u7136\u540e\u5c06\u6620\u50cf\u4ece\u7ec4\u5408\u7248\u672c ":27,"\u7136\u540e\u624b\u52a8\u542f\u52a8 ":57,"\u7136\u540e\u624d\u80fd\u518d\u6b21\u8fd0\u884c ":22,"\u7136\u540e\u6267\u884c ":5,"\u7136\u540e\u6302\u8f7d ":19,"\u7136\u540e\u6302\u8f7d\u8f6c\u6362\u540e\u7684 ":20,"\u7136\u540e\u6309 ":[5,7],"\u7136\u540e\u6309\u7167 ":18,"\u7136\u540e\u6309\u7167\u8bf4\u660e ":11,"\u7136\u540e\u70b9\u51fb ":[9,16],"\u7136\u540e\u70b9\u51fb\u5e95\u90e8\u7684 ":9,"\u7136\u540e\u7531\u5ba2\u6237\u7aef\u901a\u8fc7 ":27,"\u7136\u540e\u8c03\u7528 ":31,"\u7136\u540e\u8f6c\u5230\u4e0b\u9762\u7684 ":57,"\u7136\u540e\u8fd0\u884c ":58,"\u7136\u540e\u9009\u62e9 ":[4,5,7,16,19,42,59],"\u7136\u540e\u9009\u62e9\u56fe ":7,"\u7136\u540e\u901a\u8fc7\u65e0\u7ebf\u8fde\u63a5\u5b89\u88c5 ":5,"\u719f\u6089 ":36,"\u7248 ":[18,27],"\u7248\u672c ":59,"\u7248\u672c\u4e3a ":35,"\u7248\u672c\u4ee5\u53ca ":17,"\u7248\u672c\u548c ":26,"\u7269\u7406\u786c\u76d8\u5b58\u50a8:":16,"\u7269\u8054\u7f51 ":41,"\u72b6\u6001 ":39,"\u72b6\u6001\u4f1a\u5f71\u54cd ":39,"\u72b6\u6001\u4f1a\u6839\u636e ":39,"\u72b6\u6001\u548c ":39,"\u72b6\u6001\u5c06\u4f1a\u53d8\u6210\u56fe16":10,"\u72b6\u6001\u6216 ":39,"\u72b6\u6001\u663e\u793a\u4e3a ":53,"\u72b6\u6001\u90fd\u5c5e\u4e8e ":39,"\u73af\u5883\u4e2d\u8fd0\u884c ":14,"\u73af\u5883\u53d8\u91cf\u6dfb\u52a0\u5230 ":56,"\u73af\u5883\u5b89\u88c5 ":54,"\u73b0\u4ee3 ":39,"\u73b0\u5728\u60a8\u4f4d\u4e8e\u65b0\u7684 ":7,"\u73b0\u5728\u6211\u4eec\u5c06\u6dfb\u52a0\u4fee\u6539\u7684 ":27,"\u73b0\u5728\u914d\u7f6e ":5,"\u751a\u81f3\u53ef\u4ee5\u5728\u5305\u542b ":69,"\u751f\u6210 ":[40,51],"\u751f\u6210\u6620\u50cf\u7684 ":51,"\u751f\u6210\u7684 ":22,"\u751f\u6210\u7684\u66f4\u65b0\u5185\u5bb9\u968f\u540e\u4f1a\u53d1\u5e03\u5230 ":27,"\u751f\u6210\u7684\u66f4\u65b0\u5185\u5bb9\u968f\u540e\u4f1a\u5728\u4e0b\u6e38\u5ba2\u6237\u7aef\u4e0a\u4f9b ":27,"\u7528\u4e8e\u4f7f\u7528 ":42,"\u7528\u4e8e\u4f7f\u7528\u4f20\u7edf ":42,"\u7528\u4e8e\u5728\u751f\u4ea7\u524d\u90e8\u7f72 ":40,"\u7528\u4e8e\u5b89\u88c5\u5230 ":31,"\u7528\u4e8e\u5c06\u57df\u8bbe\u4e3a ":31,"\u7528\u4e8e\u5f15\u5bfc\u81f3 ":42,"\u7528\u4e8e\u6784\u5efa ":36,"\u7528\u4e8e\u6d4b\u8bd5 ":40,"\u7528\u4e8e\u751f\u6210\u6620\u50cf\u7684 ":26,"\u7528\u4e8e\u8bbe\u5b9a ":31,"\u7528\u4e8e\u9488\u5bf9 ":34,"\u7528\u4f5c ":27,"\u7528\u4f5c*":24,"\u7528\u6237\u53ef\u4ee5\u5b89\u88c5\u7ec4\u5408\u4e2d\u7684\u5176\u4ed6 ":27,"\u7528\u6237\u53ef\u80fd\u4f1a\u5c06 ":43,"\u7528\u6237\u540d\u6211\u4eec\u9009\u62e9 ":10,"\u7528\u6237\u5728 ":29,"\u7528\u6237\u5728\u6b65\u9aa4 ":22,"\u7528\u6237\u5e10\u6237\u5e76\u4e14\u5df2\u767b\u5f55\u5230 ":7,"\u7528\u6237\u5e94\u5728 ":29,"\u7528\u6237\u8bbe\u7f6e\u4e00\u4e2a ":57,"\u7528\u6237\u8eab\u4efd\u6ce8\u9500\u5e76\u767b\u5f55\u65b0\u7684 ":43,"\u7528\u6237\u8eab\u4efd\u767b\u5f55 ":15,"\u7528\u6765\u5411 ":[4,5],"\u7528\u6765\u5728\u4f7f\u7528 ":35,"\u7528\u6765\u5904\u7406\u7531 ":37,"\u7528\u7f16\u8f91\u5668\u6253\u5f00 ":22,"\u7531 ":37,"\u7531\u4e8e ":[10,51,58],"\u7531\u4e8e\u4e0a\u4e00\u6b65\u5728 ":15,"\u7531\u4e8e\u5c1a\u672a\u5b89\u88c5 ":27,"\u7531\u4e8e\u6211\u4eec\u8981\u521b\u5efa ":8,"\u7531\u4e8e\u8fd9\u662f\u60a8\u7b2c\u4e00\u6b21\u542f\u52a8 ":57,"\u7531\u7528\u6237\u6307\u5b9a\u7684 ":60,"\u7533\u8bf7\u521b\u5efa\u516c\u7f51ip":10,"\u754c\u9762\u5c06\u8df3\u8f6c\u5230\u4e4b\u524d\u7684 ":10,"\u767b\u5f55 ":[9,15,57],"\u767b\u5f55\u5230\u65b0\u7684 ":8,"\u767b\u5f55\u5e76\u786e\u8ba4 ":16,"\u767b\u5f55\u5e76\u83b7\u5f97 ":[52,54,55,57],"\u7684 ":[6,7,8,15,16,17,19,22,31,33,35,39,41,42,46,51,53,54,57,59,60,69],"\u7684\u503c\u8bbe\u4e3a\u5728\u524d\u63d0\u6761\u4ef6 ":27,"\u7684\u5185\u6838 ":16,"\u7684\u524d\u51e0\u4e2a\u5b57\u7b26\u6765\u6267\u884c ":59,"\u7684\u5ba2\u6237\u7aef-":57,"\u7684\u5bb9\u5668\u4e2d\u7684\u8f6f\u4ef6\u5305\u7248\u672c\u53f7\u53ef\u80fd\u4e0d\u662f ":58,"\u7684\u6240\u6709 ":43,"\u7684\u6587\u4ef6 ":16,"\u7684\u65b0\u865a\u62df\u673a\u4e0a\u624b\u52a8\u5b89\u88c5 ":19,"\u7684\u66f4\u591a\u4fe1\u606f\u4ee5\u53ca\u4f7f\u7528\u56fe ":7,"\u7684\u6807\u51c6 ":22,"\u7684\u6b65\u9aa4 ":60,"\u7684\u7528\u6237 ":57,"\u7684\u7ba1\u7406\u7528\u6237\u5e76\u5c06\u5176\u6dfb\u52a0\u5230 ":31,"\u7684\u7cfb\u7edf\u8bbf\u95ee ":7,"\u7684\u84dd\u8272 ":16,"\u7684\u8d44\u6e90\u7ec4\u5e76\u4f7f\u7528 ":8,"\u7684\u8f7b\u91cf\u7ea7 ":54,"\u7684\u9ed8\u8ba4 ":15,"\u76d1\u63a7\u4e0a\u6e38 ":36,"\u76d1\u89c6\u548c\u963b\u6b62\u53ef\u7591\u7684 ":28,"\u76d8\u4e2d\u5305\u542b\u627e\u5230\u7684 ":13,"\u76d8\u63d2\u5165\u65f6\u81ea\u52a8\u6302\u8f7d ":6,"\u76ee\u524d\u552f\u4e00\u652f\u6301\u7684\u503c\u4e3a ":31,"\u76ee\u5f55\u4e0b\u4ee5 ":[34,35],"\u76ee\u5f55\u4e0b\u4f7f\u7528 ":33,"\u76ee\u5f55\u4e0b\u7f16\u5199\u7684\u6587\u4ef6\u53ef\u4ee5\u901a\u8fc7 ":29,"\u76ee\u5f55\u4e0b\u8f7d ":15,"\u76ee\u5f55\u4e0b\u8f7d\u6700\u65b0\u7684\u9884\u6784\u5efa ":15,"\u76ee\u5f55\u4e2d\u521b\u5efa\u540d\u4e3a ":31,"\u76ee\u5f55\u4e2d\u5b58\u50a8\u4e3a\u6269\u5c55\u540d\u4e3a ":37,"\u76ee\u5f55\u4e2d\u67e5\u627e\u6210\u529f\u751f\u6210\u7684 ":22,"\u76ee\u5f55\u4e2d\u7684 ":[27,38],"\u76ee\u5f55\u4e2d\u7684\u6587\u4ef6\u6765\u63a7\u5236\u6240\u6709 ":48,"\u76ee\u5f55\u4e2d\u8f93\u51fa\u591a\u4e2a ":33,"\u76ee\u5f55\u4e2d\u8fd0\u884c ":[22,31],"\u76ee\u5f55\u4e2d\u8fd0\u884c\u6b64 ":31,"\u76ee\u5f55\u548c ":35,"\u76ee\u5f55\u5e76\u542f\u52a8 ":22,"\u76ee\u7684\u662f\u6253\u9020\u4e00\u4e2a\u65e0\u9700\u8fc7\u591a\u7528\u6237\u914d\u7f6e\u6216\u81ea\u5b9a\u4e49\u7684 ":29,"\u76f4\u5230\u5b83\u5177\u6709\u5b8c\u6574\u6709\u6548\u7684 ":22,"\u76f4\u5230\u5b83\u5177\u6709\u6709\u6548\u7684 ":22,"\u76f4\u63a5\u89e3\u538b\u7f29\u5230\u6b63\u5728\u8fd0\u884c\u7684 ":22,"\u76f8\u5173 ":31,"\u76f8\u5e94\u7684 ":42,"\u76f8\u6bd4\u5176\u4ed6 ":41,"\u7761\u7720\u5faa\u73af\u5f3a\u5236 ":39,"\u777f\u9891\u52a0\u901f\u6280\u672f\u4e5f\u53ef\u4ee5\u5728 ":39,"\u777f\u9891\u52a0\u901f\u6280\u672f\u53ef\u4ee5\u5728\u7cfb\u7edf\u7684 ":39,"\u777f\u9891\u52a0\u901f\u6280\u672f\u662f\u5bf9 ":39,"\u77e2\u91cf\u795e\u7ecf\u7f51\u7edc\u6307\u4ee4 ":59,"\u786c\u4ef6\u52a0\u901f\u7684 ":60,"\u786c\u4ef6\u52a0\u901f\u7684\u529f\u80fd\u5373\u670d\u52a1 ":60,"\u786e\u4fdd\u4e3b\u673a\u7cfb\u7edf\u7684 ":16,"\u786e\u4fdd\u4f7f\u7528 ":51,"\u786e\u4fdd\u5185\u6838\u540d\u79f0\u4e2d\u542b\u6709 ":35,"\u786e\u4fdd\u521d\u59cb ":54,"\u786e\u4fdd\u53ef\u5728\u6574\u4e2a\u73af\u5883\u4e2d\u8bbf\u95ee ":59,"\u786e\u4fdd\u5b8c\u6210\u6240\u6709 ":6,"\u786e\u4fdd\u5df2\u5b89\u88c5 ":56,"\u786e\u4fdd\u60a8\u7684\u7cfb\u7edf\u5df2\u914d\u7f6e\u4e3a\u5f15\u5bfc ":5,"\u786e\u4fdd\u751f\u6210\u7684 ":51,"\u786e\u4fdd\u8be5\u8f6f\u4ef6\u5df2\u6b63\u5e38\u5b89\u88c5\u5230 ":22,"\u786e\u4fdd\u9996\u5148\u5378\u8f7d\u6240\u6709 ":6,"\u786e\u5b9a ":[34,35],"\u786e\u8ba4 ":[5,6,37,46,51,52,56],"\u786e\u8ba4\u5728\u60a8\u7684\u672c\u5730\u7f51\u7edc\u4e0a\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee\u4ee5\u4e0b ":38,"\u786e\u8ba4\u5c06\u5728\u5176\u4e0a\u5f00\u542f\u865a\u62df\u673a\u7684\u6258\u7ba1\u4e3b\u673a\u7684 ":15,"\u786e\u8ba4\u63d0\u4ea4\u516c\u7f51ip":10,"\u786e\u8ba4\u65e0\u8bef\u540e\u5373\u53ef\u70b9\u51fb ":10,"\u786e\u8ba4\u65e0\u8bef\u540e\u70b9\u51fb ":10,"\u786e\u8ba4\u65e0\u8bef\u540e\u8bf7\u70b9\u51fb ":10,"\u786e\u8ba4\u751f\u6210\u7684 ":51,"\u786e\u8ba4\u9065\u6d4b\u5934\u6587\u4ef6\u4f4d\u4e8e\u7cfb\u7edf\u4e0a\u7684 ":31,"\u786e\u8ba4\u9759\u6001 ":37,"\u78c1\u76d8\u6620\u50cf ":14,"\u793a\u4f8b\u4e2d ":60,"\u793a\u4f8b\u4e2d\u8bbe\u7f6e\u548c\u6307\u5b9a ":60,"\u793a\u4f8b\u4e2d\u8bbe\u7f6e\u548c\u6307\u5b9a\u7528\u6765\u5b58\u50a8 ":60,"\u793a\u4f8b\u4e3b\u9898\u5305\u62ec\u4ee5\u4e0b ":60,"\u793a\u4f8b\u4ee5\u53ca\u4ece\u4e0a\u4e00\u6b65\u63d0\u53d6\u7684 ":60,"\u793a\u4f8b\u4f4d\u4e8e ":60,"\u793a\u4f8b\u4f7f\u7528 ":60,"\u793e\u533a ":35,"\u793e\u533a\u4e5f\u63d0\u4f9b\u4e86 ":59,"\u7981\u6b62 ":39,"\u79fb\u9664\u4efb\u4f55\u7ed3\u5c3e\u4e0d\u662f ":16,"\u79fb\u9664\u9ed8\u8ba4 ":20,"\u7a0b\u5e8f\u548c ":35,"\u7a0d\u540e\u9700\u8981\u5c06\u5b83\u8f93\u5165\u5230 ":57,"\u7acb\u5373\u91cd\u65b0\u542f\u52a8 ":21,"\u7aef\u53e3 ":53,"\u7aef\u53e3\u53f7 ":57,"\u7aef\u53e3\u53f7\u4e3a ":57,"\u7aef\u53e3\u53f7\u7684\u6d41\u91cf\u8f6c\u53d1\u5230 ":57,"\u7aef\u70b9\u6765\u542f\u52a8 ":59,"\u7b26\u53f7\u524d\u9762\u7684\u6587\u672c\u66f4\u6539\u4e3a\u7528\u6237\u540d ":7,"\u7b2c ":53,"\u7b2c\u4e00\u4e2a ":56,"\u7b2c\u4e00\u4e2a\u5b9a\u5236\u7ec4\u5408\u7248\u672c\u53f7\u4ee5 ":27,"\u7b2c\u4e00\u79cd\u65b9\u6cd5\u662f\u5f15\u5bfc\u542f\u52a8\u60a8\u7684 ":46,"\u7b2c\u4e8c\u4e2a ":56,"\u7b49\u9879\u76ee\u4e2d\u5c06 ":24,"\u7b7e\u540d\u4ee5\u53ca\u7528\u4e8e\u5bf9 ":51,"\u7b7e\u540d\u662f\u4f7f\u7528 ":51,"\u7b7e\u540d\u8fdb\u884c\u7b7e\u540d\u7684 ":51,"\u7ba1\u7406 ":20,"\u7ba1\u7406\u548c\u672c\u5730\u7cfb\u7edf\u4e0a\u8fd0\u884c ":18,"\u7ba1\u7406\u548c\u8fd0\u884c ":[17,19,20],"\u7ba1\u7406\u7684\u7f51\u7edc\u8fde\u63a5\u5728 ":37,"\u7cfb\u7edf\u4e0a\u542f\u7528 ":14,"\u7cfb\u7edf\u4e0a\u5b89\u88c5 ":52,"\u7cfb\u7edf\u4e0d\u4f1a\u751f\u6210 ":51,"\u7cfb\u7edf\u4e0d\u652f\u6301 ":16,"\u7cfb\u7edf\u4e2d\u4f7f\u7528 ":8,"\u7cfb\u7edf\u4e2d\u5b89\u88c5 ":8,"\u7cfb\u7edf\u4ec5\u4fdd\u7559\u6700\u8fd1\u7684 ":31,"\u7cfb\u7edf\u4f1a\u4e3a\u8be5\u6620\u50cf\u5b9a\u4e49 ":26,"\u7cfb\u7edf\u53ea\u8fd4\u56de\u57fa\u672c ":30,"\u7cfb\u7edf\u5728 ":29,"\u7cfb\u7edf\u5c06 ":57,"\u7cfb\u7edf\u5c06\u63d0\u793a\u8f93\u5165 ":31,"\u7cfb\u7edf\u5c06\u914d\u7f6e ":27,"\u7cfb\u7edf\u5df2\u96c6\u6210\u5230 ":25,"\u7cfb\u7edf\u6bcf\u5929\u90fd\u4f1a\u5bf9\u7167 ":28,"\u7cfb\u7edf\u7684\u6570\u636e\u7684\u5ba2\u6237\u7aef/":31,"\u7cfb\u7edf\u76f4\u63a5\u5bf9 ":51,"\u7cfb\u7edf\u7ba1\u7406\u5458\u4f7f\u7528\u9884\u5148\u5206\u914d\u7684\u663e\u793a ":57,"\u7cfb\u7edf\u7ba1\u7406\u5458\u53ef\u4ee5\u4f7f\u7528 ":49,"\u7cfb\u7edf\u7ba1\u7406\u5458\u53ef\u4ee5\u5b8c\u5168\u7981\u7528 ":57,"\u7cfb\u7edf\u7ba1\u7406\u5458\u5c06 ":57,"\u7cfb\u7edf\u7ba1\u7406\u5458\u5c31\u53ef\u4ee5\u4f7f\u7528 ":23,"\u7cfb\u7edf\u955c\u50cf\u4e2d\u627e\u5230\u5e76\u9009\u62e9 ":10,"\u7cfb\u7edf\u968f\u5373\u5f00\u59cb\u5c06\u9065\u6d4b\u6570\u636e\u53d1\u9001\u5230\u6587\u4ef6 ":31,"\u7ea0\u6b63 ":22,"\u7ec4\u5408\u5e94\u4e3a\u7248\u672c ":27,"\u7ec4\u5408\u7248\u672c\u4ee5 ":27,"\u7ec4\u5408\u7684\u66f4\u65b0\u5185\u5bb9\u9700\u5728 ":27,"\u7ec4\u548c ":60,"\u7ecf\u9a8c\u4e30\u5bcc\u7684 ":43,"\u7ed1\u5b9a\u516c\u7f51ipv4":10,"\u7ed1\u5b9a\u64cd\u4f5c\u7684\u5e38\u89c4\u8bed\u6cd5\u662f ":53,"\u7ee7\u7eed\u7533\u8bf7\u516c\u7f51ip":10,"\u7ef4\u62a4 ":36,"\u7ef4\u62a4\u548c\u4fdd\u7559 ":[34,35],"\u7f16\u5199 ":38,"\u7f16\u8bd1\u540e\u4f1a\u5728 ":33,"\u7f16\u8bd1\u65f6\u5fc5\u987b\u5728 ":33,"\u7f16\u8f91 ":[17,27,47,57,60],"\u7f16\u8f91\u6216\u5220\u9664\u5c06\u7eb3\u5165\u5185\u5bb9\u7684 ":27,"\u7f16\u8f91\u6620\u50cf\u7684 ":27,"\u7f16\u8f91\u73b0\u6709\u672c\u5730 ":27,"\u7f51\u5361\u7ed1\u5b9a\u548c ":53,"\u7f51\u5740\u4e3a ":10,"\u7f51\u7ad9\u5c06\u53d8\u4e3a\u7528\u4e8e\u8f93\u5165\u73b0\u6709 ":8,"\u7f51\u7edc\u4e0ecdn":10,"\u7f51\u7edc\u9a71\u52a8\u7a0b\u5e8f\u548c ":53,"\u8003\u8651\u5728 ":33,"\u800c ":[6,22,27,31,37],"\u800c\u4e0d\u662f ":57,"\u800c\u4e0d\u662f\u5c06\u5176\u8bbe\u7f6e\u4e3a ":39,"\u800c\u4e0d\u8981\u4f7f\u7528 ":8,"\u800c\u4e14\u540e\u8ddf ":42,"\u800c\u4e14\u5b83\u8981\u6c42\u91c7\u7528\u652f\u6301 ":69,"\u800c\u4e14\u8fd9\u4e9b\u7528\u6237\u62e5\u6709\u81ea\u5df1\u9884\u5148\u6307\u5b9a\u7684\u552f\u4e00\u663e\u793a ":57,"\u800c\u5728 ":39,"\u800c\u5ba2\u6237\u7aef\u5219\u53ef\u4f7f\u7528 ":31,"\u800c\u6839\u5206\u533a\u4e3a ":46,"\u800c\u6b64 ":27,"\u800c\u6b64\u6587\u4ef6\u5c06\u7528\u4e8e\u914d\u7f6e ":27,"\u800c\u8fd9\u4e9b ":30,"\u800c\u975e ":30,"\u800c\u975e\u5f00\u542f\u865a\u62df\u673a\u7684\u63a7\u5236\u53f0\u4e0e ":15,"\u800c\u975e\u672c\u6559\u7a0b\u4e2d\u663e\u793a\u7684 ":8,"\u80fd\u591f\u8fd0\u884c ":40,"\u811a\u672c\u4ee5\u8fd0\u884c ":53,"\u811a\u672c\u4f7f\u7528 ":31,"\u811a\u672c\u542f\u52a8\u4e00\u4e2a\u542b\u6709\u7b80\u5355 ":59,"\u811a\u672c\u6216\u66f4\u5927\u7684 ":59,"\u811a\u672c\u7684 ":59,"\u81ea\u52a8\u751f\u6210 ":27,"\u81ea\u52a8\u8bbe\u7f6e ":54,"\u81f3 ":46,"\u81f3\u5c11\u9700\u8981\u8bbe\u7f6e\u66f4\u65b0\u670d\u52a1\u5668\u7684 ":27,"\u81f3\u5f3a\u00ae":[59,69],"\u82f1\u7279\u5c14 ":69,"\u82f1\u7279\u5c14\u00ae":[14,15,16,39,59,60,69],"\u8303\u56f4\u4ece ":46,"\u83b7\u53d6 ":6,"\u83b7\u53d6\u7528\u4e8e\u90e8\u7f72 ":59,"\u83b7\u53d6\u865a\u62df ":27,"\u83dc\u5355\u4e2d\u627e\u5230 ":7,"\u83dc\u5355\u4e2d\u7684 ":4,"\u83dc\u5355\u521b\u5efa\u65b0\u7684 ":7,"\u83dc\u5355\u53ef\u7528\u4e8e ":7,"\u83dc\u5355\u548c\u63d0\u793a\u4e0e\u5176\u4ed6 ":17,"\u83dc\u5355\u70b9\u51fb ":16,"\u83dc\u5355\u9009\u62e9 ":16,"\u83dc\u5355\u9879\u4ee5\u8c03\u51fa\u641c\u7d22\u680f\u5e76\u8f6c\u5230 ":7,"\u865a\u62df\u4e3b\u673a)":12,"\u865a\u62df\u4e3b\u673a\u7684\u516c\u7f51ip":10,"\u865a\u62df\u5316\u6280\u672f)":[14,15],"\u865a\u62df\u673a ":[16,19,20],"\u865a\u62df\u673a\u4e0a\u6302\u8f7d ":16,"\u865a\u62df\u673a\u4e2d\u542f\u7528\u548c\u542f\u52a8 ":15,"\u865a\u62df\u673a\u4e2d\u914d\u7f6e ":15,"\u865a\u62df\u673a\u4ee5\u542f\u52a8 ":15,"\u865a\u62df\u673a\u5b9e\u4f8b\u5df2\u521b\u5efa\u5e76\u5206\u914d\u4e86\u4e00\u4e2a\u516c\u5171 ":9,"\u865a\u62df\u673a\u7684\u9ed8\u8ba4\u753b\u9762\u6bd4\u4f8b\u4e3a ":15,"\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f*":24,"\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u5728\u5b83\u4e0a\u9762\u5b89\u88c5 ":17,"\u867d\u7136 ":[28,33],"\u867d\u7136\u5728\u7cfb\u7edf\u7684 ":39,"\u867d\u7136\u8fd9\u4e09\u79cd\u65b9\u6cd5\u53ef\u4ee5\u5728\u540c\u4e00\u4e2a ":57,"\u884c\u4e2d\u663e\u793a\u7684\u4e8c\u8fdb\u5236 ":47,"\u884c\u548c\u7b2c ":47,"\u8865\u4e01\u6587\u4ef6\u662f\u683c\u5f0f\u5316\u7684 ":33,"\u8868 ":27,"\u8868\u793a ":55,"\u8981\u4e48\u662f\u65b0\u7684\u672c\u5730 ":27,"\u8981\u4e86\u89e3\u6709\u5173 ":[7,8,62],"\u8981\u4ece ":7,"\u8981\u4ee5 ":43,"\u8981\u4f7f\u7528 ":[39,54,58],"\u8981\u4f7f\u7528\u4e0d\u5c5e\u4e8e ":[34,35],"\u8981\u4f7f\u7528\u6279\u5904\u7406\u5927\u5c0f ":60,"\u8981\u4f7f\u7528\u6b64\u65b9\u6cd5\u914d\u7f6e ":57,"\u8981\u518d\u6b21\u542f\u7528 ":16,"\u8981\u521b\u5efa ":60,"\u8981\u5229\u7528\u82f1\u7279\u5c14\u00ae":59,"\u8981\u53d1\u73b0\u7248\u672c\u53f7 ":46,"\u8981\u542f\u52a8 ":59,"\u8981\u542f\u7528 ":[17,56],"\u8981\u5728 ":[7,8],"\u8981\u5728\u53e6\u4e00\u7cfb\u7edf\u4e0a\u514b\u9686\u73b0\u6709\u7684 ":13,"\u8981\u5728\u5b89\u88c5 ":5,"\u8981\u5728\u8fb9\u7f18\u5e73\u53f0\u4e0a\u5b89\u88c5\u548c\u914d\u7f6e ":60,"\u8981\u5927\u81f4\u4e86\u89e3 ":22,"\u8981\u5b89\u88c5 ":59,"\u8981\u5f00\u59cb\u4f7f\u7528 ":5,"\u8981\u5f7b\u5e95\u5220\u9664 ":27,"\u8981\u624b\u52a8\u786e\u8ba4 ":69,"\u8981\u624b\u52a8\u8bbe\u7f6e ":54,"\u8981\u6307\u5b9a\u663e\u793a ":57,"\u8981\u63d0\u9ad8 ":57,"\u8981\u65ad\u5f00 ":17,"\u8981\u66f4\u6539 ":39,"\u8981\u67e5\u770b\u4f7f\u7528 ":8,"\u8981\u67e5\u770b\u53ef\u5bf9 ":7,"\u8981\u67e5\u770b\u5f53\u524d\u7684 ":39,"\u8981\u6c42 ":39,"\u8981\u6c42\u60a8 ":7,"\u8981\u6d4b\u8bd5\u5728\u865a\u62df\u673a\u5185 ":22,"\u8981\u6dfb\u52a0 ":56,"\u8981\u6dfb\u52a0\u591a\u4e2a ":30,"\u8981\u6dfb\u52a0\u65b0\u786c\u76d8\u5e76\u6302\u8f7d\u9884\u914d\u7f6e\u7684 ":18,"\u8981\u6dfb\u52a0\u672c\u5730 ":5,"\u8981\u76f4\u63a5\u5728 ":22,"\u8981\u786e\u4fdd\u6b63\u786e\u5b89\u88c5\u548c\u914d\u7f6e ":59,"\u8981\u7981\u7528 ":16,"\u8981\u7acb\u5373\u5f00\u59cb\u4f7f\u7528\u6700\u65b0\u7684\u7a33\u5b9a\u7248 ":58,"\u8981\u89e3\u538b ":42,"\u8981\u8c03\u8bd5 ":25,"\u8981\u8fd0\u884c ":41,"\u8981\u901a\u8fc7 ":[15,54,56],"\u8981\u914d\u7f6e ":57,"\u8981\u91cd\u542f ":50,"\u8981\u9a8c\u8bc1 ":59,"\u89c1\u56fe ":[6,17,18,19,20,57],"\u89c2\u770b\u5b83\u5f15\u5bfc\u5e76\u5b89\u88c5 ":38,"\u89c2\u770b\u5b83\u81ea\u5b9a\u4e49 ":38,"\u89c2\u770b\u5ba2\u6237\u7aef\u5f15\u5bfc\u5e76\u5b89\u88c5 ":54,"\u89c4\u8303\u6587\u4ef6\u4e2d\u5c06 ":33,"\u89d2\u8272\u53ef\u4ee5\u662f ":38,"\u89e3\u51b3\u4e86 ":15,"\u89e3\u538b\u7f29\u5df2\u4e0b\u8f7d\u7684 ":22,"\u89e3\u6790 ":21,"\u8ba1\u7b97\u5f15\u64ce ":42,"\u8ba1\u7b97\u673a\u4e0a\u5b89\u88c5\u6700\u65b0 ":8,"\u8ba1\u7b97\u673a\u7684 ":36,"\u8ba9\u60a8\u81ea\u5df1\u6210\u4e3a ":40,"\u8bb0\u4e0b\u751f\u6210\u7684\u663e\u793a ":57,"\u8bb0\u4e0b\u8f93\u51fa\u4e2d\u7684\u516c\u5171 ":8,"\u8bb0\u5f55\u5b83\u5411 ":54,"\u8bbe\u5907\u6216 ":20,"\u8bbe\u7f6e ":[5,9,13,14,16,19,47,57],"\u8bbe\u7f6e\u4e3a ":[17,18,60],"\u8bbe\u7f6e\u4e3a\u4e0e ":57,"\u8bbe\u7f6e\u4e3a\u4e0e\u5b8c\u5168\u9650\u5b9a\u7684 ":57,"\u8bbe\u7f6e\u5b8c ":5,"\u8bbe\u7f6e\u5b8c\u6240\u6709 ":5,"\u8bbe\u7f6e\u652f\u6301\u9ad8\u8fbe ":55,"\u8bbe\u7f6e\u82f1\u7279\u5c14\u00ae":60,"\u8bbe\u8ba1 ":32,"\u8bbf\u95ee ":[17,18,19,20,21,22],"\u8bbf\u95ee\u6211\u4eec\u7684 ":4,"\u8bc1\u4e66 ":51,"\u8bc1\u4e66\u521b\u5efa\u4e86\u6620\u50cf ":51,"\u8bc1\u4e66\u7684 ":51,"\u8bd5\u7528 ":27,"\u8be5 ":[9,27,57],"\u8be5\u4f8b\u5b50\u663e\u793a ":46,"\u8be5\u5185\u6838\u5305\u62ec ":24,"\u8be5\u5185\u6838\u53ef\u4ee5\u5728\u72ec\u7acb\u7684 ":24,"\u8be5\u5185\u6838\u53ef\u7528\u4f5c\u72ec\u7acb\u7684 ":24,"\u8be5\u5355\u5143\u9ed8\u8ba4\u4fa6\u542c\u7aef\u53e3 ":56,"\u8be5\u5b88\u62a4\u7a0b\u5e8f\u4f7f\u7528\u6b64\u4fe1\u606f\u6765\u89e3\u6790 ":21,"\u8be5\u5b89\u88c5\u6587\u4ef6\u662f\u4e00\u4e2a ":38,"\u8be5\u5c4f\u5e55\u663e\u793a\u60a8\u5df2\u5728\u8bbe\u5907\u4e0a\u767b\u5f55\u5230 ":8,"\u8be5\u6280\u672f\u53ef\u5728 ":39,"\u8be5\u6307\u9488\u5e94\u4f20\u9012\u7ed9 ":31,"\u8be5\u6346\u7ed1\u5305\u542b\u6709\u8fd0\u884c ":54,"\u8be5\u6587\u4ef6\u4e5f\u79f0\u4e3a ":4,"\u8be5\u6587\u4ef6\u4ece\u9884\u914d\u7f6e\u7684 ":20,"\u8be5\u6587\u4ef6\u4f4d\u4e8e ":46,"\u8be5\u6587\u4ef6\u6982\u8ff0\u4e86 ":38,"\u8be5\u6620\u50cf\u901a\u5e38\u4f4d\u4e8e ":20,"\u8be5\u66f4\u65b0\u5fc5\u987b\u786e\u4fdd\u4ece\u7cfb\u7edf\u4e2d\u79fb\u9664\u4e0e\u8be5 ":27,"\u8be5\u670d\u52a1\u5668\u4e0e ":54,"\u8be5\u670d\u52a1\u5668\u4f9d\u8d56\u4e8e ":54,"\u8be5\u793a\u4f8b\u4f7f\u7528\u4e86 ":53,"\u8be5\u7aef\u53e3\u53f7\u7531\u9ed8\u8ba4 ":57,"\u8be5\u7ec4\u5408\u5219\u4f1a\u91cd\u65b0\u5f15\u7528\u6b64 ":27,"\u8be5\u811a\u672c\u6253\u5f00\u4e00\u4e2a ":59,"\u8be5\u8ba1\u7b97\u673a ":31,"\u8be5\u8bbe\u7f6e\u4f1a\u521b\u5efa\u4e00\u4e2a\u76f4\u901a ":54,"\u8be5\u8bbe\u7f6e\u811a\u672c\u4f1a\u5728 ":[22,33],"\u8be5\u8bbe\u7f6e\u811a\u672c\u4f7f\u7528\u6765\u81ea ":[22,33],"\u8be6\u60c5\u53ef\u8bbf\u95ee\u7f51\u7ad9 ":17,"\u8be6\u60c5\u8bf7\u53c2\u9605 ":59,"\u8be6\u60c5\u8bf7\u53c2\u9605\u6211\u4eec\u7684 ":24,"\u8be6\u7ec6\u4e86\u89e3 ":41,"\u8be6\u7ec6\u4e86\u89e3\u5982\u4f55 ":60,"\u8be6\u7ec6\u8d44\u6599\u9875\u4e0a\u7684 ":9,"\u8bed\u8a00\u7f16\u5199\u7684 ":31,"\u8bf7\u4e3a\u65b0\u7684 ":43,"\u8bf7\u4e3a\u6bcf\u4e2a\u7f51\u5361\u521b\u5efa\u4e00\u4e2a\u5355\u72ec\u7684 ":55,"\u8bf7\u4ece\u5b89\u88c5\u4e86 ":58,"\u8bf7\u4ee5 ":43,"\u8bf7\u4f7f\u7528 ":[5,8,15,27,33,37,50,57],"\u8bf7\u4f7f\u7528\u4e0b\u9762\u7684 ":59,"\u8bf7\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u66f4\u65b0 ":47,"\u8bf7\u4f7f\u7528\u5b8c\u6574 ":8,"\u8bf7\u4f7f\u7528\u6620\u50cf ":59,"\u8bf7\u4f7f\u7528\u6807\u7b7e ":8,"\u8bf7\u4f7f\u7528\u968f ":54,"\u8bf7\u4fee\u6539 ":[38,57],"\u8bf7\u5148\u4ece ":33,"\u8bf7\u5148\u4ece\u7cfb\u7edf\u7ba1\u7406\u5458\u5904\u83b7\u53d6\u9884\u5148\u5206\u914d\u7684 ":57,"\u8bf7\u5148\u4f7f\u7528 ":31,"\u8bf7\u5148\u5b8c\u6210 ":22,"\u8bf7\u5148\u6ee1\u8db3\u6240\u6709 ":27,"\u8bf7\u52a1\u5fc5\u4e0b\u8f7d\u5b89\u5168\u8d44\u6e90\u548c ":60,"\u8bf7\u52a1\u5fc5\u5148 ":27,"\u8bf7\u52ff\u4e3a\u5355\u4e2a\u7f51\u5361\u5206\u914d\u5730\u5740\u6216 ":55,"\u8bf7\u53c2\u8003 ":[9,60],"\u8bf7\u53c2\u89c1 ":[7,8,47,48,59,62],"\u8bf7\u53c2\u9605 ":[1,9,14,17,19,20,22,26,27,28,30,33,34,35,36,37,39,40,42,44,53,54,55,57,58,59,60],"\u8bf7\u53c2\u9605\u4e0b\u9762\u7684 ":60,"\u8bf7\u53c2\u9605\u53ef\u7528\u7684 ":40,"\u8bf7\u53c2\u9605\u56fe ":57,"\u8bf7\u53c2\u9605\u6211\u4eec\u7684 ":[24,38],"\u8bf7\u5728 ":[4,5,18,53],"\u8bf7\u572810":10,"\u8bf7\u5728\u7cfb\u7edf\u7684 ":34,"\u8bf7\u5728\u7ec8\u7aef\u4eff\u771f\u5668\u4e2d\u8f93\u5165 ":50,"\u8bf7\u5728\u865a\u62df\u673a\u4e2d\u8fd0\u884c ":8,"\u8bf7\u5728\u865a\u62df\u673a\u7684 ":18,"\u8bf7\u586b\u5199 ":[4,5],"\u8bf7\u5982\u56fe18":10,"\u8bf7\u5bfc\u822a\u5230 ":[5,26],"\u8bf7\u5c06 ":[31,43,59,60],"\u8bf7\u5c06\u6b64\u6587\u4ef6\u4ece ":31,"\u8bf7\u5c06\u7248\u672c\u53f7\u8bbe\u7f6e\u4e3a ":13,"\u8bf7\u5c06\u9ed8\u8ba4\u7684 ":31,"\u8bf7\u60a8\u70b9\u51fb\u5bfc\u822a\u680f\u5de6\u4fa7 ":10,"\u8bf7\u624b\u52a8\u66f4\u6539 ":57,"\u8bf7\u6309 ":31,"\u8bf7\u6309\u4e0b\u952e\u76d8\u4e0a\u7684 ":17,"\u8bf7\u6309\u4ee5\u4e0b\u6b65\u9aa4\u521b\u5efa\u548c\u521d\u59cb\u5316 ":27,"\u8bf7\u6309\u5982\u4e0b\u6240\u793a\u4f7f\u7528 ":8,"\u8bf7\u6309\u7167 ":[59,60],"\u8bf7\u6309\u7167\u4ee5\u4e0b\u8bf4\u660e\u8fde\u63a5\u5230\u60a8\u7684 ":57,"\u8bf7\u6309\u7167\u8be6\u7ec6\u7684\u6b65\u9aa4\u8bf4\u660e\u6765\u5feb\u901f\u5c06 ":61,"\u8bf7\u67e5\u770b ":[17,18,19,22,62],"\u8bf7\u67e5\u770b\u6211\u4eec\u7684 ":17,"\u8bf7\u68c0\u67e5\u60a8\u6b63\u5728\u5bfb\u627e\u7684\u5185\u6838\u6a21\u5757\u662f\u5426\u5df2\u7ecf\u5728 ":[34,35],"\u8bf7\u6ce8\u610f\u521d\u59cb\u7ec4\u5408\u7248\u672c\u5df2\u8bbe\u4e3a ":27,"\u8bf7\u6dfb\u52a0 ":39,"\u8bf7\u70b9\u51fb ":[17,59],"\u8bf7\u70b9\u51fb\u4f4d\u4e8e\u4eea\u8868\u677f\u9876\u90e8\u7684 ":7,"\u8bf7\u70b9\u51fb\u56fe5\u4e2d ":10,"\u8bf7\u76f4\u63a5\u4ece ":58,"\u8bf7\u786e\u4fdd\u5728 ":57,"\u8bf7\u786e\u4fdd\u60a8\u5df2\u7ecf\u6267\u884c\u4e86 ":33,"\u8bf7\u786e\u4fdd\u79fb\u9664 ":42,"\u8bf7\u786e\u8ba4\u60a8\u7684 ":38,"\u8bf7\u7981\u7528 ":54,"\u8bf7\u8bbf\u95ee ":[7,8,22,40],"\u8bf7\u8f6c\u5230\u4e0b\u9762\u7684 ":57,"\u8bf7\u8f93\u5165 ":[5,7,30,43,52],"\u8bf7\u8f93\u5165\u60a8\u7684 ":57,"\u8bf7\u8fd0\u884c ":8,"\u8bf7\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u4ee5\u91cd\u65b0\u542f\u52a8 ":8,"\u8bf7\u8fd0\u884c\u5982\u4e0b\u6240\u793a\u7684 ":8,"\u8bf7\u9009\u62e9 ":[4,5],"\u8bf7\u9009\u62e9\u56fe ":7,"\u8bf7\u9075\u5faa ":[8,59],"\u8bf7\u952e\u5165 ":8,"\u8bf7\u9605\u8bfb ":41,"\u8bfb\u53d6\u503c\u7684 ":39,"\u8bfb\u53d6\u5185\u6838\u63d0\u4f9b\u7684 ":49,"\u8c01\u6765\u542f\u52a8 ":57,"\u8c01\u6765\u7ec8\u6b62 ":57,"\u8c01\u6765\u914d\u7f6e ":57,"\u8c03\u6574\u81f3 ":46,"\u8c03\u8bd5\u7cfb\u7edf\u53ef\u5b9e\u73b0\u5728 ":25,"\u8c03\u8bd5\u7cfb\u7edf\u7684\u5b9e\u73b0\u4e3a\u5f00\u6e90\u7a0b\u5e8f\u4e14\u53ef\u5728 ":25,"\u8d85\u51fa\u6b64\u8303\u56f4\u7684\u503c\u5c06\u88ab\u9650\u5b9a\u4e3a ":31,"\u8df3\u5230 ":[4,5],"\u8eab\u4efd\u767b\u5f55\u5230\u65b0\u7684 ":8,"\u8f6c\u5230 ":[17,19,27,46,57],"\u8f6c\u53d1\u53ef\u4ee5\u901a\u8fc7 ":56,"\u8f6c\u5411 ":13,"\u8f6e\u8be2\u6a21\u5f0f\u9a71\u52a8\u7a0b\u5e8f\u662f ":53,"\u8f6f\u4ef6\u5305\u6dfb\u52a0\u5230 ":22,"\u8f6f\u4ef6\u5b9e\u7528\u7a0b\u5e8f ":43,"\u8f6f\u4ef6\u5e94\u7528\u7a0b\u5e8f\u4f7f\u7528 ":43,"\u8f6f\u4ef6\u66f4\u65b0\u5668 ":27,"\u8f6f\u4ef6\u66f4\u65b0\u7a0b\u5e8f\u5b9e\u7528\u7a0b\u5e8f\u6dfb\u52a0 ":60,"\u8f93\u5165 ":[5,8,46,57],"\u8f93\u5165\u4e00\u4e2a ":5,"\u8f93\u5165\u4e4b\u524d\u521b\u5efa\u7684\u65b0 ":43,"\u8f93\u5165\u4ee3\u7801 ":8,"\u8f93\u5165\u547d\u4ee4 ":31,"\u8f93\u5165\u60a8\u7684 ":57,"\u8f93\u5165\u65b0\u7684 ":46,"\u8f93\u5165\u6b64\u5bc6\u7801\u7684\u5f53\u524d\u503c ":31,"\u8f93\u51fa\u5217\u51fa\u4e86 ":8,"\u8f93\u51fa\u5e94\u5305\u542b ":51,"\u8f93\u51fa\u5e94\u8be5\u5c06 ":56,"\u8f93\u51fa\u7684\u6240\u5728\u4f4d\u7f6e\u4ee5\u53ca ":27,"\u8fc7\u7a0b\u5728 ":40,"\u8fc7\u7a0b\u5f15\u5bfc\u7684 ":54,"\u8fd0\u884c ":[4,8,14,44,46,58],"\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u53d6\u6d88\u5c4f\u853d ":21,"\u8fd0\u884c\u56fe ":7,"\u8fd4\u56de ":[4,16],"\u8fd4\u56de\u4e3b ":16,"\u8fd4\u56de\u4ee3\u7406\u670d\u52a1\u5668\u7684 ":21,"\u8fd4\u56de\u5230 ":22,"\u8fd4\u56de\u540d\u4e3a ":60,"\u8fd8\u53ef\u4ee5\u53c2\u8003 ":20,"\u8fd8\u53ef\u4ee5\u5728\u811a\u672c\u6587\u4ef6\u4e2d\u4f7f\u7528 ":31,"\u8fd8\u53ef\u5728\u56fe ":46,"\u8fd8\u63d0\u4f9b\u4e00\u4e2a\u9002\u7528\u4e8e\u684c\u9762\u73af\u5883\u7684 ":[19,20],"\u8fd8\u63d0\u4f9b\u4e86 ":1,"\u8fd8\u6709\u4e0a\u6e38 ":27,"\u8fd9\u4e0d\u4f1a\u7ec8\u6b62\u60a8\u7684\u6d3b\u52a8 ":57,"\u8fd9\u4e9b ":[26,27],"\u8fd9\u4e9b\u5206\u533a\u5fc5\u987b\u7b26\u5408 ":5,"\u8fd9\u4e9b\u5b9a\u4e49\u6587\u4ef6\u5b58\u50a8\u5728\u5de5\u4f5c\u533a\u7684 ":27,"\u8fd9\u4e9b\u6620\u50cf\u5141\u8bb8\u6ca1\u6709 ":54,"\u8fd9\u4e9b\u6761\u76ee\u5141\u8bb8 ":38,"\u8fd9\u4e9b\u7efc\u5408\u5b9e\u8df5\u6700\u5927\u9650\u5ea6\u51cf\u5c11\u4e86 ":28,"\u8fd9\u4e9b\u8bf4\u660e\u4e0e\u5728 ":8,"\u8fd9\u4e9b\u9009\u9879\u7528\u4e8e\u6309 ":60,"\u8fd9\u4f1a\u521b\u5efa\u5fc5\u8981\u7684 ":60,"\u8fd9\u4f1a\u5728 ":59,"\u8fd9\u4f1a\u6784\u5efa\u4e00\u4e2a\u53ef\u4f9b ":59,"\u8fd9\u4f7f\u5f97\u65e0\u9700\u5b8c\u6574 ":56,"\u8fd9\u5305\u62ec\u4ece\u5728\u81ea\u5b9a\u4e49\u8f6f\u4ef6\u5e93\u4e2d\u68c0\u6d4b\u65b0\u7248\u672c\u5230\u751f\u6210 ":36,"\u8fd9\u5c06\u521b\u5efa ":59,"\u8fd9\u5c06\u521b\u5efa\u4e00\u4e2a\u53ef\u4ee5\u4fee\u6539\u7684 ":33,"\u8fd9\u610f\u5473\u7740 ":33,"\u8fd9\u662f ":61,"\u8fd9\u662f\u5728\u4f7f\u7528 ":57,"\u8fd9\u6709\u52a9\u4e8e\u9a8c\u8bc1 ":31,"\u8fd9\u786e\u8ba4\u4e86\u7f51\u5361\u6b63\u5728\u4f7f\u7528 ":53,"\u8fd9\u79cd ":28,"\u8fd9\u91cc\u4ee5\u6700\u65b0 ":51,"\u8fd9\u91cc\u6211\u4eec\u9009\u62e9 ":10,"\u8fd9\u91cc\u6211\u4eec\u9700\u8981\u7528\u5230\u4e4b\u524d\u4fdd\u5b58\u7684 ":10,"\u8fdb\u4e00\u6b65\u6df1\u5165\u67e5\u627e\u542b\u6709\u8865\u4e01\u5e94\u7528\u7a0b\u5e8f\u7684 ":33,"\u8fdb\u5165 ":[9,39],"\u8fdb\u884c ":[5,15],"\u8fdb\u884c\u4f18\u5316\u7684 ":59,"\u8fdc\u7a0b\u7528\u6237\u9700\u8981 ":56,"\u8fdc\u7a0b\u767b\u5f55 ":57,"\u8fde\u63a5 ":[19,20],"\u8fde\u63a5\u4e0e ":5,"\u8fde\u63a5\u4e86 ":6,"\u8fde\u63a5\u5230 ":20,"\u8fde\u63a5\u5230\u8fdc\u7a0b ":57,"\u8fde\u63a5\u81f3 ":57,"\u8ffd\u6eaf ":46,"\u9000\u51fa ":[16,46],"\u9002\u7528\u4e8e ":[41,42],"\u9002\u7528\u4e8e\u5b89\u88c5 ":42,"\u9002\u7528\u4e8e\u7248\u672c ":27,"\u9002\u7528\u4e8e\u9884\u88c5 ":42,"\u9009\u4e2d ":[17,18,19,20],"\u9009\u62e9 ":[4,5,6,7,9,10,16,17,18,19,20,57],"\u9009\u62e9\u5df2\u8f6c\u6362\u7684 ":20,"\u9009\u62e9\u60a8\u559c\u6b22\u7684 ":18,"\u9009\u62e9\u6216\u521b\u5efa\u65b0\u9879\u76ee\u6765\u6258\u7ba1 ":9,"\u9009\u62e9\u65c1\u8fb9\u7684\u84dd\u8272 ":16,"\u9009\u62e9\u662f\u5426\u53c2\u4e0e`":4,"\u9009\u62e9\u6b64\u524d\u4e0a\u4f20\u81f3 ":19,"\u9009\u62e9\u6b64\u9009\u9879\u4f1a\u63a5\u53d7 ":5,"\u9009\u62e9\u6b64\u9009\u9879\u5c06\u4e3a\u7528\u6237\u542f\u7528 ":5,"\u9009\u62e9\u6b64\u9009\u9879\u5c06\u8c03\u51fa ":7,"\u9009\u62e9\u6b64\u9009\u9879\u5c06\u8f6c\u5230 ":7,"\u9009\u62e9\u73b0\u6210\u7684 ":18,"\u9009\u62e9\u89e3\u538b\u7f29\u7684 ":[17,19,20],"\u9009\u62e9\u9884\u914d\u7f6e\u7684 ":18,"\u9009\u9879\u6307\u793a ":49,"\u9009\u9879\u6dfb\u52a0\u5230 ":56,"\u9009\u9879\u81ea\u5b9a\u4e49\u91cd\u542f\u7cfb\u7edf\u670d\u52a1\u65f6\u4f7f\u7528\u7684\u9ed8\u8ba4 ":49,"\u9009\u9879\u8bbe\u7f6e\u4e3a ":[19,20,57],"\u901a\u5e38\u53ef\u4ee5\u5728\u5982\u4e0b\u5730\u5740\u627e\u5230 ":[17,18],"\u901a\u5e38\u6539\u53d8\u7684\u8bbe\u7f6e\u5728\u4e0b\u9762\u7684 ":13,"\u901a\u8fc7 ":[20,21,27,40,54],"\u901a\u8fc7\u4e13\u95e8\u7684 ":31,"\u901a\u8fc7\u4ee5\u4e0b\u6b65\u9aa4\u4e3a ":27,"\u901a\u8fc7\u4ee5\u4e0b\u6b65\u9aa4\u624b\u52a8\u62c9\u53d6 ":27,"\u901a\u8fc7\u4ee5\u4e0b\u6b65\u9aa4\u914d\u7f6e ":27,"\u901a\u8fc7\u5728\u65b0\u4e3b\u673a\u4e0a\u53cd\u590d\u90e8\u7f72 ":40,"\u901a\u8fc7\u5b89\u88c5 ":30,"\u901a\u8fc7\u5de6\u4fa7\u5bfc\u822a\u680f\u4f9d\u6b21\u9009\u62e9 ":10,"\u901a\u8fc7\u624b\u52a8\u6b65\u9aa4\u8bf4\u660e ":51,"\u901a\u8fc7\u62c9\u53d6\u5728\u9002\u5f53\u5bb9\u5668\u4e2d\u8fd0\u884c\u5185\u90e8\u7248\u672c\u7684 ":27,"\u901a\u8fc7\u68c0\u67e5 ":44,"\u901a\u8fc7\u6dfb\u52a0 ":57,"\u901a\u8fc7\u70b9\u51fb\u56fe ":7,"\u901a\u8fc7\u70b9\u51fb\u5b9e\u4f8b\u5de6\u4fa7\u7684\u6846\u6765\u9009\u62e9 ":7,"\u901a\u8fc7\u9644\u52a0\u6765\u81ea ":35,"\u9065\u6d4b\u4f7f\u7528\u4e13\u7528\u63a2\u9488\u6765\u62a5\u544a\u7cfb\u7edf\u7ea7\u8c03\u8bd5/":31,"\u9065\u6d4b\u529f\u80fd\u9075\u4ece\u6d89\u53ca\u6536\u96c6\u548c\u4f7f\u7528 ":31,"\u9065\u6d4b\u5ba2\u6237\u7aef\u4f1a\u67e5\u627e\u4f4d\u4e8e ":31,"\u9065\u6d4b\u5ba2\u6237\u7aef\u62a5\u544a\u7684\u8ba1\u7b97\u673a ":31,"\u9065\u6d4b\u5ba2\u6237\u7aef\u63d0\u4f9b\u540d\u4e3a ":31,"\u9065\u6d4b\u6280\u672f`":[4,5],"\u9065\u6d4b\u63a2\u9488\u7528\u4e8e\u521b\u5efa\u8bb0\u5f55\u7684 ":31,"\u9075\u5faa ":60,"\u907f\u514d\u8fd9\u79cd\u60c5\u51b5\u7684\u6700\u7b80\u5355\u65b9\u6cd5\u662f\u5220\u9664 ":15,"\u90e8\u5206\u5168\u5c40\u8d44\u6e90\u9650\u5236\u5728 ":48,"\u90e8\u5206\u548c ":56,"\u90e8\u5206\u73b0\u4ee3\u82f1\u7279\u5c14 ":39,"\u90e8\u7f72\u5728 ":40,"\u90fd\u5185\u7f6e\u4e86 ":57,"\u914d\u7f6e ":[4,16,54],"\u914d\u7f6e\u4e2d\u901a\u5e38\u53ef\u4ee5\u9650\u5236\u6216\u7981\u7528 ":39,"\u914d\u7f6e\u4e3a\u4f7f\u7528 ":5,"\u914d\u7f6e\u4e3a\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a ":55,"\u914d\u7f6e\u4e3a\u63a5\u53d7\u6765\u81ea ":57,"\u914d\u7f6e\u4e3a\u76d1\u542c\u7aef\u53e3 ":57,"\u914d\u7f6e\u6587\u4ef6 ":13,"\u914d\u7f6e\u6587\u4ef6\u5c06 ":27,"\u914d\u7f6e\u6587\u4ef6\u6765\u5b9a\u4e49 ":38,"\u914d\u7f6e\u952e\u503c\u5df2\u8bbe\u4e3a ":31,"\u914d\u7f6e\u952e\u503c\u66f4\u6539\u4e3a ":31,"\u91c7\u7528 ":36,"\u91c7\u7528\u4e00\u79cd\u4e3b\u52a8\u4e14\u614e\u91cd\u7684\u65b9\u6cd5\u6765\u89e3\u51b3\u5df2\u77e5\u4e14\u53ef\u4fee\u590d\u7684 ":28,"\u91c7\u7528\u6301\u7eed\u96c6\u6210\u548c\u6301\u7eed\u90e8\u7f72 ":40,"\u91ca\u653e\u7684 ":42,"\u91cd\u542f ":[15,37],"\u91cd\u65b0\u52a0\u8f7d ":[27,56],"\u91cd\u65b0\u542f\u52a8 ":[15,56,57],"\u91cd\u65b0\u542f\u52a8\u4e24\u4e2a\u5ba2\u6237\u7aef\u5b88\u62a4\u7a0b\u5e8f ":31,"\u91cd\u65b0\u5f15\u5bfc ":57,"\u91cd\u65b0\u81ea\u52a8\u91cd\u542f ":49,"\u91cd\u7f6e\u6267\u884c\u6b65\u9aa4 ":27,"\u9488\u5bf9 ":15,"\u9488\u5bf9\u65b0\u7248\u672c ":34,"\u952e\u503c\u8bbe\u4e3a ":31,"\u952e\u5165 ":[7,8],"\u952e\u5728 ":4,"\u952e\u6253\u5f00\u7cfb\u7edf ":[4,5,44],"\u952e\u63a5\u53d7\u9ed8\u8ba4\u5bc6\u7801 ":31,"\u9632\u6b62\u5b83\u518d\u6b21\u5f15\u5bfc ":[17,19],"\u9644\u5e26\u5df2\u5b89\u88c5\u7684 ":8,"\u9644\u5e26\u7684 ":54,"\u9664\u4e86\u5b83\u4eec\u5206\u914d\u4e00\u4e2a\u8db3\u591f\u5927\u7684\u5b57\u7b26\u4e32\u6765\u5bb9\u7eb3\u5305\u62ec\u7ec8\u6b62\u7a7a\u5b57\u8282 ":31,"\u9664\u4e86\u6b65\u9aa4 ":60,"\u9664\u975e\u91cd\u542f\u6216\u4f7f\u7528 ":55,"\u968f\u9644\u7528\u4e8e\u5b58\u50a8\u5185\u5bb9\u66f4\u65b0\u7684 ":27,"\u968f\u9644\u7684 ":27,"\u96c6\u6210 ":60,"\u96f6\u5305\u662f\u4ece\u7ec4\u5408\u7248\u672c ":27,"\u9700 ":27,"\u9700\u4f7f\u7528\u4e24\u4e2a\u659c\u7ebf ":31,"\u9700\u5c06 ":31,"\u9700\u6709 ":27,"\u9700\u6c42\u8c03\u6574 ":39,"\u9700\u8981 ":[17,18,19,20,69],"\u9700\u8981\u4f7f\u7528\u7b2c\u4e8c\u4ee3\u82f1\u7279\u5c14\u00ae":59,"\u9700\u8981\u5378\u8f7d ":16,"\u9700\u8981\u5728 ":14,"\u9700\u8981\u81f3\u5c11 ":19,"\u9700\u8981\u8fd0\u884c ":69,"\u9759\u6001\u4e3b\u673a\u540d\u7684\u957f\u5ea6\u5fc5\u987b\u5728 ":45,"\u9762\u5411\u5305\u62ec ":42,"\u9875\u4e0a\u7684\u6700\u65b0\u53ef\u7528 ":14,"\u9875\u4e0b\u8f7d ":[6,16],"\u9875\u9762\u53d8\u4e3a\u56fe ":7,"\u9875\u9762\u5c06\u8df3\u8f6c\u5230 ":10,"\u9875\u9762\u63d0\u4f9b\u4e86\u6709\u5173 ":61,"\u9875\u9762\u83b7\u53d6\u6700\u65b0\u7684 ":5,"\u9879\u76ee ":35,"\u9884\u5b89\u88c5 ":19,"\u9884\u6784\u5efa ":46,"\u9884\u6784\u5efa\u6620\u50cf\u4e0a\u4f20\u81f3 ":20,"\u9996\u5148 ":11,"\u9996\u5148\u4ece ":33,"\u9996\u5148\u4ed4\u7ec6\u68c0\u67e5 ":16,"\u9a71\u52a8\u5668\u5c06 ":5,"\u9a71\u52a8\u5668\u63d2\u5165\u53ef\u7528\u7684 ":[4,5,44],"\u9a71\u52a8\u7a0b\u5e8f\u548c\u8c03\u901f\u7a0b\u5e8f\u63a7\u5236 ":39,"\u9a8c\u8bc1 ":27,"\u9a8c\u8bc1\u5b89\u88c5\u7684\u5185\u6838\u4e3a ":16,"\u9a8c\u8bc1\u5e76\u89e3\u538b\u7f29 ":[4,5,17,18,19,20,32],"\u9ad8\u4eae\u663e\u793a ":5,"\u9ad8\u7ea7\u9009\u9879 ":16,"\u9ed8\u8ba4 ":57,"\u9ed8\u8ba4\u5c06 ":49,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4e0d\u5141\u8bb8\u4f7f\u7528 ":9,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u9009\u62e9 ":[4,5],"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f7f\u7528 ":60,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5df2\u7981\u7528 ":28,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u9009\u62e9 ":4,"\u9ed8\u8ba4\u60c5\u51b5i":17,"\u9ed8\u8ba4\u7981\u7528 ":56,"\u9ed8\u8ba4\u9065\u6d4b\u540e\u7aef\u670d\u52a1\u5668\u7531\u82f1\u7279\u5c14 ":31,"_ ":[8,34,35,58],"_,":58,"_.":[64,65],"_/":[8,58],"_\\":[8,58],"__ ":[8,58],"__,":8,"__/":[8,58],"___ ":58,"___/":58,"____ ":[8,58],"_____ ":8,"_____/":58,"___|":8,"__attribute__(":76,"__future__ ":[59,73],"_linux.":[73,82],"_structure-":64,"_wiki ":64,"_|":8,"a ":[2,3,7,8,9,14,16,17,18,19,20,22,27,30,31,39,43,52,54,57,59,60,62,63,64,65,67,70,72,77,78,79,80,81,82,83,85,89,92],"a)":[57,60],"a,":76,"a.":33,"a/":[31,57],"a512 ":42,"a[":76,"a\"":33,"a]":5,"aadd(":76,"abbr:":64,"abi-":47,"ability ":84,"able ":[64,73,76,86],"abort)":75,"about ":[0,44,52,63,64,65,73,79,82,92],"about:":[79,92],"above ":[64,79,90],"above,":81,"above.":[73,74,87],"above:":90,"absolutely ":0,"abstraction ":62,"accelerated ":[81,82],"acceleration ":62,"accelerator.":62,"accept ":92,"accept=":57,"acceptable ":65,"acceptable;":64,"accepting ":92,"access ":[8,57,59,60,62,70,73,74,75,79,83,84,85,86,87,90,92],"access.":[62,79,90,92],"accessed ":[82,91],"accessible ":[65,73,74,87],"accessing ":62,"accomplish ":91,"accomplished ":0,"according ":[62,64,79],"accordion,":65,"account ":[8,86],"account.":90,"accounts ":[8,90],"accounts,":8,"accounts.":[8,62,86],"accuracy ":88,"accuracy,":88,"accuracy=":73,"accurately ":65,"achieved ":73,"ack,":62,"acl.":62,"acme ":62,"acpi ":16,"acpi)":62,"acpi-":39,"acpica-":62,"acquire ":91,"acr ":8,"acronym ":64,"across ":[0,62,70,73],"acs ":8,"action ":[62,65,85],"action.":[64,65,91],"action:":31,"actions ":[31,62,91],"activated,":[8,78],"activation)":62,"active ":[8,31,57,62,86],"active(":56,"active:":56,"activity.":62,"actual ":[13,65],"actually ":79,"ad ":8,"ad)":62,"ada,":62,"adapter ":62,"add ":[4,5,8,15,16,17,20,22,25,27,30,33,34,35,39,43,46,47,50,52,53,54,56,57,59,60,62,63,64,65,70,71,73,74,75,76,78,79,81,82,84,85,86,88,90,91],"add,":63,"add:":[79,84],"added ":[7,8,64,73,92],"added.":90,"adder ":52,"adding ":[52,64,73,76,79],"addition ":[63,81],"addition,":88,"additional ":[62,64,65,68,78,83,89],"additionally,":[64,70,71,74],"additions ":16,"addr-":15,"addr=":53,"address ":[21,28,62,65,71,73,86,87,91],"address)":57,"address,":[38,73,86,87],"address-":15,"address.":71,"address:":5,"address=":[37,54,55],"address>":[38,53],"address]":57,"addressable ":62,"addresses ":[37,65],"adds ":81,"adheres ":79,"adjust ":62,"adjustments-":62,"admin/":91,"administer ":8,"administration ":62,"administrative ":85,"admonition ":64,"advanced ":[4,5,11,62,81,82,83,85,86,92],"advanced,":62,"advanced-":81,"advancements ":76,"advantage ":[73,76,85],"advisor ":8,"advisor.":8,"aerror(":76,"aes)":11,"aes-":69,"aes.":62,"af1b-":6,"after ":[62,64,73,75,81,82,83,85,88,90,91],"after=":57,"again ":[76,90],"again.":[88,90],"against ":[62,73,81],"agent ":62,"agile ":0,"ago ":[47,52,59,73],"ahead ":89,"ai ":[59,73],"ai.":8,"aiming ":[62,74],"aio=":15,"airliner.":73,"airxprt/":73,"aixprt.":73,"aixprt/":73,"aka.":8,"aks ":8,"alert ":64,"alexnet ":[59,60,73],"algebra)":62,"algorithm ":62,"algorithm.":62,"aliases ":13,"aliyun ":62,"all ":[0,8,31,46,62,63,64,65,70,72,73,74,79,80,88,90,91],"all]":30,"allocated ":79,"allow ":[8,49,79,86,90],"allow-":[34,59,73],"allowed ":[0,64,90],"allowing ":62,"allowoverride ":90,"allows ":[0,13,62,74,75,81,82,83,90],"allowtcpforwarding ":56,"alone.":64,"along ":90,"already ":[70,79,84,85,86,87,89],"alsa-":62,"also ":[0,65,73,81,82,85,86,87,90],"also:":81,"alt ":[64,81],"alt:":64,"alt>":17,"alternative ":[0,30,62],"alternatively ":82,"alternatively,":88,"although ":81,"always ":81,"alwaysshared ":57,"am ":33,"amateur ":62,"amateur-":62,"amazon ":[9,12,60,62],"amazon*":[42,67],"amazon.":[7,60],"amazonaws.":7,"ambiguity.":65,"amd ":39,"amd-":[16,17,18],"amd64.":73,"amd64/":73,"america/":[4,50],"ami ":7,"ami)":7,"amount ":64,"amounts ":70,"an ":[0,7,8,13,18,46,60,62,63,64,71,72,73,76,78,79,81,82,85,86,87,88,90],"analysis ":62,"analysis,":62,"analysis.":62,"analytics ":[8,58,62],"analytics)":31,"analytics-":60,"analyze ":76,"analyzer ":62,"analyzer.":62,"analyzing ":62,"and ":[2,7,8,19,20,22,27,31,57,58,59,60,62,63,66,67,70,72,75,78,80,83,86,87,88,89,92],"angle ":64,"annotated ":62,"announcement,":73,"announcement.":73,"anonymous ":90,"another ":[62,64,83,88],"ansible*":40,"answered ":63,"answers ":0,"antivirus ":62,"any ":[22,51,52,62,63,64,70,71,72,73,74,78,79,86,88,90],"anyone ":[64,86,90],"anyone,":64,"anything:":62,"apache ":[29,62,90],"apache*":77,"apache-":[62,71],"apache.":70,"api ":[62,73],"api)":62,"apis ":71,"apiversion:":[59,73,79],"app ":[8,62],"app.":85,"app/":53,"app:":[59,73,75],"appear ":[64,90,91],"appear,":[73,90],"appear:":74,"appears ":[46,70,91,92],"appears,":[70,80,90,91],"append ":[81,82],"appending ":81,"apple ":62,"apples ":65,"applet.":62,"application ":[0,62,71,73,75,76,79,82,87,90],"application,":85,"application-":[41,62,81],"application.":[62,75,76,88],"applications ":[30,57,62,75,82,84,92],"applications.":[8,62,79,82],"apply ":[59,64,72,73,76,79,85],"appreciate ":65,"approach ":[0,76],"approaches ":0,"appropriate ":[64,73,79,81,82,86,87],"appropriate)":64,"appropriate.":[64,65],"appropriately ":79,"approves,":63,"apps ":[0,75,81],"apps-":[39,62],"apps.":8,"appservice ":8,"appstream-":62,"apr-":62,"apr.":62,"apt ":30,"apt-":[15,23,43,57,80],"arbitrary ":62,"arbitrary-":62,"arch ":75,"arch:":31,"arch=":76,"arch_atom.":76,"architecture ":[45,58,62,76],"architecture-":76,"architecture.":73,"architecture:":[52,82],"architectures ":76,"architectures.":[62,76],"archive ":62,"archive.":62,"archive/":22,"archiver ":62,"archives,":62,"archives.":62,"arctic-":73,"are ":[2,7,8,22,31,57,63,64,65,67,70,73,74,75,76,78,79,80,81,83,85,87,88,89,90,91,92],"are:":88,"area ":88,"argc,":31,"args:":[59,73],"argument ":[31,73],"arguments:":76,"argv)":31,"ark.":69,"arol(":76,"around ":73,"array ":[76,88],"article ":92,"article`":65,"articles ":91,"as ":[0,2,62,63,64,65,66,70,73,74,75,76,77,78,79,80,81,82,83,84,85,88,90,91,92],"ask-":49,"asked ":0,"aslr)":28,"aspell ":62,"aspell-":62,"asprintf(":31,"assembler ":62,"assembler.":62,"assembly,":62,"assets.":8,"assign ":[4,5],"assign,":53,"assigned ":79,"assist ":62,"assistant,":62,"assisted ":[19,20],"associated ":[21,81,82,90],"assume ":65,"assumes ":[71,72,73,74,78,79,84,86,88,90,91,92],"assumption ":80,"assure ":[80,85,87],"asterisks ":[64,91],"asub(":76,"asynchronous ":62,"at ":[0,18,62,64,65,73,74,79,81,85,86,88,90,91],"at-":62,"at:":[82,91],"atk.":62,"atkmm.":62,"atom ":62,"atom\"":76,"attacks.":91,"attempting ":52,"attica.":62,"attr.":62,"attribution ":[3,64],"audience ":65,"audience,":65,"audiences.":65,"audio ":62,"audiomodules-":47,"audit ":62,"audit.":62,"auditing.":62,"augmenting ":0,"auth ":75,"authenticate.":8,"authenticated ":62,"authentication ":92,"authentication,":87,"authentication.":92,"authenticity ":[7,8,70],"authoritative ":62,"authorized ":70,"auto ":[4,5],"autoar.":62,"autoconf.":62,"autoindex ":[27,54],"autoinstall=":35,"automatic ":[5,30,62],"automatically ":[62,74,78,80,81,82,92],"automatically,":82,"automating ":79,"automation ":62,"automotive ":62,"automotive-":62,"autoproxy ":21,"autoproxy.":21,"autospec ":[27,33],"autospecnew ":22,"autostart ":[57,60],"autoupdate ":30,"autoupdate:":13,"aux-":70,"auxservices.":70,"av1-":62,"avahi ":62,"avahi-":62,"availability ":62,"available ":[46,62,67,73,74,75,79,85,86,88,90,91,92],"available:":16,"avb-":47,"avbstreamhandler-":47,"average ":73,"avoid ":[62,64,79],"avoidable,":64,"avx-":[59,73],"avx2 ":76,"avx2.":76,"avx2\"":76,"aware ":86,"awesome ":62,"aws ":[7,32,62],"aws)":62,"aws*":[7,42,60,67],"aws-":62,"aws.":[7,42,60,67],"awscleartestkey.":7,"az ":8,"az'":8,"az-":45,"azure ":[42,62,67],"azure*":[9,12,42,67],"azure-":[8,42,62,67],"azure.":[8,42,62,67],"azurecliprod.":8,"b ":[27,52,53,57,58,59,73,76],"b)":60,"b,":76,"b/":31,"b26d-":6,"b[":76,"b\"":57,"babl.":62,"back ":[8,62,64,81,90],"back-":64,"backed ":[8,74],"backend/":31,"backing ":52,"backports,":62,"backports.":62,"backup ":[8,50,62],"backup'":8,"backups.":8,"backward-":76,"backwards ":62,"bacon.":65,"bad ":86,"bad.":62,"balancer ":62,"balancer.":62,"balancing ":62,"banana ":65,"bananas ":65,"bandwidth ":62,"bar ":65,"bar,":92,"bare ":[71,74,78,79,84,88,90],"bare-":88,"base ":[8,16,52,73],"base-":62,"base.":[52,62],"based ":[0,62,73,76,80,81,83,89,90],"based)":62,"based,":62,"basename ":16,"baseurl ":47,"baseurl=":47,"bash ":[58,73],"bash'":[59,73],"bash/":52,"bash\"":52,"bashrc'":8,"bashrc.":8,"bashrc:":84,"basic ":[8,30,52,59,60,62,64,65,73,79,85],"basic-":[13,53,58,59,62,73],"basic.":18,"basic:":8,"basics,":74,"basis,":79,"batch ":[8,62],"batch.":8,"batch_size ":[59,73],"batch_size=":73,"batchai ":8,"battery ":65,"battery.":65,"bcache ":62,"bcache-":62,"bcaf-":6,"bcc)":62,"bcdedit ":16,"bdevice\"":13,"bdevice}":13,"be ":[0,2,7,8,27,30,57,62,63,64,66,70,72,73,74,75,76,77,79,81,82,83,84,86,88,90,91,92],"be:":73,"because ":[0,2,65,72,79],"becomes ":92,"becomes:":73,"bee.":73,"been ":[0,8,66,73,74,82,90,91],"before ":[65,70,71,72,73,74,78,79,80,81,83,86,88,90],"before,":63,"beginners ":88,"begins.":73,"behavior.":81,"behind ":[74,79,84,86],"being ":[2,62,73],"belgian ":62,"below ":[0,65,71,74,79,90],"below.":[57,73,79,81,85,90,91],"below:":[73,74,81,82],"bench.":76,"bench_iodim ":76,"benchmark ":[59,62,73],"benchmark.":62,"benchmarking ":73,"benchmarking.":73,"benchmarks ":[59,73],"benchmarks,":73,"benchmarks.":[59,73],"benchmarks/":[59,73],"benefit ":84,"benefit.":65,"benefits ":79,"berkeley ":62,"beside ":[62,87,90],"best ":[9,30,62,63,73,77,79],"better ":[64,73],"between ":[0,13,62,73,81],"beyond ":[62,89,91],"bgp/":62,"bi-":62,"big ":[62,70],"big-":[62,70,71],"billing ":8,"billing.":8,"bin ":60,"bin'":8,"bin-":[47,62],"bin/":[8,22,25,30,31,47,49,52,57,59,73,81,82],"bin:":82,"bin_dir=":73,"bin_dir}":73,"binaries ":80,"binaries.":86,"binary ":[62,73],"binary:":52,"bind=":53,"bindcarrier=":55,"bindings ":[62,81,85],"bindings)":62,"bios ":[4,5,15,16,17,18,31,35,39,42,44,54,67],"bios)":39,"bios,":67,"bios.":83,"bios/":14,"bios_version:":31,"biosdecode.":22,"bit ":[11,58,62],"bit)":[19,20],"bitmap ":[62,64],"bits ":64,"bittorrent ":62,"blacklist ":81,"blank ":[8,73],"blank,":79,"blank.":90,"blas ":62,"bldg2-":45,"blob.":8,"blobs,":8,"block ":[13,62,64,87,90],"block-":13,"block.":64,"block:":64,"blocks)":46,"blocks.":70,"blog ":[0,91],"blog.":[0,91],"blog/":91,"blogging ":62,"blogs/":0,"bluetooth ":62,"bluetooth.":62,"bluez.":62,"bmap)":62,"bmap-":62,"board_name:":31,"boardgame ":62,"body ":64,"body,":65,"boinc-":62,"bold,":64,"bold.":64,"bond1-":55,"bond1.":55,"bond=":55,"bond]":55,"bonding ":55,"book ":62,"bookmark ":62,"boost ":62,"boost.":62,"boot ":[6,9,19,20,45,52,81,83],"boot,":74,"boot-":[16,33,34,35,52,62,81],"boot.":62,"boot/":6,"boot=":54,"boot\"":[27,38],"bootchart ":[38,54],"booth ":62,"booting ":[62,67],"bootloader ":[62,81],"bootloader-":62,"bootloader.":62,"boots ":[13,62],"bootstrap/":73,"both ":[64,70,72,73,74,75,79],"bottom ":[64,90],"bouncer.":62,"box ":86,"box)":91,"box.":64,"boxes ":62,"bpf ":62,"bq9mg442b ":8,"brackets ":64,"branch ":[63,75],"branching ":64,"brands ":66,"breakfast ":65,"bridge ":[39,52],"brief ":65,"bring ":76,"bringing ":76,"broker ":62,"bronze ":66,"brotli.":62,"browsable ":86,"browser ":[0,8,9,20,59,62,71,73,88,90,92],"browser.":[62,91],"browser:":[59,73],"browsing ":[62,74],"browsing,":62,"bryteise/":27,"bs=":6,"bsd ":[62,84],"bsd-":22,"btrfs ":0,"bucket ":9,"buckets ":62,"bugs.":0,"build ":[0,22,27,35,52,62,64,73,75,76,81],"build.":[22,62,76],"build/":[22,53],"build:":31,"build\"":35,"build]":64,"builddir/":22,"builder ":27,"builder]":27,"building ":[62,64,75],"building,":[62,88],"building/":62,"buildlog>":76,"builds ":[73,80],"built ":[0,52,62,81,82],"built,":0,"built_module_location=":35,"built_module_name=":35,"bullet ":64,"bullets ":64,"bullets.":64,"bump ":27,"bundle ":[0,4,5,8,13,16,19,25,26,31,32,41,52,62,64,67,73,74,75,76,80,81,85,86,88,90],"bundle(":[30,52,62],"bundle,":[0,86,88,90],"bundle-":[8,15,16,17,22,25,27,30,33,34,35,39,43,46,47,50,52,53,54,56,57,59,60,70,71,73,74,75,76,78,79,81,82,85,86,88,90],"bundle.":[62,70,71,73,75,78,79,85,90],"bundle:":[52,81],"bundles ":[0,27,62,88],"bundles,":[62,73,76,88],"bundles.":62,"bundles/":27,"bundles:":13,"bundles=":81,"bundles\"":[27,38],"bus ":62,"bus.":15,"bus/":53,"bus=":15,"busctl ":21,"busybox ":[72,78],"but ":[0,22,62,63,65,82,91],"butter ":65,"button ":[88,92],"button,":75,"button.":88,"bvlc ":60,"bvlc_alexnet.":60,"by ":[0,8,13,22,62,63,64,65,72,73,74,78,79,81,82,85,90,91,92],"by-":[64,83],"by:":82,"byte_burst_limit ":31,"byte_window_length ":31,"bytes)":88,"bzip2.":62,"c ":[22,28,31,35,42,52,53,54,57,59,62,69,73,76,81,82],"c'":[59,73],"c)":[8,52,57],"c+":[22,62],"c,":[62,76],"c-":[13,22,39,62,82],"c.":[62,76],"c/":[57,62],"c7-":8,"c:":[17,18,76],"c[":76,"c\"":[22,57],"c\\":22,"ca-":79,"ca.":75,"cab ":62,"cache ":[8,62,81,82],"cache.":81,"cachegrind ":62,"caching ":[62,85],"cad ":62,"caffe ":60,"caffe2 ":[59,73],"caffe2/":[59,73],"caffemodel ":60,"cafile ":51,"cairo.":62,"cairomm.":62,"calculated ":88,"calculator ":62,"calculator,":62,"calculator.":62,"calendar,":62,"call ":[21,62,73],"call-":64,"called ":[65,86,90],"callggrind.":62,"calling ":[30,52,73],"calloc(":31,"camera ":83,"camera.":62,"can ":[30,46,57,62,64,65,70,72,73,74,75,76,77,79,81,82,83,84,85,86,87,88,89,90,91,92],"can'":[7,8,70],"candidate ":76,"candidates ":76,"cannot ":[0,22,73,79,90],"capability ":82,"capability,":82,"capability.":62,"capable ":[11,62],"capitalization ":65,"capitalize ":65,"capitalized ":65,"capitalized,":64,"caption.":64,"capture ":62,"captured ":73,"capturing ":62,"carbon ":66,"card ":62,"card,":92,"card.":62,"cards.":[81,82],"care ":80,"carefully ":87,"carry-":[11,69],"carving ":62,"case ":[61,64,65,73,80],"case.":[0,65],"case:":13,"cases ":[0,62],"cases.":64,"caset.":76,"cat ":[15,22,34,35,39,44,48,52,54,56,57,70,72,73,78,79],"cataloging.":62,"catalogs.":8,"cause ":[64,82],"causing ":79,"caution ":65,"cautions ":64,"cb:":53,"cd ":[13,16,22,27,33,34,35,36,53,59,62,73,81,82,88,90,91],"cd)":40,"cd-":16,"cd/":[17,18,19,20],"cdn ":8,"cdn.":[11,15,18,20,26,33,47,51,52,53,54],"cdns)":8,"celeron\u00ae":66,"cell ":[73,88],"cell,":73,"cell.":73,"centos ":58,"cert ":27,"cert-":79,"certificate ":62,"certificates ":62,"certificates.":[8,91],"certutil ":42,"cf ":52,"cflags+":53,"cgroup ":[48,52],"cgroup)":48,"cgroupfs-":60,"chance ":0,"change ":[64,65,76,78,86,88],"change.":[62,90],"change:":79,"changed ":90,"changes ":[0,62,72,73,76,79,84,90],"changes,":[74,80],"changes.":62,"changing ":76,"chapter ":86,"char ":31,"character ":[62,82],"characters ":[73,82],"characters.":[62,64],"chart ":73,"chassis ":45,"chat ":62,"chat,":62,"chatting.":62,"check ":[64,73,78,79,83,84,86,88,90,91],"check-":[11,27,30],"check:":47,"checkbox ":87,"checking ":[4,11,62,74,82],"checkout ":33,"checks ":31,"checksum)":42,"cheese.":62,"chess ":62,"chicago ":63,"children:":13,"chmod ":[7,11,15,22,27,33,59,73,81,82],"choice ":[70,73],"choices:":65,"choose ":[0,5,7,16,73,79,82],"chooser ":62,"chosen ":73,"chown ":27,"chrome ":0,"chroot-":27,"ci/":[36,40],"cidr ":79,"cidr_netmask]":37,"cifs ":87,"cifs)":87,"circuitco ":66,"claimed ":66,"clam ":62,"clang ":62,"clarify,":64,"clarity ":65,"clarity.":64,"class ":60,"class<":70,"classic ":62,"classification ":62,"classification,":31,"classification:":31,"classification[":31,"clause ":22,"clauses.":65,"clean ":73,"clean=":35,"clean\"":35,"cleaning ":90,"clear ":[1,11,12,13,21,23,24,25,26,27,28,29,30,31,34,35,37,38,39,40,41,43,44,45,46,47,48,49,50,51,53,54,55,56,58,59,60,62,63,64,66,68,69,70,71,73,74,75,77,78,79,80,81,82,84,87,88,89,91,92],"clear,":65,"clear-":[0,4,5,6,8,9,11,13,14,15,16,18,19,20,31,42,47,51,52,54,57,67,83],"clear.":[22,53],"clear/":[13,26,44,47,51],"clear@":7,"clear]":47,"clearlinux ":30,"clearlinux-":[16,33,52],"clearlinux.":[0,11,13,15,18,20,22,25,26,27,30,33,47,51,52,53,54,69,83],"clearlinux/":[0,22,25,27,31,33,47,49,58,59,73,76,85],"clearlinux\"":85,"clearlinuxos-":16,"clearlinuxroot.":51,"clearlinuxuser/":86,"clearly ":64,"clearresourcegroup ":8,"clearresourcegroup/":8,"clearresourcegroup\"":8,"clearvm ":8,"clearvm\"":8,"cli ":[0,62],"cli!":8,"cli'":8,"cli,":87,"cli?":8,"clich\u00e9s,":65,"click ":[65,73,75,82,83,86,88,90,91,92],"clicks ":62,"client ":[8,21,52,57,62,73,80,85],"client)":52,"client,":62,"client-":62,"client.":62,"client;":62,"client_requirements.":73,"clients,":62,"clients.":62,"clipboard ":62,"clocks ":62,"clone ":[31,58,59,63,73,76,79],"clone,":62,"clone-":22,"clone_<":33,"cloned ":76,"clones ":76,"cloning ":20,"close ":[64,74,83],"closed ":65,"cloud ":[8,12,60,62,67],"cloud-":[30,38,54,59,62,73,79,80],"cloud.":62,"cloudguest-":[8,17,62],"cloudguest.":[42,67],"cloudguest\"":38,"clouds.":8,"clr ":[40,60,62,86],"clr*":41,"clr-":[5,7,12,16,22,25,31,33,34,35,36,39,40,41,49,52,57,60,62,81,86],"clr.":31,"clr/":27,"clr_debug_daemon ":25,"clr_debug_daemon.":25,"clr_debug_fuse.":25,"clrtrust ":28,"cluster ":[59,70,71,73,79,80],"cluster,":73,"cluster.":[70,71,73,74,79,80],"clusters ":[62,70,74],"clusters.":[8,62],"clutter-":62,"clutter.":62,"cl|":[10,31],"cmake ":22,"cmd ":52,"cmdline.":[34,35,81],"cmrt.":62,"cnc ":62,"cnn_tf_v1.":[59,73],"co-":72,"cockpit ":62,"cockpit-":62,"coco.":73,"code ":[2,8,62,63,73,76,82,88],"code,":64,"code-":[0,62,64],"code.":[62,64,73,76,88],"code/":64,"code:":[0,76],"codec ":62,"codes.":62,"cogl.":62,"cognitive ":8,"cognitiveservices:":8,"collaborating.":65,"collect ":62,"collection ":[62,64,85],"collection.":62,"collections ":62,"collections.":62,"collective ":73,"collects ":62,"colon.":64,"colons ":65,"color ":62,"color,":62,"color-":62,"colord.":62,"com ":[7,31],"com,":[7,79,84],"com/":[0,10,21,22,25,27,31,33,47,49,58,59,60,73,76,82,92],"com:":[21,79],"com>":52,"com\"":[21,22,33,85],"combining ":62,"comes ":[74,75,92],"comma ":65,"command ":[0,5,8,27,42,59,62,64,67,73,74,76,79,81,84],"command,":64,"command-":[62,81],"command.":[64,71,74],"command:":[59,64,70,71,72,73,74,75,78,79,80,83,86,87,88,90],"commands ":[8,62,64,73,78,79,80,85,88],"commands,":[64,65],"commands.":[8,74,85],"commands:":[8,73,76,79,88,90],"commands;":80,"commas,":65,"commit ":33,"commits.":63,"common ":[57,62,65,73,85,87],"common/":[22,33,47],"commonly ":[0,64],"communicate ":[65,73],"communicate.":79,"communicates ":65,"communication ":62,"communication.":62,"communications ":62,"community ":[0,73],"community.":0,"company-":84,"company.":64,"comparison ":62,"comparisons ":62,"compat-":62,"compat32-":81,"compatibility ":[62,76],"compatibility.":82,"compatibility/":82,"compatible ":[12,62,68,81,82],"compatible.":62,"compelling ":74,"compilation ":[62,82],"compilations ":62,"compile ":[62,73,76,82],"compile_aixprt_source.":73,"compiled ":62,"compiled,":0,"compiler ":[62,76,82],"compiler.":62,"compiling ":[81,82],"complete ":[73,74,86,90],"complete,":[73,75,76,86,90,91],"complete.":[8,75,91],"completed ":[65,80,90],"completeness.":74,"completing ":76,"completion ":[8,73],"complex ":91,"complex)":76,"complexities ":0,"complexities.":0,"compliance ":30,"compliant ":62,"complicated ":65,"comply ":73,"components ":[62,73,90,91],"components)":62,"components,":[73,90],"components.":[62,73],"compose ":62,"composition ":62,"compositor ":62,"comprehension ":65,"comprehensive ":66,"compress ":62,"compressed ":62,"compression ":[42,62,67],"compression/":62,"compressions ":67,"compressor ":62,"compressor/":62,"computation ":[62,70],"computations.":62,"compute ":[9,62,67,82],"compute.":7,"compute/":8,"computer ":[62,63],"computer-":[45,60,62],"computers ":70,"computers.":62,"computing ":[62,71,82],"concept ":65,"concepts ":64,"concerned ":73,"concise ":65,"concise,":65,"concise.":[63,64],"conclusion.":65,"conditional ":[64,65],"conditions ":[62,64],"conf ":[27,29,47,48,54,57,79,81,85,90],"conf.":[27,48,54,71,81,82,90],"conf/":[27,47,54],"conf\"":[27,78,79,81,82],"confident,":65,"config ":[13,22,33,46,57,58,73],"config,":62,"config-":[40,81],"config.":[11,27,38,62],"config/":[13,26,73,75],"config:":21,"config=":[53,73],"config_rte_build_shared_lib=":53,"configurable ":62,"configurable,":62,"configuration ":[5,57,62,70,71,73,74,76,81,83,84,86],"configuration,":85,"configuration.":[8,65,70,74,79],"configuration>":70,"configuration]":26,"configurations ":60,"configure ":[5,8,16,27,60,62,64,65,72,78,82,84],"configure,":[71,78,79],"configure-":54,"configured ":[74,75,80,81,84],"configured,":[73,88],"configured.":79,"configures ":70,"configuring ":[62,79,92],"configuring,":70,"config}":73,"confirm ":81,"confirmation ":[90,91],"confirmed ":66,"confirming ":90,"conflict ":81,"conflicts ":81,"confusion ":65,"congratulations!":[70,71,72,74,76,78,79,83,88,90],"congratulations,":91,"connect ":[7,18,62,71,86,90,91],"connect-":84,"connected ":91,"connecting ":[7,8,70],"connection ":[37,53,57,79,91],"connection-":37,"connection.":[62,91],"connection_name]":37,"connections ":85,"connections/":37,"connectivity.":62,"connector/":62,"consecutive ":64,"consider ":[64,85],"consistent ":64,"consistent,":63,"consistently,":64,"consistently.":65,"console ":[62,64,70,90],"const ":76,"construction ":65,"consumed ":73,"consumption ":[8,62],"contact ":79,"contacts ":62,"contain ":64,"contained ":[62,88],"container ":[8,30,52,59,62,72,73,74,79],"container(":73,"container,":73,"container.":[73,74],"container:":[52,73],"container;":72,"containerd ":52,"containerization ":74,"containerized ":79,"containers ":[73,74,77,78,79,84],"containers*":[30,77,79],"containers,":79,"containers-":[8,30,52,58,59,62,72,73,78,85],"containers.":[72,74],"containers:":[52,59,72,73],"containing ":[62,73],"contains ":[30,62,70,76,88,90,91],"content ":[8,27,51,62,64,81,90],"content,":[63,64,65],"content.":[30,64,90],"contents ":[64,81,82],"contents.":[31,62,90],"contents:":64,"contenturl ":27,"contenturl=":27,"context ":52,"context-":62,"continue ":[7,8,46,66,70,73,74,79,91,92],"continue.":[70,81,90],"continues ":91,"continues.":2,"continuing ":72,"continuously ":85,"contractions,":65,"contrast,":80,"contributed ":63,"contributing!":63,"contribution.":63,"contributions ":63,"contributions.":63,"control ":[8,22,31,62,79,81,85,92],"control-":[25,59,73],"control.":62,"controller ":[53,86],"controller.":62,"controller:":16,"controlling ":62,"controls ":62,"convention ":67,"conventions ":62,"conventions:":64,"conversion ":62,"converted ":73,"converter ":62,"converting ":[20,62,73],"converts ":62,"convey ":64,"convnet_benchmarks.":[59,73],"cool ":8,"cooperative.":65,"coordinate ":65,"copies ":[8,62],"copy ":[59,70,71,73,85,88,90],"copy,":73,"copyfromlocal ":70,"copying ":62,"copyright ":[0,8,52],"core ":[52,60,62,73],"core(":31,"core,":13,"core-":[8,13,27,38,52,62,70],"core.":[8,62],"core\"":[27,38],"cores=":15,"corporate ":[74,79],"corporation ":53,"correct ":[63,64,65,82],"correctly ":[22,64,73],"correctly:":70,"corresponding ":[81,90],"cosmos ":8,"cosmosdb ":8,"could ":85,"count ":62,"courteous.":65,"covered ":0,"covers ":65,"covers:":[74,90],"cp ":[7,13,22,27,29,33,35,54,59,70,71,73,79,85,90],"cp\"":62,"cpio ":[33,62],"cpu ":[10,11,15,19,20,31,32,53,59,60,73,76],"cpu*":39,"cpu/":39,"cpu_model:":31,"cpufreq ":39,"cpufreq*":39,"cpufreq/":39,"cpuidle ":39,"cpuidle/":39,"cpus:":52,"cpus=":[15,53],"cpus>":53,"cracklib ":28,"crd)":[59,73],"create ":[0,7,8,9,14,16,17,18,19,20,21,31,59,60,62,63,64,70,71,73,74,79,81,82,84,85,86,88,90,92],"create,":62,"created ":[0,30,52,59,73,82,86,88,90,91,92],"created.":90,"created:":88,"creates ":[62,73,82],"creating ":[16,57,59,62,73,81],"creating,":62,"creation ":[19,20,62],"creation_timestamp:":31,"creative ":3,"credentials ":[83,87,90],"credentials.":[87,91],"cri+":79,"crio'":79,"crio.":79,"crio/":79,"crit]":31,"critical ":62,"cross ":62,"cross-":[8,62,64],"crypto ":62,"cryptoprocessor-":62,"cryptsetup.":62,"csp ":40,"csp)":40,"ctl>":6,"ctrl ":81,"ctrl>":17,"cuda ":77,"cuda-":82,"cuda.":82,"cuda/":82,"cuda_<":82,"cultural ":62,"cups-":62,"curl ":[8,11,13,15,18,20,21,22,27,33,34,35,47,51,53,54,74,91,92],"curl*":21,"curl.":62,"curl:":27,"current ":[8,26,46,47,62,76,88,90],"current/":[11,51,54],"currently ":67,"current}":16,"cursor.":62,"custom ":[8,9,62,71,73,90,92],"custom-":52,"custom.":57,"customer-":52,"customizable ":62,"customizable.":0,"customize ":[17,18,19,20,79,83],"customized ":[73,79],"customresourcedefinition ":[59,73],"cut ":57,"cutting ":76,"cve)":[28,62],"cve-":62,"cve.":28,"cyrus-":62,"c~":76,"d ":[16,20,31,33,34,35,53,62,73,74,81],"d,":62,"d-":62,"d/":[27,34,35,48,54,56,72,78,79,81,82,84,90,92],"d:":57,"d_type:":52,"dad ":65,"dad,":65,"daemon ":[52,57,62,70,71,74,78,86],"daemon-":[27,29,56,57,72,78,79,84],"daemon.":[31,62,71,74,78],"daemon:":31,"daemons ":70,"daemons.":70,"damage,":64,"damage.":64,"dangers.":64,"dars)":58,"dashboard ":91,"dashboard.":[90,91],"dashes ":64,"dashes.":64,"data ":[8,53,58,62,70,73,85,88,91],"data,":88,"data-":[47,62,70,71],"data.":[62,64,70,73,88],"data_dir>":60,"data_format=":[59,73],"data_type ":60,"data_type>":60,"database ":[8,62,85,88,90,91],"database,":[62,90],"database-":[41,62,90],"database.":[62,90,91],"databases ":[8,85,90],"databases.":90,"dataset,":88,"dataset.":88,"datasets ":62,"datastore ":[19,20],"date ":[63,79],"david\"":85,"day ":81,"day,":80,"day.":0,"db ":[8,31],"db/":54,"dbus ":[21,75],"dbus-":62,"dbus.":62,"dbx,":62,"dconf,":75,"dconf:":75,"dd ":6,"dd\"":62,"deal ":62,"deallocate ":8,"deb)":80,"deb\"":85,"debug ":52,"debug-":25,"debug.":15,"debug\"":27,"debug_info_banned ":27,"debug_info_lib ":27,"debug_info_src ":27,"debugcon ":15,"debugcon.":15,"debugger ":62,"debugging ":62,"debuginfo/":25,"dec ":8,"decide ":72,"decoder.":62,"decoding,":0,"decompress ":62,"decompresses ":88,"decompression ":62,"decrypt ":62,"decrypt,":62,"dedicated ":8,"deduplicating ":62,"deduplication.":62,"deep ":[62,77],"def)":64,"default ":[4,5,49,52,57,59,62,70,71,72,73,78,79,81,82],"default":[29,49,70,71],"default,":[38,85,90],"default-":[16,72,78],"default.":[0,70,72,74,78,79,92],"default:":31,"default\"":[27,76],"defaultlimitnofile=":48,"defaults ":[31,70],"defaults.":71,"defaults/":[0,29,31,58,70,71,79,85,90],"define ":[31,33,64,76,79,90],"defined ":[62,64,71,79],"defined-":62,"defined.":64,"defines ":88,"defining ":62,"defining,":88,"definition ":[30,41],"definition,":64,"definition.":62,"definitions:":90,"degradation ":79,"degrees ":65,"del ":85,"delete ":[73,74],"deleted ":[52,62,73],"deleted.":81,"deleted:":[59,73],"deleting ":[52,62],"delivers ":62,"delivery ":8,"dell ":[35,66],"delta-":27,"demand.":82,"demonstrates ":88,"density,":64,"department ":79,"depend ":73,"dependencies ":0,"dependency ":[49,62,82],"depending ":[73,78,92],"deploy ":[27,60,73,76,79],"deploy.":[31,60],"deploy/":82,"deployed ":[62,73],"deploying ":[73,79],"deployment ":[73,79],"deployment,":79,"deployment.":62,"deployment:":73,"deployments ":73,"deployments,":73,"deployments.":8,"deploys ":73,"deprecated ":[62,72],"deprecated-":62,"depth ":[62,64,88],"depth:":64,"der ":51,"derived ":92,"describe ":[62,64,65],"described ":73,"describes ":[63,64,65,66,71,72,73,78,79,80,83,86,89],"describing ":64,"description=":57,"descriptive ":65,"descriptive.":65,"design ":[0,62],"design.":81,"designed ":[62,70,85,90],"desired ":[75,90],"desktop ":[15,17,57,62,67,75,77,81],"desktop,":[0,87],"desktop-":[15,16,39,41,57,60,62,75,76],"desktop.":[4,42,62,67,75,87],"desktop=":57,"desktops.":57,"desrt.":75,"dest_module_location=":35,"destination.":65,"destinationtype\"":[27,38],"destructive ":[4,5],"detail ":[62,75],"detail,":62,"detailed ":[62,64,65,71,74,78,84,86,88,90,91],"details ":[65,73],"details.":[65,73,75,86],"detect ":[62,83],"detected.":81,"detected:":73,"detection ":[62,73],"detection'":60,"determine ":81,"determining ":0,"deterministic ":62,"dev ":22,"dev-":[25,41,47,62,79],"dev.":62,"dev/":[5,6,13,30,44,46,48,49,57,60,79,81,82],"dev\"":22,"devbind ":53,"developed ":[62,73],"developer ":[37,41,60],"developer-":[13,62],"developer.":82,"developers ":[73,76,82,85],"developers.":62,"developing ":78,"development ":[53,62,76,82,89],"development.":[62,85],"device ":[8,15,18,37,53,62,74,81,82,92],"device-":53,"device:":92,"device=":[59,73],"device>":[6,53],"device\"":53,"device_id\"":53,"devicelogin ":8,"devices ":[15,74,81,82,92],"devices.":62,"devices/":[39,53],"devices:":13,"devops ":62,"devpkg-":62,"devtest ":8,"df ":46,"dfi ":46,"dfs ":70,"dfs.":70,"dfu-":62,"dhcp ":[5,21,37,45,54,55,62],"dhcp-":[54,62],"dhcp=":54,"diagnose ":62,"diagnostic ":62,"diagnostic,":62,"diagnostics.":62,"dialog ":[62,83],"dictionary ":62,"dictionary,":63,"did ":[30,65],"diff ":[42,73],"diff,":62,"difference ":62,"differences,":62,"different ":[26,62,67,73,76,79,86,92],"difficult ":[64,65,76],"dig ":21,"digital ":62,"digits ":88,"dim,":76,"dir:":52,"direct ":[64,65],"direct\"":21,"directed ":[14,15,81,82],"directional ":62,"directives ":90,"directives.":64,"directly ":[63,64,65,73,86,88],"directories ":[8,62,90,91],"directories,":64,"directories.":[62,82],"directory ":[8,22,62,71,73,76,79,81,82,84,86,88,90,91],"directory,":[70,73,88],"directory.":[62,70,71,73,79,82,85,88,90,91],"directory:":[58,73,76,88,91],"directory>":90,"directs ":62,"disable ":[30,57,62,79],"disable-":[15,81],"disabled ":[0,81,92],"disabled.":[79,81],"disables ":81,"disabling ":30,"disallow ":[49,90],"disassembly ":62,"disc ":17,"disclose ":64,"discouraged ":74,"discover ":77,"discoverable ":62,"discovery ":62,"discovery-":79,"discovery.":[62,79],"discuss,":63,"discussed ":65,"discussion ":[0,65,90],"disk ":[5,8,16,17,18,19,62,67],"disk-":62,"disk.":62,"disk\"":[27,38,46],"disks ":20,"disks,":[8,9],"disks.":8,"diskutil ":[5,6],"display ":[8,57,62,90],"displayed ":79,"displayed,":[73,83,90],"displayed.":79,"displaying ":62,"displays ":[73,83,86,88],"displays,":90,"displays.":62,"distinct ":64,"distribute ":[0,62],"distributed ":[0,62,70,73],"distributing ":75,"distribution ":[33,34,35,73,80,82],"distribution-":79,"distribution/":0,"distribution:":82,"distributions ":[0,75],"distributions,":73,"distro-":[36,81],"distro:":31,"distros ":80,"divide ":65,"djvu,":62,"dklm:":52,"dkms ":[32,34,81],"dkms)":[35,62,81],"dkms-":[35,81],"dkms.":81,"dla ":8,"dldt ":73,"dldt.":73,"dldt/":73,"dlpa:":52,"dlrs ":[59,73],"dlrs,":73,"dlrs-":[59,73],"dlrs/":[59,73],"dlrs_image=":[59,73],"dlrs_image}":[59,73],"dlrs_openvino_base:":73,"dlrsalexnet ":[59,73],"dlrsresnet50 ":[59,73],"dls ":8,"dmax(":76,"dmidecode ":22,"dmidecode/":22,"dnf ":[15,57,62],"dnf.":47,"dnf/":47,"dnn ":[59,73],"dnn)":73,"dnn-":[59,73],"dnn.":73,"dns ":[37,54,62,79,86],"dns,":87,"dns-":54,"dns=":37,"dnsmasq.":54,"dnssec ":62,"dnsstublistener=":54,"do ":[59,63,64,65,72,73,74,75,77,78,79,80,82,90],"do)":65,"doc.":62,"doc/":88,"docbook ":62,"docbook-":62,"dock ":62,"docker ":[32,40,59,62,72,73,78,84],"docker*":[27,42,52,58,59,67,72,73,77,78,85],"docker,":[73,78],"docker-":[52,62],"docker.":[27,42,52,67,72,74,78,84],"docker/":[27,74],"docker:":[73,78],"docker\"":27,"docker_default_runtime=":[72,78],"docker_image_path ":27,"docker_name>":[59,73],"docker_service_dir/":78,"docker_service_dir=":78,"docker_service_dir\"":78,"dockerfile ":[52,58],"dockerfile:":73,"dockerfile_openvino_base ":73,"dockerfiles/":[58,59,73],"dockerhub ":[30,40,62],"dockerhub*":85,"dockerhub.":62,"docs.":82,"document ":[62,63,64,65,66,80,90],"document,":64,"document.":64,"documentation ":[2,62,65,68,73,74,79,80,82],"documentation,":90,"documentation-":81,"documentation.":[63,64,65,73,80],"documentation:":[63,64,80,82],"documentation?":63,"documentroot ":90,"documents ":[63,64],"documents.":[62,64],"documents/":71,"documents\\":[17,18],"documents]":86,"does ":[57,80,82,85,91],"dog ":65,"dogs,":65,"dogs:":64,"dogs`":64,"domain ":[31,62,86],"domain.":[21,84],"domain/":31,"domain>":21,"done ":73,"done!":90,"done.":52,"done\"":[59,73],"dont ":65,"dos ":62,"double ":76,"double-":92,"down ":[17,65,73,83,90],"downhill ":62,"download ":[7,30,52,62,73,74,88,90,92],"download,":73,"download.":[11,13,15,18,20,22,25,26,27,47,51,52,53,54,82],"download/":73,"downloaded ":[88,90,91,92],"downloaded,":73,"downloaded.":81,"downloaded:":82,"downloading ":[30,52,84],"downloads ":[73,81,82,88,90],"downloads,":90,"downloads/":[7,73,81,82,90],"downloads]":86,"dpdk ":32,"dpdk-":[53,62],"dpdk.":53,"dpdk/":53,"drain ":80,"drawing ":62,"dri ":75,"drive ":[15,19,20,87],"drive.":86,"drive>":13,"driver ":[33,81,82],"driver,":[74,78,82],"driver-":33,"driver.":82,"driver:":52,"driver\"":74,"drivers ":[62,82],"drivers,":81,"drivers.":[62,81],"drivers/":[35,53],"drivers?":[81,82],"drives ":62,"drop-":[83,90],"dropped ":62,"dropping ":90,"due ":[0,52],"duktape*":21,"duplicate ":62,"duplicated ":62,"dvd ":[17,18,19,20,83],"dvi,":62,"dyem:":52,"dynamic ":[35,62,81,82,90],"dynamically ":16,"e ":[13,69,79,85],"e.":[62,64,80],"e131dc71d339 ":[59,73],"e2fsprogs.":62,"e3-":69,"e5-":[66,69],"e7-":69,"e8:":53,"each ":[57,64,65,70,73,79,80,90],"earlier ":[64,88],"earlier:":71,"easier ":76,"easier.":76,"easily ":[62,64,85],"easily.":65,"eastern ":62,"easy ":[64,65,74,79,85,86],"ebpf)":62,"ec2 ":7,"ec2-":7,"ecdsa ":[7,70],"ecdsa)":7,"echo ":[22,31,34,53,54,78,79,81,82,84],"ecosystem.":[62,74],"edge ":76,"edge-":60,"edit ":[18,19,27,56,62,70,71,73,79,90],"edit,":[62,70],"editable ":62,"edited,":70,"editing ":62,"editing,":62,"edition ":73,"edition)":63,"editor ":[27,33,35,37,62,70,79],"editor,":[62,79],"editor.":[62,90],"editors ":[52,62],"editors,":52,"editors-":62,"editors.":62,"education-":62,"educational ":62,"effect ":90,"effective ":65,"effectively.":[64,65],"effects ":62,"effects.":62,"efficiently.":65,"efi ":[4,5,12,13,27,83],"efi.":62,"efi/":16,"efi=":83,"efi\"":[17,18,27,38,46],"egl-":81,"egl/":81,"egl_external_platform.":81,"egl_vendor.":81,"eid)":62,"eid-":62,"eigen.":62,"either ":[2,64,73,86],"either:":79,"eject ":6,"electronic ":62,"electronics ":62,"elements:":64,"elevated ":84,"elfutils.":62,"else ":31,"else.":64,"emacs-":62,"email ":[22,33,62,85],"email,":62,"email.":62,"emails ":62,"emphasis.":65,"emphasis;":65,"emphasize ":65,"emphasizing ":62,"emulate ":64,"emulator ":62,"en.":64,"en_us.":13,"enable ":[0,4,5,8,15,17,27,54,57,62,64,74,79,84,86,90],"enable-":[15,54],"enable/":62,"enable=":57,"enabled ":[0,16,62,79,81,82,92],"enabled)":62,"enabled:":52,"enabled=":47,"enables ":[62,71,73,84,86],"enabling ":[90,92],"enchant-":62,"enchant.":62,"encoder ":62,"encoding/":0,"encoding=":70,"encourage ":91,"encrypt'":62,"encrypt,":62,"encrypted ":62,"encryption ":[4,5,11,62],"encryption.":62,"end ":[46,64,65,73,85,91],"end;":62,"ending ":64,"endpoint ":73,"endtime\"":8,"engine ":[9,62,67,71,73],"engine.":[62,73],"engine/":73,"engineering ":35,"english ":[65,90],"english-":65,"english.":90,"english:":65,"enhanced ":62,"enhancement ":31,"enlightenment ":62,"enough.":79,"enp1s0.":55,"enp1s0f*":55,"enp1s0f0 ":55,"enp1s0f0-":55,"enp1s0f1 ":55,"enp1s0f2 ":55,"ensure ":[70,73,79,80,81,90],"ensures ":90,"entails,":88,"enter ":[8,31,57,70,73,75,76,78,79,83,85,86,87,90,91],"enter:":[71,73,78,91],"entering ":87,"enterprise ":62,"enterprise-":62,"entire ":88,"entirely ":0,"entries ":91,"entropy ":62,"entry ":[53,62,73,79],"entry>":53,"enumerate ":62,"env ":[59,73],"env.":71,"environment ":[62,64,73,74,76,78,79,81,82,84],"environment,":[73,82],"environment.":[62,73,79],"environment:":78,"environment=":[27,56,72,78,79,84],"environments.":67,"envvar:":64,"eof ":[72,78,79],"eof'":[48,81],"ept ":[17,18],"equal ":64,"equipment,":64,"error ":73,"error.":[62,79],"error:":22,"error\"":8,"errors.":79,"errors:":79,"es ":62,"espanol ":62,"especially ":[64,81],"established.":[7,8,70],"esxi ":[12,17,18,42],"esxi-":20,"esxi.":[20,67],"etc)":62,"etc-":0,"etc.":65,"etc/":[0,15,21,27,29,30,31,34,35,37,47,48,49,50,54,55,56,57,60,70,71,72,74,78,79,81,82,84,85,86,90,92],"etcfstab-":0,"ethernet ":53,"ethernet*":53,"evaluated.":58,"evcd ":62,"even ":76,"evenings ":62,"event ":[8,65],"event-":62,"event_id:":31,"eventgrid ":8,"events ":[62,92],"events.":62,"ever-":91,"every ":[62,86],"everyday ":65,"everything ":[65,70],"evolution-":62,"evolution.":62,"evolve ":76,"evolving ":91,"ex-":[59,73],"example ":[22,27,54,64,71,73,74,79,86,90,91],"example,":[64,65,70,73,74,75,76,79,81,82,85,86,88,90],"example-":[59,73],"example.":[22,33,52,59,64,70,71,73,76,79,83],"example:":[7,64,65,79],"example_client/":73,"example_file ":71,"examples ":[62,64,73,85],"examples,":63,"examples-":70,"examples.":74,"examples/":[53,71],"except ":64,"excess ":65,"excluded ":70,"exec ":[8,48,73],"execstart=":57,"execstartpre=":57,"execstop=":57,"executable ":62,"executable.":81,"executable:":82,"executable?":8,"executables ":62,"executables.":62,"execute ":[62,64,73,88],"execute:":76,"executed ":73,"executing ":[62,70,79],"execution ":[71,76,88],"exercise ":62,"exercises ":85,"exist ":[72,73,74,82,85],"existing ":[7,18,20,63,64,85,87],"exists)":79,"exists,":85,"exists.":86,"exit ":79,"exit(":31,"exit.":90,"exit_failure)":31,"exiv2.":62,"expand ":[83,85],"expandtab:":13,"expat.":62,"expect ":65,"expected ":[70,83,85],"expected:":52,"experience ":[62,73],"experience,":62,"experimental:":52,"experimenters.":62,"expert ":16,"expiration ":47,"explain ":[64,73,80],"explainedin ":73,"explaining ":0,"explains ":[63,87],"explanation ":74,"explanations ":65,"explanatory ":64,"explicitly ":[79,80],"explore ":[73,77],"explorer ":86,"explorer.":86,"exploring ":35,"export ":[27,53,59,62,73,79,82,84],"export":82,"expose ":[19,20,91],"exposing ":62,"exposures ":62,"expressions ":58,"ext2/":62,"ext4\"":[27,38],"ext[":[4,5],"extending ":62,"extensible ":62,"extensible,":62,"extension ":[8,11,62,69],"extensions ":[11,62,69],"extensions.":[8,76],"extensions/":73,"extents ":62,"external ":64,"external-":81,"external_iface ":54,"external_iface=":54,"extra ":[4,5,46,62,64],"extra-":33,"extract ":[42,62,73,91],"extract-":81,"extracted ":88,"extracting ":[30,52],"extraction ":62,"extras ":62,"extras-":[62,82],"extras.":62,"eye ":62,"f ":[4,15,27,54,57,59,73,79],"f1 ":57,"f1y6sa+":70,"faas ":60,"faas)":60,"faas-":62,"fabric ":8,"factor ":92,"fahrenheit.":65,"fail.":79,"fail:":31,"fail;":31,"failed ":[21,31],"failed,":22,"failover ":62,"failovermethod=":47,"failures ":[62,79],"fallbackntp=":50,"false)":31,"false<":70,"familiar ":74,"familiar.":65,"family ":62,"fan ":62,"fann.":62,"faq ":61,"far ":90,"fast ":[62,71],"fast,":62,"fast-":33,"faster.":[33,62],"fastest ":65,"fat,":62,"fat32)":[4,5],"fatal]":22,"fd ":22,"fd5155b89857 ":58,"feature ":8,"feature-":62,"feature.":84,"featured ":62,"features ":[62,74],"features,":62,"features.":[8,62,64,68],"features:":71,"featuring ":62,"fedora ":57,"fedora*":[15,57],"feedback ":8,"feeding ":62,"felt ":0,"fetch ":73,"fetched ":73,"few ":[64,65,73,85],"ff06fc76ec5148040acb4fcb2bc8105cc72f1963b55de0daf3a4ed664c6fe72c ":51,"ffmpeg,":0,"ffmpeg-":0,"ffmpeg.":0,"fftw)":76,"fftw,":76,"fftw-":76,"fftw.":62,"fi,":65,"fido2,":92,"field ":[67,90],"field,":83,"field.":90,"fields ":90,"figure ":[64,73,75,83,86,87,88,90,91],"figure,":64,"figure:":64,"figures ":[62,64],"figures,":64,"figures/":64,"file ":[5,8,17,20,35,57,59,62,64,65,67,70,71,73,74,75,76,78,79,81,82,83,87,88,90,92],"file!":22,"file,":90,"file-":[48,62,87],"file.":[57,62,64,70,71,73,81,83,86,90],"file:":[13,15,30,46,59,64,73,79,81,90,91],"file=":15,"file>":[59,73],"filename ":[64,67],"filename>":33,"filenames ":64,"files ":[8,30,52,62,64,70,71,73,78,79,81,82,86,87,88,91],"files(":73,"files,":[62,64,73,76,79,81,87],"files-":81,"files.":[0,30,52,62,70,71,73,81,87,88],"files/":62,"files:":[22,52,71],"files;":62,"files\"":81,"fileserver ":62,"filesystem ":[0,46,62,87],"filesystem,":62,"filesystem.":62,"filesystem:":52,"filesystems.":8,"filesystemtypes\"":[27,38],"filezilla ":75,"filezilla.":75,"filezillaproject.":75,"filter ":62,"filters.":62,"final ":[64,65],"finally,":74,"find ":[0,8,21,22,62,63,64,65,73,75,76,85,88],"find,":62,"finding ":62,"findproxyforurl ":21,"fingerprint ":[7,8,70],"finish ":[4,5],"finishing ":30,"firefox ":[62,92],"firefox-":0,"firewall ":[0,62],"firmware ":[17,18,62],"firmware-":62,"firmware.":62,"first ":[16,52,64,65,70,73,76,81,88],"first!":63,"first,":[64,65,74,76],"first.":[52,65],"fit ":70,"five ":64,"fix ":[46,52,62],"fix/":46,"flac)":62,"flac.":62,"flag ":76,"flags ":79,"flags:":76,"flannel ":79,"flash)":62,"flask ":31,"flat.":20,"flathub ":75,"flatpak ":[0,62,81],"flatpak*":[0,77],"flatpak.":[0,62,75],"flexibility ":73,"flexible ":62,"flexible,":62,"floppy ":62,"flowcharts.":64,"flows.":62,"fmv-":76,"fmv.":76,"focus ":62,"focused ":62,"focuses ":74,"focusing ":62,"folder ":[64,73,86,92],"folder.":[81,82,86],"folder]":86,"folders ":[62,86],"follow ":[63,64,65,70,73,74,76,78,79,80,81,82,83,84,85,86,88,90,91],"followed ":[64,91],"following ":[22,57,63,64,70,71,72,73,74,75,76,78,79,82,83,84,86,88,90],"following.":73,"following:":[64,73],"follows ":[65,81],"follows:":[70,73],"font ":62,"font-":62,"fontconfig.":62,"fonts ":62,"fonts-":62,"fonts.":62,"foo(":76,"foo.":76,"fopt-":76,"for ":[0,8,9,13,14,15,26,28,30,31,33,52,53,57,58,60,62,63,64,65,67,70,71,72,73,74,75,76,77,78,79,82,84,85,86,87,88,89,90,91],"for-":[0,33],"force-":81,"forces ":64,"forecasts.":62,"fork ":[62,63],"form ":[0,73,74],"formal.":65,"format ":[0,62,63,64,70,73,79,86],"format-":[27,33],"format.":[62,67],"format:":[64,86],"format=":15,"formats ":[0,62,70],"formatter ":62,"formatting ":[63,64],"formatting,":64,"formatting.":64,"formatting:":64,"formatting`":64,"formed ":65,"fortran,":62,"forum ":0,"forums:":0,"forwarding ":79,"forwarding.":54,"found ":[0,63,64,73,74,75,79,82,85],"found,":79,"four ":[64,88],"fox.":73,"fp32 ":[59,60,73],"fpga ":60,"fpm.":90,"fps ":73,"fqdns\"":8,"framework ":[60,62,70,73,75],"framework,":[70,71,78,79],"framework.":[62,70],"frameworks ":62,"frameworks.":[62,73],"frameworks5 ":62,"frameworks5-":62,"free ":[5,62,73],"free(":31,"freedesktop.":75,"freeglut.":62,"freetype.":62,"french ":62,"frequent ":64,"frequently ":64,"frequently-":62,"fribidi.":62,"friendly ":[65,74],"friends ":85,"friends.":62,"from ":[16,27,30,31,35,52,59,62,64,65,70,71,72,73,75,76,79,81,82,83,84,86,87,88,90,91,92],"from:":92,"from=":73,"front-":62,"front/":73,"frontend ":62,"frontload ":65,"frozen ":73,"frozen_inference_graph.":73,"fry ":65,"fs-":48,"fs.":[48,70],"fs/":48,"fstab/":0,"fstype:":13,"ftp ":62,"ftp,":62,"ftp-":84,"ftp_proxy ":84,"ftp_proxy=":84,"full ":[27,62,64,74],"full-":62,"fully ":[90,91],"fully-":57,"function ":[8,60,62,65,77,88],"function":60,"function,":76,"function.":74,"function:":76,"functional ":[62,90],"functionality ":[62,73,90],"functionality.":62,"functionapp ":8,"functions ":[60,62,76],"functions.":62,"further ":[65,74],"furthermore,":[76,79],"fuse ":[25,62],"fuse)":62,"fuse-":62,"fuse.":62,"future ":[0,65,74],"fwupd.":62,"g ":[27,39,43,60],"g+":[27,82],"g.":[62,64,80],"gafr:":52,"gain ":76,"game ":62,"game.":65,"games ":62,"games-":62,"gaming ":85,"gateway ":37,"gateway.":62,"gateway=":37,"gateway_ip_address]":37,"gb ":[6,46,69],"gcab.":62,"gcc ":[31,53,62,76],"gcc*":53,"gcc,":82,"gcc/":53,"gcc7 ":82,"gcc7,":82,"gce ":9,"gce)":[42,62,67],"gce.":[9,42,67],"gconf.":62,"gcr.":62,"gdb ":25,"gdb,":62,"gdk-":62,"gdm ":15,"gdm.":62,"gdm/":57,"gegl.":62,"genealogical ":62,"genealogy ":62,"general ":[62,64,71,76],"general-":[62,71],"generally ":87,"generate ":[59,62,64,73,90],"generate,":62,"generate-":8,"generated ":8,"generatename:":73,"generates ":76,"generating ":[62,76],"generation ":[62,73],"generator ":62,"generator.":62,"generic ":[62,65,67],"generic,":65,"geoclue.":62,"geocode-":62,"geography ":62,"geometry ":57,"geometry=":57,"geospatial ":62,"german ":62,"get ":[15,57,59,64,65,73,75,76,79,80,81,82,86,90],"get.":[23,73],"get_config/":38,"get_role/":38,"getaddrinfo:":21,"getstarted/":92,"getting ":[59,64,73],"gexiv2.":62,"gfbgraph.":62,"gflags.":62,"ghw ":62,"gif,":62,"gigabit ":53,"gigabyte*":66,"gimp.":62,"gis/":62,"git ":[22,31,33,58,59,73,76],"git-":33,"git.":[33,62],"github ":[0,22,24,25,30,31,33,34,35,49,63,64],"github*":[0,1,24,30,33,35,36,38,54,58,59,62,73],"github.":[0,22,25,31,47,49,58,59,73,76,84],"github:":[0,92],"githubusercontent.":[22,27,33,73,92],"gives ":73,"gjs.":62,"glew.":62,"glfw.":62,"glfw3.":62,"glib ":62,"glib.":62,"glibc-":62,"glibmm.":62,"glm.":62,"global ":[15,22,33,62],"global]":86,"glog.":62,"glu.":62,"glvnd-":81,"glvnd/":81,"gmbh|":31,"gmime.":62,"gnome ":[62,87],"gnome*":[0,42,67,75],"gnome-":[25,62],"gnome.":[62,75],"gnu ":[42,62],"gnu*":[28,42,67],"gnu-":62,"gnu/":62,"gnutls.":62,"go ":[59,62,65,73,81,82,83,88,90,91,92],"go!":91,"go*":[59,73],"go,":62,"go-":[59,62,73],"go.":62,"goal ":0,"gobject-":62,"gobjects,":62,"goes ":[31,65],"goes,":65,"going ":[65,73,90],"gold ":66,"golden_retriever.":73,"good ":[0,65,76],"google ":[0,12,42,62,67],"google*":9,"google.":[21,62],"google/":73,"googlenet ":60,"googletest.":62,"gopath/":[59,73],"gopath=":[59,73],"gorilla.":73,"goto ":31,"gotoblas2 ":62,"gov/":28,"gperftools.":62,"gpg ":62,"gpgcheck=":47,"gpl-":33,"gpt ":46,"gpu ":[62,81],"gpu)":[81,82],"gpu-":62,"grammar ":62,"grammar,":[63,65],"grammatical ":65,"gramps ":62,"grant ":90,"graph-":62,"graphic ":64,"graphic,":62,"graphical ":[62,81],"graphical.":81,"graphics ":[16,62,64,81,82],"graphics.":[62,64],"graphing ":62,"graphite.":62,"graphs ":62,"graphs.":71,"graphviz.":62,"graphx,":71,"great ":[64,65],"greatest ":62,"greengrass*":32,"greengrass-":62,"greengrass.":62,"greengrass/":60,"greengrass_classification_sample.":60,"greengrass_lambda.":60,"greengrass_object_detection_sample_ssd.":60,"greengrass_sample_python_lambda.":60,"greengrasshelloworld.":60,"greeter.":62,"grep ":[15,16,18,20,22,33,35,50,53,54,57,58,72,81],"grid ":[8,62],"grid.":88,"grilo-":62,"grilo.":62,"group ":8,"group:":33,"grouping ":62,"groupings ":8,"groups ":[8,79],"grow.":66,"grpc_address ":73,"grpc_port ":73,"gs:":73,"gsettings-":62,"gsl.":62,"gsound.":62,"gspell.":62,"gst-":62,"gst.":62,"gstreamer.":62,"gtk ":62,"gtk+":62,"gtk-":62,"gtk.":62,"gtk/":62,"gtk2 ":62,"gtk3 ":62,"gtk3.":62,"gtkmm3.":62,"gtkplus.":62,"gtksourceview-":62,"gtkspell3.":62,"guarantee ":73,"guaranteed ":0,"guard ":62,"guess ":90,"guest ":[17,18,19,20,62,67,83,86],"guest-":62,"guest.":62,"gui ":[1,15,17,18,39,56,57,62,64],"gui-":62,"gui.":62,"guide ":[0,63,72,73,74,76],"guide.":73,"guide:":63,"guidelines ":[63,64,65,79],"guidelines.":64,"guidelines:":[64,65],"guidelines?":63,"guides ":63,"guides.":64,"guilabel:":[64,65],"guile.":62,"guis ":62,"gunzip ":[42,83],"gutenprint.":62,"gz ":[42,73,88],"gz\"":[22,73],"h ":[31,84],"h%":57,"h15 ":45,"h264-":0,"h370 ":66,"h>":[31,76],"h\"":53,"had ":65,"hadoop*":77,"hadoop-":70,"hadoop.":70,"hadoop/":70,"ham ":62,"hand-":88,"handler:":79,"handles ":92,"handwriting ":88,"hard ":[16,18,19,20,62,67],"harden ":91,"hardening.":90,"hardware ":[18,19,20,24,62,65,66,83],"hardware)":73,"hardware-":[0,62,74],"hardware.":[62,82],"hardware:":73,"harfbuzz.":62,"has ":[0,62,64,65,66,73,74,90],"hash ":[30,79],"hash,":85,"hash-":64,"hash>":79,"hashes ":85,"hashfile ":42,"haskell ":62,"haskell-":62,"hating ":8,"have ":[0,8,58,63,64,70,71,72,73,74,76,78,79,81,82,83,84,86,87,88,89,90,91],"have:":[74,92],"having ":[64,65,79],"hazard ":64,"hazards ":64,"hdd ":62,"hdfs ":70,"hdfs-":70,"hdfs.":70,"hdfs:":70,"he ":65,"header ":62,"headers,":81,"heading ":[64,65],"heading,":64,"heading.":[64,65],"headings ":[64,65],"headings.":[64,65],"headings:":[64,65],"headless ":62,"health ":62,"heartbeat ":31,"hello/":31,"hello\\":31,"helloclear ":22,"helloclear-":22,"helloclear/":22,"helloclear\"":22,"helm ":73,"helm*":73,"helm-":73,"helm.":73,"helm/":73,"help ":[33,58,63,65,73,91],"helper ":[30,52,62,79],"helper.":62,"helpers ":62,"helps ":[0,62,64,65],"here ":[8,64,74],"here'":31,"here,":90,"here:":0,"here`":65,"hermitian ":76,"hex ":62,"hexchat ":62,"hget ":85,"hgetall ":85,"hidden ":88,"hide ":65,"high ":62,"high,":31,"high-":[62,71],"highlighting ":64,"highlighting.":62,"highlighting:":64,"highly ":62,"higlights ":62,"his ":62,"history.":62,"hmset ":85,"hojp:":52,"hold ":[80,85],"holistic ":0,"home ":62,"home)":88,"home/":[7,8,17,18,27,31,44,57,59,73,86],"host ":[7,8,11,15,20,52,57,62,70,71,73,74,75,78,82,84,86,88,89,90,91],"host,":[62,75],"host-":[57,62],"host.":73,"host/":92,"host:":[31,79,91],"host=":53,"host>":15,"host_type:":31,"hosted ":63,"hosted>":27,"hostfwd=":15,"hostname ":[45,71,79,86],"hostname>":79,"hostname]":86,"hostname`":79,"hostnamectl ":45,"hostpath-":73,"hosts ":[74,79],"hosts.":[7,8,62],"house ":27,"how ":[44,64,65,71,72,73,75,78,79,80,81,82,83,84,86,87,88,89,90,91],"how-":[0,1],"however ":[73,81],"however,":[0,72,73,80,86,92],"hp ":62,"hpc ":62,"hpc-":62,"href=":70,"html ":[62,90],"html,":62,"html.":[62,90],"html/":[90,91],"htpcs ":62,"http ":[27,62,74,90],"http)":62,"http,":62,"http-":[27,84],"http.":62,"http:":[0,5,7,21,27,30,33,34,35,38,54,59,62,69,71,73,74,79,84,90,91],"http_proxy ":84,"http_proxy=":[27,78,79,84],"http_proxy\"":78,"http_proxy}":79,"httpd ":29,"httpd.":[29,90],"httpd/":[29,90],"httpproxy\"":27,"https ":[5,27],"https-":84,"https:":[0,8,10,11,13,15,18,20,22,25,26,27,28,31,33,47,49,51,52,53,54,58,59,60,64,69,73,76,82,83,90,91,92],"https_proxy ":84,"https_proxy=":[27,78,79,84],"https_proxy\"":78,"https_proxy}":79,"httpsproxy\"":27,"hub ":[27,52,74],"huge ":53,"hugepages-":53,"hugepages/":53,"hugetlbfs ":53,"hwloc.":62,"hybrid ":62,"hyper-":[12,16,24,26,42,46,62,67],"hypertext ":62,"hyperv ":14,"hyperv-":[24,46,62],"hyperv.":[14,42,46,67],"hypervisor.":67,"hypervisorlaunchtype ":16,"i ":[7,18,20,33,57,59,65,72,73,81,82,92],"i+":76,"i,":76,"i.":[13,57],"i/":[14,15,16,53,62],"i3 ":62,"i3-":[62,66],"i350 ":53,"i5-":66,"i7-":[31,66],"i9-":66,"i;":76,"i<":76,"i=":76,"i]":76,"ia ":62,"ia;":76,"ias)":62,"ib,":76,"icis ":38,"icis/":38,"icon ":[45,75,86],"icons ":62,"icu4c.":62,"id ":[31,45,52,53,57,59,73,75],"id,":73,"id:":[52,73],"id=":[15,53],"id\"":[8,31],"id]":57,"id_rsa'":8,"id_rsa.":[8,70],"ide ":62,"ide)":[17,18,62],"idea ":65,"idea.":65,"ideal ":62,"identification ":62,"identify ":[0,64,81,92],"identifying ":62,"identity ":62,"idioms,":65,"idl,":62,"idle ":39,"idle=":39,"idx1-":88,"idx3-":88,"id}":8,"ie:":73,"ie_serving ":73,"if ":[0,8,11,13,31,63,64,65,67,70,72,73,74,76,78,79,80,81,82,83,85,86,87,89,90,91],"if":65,"if=":[6,15],"ifconfig ":55,"igb/":53,"ignore ":83,"ignore-":[35,81],"ignore?":46,"ignored.":83,"igt-":62,"illegal ":73,"im)":62,"image ":[6,7,8,13,17,18,19,20,27,32,40,42,52,59,62,64,68,73,83],"image)":16,"image,":[73,74],"image-":27,"image.":[64,73],"image/":[13,15,18,20,22,26,27,53],"image:":[59,73],"image=":[59,73],"image>":58,"image\"":15,"images ":[15,18,20,22,58,62,64,67,73,74,79,88],"images,":62,"images-":88,"images.":[8,62,88],"images/":73,"images:":52,"images_list ":73,"imap ":62,"imap.":62,"imap/":62,"img ":[15,42,67],"img.":[14,15,22,51],"img\"":[27,46],"immediate ":62,"immediately ":64,"immediately.":90,"impacted ":0,"imperative,":62,"imperatives,":65,"implement ":[62,70],"implementation ":[62,78],"implementation.":90,"implementations ":76,"import ":[59,73],"import.":62,"important ":[65,79,81,82],"important,":64,"important.":64,"imported ":88,"importing ":88,"improve ":[62,63,76],"improved ":62,"improved,":62,"improved?":63,"improvements.":0,"improving ":0,"in ":[0,2,6,8,20,22,28,31,51,52,57,58,59,62,63,64,67,70,71,72,73,74,75,76,78,79,80,81,82,83,85,87,88,90,91],"in":[31,91],"in,":[8,83],"in-":[8,31,35,62,85,88],"in.":[81,86],"in:":90,"inception ":73,"inclduing ":67,"include ":[30,31,53,64,65,73,76,79,81,82],"include/":[31,53],"included ":[64,70,71,75,78,79,84],"includeoptional ":90,"includes ":[62,64,67,70,71,73,79,86,90],"including ":[0,62,64,71,73,74,82,90],"including-":0,"including:":92,"incompatible ":81,"incorporates ":80,"incr ":85,"increase ":[65,74],"increment.":85,"indent-":13,"indented ":64,"indentsize=":13,"independent ":8,"independent.":67,"independently.":84,"index.":[52,85,90],"indexing,":62,"indicate ":[64,65],"indicating ":81,"indirect ":81,"individual ":0,"individually ":0,"industry-":62,"inetd ":57,"inference-":73,"info ":[25,72],"info-":76,"info.":62,"info/":25,"inform ":51,"information ":[62,64,65,68,70,71,73,74,82,84,88,90,91],"information)":63,"information,":73,"information.":[0,8,58,63,79,90,91],"information:":76,"informative ":2,"informative.":65,"informs ":70,"infrastructure ":85,"infrastructure,":62,"infrastructure.":62,"ing ":65,"init ":[27,38,52,59,73,79],"init*":38,"init-":54,"init=":[38,54],"initcall_debug ":[38,54],"initial ":[33,76,81,86,88,91],"initialization ":[62,79],"initialize ":79,"initialized,":79,"initializes ":79,"initrd ":[38,54],"initrd,":62,"initrd=":[38,54],"inject ":73,"innotek ":31,"inotify,":62,"inotify-":62,"input ":70,"input-":62,"input.":[60,73],"input=":73,"input_images.":73,"input_model=":73,"input_name ":73,"input_proto ":60,"input_shape ":60,"inputs,":88,"insecure ":52,"insert ":[16,62,64,85],"inside ":[62,73],"insmod ":34,"inspect ":[73,88],"inspected ":[30,52],"inspired ":[62,85],"install ":[8,13,14,15,18,27,31,35,52,57,59,62,65,67,73,86,88,91],"install,":[62,71,75,78,79],"install-":[16,22],"install.":91,"install:":22,"install?":8,"install]":57,"install_aixprt.":73,"install_deps.":73,"install_dir=":73,"install_dir}":73,"install_prerequisites/":73,"install_prerequisites_tf.":73,"installation ":[4,5,8,16,52,62,65,71,73,74,75,76,78,79,82,83,84,88,90,91],"installation,":[74,75,81,83],"installation.":[65,81,90],"installations:":75,"installaton ":74,"installazurecli ":8,"installed ":[30,65,70,71,72,73,74,75,76,78,79,80,81,82,83,84,86,88,90,91,92],"installed,":[88,90],"installed.":[67,72,75,81,82],"installer ":[5,12,17,81,82,83,91],"installer,":13,"installer-":62,"installer.":[5,13,19,51,82],"installing ":[0,13,30,52,64,65,71,74,75,78,79,84,88,90,91],"installing,":70,"installpath=":82,"installs ":[62,73,90],"instance ":[7,90],"instances ":72,"instances.":[8,65],"instant ":62,"instead ":[62,65,73,86],"instruction ":[11,64,73],"instruction-":76,"instructional ":63,"instructional,":62,"instructions ":[24,62,63,64,71,73,74,75,76,78,79,80,81,82,83,84,88,90,91,92],"instructions,":[64,86],"instructions.":[63,64,65,75,76,79,83],"instructs ":88,"int ":[31,76],"int8 ":[59,73],"integrate ":85,"integrated ":[62,73,81],"integration ":[62,65,82],"intel ":[8,17,18,39,52,53,59,62,73,76],"intel(":31,"intel.":[31,69,85],"intel64/":73,"intel\u00a9":62,"intel\u00ae":[14,15,16,17,18,59,66,69,91],"intel_idle ":39,"intel_idle.":39,"intel_pstate ":39,"intel_pstate/":39,"intelai/":73,"intelai_public_models/":73,"intended ":[0,62,90],"intent ":74,"interactive ":[8,62,73],"interactive.":8,"interesting ":76,"interface ":[62,64,71,81],"interface.":62,"interface_name]":37,"interfaces ":62,"intermediary ":0,"intermediate ":[52,60,73],"internal)":58,"internal-":54,"internal_iface=":54,"international ":3,"internationalization ":62,"internationalization.":62,"internationalizing ":62,"internet ":[5,8,62,71,87],"internet.":[62,74,84],"interrupt ":64,"interrupting ":64,"into ":[13,62,64,70,73,79,81,82,85,88,89,90,92],"into,":73,"introduce ":64,"introduces ":[73,76],"introduction ":[64,65],"introduction,":65,"introductory ":64,"introspection.":62,"invocation ":57,"io/":[52,79],"iobase=":15,"iot ":[8,60,62],"iot)":[8,41],"iot-":62,"ip ":[5,8,9,15,27,31,32,54,55,57,59,62,71,73,79,86,87],"ip-":[15,57],"ip>":79,"ip_address]":37,"ip_forward ":79,"ip_forward=":54,"ipc ":75,"ipex ":38,"ipmctl.":62,"ipmi-":62,"iproute2.":62,"ipset.":62,"iptables ":54,"iptables-":54,"iptables.":62,"ipv4.":[37,54,79],"ipv4/":54,"ipxe ":[32,38],"ipxe.":54,"ipxe/":[38,54],"ipxe_app_name.":54,"ipxe_app_name/":54,"ipxe_app_name=":54,"ipxe_boot_script.":[38,54],"ipxe_port/":54,"ipxe_port;":54,"ipxe_port=":54,"ipxe_root ":54,"ipxe_root/":54,"ipxe_root=":54,"ipxeboot,":54,"ir ":60,"ir)":[60,73],"ir.":60,"irc ":62,"irc)":62,"is ":[2,3,7,8,11,16,21,57,60,62,63,64,65,66,70,71,72,73,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92],"is:":67,"isa-":15,"iscsi.":62,"isis/":62,"iso ":[6,16,17,20],"iso)":17,"iso-":62,"iso.":[13,16,19,83],"iso9660 ":62,"iso:":13,"isohybrid ":6,"isolated ":[81,82],"isolation ":79,"isometric ":62,"issue ":63,"issues ":[62,87],"issues.":62,"issues/":0,"ister ":[26,27,38],"ister-":54,"ister.":[27,32,38],"ister/":[27,38],"istercloudinitsvc\"":38,"isterconf=":38,"isvs)":8,"it ":[0,2,27,30,40,52,58,62,64,65,70,71,73,74,75,76,78,79,81,82,84,85,87,88,90,91],"it)":65,"it.":[65,73,81],"it?":[16,90],"italic ":64,"italics ":64,"item ":[64,65],"item)":64,"items ":[64,65],"items,":65,"items.":64,"items:":[64,65],"its ":[67,73,79,81,82,83,86,88,90],"j ":[22,54],"jack ":62,"jack2.":62,"jan ":8,"jansson.":62,"jar ":70,"java ":[58,62],"java*":71,"java,":62,"java-":62,"java11-":62,"java12-":62,"java13-":62,"java9-":62,"javascript ":62,"jdb,":62,"joa4:":52,"job-":[59,73],"jobs ":[62,70,73],"jobs,":8,"join ":[0,79],"joining ":79,"journal ":31,"journal-":40,"journal.":62,"journal:":35,"jpeg ":[60,64,73],"jpeg_classification.":73,"js ":62,"json ":[26,38,62,73],"json-":[22,52,62],"jul ":47,"june.":65,"jupter ":73,"jupyter ":62,"jupyter*":88,"jupyter,":88,"jupyter/":[59,73],"just ":64,"k8s ":73,"k8s.":79,"k8s_namespace=":[59,73],"k8s_namespace}":[59,73],"kart ":62,"kaslr)":28,"kata ":[77,79],"kata-":[72,74,78],"kb ":[47,75],"kb/":47,"kbd:":64,"kde ":62,"kde-":62,"kde.":62,"kdeconnect-":62,"keep ":[63,64,65,73,81,82,90],"keepass ":62,"keepimage:":13,"keeps ":65,"kernel ":[0,4,5,16,17,18,28,33,35,38,45,52,54,62,73,81,82,88],"kernel,":62,"kernel-":[8,13,16,24,27,30,33,34,35,38,53,62,81],"kernel.":[33,35,62,67,81],"kernel/":[16,33,34,35,53,81],"kernel:":13,"kernel>":16,"kernel_version:":31,"kerneldir=":35,"kernels ":81,"kernels,":0,"kernelver}":35,"key ":[7,8,62,70,74,85],"key-":62,"key.":70,"key/":62,"key:":85,"keyboard ":62,"keyboard:":13,"keygen ":70,"keymaps.":62,"keypad.":65,"keys ":8,"keys,":8,"keys.":[62,70],"keys;":62,"keyvault ":8,"kfapp=":[59,73],"kfapp}":[59,73],"kfctl ":73,"kfctl/":73,"kfctl_existing_arrikto.":73,"kfctl_path}":73,"kfctl_url=":73,"kfctl_url}":73,"kfctl_v$":73,"kfctl_v0.":73,"kfctl_ver}":73,"kflow_app\"":[59,73],"kill ":57,"kind:":[59,73,79],"kind=":55,"kinesis ":60,"kinesis/":60,"kit ":62,"kit.":62,"kmod.":62,"know ":[65,73],"know!":8,"knowledge ":65,"known ":[0,7,8,62,81,82,87],"ko>":34,"koji ":62,"konsole ":62,"kpxe ":54,"kpxe,":54,"krb5.":62,"ks ":[59,73],"ksonnet ":[59,73],"ksonnet/":[59,73],"ktarget ":33,"kubeadm ":[79,80],"kubeadm,":80,"kubectl ":[59,73,79],"kubectl,":80,"kubectl:":73,"kubeflow*":73,"kubeflow.":73,"kubeflow/":[59,73],"kubeflow:":73,"kubeflow\"":[59,73],"kubeflow_src=":[59,73],"kubeflow_src}":[59,73],"kubeflow_tag=":[59,73],"kubeflow_tag}":[59,73],"kubelet ":[79,80],"kubelet)":80,"kubelet.":79,"kubernetes ":[8,80],"kubernetes*":[59,73,77],"kubernetes,":[73,79],"kubernetes.":[62,73,79],"kustomize ":73,"kvm ":[12,22,24,26,42,53],"kvm'":15,"kvm)":[22,62],"kvm-":[15,27,42,62,67],"kvm.":[15,42,62,67],"kvm\"":27,"l ":[8,47,57,82],"lab ":8,"label ":64,"label.":90,"labels ":88,"labels-":88,"labels:":[59,73],"labs ":62,"labs.":8,"lacptransmitrate=":55,"ladebug,":62,"lake ":8,"lambda*":60,"lambda/":60,"lamp ":89,"lan ":40,"lang-":62,"language ":[62,64,65,91],"language,":[62,64],"language-":85,"language.":62,"language:":13,"languages.":[62,85],"large ":[62,70],"large-":62,"larger ":[62,73],"last ":[47,52,64],"last.":65,"last@":52,"latency ":62,"latency,":62,"latency=":73,"later ":[17,18,19,20,71],"latest ":[8,31,52,59,62,73,74,80,81,82,90,91],"latest)":[51,54],"latest-":[15,18,20,22],"latest.":91,"latest\"":[27,38],"latex ":62,"latex)":62,"latte-":62,"launch ":[7,62,73,74,75,85,92],"launcher.":[59,62,73],"launches ":74,"launching ":73,"layer ":[62,85,90],"layer,":[73,88],"layer3+":55,"layers,":88,"layers.":62,"layout ":28,"lcms2.":62,"ld.":[81,82],"ld_library_path ":73,"ld_library_path=":73,"ldap)":62,"ldtarball ":35,"leaderboard ":85,"learn ":[44,64,79,82,85,92],"learning ":[62,77],"learning,":73,"learning-":[42,62,67,88],"learning.":[42,62,67],"leasefile=":54,"least ":64,"leave ":[8,65],"left ":[0,76,86,90],"legacy ":[62,67],"legacy.":[42,67],"legal.":0,"length ":64,"length,":65,"lenovo ":66,"leptonica.":62,"less ":[11,69],"let ":8,"let'":62,"lets ":[62,74],"letsencrypt-":62,"letters.":64,"level ":[62,64,65,71,73,91],"level.":62,"level:":65,"levels ":64,"lexical ":62,"lib ":81,"lib-":[47,62,81],"lib.":[62,76],"lib/":[8,16,25,27,30,35,38,44,49,52,54,73,81],"lib32 ":81,"lib64 ":81,"lib64/":[8,60,81],"lib64:":82,"libabigail.":62,"libarchive.":62,"libass.":62,"libassuan.":62,"libatasmart.":62,"libav-":0,"libbench2/":76,"libcanberra.":62,"libcap-":62,"libcap.":62,"libcgroup.":62,"libconfig.":62,"libcpu_extension.":60,"libcroco.":62,"libcurl ":21,"libdatrie.":62,"libdazzle.":62,"libdir=":81,"libdrm.":62,"libepoxy.":62,"libevdev.":62,"libevent.":62,"libexec/":56,"libexif.":62,"libffi*":8,"libffi.":[8,62],"libfontenc.":62,"libgcrypt.":62,"libgd.":62,"libgdata.":62,"libgee.":62,"libgl.":81,"libglx-":81,"libgnomekbd.":62,"libgpg-":62,"libgphoto2.":62,"libgsystem.":62,"libgtop.":62,"libgudev.":62,"libgusb.":62,"libgweather.":62,"libical.":62,"libidn.":62,"libidn2.":62,"libinput.":62,"libiscsi.":62,"libjpeg-":62,"libmediaart.":62,"libmicrohttpd.":62,"libmnl.":62,"libmspack.":62,"libmtp.":62,"libmypaint.":62,"libndp.":62,"libnetfilter_conntrack.":62,"libnetfilter_cthelper.":62,"libnetfilter_cttimeout.":62,"libnetfilter_queue.":62,"libnfnetlink.":62,"libnftnl.":62,"libnl.":62,"libnotify.":62,"liboauth.":62,"libogg.":62,"libosinfo.":62,"libpcap.":62,"libpciaccess.":62,"libpeas.":62,"libpinyin.":62,"libpipeline.":62,"libpng.":62,"libpsl.":62,"libpthread-":62,"libraries ":[62,73,76,81,82,85,88],"libraries,":82,"libraries.":[62,82],"library ":[28,49,62,70,73,76,81],"library,":62,"library-":81,"library.":62,"library/":62,"libraw.":62,"libreoffice-":62,"libreoffice.":62,"librepo.":62,"librsvg.":62,"librte_pmd_e1000.":53,"libs ":62,"libs-":62,"libs.":62,"libsamplerate.":62,"libsass.":62,"libsctp.":62,"libseccomp.":62,"libsecret.":62,"libsigcplusplus.":62,"libsmbios.":62,"libsolv.":62,"libsoup.":62,"libspectre.":62,"libsrtp.":62,"libssh2.":62,"libstoragemgmt.":62,"libtasn1.":62,"libthai.":62,"libtheora.":62,"libtirpc.":62,"libu2f-":92,"libunwind.":62,"libusb.":62,"libuser.":62,"libuuid ":22,"libuuid\\":22,"libuv.":62,"libva-":62,"libva.":62,"libvirt.":62,"libvorbis.":62,"libvpx.":62,"libwacom.":62,"libwebp.":62,"libwnck3.":62,"libx11.":62,"libxau.":62,"libxcb.":62,"libxcomposite.":62,"libxcursor.":62,"libxdamage.":62,"libxdmcp.":62,"libxext.":62,"libxfixes.":62,"libxfont.":62,"libxfont2.":62,"libxft.":62,"libxi.":62,"libxinerama.":62,"libxkbcommon.":62,"libxkbfile.":62,"libxklavier.":62,"libxml2.":62,"libxmu.":62,"libxpm.":62,"libxrandr.":62,"libxrender.":62,"libxres.":62,"libxscrnsaver.":62,"libxslt.":62,"libxt.":62,"libxtst.":62,"libxv.":62,"libxvmc.":62,"libxxf86misc.":62,"libxxf86vm.":62,"libyami.":62,"libzip.":62,"libzmq.":62,"license ":22,"license-":47,"license.":73,"license:":33,"licensed ":3,"licensing ":[0,73],"light ":62,"light-":62,"lightdm ":62,"lightweight ":[30,62],"like ":[8,16,57,62,64,65,73,76,85],"like:":64,"likely ":[64,81],"likes ":65,"liking.":57,"limit ":[64,65],"limitation ":64,"limited ":[62,79,81],"limits.":48,"line ":[62,75,76,81,90],"line.":[62,75],"line:":79,"linear ":62,"lines ":[62,76],"link ":[64,82],"link,":64,"link.":65,"link/":64,"link]":55,"linkable ":64,"linked ":[22,82],"linked)":64,"linker ":[81,82],"linking ":64,"links ":[64,65],"links.":64,"linux ":[1,11,12,13,14,15,21,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,59,60,61,62,63,64,68,69,70,71,73,74,75,77,78,79,80,81,82,84,87,88,89,90,91],"linux*":[0,1,11,12,13,21,22,23,24,25,26,27,29,30,31,32,33,34,35,37,38,39,40,41,43,44,45,46,47,49,50,51,53,54,55,56,57,58,59,60,62,66,68,69,70,71,72,73,74,75,76,78,79,80,81,83,86,88,89,91,92],"linux,":[62,83,84],"linux-":[4,5,8,11,13,22,24,31,33,34,52,57,62,73,81],"linux.":[33,62,75],"linux/":33,"linux:":57,"linux<":33,"linux\"":[27,38,46],"linuxapp-":53,"list ":[0,5,7,8,16,27,30,62,64,66,70,73,74,85,86,88,92],"list,":[62,75,85],"list-":[33,50],"list.":[62,85],"listed ":[73,88,90],"listen ":54,"listen-":54,"listening ":[57,62],"listening)":56,"listenstream=":[56,57],"listing ":65,"lists ":67,"lists,":[64,85],"lists.":[64,65],"lists:":64,"little ":65,"live ":[13,52,69],"live-":[4,5,13,42,67,83],"lksctp-":62,"ll ":[65,73,85],"llen ":85,"llvm'":62,"llvm.":62,"llvm/":62,"lm)":11,"lm-":62,"ln ":[27,54,82],"load ":[62,81,82,84,88],"load.":[34,35],"loaded ":[57,81,82,88],"loaded,":73,"loaded.":81,"loaded:":84,"loader ":62,"loading ":62,"loading.":81,"loads ":62,"local ":[60,62,64,70,71,79],"local)":[62,82],"local-":[27,70],"local/":[59,73,82],"local:":[22,64],"local_bundle_dir ":27,"local_repo_dir ":27,"local_rpm_dir ":27,"locale ":[62,75],"locale>":50,"localhost ":[27,31,70,71,73,79,90],"localhost,":79,"localhost.":[70,90],"localhost/":90,"localhost:":[57,70],"localhost;":[27,54],"localhost\"":84,"localhost]":70,"locality ":62,"localization ":62,"locally,":64,"locally.":64,"locate ":[62,79],"locate)":62,"located ":[64,74,82,90],"location ":[27,54,64,73,83,90],"location!":90,"location.":[8,73,90],"location\"":8,"locations ":90,"locations,":87,"lock ":8,"locking-":33,"locks.":8,"log ":[8,15,57,62,63,70,76,81,83,86,87,90,91],"log/":81,"log4j.":71,"log:":76,"logging ":[52,59,62,73],"logical ":79,"login ":[8,13,62,81,85,90,91],"login,":90,"login:":91,"logins.":90,"logitech'":62,"logout ":8,"logs ":[73,81,82],"long ":81,"long-":62,"longer ":72,"look ":[73,81,82],"looking ":75,"looks ":[64,79],"lookup ":85,"lookups,":85,"loopback ":74,"looping.":64,"lose ":76,"losing ":62,"losless ":62,"loss ":64,"lossless ":62,"lost ":[70,79],"love ":0,"loving ":8,"low,":31,"low-":[62,64],"lower ":[64,87],"lowercase ":64,"lowercase.":65,"lpop ":85,"lr.":62,"lrange ":85,"lrwxrwxrwx ":8,"lrzit5ar66ibtfia8qmiisrfbum/":7,"ls ":[8,33,44,54,82],"lsblk ":5,"lshw ":81,"lsmod ":[16,35,81],"lspci ":53,"ltelemetry ":31,"lts ":[15,16,24,34,35,62,81],"lts)":[16,81],"lts-":[16,34,35,62,81],"lts2017 ":62,"lts2017-":62,"lts2018 ":62,"lts2018-":62,"lttng ":62,"lttng-":62,"lua-":62,"lua.":62,"lucene ":62,"luks ":[4,5,28],"lvm2.":62,"lvs)":62,"lxqt ":62,"lxt,":62,"lxt2,":62,"lz4 ":62,"lz4.":62,"lzma ":62,"m ":[15,33,35,53],"mac ":[38,53,83],"mac*":77,"mac.":83,"macaddress\"":8,"machine ":[7,8,17,18,20,31,45,62,67,70,71,73,74,77,86],"machine,":87,"machine-":[31,42,62,67,88],"machine.":86,"machine:":74,"machine_id:":31,"machines ":[8,62],"machines,":70,"machines.":[8,62],"macos ":[6,57,62],"macos*":[5,57,83],"macro ":62,"macros.":62,"macvlan ":52,"made ":[0,65,72,74,90],"made.":65,"magic ":62,"magnetic_compass.":73,"mahjongg ":62,"mail ":62,"mail-":62,"mail.":62,"mailboxes ":62,"maildir ":62,"mailing ":[62,63],"main ":[4,5,64,65,76,88,90],"main(":[31,76],"main/":71,"mainline ":62,"mainline-":62,"maintain ":[8,62],"maintained ":[8,73,81,82,85],"maintainer ":[52,63],"maintaining ":0,"maintains ":[0,86],"maintenance ":0,"maj:":[6,46],"major ":62,"make ":[22,33,35,53,58,59,63,64,67,72,73,76,79,81,82,90],"make-":76,"make.":62,"make=":35,"makefile ":53,"makefile.":22,"makefiles ":53,"maker-":62,"makers ":62,"makers.":62,"makes ":74,"makes,":88,"making ":65,"malloc(":31,"malware ":62,"man ":[27,29,30,34,35,37,39,48],"man-":[62,82],"man/":22,"man8/":22,"manage ":[4,5,8,62,73,80],"manage,":62,"manage_network_ns_lifecycle ":79,"managed ":[8,62,81],"managedapp ":8,"managedby\"":8,"management ":[20,62,65,79],"management,":[9,62,74],"management-":62,"management.":62,"manager ":[4,16,33,34,35,62,74,80,81,88,92],"manager-":62,"manager.":[62,88],"manager]":48,"managing ":62,"manifest ":73,"manifest.":[27,51],"manifests ":73,"manifests/":73,"manipulate ":62,"manipulation ":62,"manpages ":57,"manual ":[0,5,63,81],"manual\"":37,"manually ":[0,73,78,81,92],"manually.":[81,82],"manually:":0,"manufactured ":92,"manufacturer ":82,"manufactures ":81,"many ":[0,62,67,73,74,85],"map ":62,"map,":62,"mapper ":74,"mapping ":[62,86],"mapred-":70,"mapred.":70,"mapreduce-":70,"mapreduce.":70,"mapreduce/":70,"mapreduce_shuffle<":70,"maps ":85,"mariadb ":[62,90,91],"mariadb!":90,"mariadb*":[90,91],"mariadb,":90,"mariadb.":62,"mark ":[64,80],"marketplace ":[7,8],"marking ":64,"marks ":65,"marks.":65,"marks:":65,"markup ":[62,64],"markup.":64,"mary\"":85,"mask ":[39,79],"masked.":21,"master ":[65,70,79,80],"master-":79,"master.":71,"master/":[22,27,33,47,58,59,73,92],"master:":73,"match ":79,"match=":54,"match]":[37,54,55],"math ":73,"mathematical ":62,"mathematics ":88,"matter ":0,"matter.":65,"matters.":62,"max ":[48,76],"max*":66,"max.":48,"max;":76,"max=":48,"max_cstate=":39,"maxdepth:":64,"may ":[0,16,30,64,65,66,73,74,75,77,78,79,81],"mb ":[46,47,75],"mb/":47,"mdns ":45,"me ":63,"me.":65,"me/":0,"meaning ":64,"meaning,":65,"means ":90,"measurements.":62,"measures ":91,"measuring ":62,"mechanism ":65,"mechanisms.":65,"med,":31,"media ":[0,62],"media,":62,"media.":62,"media/":6,"mediasdk.":62,"meet-":92,"mem=":53,"memorable ":62,"memory ":[62,85],"memory-":62,"memory.":62,"memory:":52,"memory>":53,"menu ":[64,83,90],"menu.":[65,87],"menus.":62,"menuselection:":[64,65],"merge ":0,"merged ":[0,63],"merging ":62,"merriam-":63,"mesa ":81,"mesa.":62,"message ":[74,81,83,87,90],"message-":[62,80],"message.":79,"messages ":[62,64],"messagging ":62,"meta ":62,"meta-":70,"metacity.":62,"metadata ":47,"metadata:":[59,73,79],"metal ":[71,74,76,78,79,84,88],"metallb.":73,"metallb/":73,"metapackage ":62,"metaphors.":65,"method ":[37,85],"method.":86,"methods,":79,"methods.":85,"metrics-":62,"mget ":85,"mh ":62,"micro ":7,"micro-":40,"microphone ":83,"microsoft ":[12,24,42,62,63,64,67],"microsoft*":[9,12,16,24,42,67],"microsoft.":8,"mid-":64,"middleware,":62,"might ":[64,65],"migrate ":[77,78],"migrated ":72,"miimonitorsec=":55,"mime-":62,"min ":[6,46],"minecraft.":62,"minetest.":62,"minimal ":[62,74],"minimalist ":62,"minimalistic ":62,"minimum ":[64,73],"minnowboard ":66,"minor ":80,"mint*":[15,57],"minute ":52,"minutes ":73,"mirror ":[4,5],"mismatch ":30,"missing ":[2,52,63,79],"mistake ":65,"mistake.":65,"mit\"":22,"mitre.":28,"mix ":[27,79],"mix.":27,"mix/":27,"mix\"":27,"mixer ":[22,62],"mixer.":27,"mixer/":27,"mixer:":27,"mixer;":27,"mixer\"":27,"mixer]":27,"mkdir ":[27,29,31,34,35,37,47,48,50,53,54,55,56,57,59,70,71,72,73,78,79,81,82,88,90,92],"mkhermitian(":76,"mkl ":[58,59,73],"mkl)":73,"mkl-":[59,73],"mkl:":[59,73],"ml/":73,"mllib,":71,"mlt ":62,"mm/":53,"mnist ":88,"mnist_example ":88,"mnist_example.":88,"mnt/":[44,53],"mo.":60,"mo_tf.":73,"mobaxterm ":10,"mobile ":62,"mobilenet ":60,"mock ":[22,33],"mod-":[35,81],"mode ":[6,52,62,73,83],"mode.":8,"mode:":13,"mode=":55,"model ":[59,60,62,81,82,88],"model,":[73,88,92],"model-":[62,73],"model.":[73,88],"model:":73,"model=":[59,73],"model_dir>":60,"model_location>":60,"model_name ":73,"model_name>":73,"model_path ":73,"modeller.":62,"modelling,":62,"models ":[62,73],"models.":[62,70],"models_directory>":73,"modern ":[0,62],"modern)":62,"modern-":33,"modeset=":81,"modified ":46,"modifiers ":65,"modify ":[5,8,37,57,62,65,70,71,73,79,85,90],"modifying ":62,"modprobe ":[35,53,81],"modprobe-":82,"modprobe.":[34,35,81],"modprobe/":82,"modular ":62,"module ":[0,35,62,81],"module-":[34,35,81],"module.":[34,35,62,81],"module_name}":[34,35],"modulepath ":81,"modules ":[0,62,81],"modules-":[34,35],"modules.":[34,62,81,90],"modules/":35,"modules\"":81,"mom ":51,"mom,":65,"mom.":51,"moment ":63,"monitor ":[8,62,73],"monitor-":62,"monitor.":62,"monitoring ":62,"monitoring,":62,"monospace,":64,"month.":64,"more ":[0,44,58,62,64,65,73,74,79,81,83,86,88,90,92],"more.":[62,82,85],"more:":57,"mosquitto ":62,"most ":[62,64,65],"motd)":[35,81],"mount ":[44,53,62,65,73],"mount.":60,"mount\"":[27,38],"mountpoint:":13,"mounts.":62,"mouse ":62,"move ":[88,92],"movie ":62,"moving ":90,"mozilla.":62,"mozjs52.":62,"mozjs60.":62,"mp.":76,"mp3.":62,"mpeg ":62,"mpg123.":62,"mqtt ":62,"ms ":8,"ms/":8,"ms;":73,"mta)":62,"mtd-":62,"mtubytes=":55,"much ":[81,82],"multi-":[57,62,77,79,81],"multicast ":62,"multilayer ":62,"multimedia ":[0,62],"multipath-":62,"multiple ":[0,62,63,64,70,74,75,76,85],"multiplexer ":62,"multiplexer.":62,"multiplication ":[11,69],"multipurpose ":62,"multithreaded ":62,"mumble ":62,"murmurd)":62,"music ":62,"must ":[63,64,70,73,76,79,80,81,82,84,87,90,91],"mutt ":62,"mutter.":62,"mv ":[73,90,91,92],"my ":[33,65,76],"my-":[33,52],"mycroft,":62,"mynet0 ":15,"mynet0,":15,"mysql ":[8,90],"mysql*":90,"mysql_secure_installation ":90,"n ":[8,31,39,48,53,57,73,76,79],"n%":47,"n)":[8,57,76],"n,":76,"n/":[52,81],"n>":33,"n\"":[31,76,81],"n]":90,"na)":76,"name ":[6,8,17,18,19,20,22,33,37,45,46,57,58,59,62,64,65,73,74,83,85,91],"name,":[64,65],"name.":[65,79,81],"name:":[13,33,52,59,73,79,90,91],"name<":70,"name=":[22,37,47,54,55,59,73],"name>":[22,30,33,35,59,64,70,73,79],"name\"":[8,22,33],"name]":46,"named ":[64,73,88,90],"namenode ":70,"namenodes ":70,"names ":[65,66],"names,":64,"names.":65,"namespace ":[59,70,73,74],"namespace:":73,"name}":8,"naming ":[64,67],"nano ":90,"nat ":[54,62],"nat-":54,"native ":[8,30,35,62,65,81],"native-":[0,27,30,35,53,59,62,73,79,80,81],"native\"":38,"natively ":0,"natively.":0,"nautilus.":62,"navigate ":[73,81,82,90,91],"navigated ":73,"navigating ":73,"navigation ":[9,65],"nb,":76,"nbserver-":[59,73],"ncurses ":62,"ncurses.":62,"ndctl.":62,"necessary ":[64,65,73,91],"necessary.":[65,81],"need ":[64,65,72,73,74,76,78,79,84,90],"need-":0,"needed ":[62,65,71,73,79,88,90,91],"needed,":[65,82],"needed.":[64,65,81],"needs ":[49,73,92],"needs.":[64,70,79],"negotiation ":62,"nested ":78,"net ":62,"net-":[15,62],"net.":[54,79],"net/":[8,54,90],"netcat ":84,"netdev ":15,"netdev=":15,"netdev]":55,"netkit-":62,"netlink ":62,"netstat ":57,"nettle.":62,"network ":[0,4,5,8,37,53,54,62,73,74,75,86,88],"network-":[8,41,52,53,57,62,79],"network.":[57,85,88,90],"network/":[37,54],"network:":52,"network]":[37,54,55],"networkctl ":37,"networkd ":[37,62],"networkd-":62,"networked ":62,"networking ":[62,79],"networking,":9,"networkmanager ":[37,62],"networkmanager,":13,"networkmanager-":62,"networkmanager.":[49,62],"networkmanager/":37,"networks ":[8,73],"networks.":62,"neural ":[62,73,88],"never ":[65,70,71],"new ":[5,7,8,17,18,19,20,22,31,57,62,63,70,71,73,74,75,76,78,79,81,85,86,88,90,91],"new":[16,59,65,73,83],"new,":73,"new-":[35,81],"newer ":76,"newly ":[75,90],"news ":62,"news-":0,"newt.":62,"next ":[64,73,79,83],"next,":[73,90,91],"next-":62,"next.":88,"nfiles.":48,"nfs ":62,"nfs)":62,"nfs-":62,"nftables.":62,"ng.":62,"nghttp2.":62,"nginx ":[31,54,62,74],"nginx!":74,"nginx*":[27,74],"nginx-":62,"nginx.":[27,54],"nginx/":[27,54],"nist.":28,"nix ":62,"nm-":37,"nmcli ":37,"nmtui ":37,"nn ":53,"no ":[0,21,62,63,64,65,70,85],"no)":[7,8,70],"no-":[49,52,59,73,81,82],"no_proxy ":84,"no_proxy=":[27,79,84],"no_proxy}":79,"no_timer_check ":[38,54],"node ":[70,80],"node,":[53,80],"node.":[62,73,79],"node/":53,"node0/":53,"node1/":53,"nodejs-":62,"nodemanager.":70,"nodes ":[70,79,80],"nodes,":73,"nodes.":[70,73],"nodev ":53,"nofile=":58,"nographic ":15,"nominal ":65,"nominalizations,":65,"non-":[16,62,65,81],"none)":90,"nonstandard ":62,"noptions ":81,"noreplace-":[38,54],"normal ":[64,81],"normally,":90,"nosql ":85,"not ":[0,8,27,30,46,52,57,63,64,65,66,72,73,78,79,80,81,82,83,84,85,86,91],"notabs=":13,"notation ":62,"note ":[64,73,90,91],"note:":[64,76],"notebook ":[59,73,88],"notebook,":[59,73,88],"notebook.":[73,88],"notebooks ":[73,88],"notebooks/":88,"notes ":[0,62,64,79],"notes-":62,"notfound.":22,"notice ":64,"notices ":64,"notices.":64,"notices:":64,"notification ":81,"notification.":62,"notifications,":75,"nouns ":65,"nouveau.":81,"now ":[17,39,62,73,79,80,82,85,90,91,92],"now,":76,"now?":[8,90],"noyce@":85,"noyce\"":85,"nspr.":62,"nss.":62,"ntfs-":62,"ntp ":50,"ntp)":62,"ntp=":50,"nuc.":91,"nuc6i5syh ":91,"null ":[48,52,57,81],"null":49,"null,":8,"null.":30,"null;":31,"num ":22,"num]":22,"numa ":53,"numactl.":62,"number ":[53,64,65,70,73,88],"number.":[64,67],"number>":[4,9,27,30,48,53],"number]":[5,6,17,18,19,20,42,46,57,67],"numbers,":65,"number}":8,"numerical ":62,"numerous ":91,"nvcc ":82,"nvd.":28,"nvidia*":77,"nvidia-":[81,82],"nvidia.":[81,82],"nvidia/":81,"nvidia_cuda-":82,"nx,":62,"o ":[11,13,15,16,18,20,22,27,31,33,34,35,51,53,54,56,62,76,91,92],"o3 ":76,"o\u865a\u62df\u5316\u6280\u672f)":[14,15],"oath-":62,"objdump ":76,"object ":[8,62,65,73],"object-":62,"objects,":62,"objects.":62,"obs ":62,"obs-":62,"observed ":79,"obtain ":62,"obtained ":[73,79],"obvious ":90,"ocaml ":62,"ocaml-":62,"occur ":81,"occur.":64,"occurs ":81,"ocr ":62,"ocr)":62,"of ":[0,7,8,11,27,30,31,33,46,48,51,52,53,58,59,62,63,64,66,70,71,72,74,75,76,78,79,80,85,86,87,88,89,90,91,92],"of-":[0,15,63,80,81],"of:":64,"of=":6,"offer ":[8,78],"offer:":8,"offered ":74,"offering ":[70,85],"offers ":[67,85],"office ":62,"official ":74,"offset:":13,"oflag=":6,"often ":[62,76,80],"oiio-":62,"ok ":86,"ok,":90,"older ":[73,77,82],"on ":[12,14,24,47,57,59,60,62,63,64,65,67,68,70,71,72,74,75,78,79,80,81,82,84,85,86,87,88,89,92],"on,":79,"on-":[5,8,22,33,40,41,60,62,79,82,86],"on.":90,"on;":[27,54],"once ":[57,63,64,70,73,74,76,79,90,91],"one ":[59,62,64,65,71,73,76,79,84,85],"one,":70,"one-":92,"one.":0,"ones ":57,"online ":91,"online-":62,"only ":[57,62,64,65,73,81,82,85,86,90],"only)":62,"only.":[2,62,64,89],"oobe)":15,"oomkiller ":62,"opae-":22,"opae/":22,"open ":[0,8,17,59,62,63,70,71,73,74,75,78,79,81,82,85,86,90],"open-":62,"open.":[59,73],"openblas ":58,"openblas.":[62,73],"opencv ":73,"opencv.":[62,73],"opencv/":73,"openfaas ":62,"opengl ":[62,69],"opengl-":81,"opengl.":62,"opening ":83,"openjdk ":58,"openmpi.":62,"openqa ":62,"opens ":[73,88],"opens,":83,"opensource ":81,"openssh ":56,"openssh-":[8,28,41,52,56,62],"openssl ":[8,51],"openssl.":62,"openstack-":62,"openvino ":[60,62],"openvino-":73,"openvino.":73,"openvino/":[60,73],"openvswitch.":62,"operable,":52,"operate ":65,"operates ":65,"operating ":[17,18,29,45,52,81,82,83,90],"operations ":85,"operations.":[62,73,88],"operator ":[59,73],"operator.":73,"opt-":31,"opt.":81,"opt/":[59,73,81,82],"optical ":[16,62],"optimizations ":76,"optimized ":[42,62,67,71,73],"optimizer ":[60,62,73],"optimizer,":73,"optimizer.":73,"optimizer/":73,"option ":[65,76,90,91],"option:":54,"option=":54,"optional ":[0,64,71,90],"optional)":65,"optional:":[79,85,87],"optionally ":13,"optionally,":90,"options ":[30,56,57,73,74,81,82,86],"options:":[31,81],"options=":56,"opts ":31,"opus.":62,"or ":[0,2,7,8,17,18,19,20,22,46,57,59,62,63,64,65,67,73,74,75,76,78,79,80,81,82,83,85,86,87,90,92],"or:":[65,79],"oracle ":[31,62,63],"orc.":62,"orchestration ":[62,79],"orchestration.":74,"order ":[64,65,90],"order:":65,"org ":[53,62],"org.":[21,31,33,54,62,70,75],"org/":[0,11,13,15,18,20,21,22,25,26,27,28,33,47,51,52,53,54,64,69,73,83,91],"organization ":[64,65],"organization,":64,"organize ":[63,64,65],"organized ":64,"organizer ":62,"organizing ":[62,65],"original ":65,"originally ":62,"os ":[13,29,31,40,52,61,62],"os,":[80,83,90],"os-":[5,8,13,17,22,26,27,33,38,40,41,44,45,52,60,62,86],"os.":[62,67],"os/":47,"os:":8,"ospf/":62,"oss ":[59,73],"oss:":[59,73],"oss@":[59,73],"ostree.":62,"ostype:":52,"other ":[17,18,19,20,62,64,65,66,73,80,81,83,84,85,86,87,88,90],"others.":[62,66],"otherwise,":73,"otp)":92,"otp-":62,"our ":[0,63,64,65,70,73,74,76,77,79,80,85,88,90,91],"out ":[0,8,30,31,51,62,63,64,79,91],"out-":[0,63,81],"outbound ":84,"outline ":62,"output ":[8,47,70,71,73,74,76,88],"output,":64,"output.":62,"output/":70,"output:":[76,85],"output=":73,"output_dir ":60,"output_dir>":60,"output_name ":73,"outputs ":62,"outside ":[64,81,82,91],"over ":[62,81,85,92],"over-":64,"overall ":73,"overhead.":0,"overlay2\"":74,"overlayfs ":74,"override ":[82,90],"override.":56,"overview ":[59,64,73],"overview:":64,"overwrite ":[70,81],"overwrites ":[71,81],"ovmf ":15,"ovmf.":[15,22,27],"ovmf_code.":15,"ovmf_vars.":15,"own ":[63,73,86,90],"owner ":86,"ownership.":22,"p ":[15,27,31,34,37,46,47,48,50,53,54,55,56,57,59,70,72,73,74,78,79,81,82,90,92],"p'":79,"p-":39,"p/":0,"p11-":62,"pac ":21,"pac)":21,"pack ":[30,52],"package ":[27,60,62,73,76,80,81],"package-":[22,62,64,79],"package.":79,"package_name=":35,"package_name>":35,"package_version=":35,"package_version>":35,"packaged ":0,"packagename>":33,"packages ":[0,62,73,74,88,90],"packages,":[62,70,71,74,78,79,86,88,90],"packages.":[62,72],"packages/":[22,30,33],"packaging ":[0,22],"packet ":62,"packs ":27,"packs.":[30,52],"pacrunner ":21,"pacrunner*":21,"pacrunner.":[21,62],"pacrunner/":21,"page ":[0,8,63,65,74,75,82,90],"page,":[64,65,75,90],"page.":[64,65,79,90],"pager ":62,"pages ":[62,64],"pages.":90,"paint ":62,"pair ":[7,62],"pam ":[28,48],"pamname=":57,"panel.":[62,65,90],"pango.":62,"pangomm.":62,"paradigm,":62,"paradigm.":90,"paragraph ":64,"paragraph:":65,"paragraphs.":65,"parallel ":[62,65,82],"parallel.":64,"parallelism ":65,"parallels ":83,"parallels*":77,"param_input_source ":60,"param_model_xml>":60,"parameter ":81,"parameter.":67,"parameter>":48,"parameters ":[62,81],"parent ":73,"parse ":73,"parser ":62,"parsing ":62,"part ":[0,6,46,62,63,65,80,90],"part-":70,"parted.":62,"partition ":[4,5,46,62],"partition.":62,"partition:":79,"partition\"":[27,38,46],"partitionlayout\"":[27,38,46],"partitionmountpoints\"":[27,38],"partitions.":62,"parts ":2,"parts,":64,"party ":62,"pary ":62,"pass ":[57,79],"passing ":79,"passive ":65,"passnic0,":53,"passnic1,":53,"passwd ":[43,60],"passwd:":31,"password ":[31,49,57,62,70,85,86,90,92],"password,":90,"password.":91,"password:":[31,57,90,91],"password?":90,"passwords ":[62,86],"passwords,":62,"paste ":[59,73],"patch ":[33,62,73,76],"patch-":33,"patch.":[33,76],"patch/":76,"patch0501 ":33,"patch0501:":33,"patch0502 ":33,"patch0502:":33,"patch1001 ":33,"patch1001:":33,"patch2001 ":33,"patch2001:":33,"patch:":76,"patches ":76,"patches,":76,"patches.":0,"patches:":76,"patching ":76,"patchset.":62,"path ":[8,62,73,81,82,86],"path-":[59,73],"path.":81,"path/":[31,34],"path:":[59,73],"path=":[44,59,73,81,86],"paths.":81,"pattern.":65,"patterns ":[62,65],"paused:":52,"payload ":31,"payload)":31,"payload,":31,"payload:":31,"payload;":31,"payload_file.":31,"payload_format_version:":31,"payload_version ":31,"payload_version)":31,"pb ":73,"pc ":9,"pc.":62,"pci ":53,"pci,":15,"pci-":53,"pci/":53,"pciutils.":62,"pclmul)":69,"pclmulqdq)":11,"pcre.":62,"pcre2.":62,"pdf ":62,"pdf,":62,"pdns-":62,"pdt.":47,"pe32 ":62,"peacock.":73,"peanut ":65,"peer)":62,"peer-":62,"peers ":65,"pelican.":73,"pem ":7,"pem\"":[7,27],"pending-":62,"penguin ":62,"per ":[62,64,65],"per-":79,"perform ":[64,74,88,90],"performance ":[0,39,58,62,73,76,79],"performance-":[25,62],"performance.":62,"performing ":65,"performs ":62,"period)":65,"period.":79,"periodically ":62,"peripherals ":62,"perl ":[62,76],"perl*":76,"perl,":[62,85],"perl-":[8,52,62],"permanent ":8,"permanently ":[7,8],"permanently,":79,"permanently:":79,"permission<":70,"permissions ":[86,90],"permissions.":[82,84,86],"permissions:":75,"permitrootlogin ":[15,56],"permitted ":70,"persistent ":[62,73],"personal ":[62,65],"phones ":62,"phoronix ":62,"phoronix-":62,"photo ":62,"photo-":62,"photography ":62,"photos.":62,"php ":[62,90],"php,":90,"php-":[62,90],"php.":[62,90,91],"phpinfo(":90,"phpinfo.":90,"phpmyadmin ":91,"phpmyadmin*":[90,91],"phpmyadmin,":90,"phpmyadmin-":90,"phpmyadmin.":90,"phrase,":65,"phrases ":[64,65],"phrases,":65,"phrases.":65,"physical\"":38,"picky ":[30,44],"picky-":30,"pictures ":62,"pidfile=":57,"pie ":28,"piece ":73,"pim ":62,"ping'":62,"pip ":73,"pipeline ":36,"pipeline.":73,"pipewire.":62,"pitfalls.":64,"pixbuf.":62,"pixman.":62,"pk\"":62,"pkcs#":62,"pkcs11-":62,"pkg ":[59,73],"pkgconfig ":62,"pkh.":0,"pktgen>":53,"pl ":76,"pl2/":76,"place ":[8,64,82,87],"place.":65,"places ":[81,82],"plain ":64,"plaintext ":62,"plan ":91,"plane ":[53,59,62,73,79,80],"plane.":79,"planned ":64,"plans.":8,"plasma ":62,"platform ":[8,9,62,67,73,82],"platform*":12,"platform,":62,"platform-":81,"platform.":[62,67],"platforms ":[67,76],"platforms,":74,"platfrom ":62,"play ":[17,18,62],"playback ":62,"playback.":0,"player ":[12,19,20,62],"player,":67,"player-":[17,18],"player.":62,"playing ":62,"please ":[0,16,22,73,74],"plot ":88,"plotter ":62,"plug-":62,"plugin ":[62,92],"plugins ":62,"plugins,":[62,79],"plugins-":62,"plugins.":62,"plugins:":52,"plus ":[62,65,85],"pm ":47,"pmdk.":62,"png ":[62,64],"png,":62,"po ":62,"pod ":[59,73],"pod-":[59,73,79],"pod.":73,"pods ":[73,79],"point ":[64,65,73],"point,":74,"point-":8,"point.":65,"pointing ":82,"policies ":65,"policies.":[8,65],"policy ":8,"pool ":62,"pop3 ":62,"popt.":62,"popular ":[62,81],"popup ":62,"port ":[27,53,57,62,71,73,74,84,85],"port/":84,"port=":[15,57],"port>":[21,27,79],"portable ":62,"portal.":62,"portion ":65,"ports ":[59,73],"possible ":[62,65,81,82],"possible,":65,"possible.":[0,62,64],"post ":0,"post-":[30,52,73],"postarchive:":13,"postgres ":8,"postgres'":31,"postgres)":31,"postgresql ":[8,31],"postgresql.":62,"postreboot:":13,"postrouting ":54,"postscript,":62,"potential ":[64,85],"power ":[4,18,19,20,39,62,65],"power.":39,"powerdns ":62,"poweredge*":66,"powerful ":62,"powermanagement,":75,"powershell ":16,"powerstate\"":8,"practice ":[0,65],"practices ":[9,63,80],"practicing ":65,"pre-":[62,64,67,74,75,82],"prebuilt ":62,"preceeding ":73,"precision ":62,"precompiled-":81,"predict ":88,"predicted ":88,"prediction ":88,"prediction,":88,"prediction.":88,"predicts ":88,"preempt-":62,"preempt_rt ":62,"prefer ":73,"preferred ":[50,65,79],"prefix:":91,"prefix=":[81,82],"preflight ":79,"premises ":8,"prepare ":73,"prerequisites ":[4,73],"prerequisites:":64,"preschool ":62,"present ":[64,88],"present:":73,"presented ":79,"presenting ":64,"press ":[63,90],"pretty ":45,"prevent ":90,"prevents ":81,"preview ":[65,67],"preview)":8,"previous ":[26,73,79,81],"previously ":90,"primarily ":62,"primary ":[62,73],"primary_dns_ip]":37,"primitives ":73,"primitives.":73,"principals.":8,"principle ":65,"print ":65,"print(":[59,73],"printed ":62,"printer ":62,"printf ":81,"printf(":31,"printing ":62,"prints ":31,"prior ":65,"prioritize ":91,"priority ":64,"privacy ":62,"privateipaddress\"":8,"privilege ":90,"privileged ":62,"privileges ":[62,90],"privileges.":[62,82,86],"pro ":65,"proactively ":0,"prob ":73,"probename ":31,"probename/":31,"problem ":63,"problem.":76,"problems ":[62,64],"proc/":[38,48,54,79],"procedural ":64,"procedures.":64,"procedures;":64,"process ":[48,62,70,73,74,84],"process,":62,"process.":[62,72],"processes ":62,"processing ":[62,70,73,81,82],"processing:":73,"processor ":[62,66],"processor.":[39,62],"procps-":62,"product ":[17,64,91],"product,":64,"production ":[62,74,89],"productivity ":62,"professional ":62,"professional,":65,"profile ":8,"profile-":81,"profiler ":62,"profiles.":62,"profiling ":76,"program ":[62,81],"program.":62,"programmers ":62,"programming ":[62,70,82,85],"programming.":62,"programs ":62,"programs,":62,"programs.":62,"progress ":2,"progress,":2,"progress.":81,"project ":[8,61,62,68,74,78],"project,":[22,76],"project.":62,"project:":8,"projects.":62,"projects/":22,"prompt ":[67,70],"prompted ":[75,83],"prompts ":[81,82,83],"pronunciation ":62,"proper ":65,"properly ":[70,80],"properties ":48,"properties.":71,"properties\"":8,"property ":66,"property=":84,"property>":70,"proposes ":73,"proprietary ":[81,82],"pros ":88,"proto.":62,"protobuf-":62,"protocol ":62,"protocols ":92,"protocols.":62,"prototxt ":60,"prototype ":73,"provide ":[62,64,73,74,75,85,92],"provided ":[0,2,8,73,74,79,81],"provided.":73,"provider ":[8,73],"providers.":[8,62],"providers/":8,"provides ":[0,62,64,65,68,71,73,74,78,79,81,85,88,90],"provides.":81,"providing ":[62,64,88],"provision ":8,"provisioning,":62,"provisioningstate\"":8,"proxies.":62,"proxies\"":27,"proxy ":[21,27,62,74,77,78],"proxy,":62,"proxy-":27,"proxy.":[21,27,78,79,84],"proxycommand ":84,"ps ":72,"ps:":73,"ptr ":31,"ptr)":31,"pub ":70,"pub'":8,"pub/":33,"public":63,"publically ":74,"publicipaddress\"":8,"published ":[63,74,81],"publisher ":8,"publisher:":8,"pull ":[27,63,74,85],"pulled ":74,"pulled.":79,"pulseaudio ":62,"pulseaudio.":62,"punctuation ":[64,65],"punctuation,":65,"punctuation.":[64,65],"purpose ":[51,62,64,71],"purposes ":[2,70,89],"purposes:":73,"put ":[64,65,73],"puts ":0,"putty ":57,"pv ":73,"pv-":73,"pv:":73,"pvc ":73,"pvc.":73,"pvc:":73,"pwd\"":52,"pxe ":[38,40,42,54,62,67],"pxe)":40,"pxe-":[52,54,62],"pxe.":[42,54,67],"pxe_internal_ip/":54,"pxe_internal_ip:":54,"pxe_internal_ip=":54,"pxe_subnet.":54,"pxe_subnet=":54,"pxe_subnet_bitmask=":54,"pxe_subnet_mask_ip,":54,"pxe_subnet_mask_ip=":54,"pxeclient*":54,"pxeclient,":54,"py ":[27,32,59,60,71,73],"pydata.":62,"pygobject ":62,"pygobject.":62,"python ":[8,59,62,73],"python*":[30,71],"python,":[62,85],"python-":[8,52,62],"python.":62,"python/":71,"python2-":62,"python2.":62,"python3 ":60,"python3-":[8,62],"python3.":30,"pytorch*":[59,73],"pytorch,":62,"pytorch-":[59,73],"pytorch.":[59,73],"pytorch/":[59,73],"pytorchtest ":[59,73],"q ":73,"q)":72,"qalculate-":62,"qcdebug ":62,"qemu ":[22,27],"qemu*":15,"qemu-":[53,62],"qemu/":[22,24],"qf=":47,"qingcloud ":12,"qingcloud*":12,"qingcloud.":10,"qpdf.":62,"qt ":62,"qt-":62,"qt3d.":62,"qtbase.":62,"qtdeclarative.":62,"qtlocation.":62,"qtsvg.":62,"qttools.":62,"qtwebchannel.":62,"qtwebengine.":62,"quake-":62,"qualified ":[57,82],"quality,":62,"quantization ":[59,73],"quassel ":62,"query ":[57,62],"question ":63,"question,":65,"question.":90,"questions ":[0,63,90],"quick ":[64,81,85],"quickassist ":62,"quickly ":[64,73,79],"quickly,":65,"quickly.":65,"quickstart ":[9,85],"quiet ":[38,54],"quote ":65,"quotes,":64,"qxl ":15,"r ":[60,62,73],"r)":31,"r*":71,"r-":[62,70],"r.":62,"r2r.":76,"r8,":76,"r]":5,"rabbitmq-":62,"racing ":62,"radio ":62,"ram ":[16,17,19,69],"ramdisk ":54,"ran ":[70,71,90],"rand(":[59,73],"random ":[62,88],"randomization ":28,"range:":73,"range=":54,"rank ":76,"rank,":76,"rather ":[64,74],"raw ":[15,62],"raw.":[22,27,33,73,92],"raw/":47,"rax,":76,"rc ":8,"rcu.":62,"rcx,":76,"rdma-":62,"re ":[0,73],"re,":65,"re-":90,"read ":[0,31,63,64,65,70,79,80,86],"read,":62,"readability ":64,"readability.":64,"readable ":[62,63],"reader ":[64,65],"reader,":65,"reader.":65,"readers ":[64,65],"readers,":65,"reading ":[62,65],"reading,":62,"reading.":74,"readline.":62,"readme.":64,"reads ":62,"ready ":[17,18,70,73,74,79,85,90,91],"real ":62,"real-":[62,73,85],"realistic ":62,"realloc(":31,"realpath ":16,"realtime ":62,"reasons.":0,"reboot ":[16,81,82,83,92],"reboot,":79,"reboot.":81,"reboots ":62,"rebuild ":81,"rebuilt ":[73,81],"recall ":91,"receiver ":62,"recent ":28,"recognition ":62,"recognition.":88,"recognize ":62,"recommend ":[72,76,81],"recommendation ":74,"recommended ":5,"recommended)":[6,73],"record ":[31,79],"record:":31,"record_burst_limit ":31,"record_burst_window ":31,"record_format_version:":31,"record_retention_enabled ":31,"record_window_length ":31,"recorder ":62,"recover ":62,"recursive ":62,"recursively ":62,"redis ":8,"redis*":77,"redis-":62,"redis.":85,"reduce ":[62,64,65],"reduces ":73,"reducing ":62,"ref ":64,"ref:":64,"refer ":[64,65,73,74,75,82,83,86],"reference ":[58,64,65,77,91],"reference.":64,"referenced ":64,"references ":[63,64],"referred ":74,"referring ":65,"refers ":[65,90],"refused ":79,"regarding ":[64,90],"regardless ":82,"region.":62,"regions ":9,"register ":[19,20,79],"registered ":8,"registers ":76,"registers.":33,"registries ":73,"registries.":8,"registries:":52,"registry ":[59,73],"registry:":52,"regression-":45,"regulates ":70,"reinstallation ":81,"relate ":73,"related ":[62,64,70],"relational ":62,"relatively ":64,"relax ":90,"relay ":62,"release ":[0,4,9,33,36,59,62,73],"release,":64,"release-":[4,27],"release.":[0,27,62,73,82],"release/":73,"release:":33,"release>":33,"released ":65,"releases ":0,"releases)":73,"releases.":62,"releases/":[13,26,47,51,73],"releasever/":47,"releasever=":47,"release}":47,"releasing ":0,"relevant ":[64,65,77],"relevant,":64,"reliability,":62,"reliable ":[38,54,62],"reliable,":62,"relies ":[81,82],"reload ":[29,81,90],"reload-":92,"reloaded ":92,"reloaded.":92,"reloading ":[78,90],"reluctance ":76,"remain ":0,"remaining ":[30,74],"remember ":[65,91],"remember.":64,"remember:":64,"remote ":[57,62,75,79,90],"remote-":15,"remote.":40,"remotely ":[62,81],"remotely?":90,"removal ":62,"remove ":[4,5,8,16,27,30,52,64,65,67,72,73,81,90,91],"remove-":52,"removed ":[52,62,73],"removed.":[90,92],"remover ":52,"removing ":[52,90],"rename ":[90,91],"rendering ":62,"rendering,":62,"renew ":62,"repair ":[22,30,44,64,81],"repeated ":74,"repeated,":64,"repeating ":[62,64],"replace ":[71,73,76,90],"replacement ":[62,90],"replicas,":73,"replicas:":73,"replicate ":73,"replicates ":73,"replication ":70,"replication<":70,"reply.":85,"repo ":73,"repo:":31,"repoquery ":47,"repositories ":62,"repository ":[52,59,73,74,75,79],"repository,":0,"repository.":63,"repository:":73,"representation ":[62,73],"request ":[0,63,87],"request.":[0,63],"requests ":0,"require ":[57,73,81,90],"required ":[4,5,62,64,72,73,74,79,81,82,85,88,89,91],"required,":82,"required.":[64,81,85],"required:":82,"requirements ":67,"requires ":[73,79,80,82],"requisites:":73,"requried ":62,"rescan ":5,"research ":62,"reservation ":62,"reservations ":8,"reservations.":8,"reset ":79,"reshape ":88,"reshapes ":88,"residing ":62,"resize ":15,"resize2fs ":46,"resizepart ":46,"resnet ":73,"resnet50 ":[59,73],"resnet_50_i8 ":73,"resolv.":[21,54],"resolve ":0,"resolve]":54,"resolved.":54,"resolves ":62,"resource ":[8,62,73],"resource-":8,"resourcegroup\"":8,"resourcegroups/":8,"resources ":[60,73],"resources,":[73,79],"resources.":8,"respectful,":65,"respond ":90,"responder ":62,"responses ":[85,90],"rest ":[31,64,81,82],"rest.":62,"rest/":64,"rest\"":38,"restart ":[8,21,29,31,37,49,50,54,55,56,57,72,74,78,79,80,84,90],"restarting ":90,"restartpolicy:":73,"restarts ":31,"restore ":[52,81],"restore.":54,"restored ":[81,82],"restrict ":65,"restriction ":83,"restructuredtext ":[63,64,65],"restructuredtext.":63,"result ":[73,79,87],"result:":[30,91],"results ":71,"results.":73,"results/":[22,76],"ret ":31,"ret)":31,"ret;":31,"retest ":88,"retrieve ":[62,73,79,87],"retrieve,":62,"return ":[31,76,81],"returned.":85,"retype ":31,"reusable ":62,"reuse ":0,"reused ":70,"reverse ":[62,74],"reverses ":65,"review ":[7,63,81],"review,":63,"revised ":2,"rewording.":65,"rewrite ":65,"rewriting ":64,"rf ":[29,73],"rich ":62,"right ":0,"rip/":62,"ripng ":62,"ripper ":62,"risk!":92,"risks ":87,"rm ":[6,22,29,46,59,73,74,81,90,91],"rmdir ":90,"rmi ":[59,73],"rngd ":49,"ro ":[6,46],"roadblocks ":76,"robert ":85,"robert.":85,"robin ":62,"robust ":73,"role ":8,"role,":64,"role-":62,"role.":64,"role:":64,"role>":38,"roles ":[8,64],"rolling ":[0,28],"rom ":16,"root ":[5,6,8,9,13,14,15,27,28,31,43,52,54,55,57,58,62,79,82,86,90,91],"root,":62,"root/":70,"root:":79,"root=":54,"root@":[15,58,73],"rotate ":76,"rotation ":62,"round ":62,"router,":54,"routes ":62,"routines ":62,"routing ":62,"rpg)":62,"rpm ":[22,27,33,36],"rpm/":80,"rpm2cpio ":33,"rpms ":33,"rpms/":33,"rpop ":85,"rpush ":85,"rsa ":8,"rsa)":8,"rsi ":62,"rss,":62,"rss/":62,"rst ":64,"rstudio ":62,"rstudio-":62,"rte_config.":53,"rte_sdk=":53,"rte_target=":53,"ruby ":62,"ruby,":85,"ruby-":62,"rufus ":6,"rule.":64,"rules ":64,"rules.":[0,92],"rules:":64,"run ":[8,16,30,52,58,59,62,64,74,75,76,80,81,82,83,84,90,91],"run-":81,"run/":[6,27,75,79],"run:":[73,79],"run`":81,"runc ":[52,78],"runfile(":82,"running ":[11,13,30,31,52,57,60,62,70,71,72,78,79,81,86,90],"running!":[70,91],"running,":[85,90,91],"running.":[8,70,85,90,92],"running:":52,"running\"":8,"runs ":[62,70,73,85,88,91],"runtime ":[62,70,72,78,79,81],"runtime'":72,"runtime-":62,"runtime.":[62,72,73,74,78,79,81],"runtime/":[59,73],"runtime:":[52,72],"runtime\"":[72,78],"runtime]":79,"runtimeclass ":79,"runtimes,":79,"runtimes:":52,"rusf:":52,"rust ":62,"rust-":62,"rv ":35,"rw ":[38,54],"rwsem-":33,"rwx ":27,"rwxr-":8,"rxvt-":62,"s ":[20,21,47,48,62,64,71,73,74,76,79,82,84,85,88,91],"s#":79,"s)":[30,52,62,73],"s,":65,"s3 ":[60,62],"s3fs-":62,"s\\":31,"safe ":[4,5,8],"safeguard ":8,"said ":70,"sake ":74,"sally-":45,"samba ":[62,86],"samba*":77,"samba.":86,"samba/":86,"same ":[62,64,65,72,73,76,79,81,86,87],"sample ":82,"sampled ":62,"samples ":82,"sandboxed ":62,"sandwiches.":65,"sandy ":39,"sasl.":62,"save ":[5,62,64,73,74,76,79,87,88,91],"save.":54,"saved ":[81,82],"saved.":[81,82],"saves ":62,"sbin/":71,"scala ":58,"scala*":71,"scala>":58,"scalable ":[62,73],"scale ":[8,62,70],"scaling,":79,"scan ":[62,65],"scannable ":[64,65],"scannable.":65,"scanning ":62,"scanning.":64,"scenarios.":79,"schedule ":62,"scheduled ":62,"schema:":87,"schemas.":62,"school ":62,"school/":62,"sci-":65,"science ":62,"scientific ":62,"scm)":62,"scm-":62,"scope ":91,"screen ":[62,79,81,82,83,90,91],"screen)":62,"screen,":83,"screen.":[90,91],"screenshot ":62,"screenshots ":[62,64],"script ":[57,62,73,76,78,79,82,90],"script,":73,"script:":[73,76],"scripts ":[62,73,79,81],"scripts.":[30,52,62],"scripts/":[59,73],"scroll ":73,"scsi)":18,"sda ":[6,46],"sda1 ":[6,46],"sda2 ":[6,46],"sda3 ":[6,44,46],"sda3/":44,"sda4 ":6,"sda5 ":6,"sda6 ":6,"sda7 ":6,"sda8 ":6,"sda\"":[13,38],"sda`":46,"sdb ":6,"sdb1 ":6,"sdc ":6,"sdc1 ":6,"sdd ":6,"sdd1 ":6,"sdd2 ":6,"sdd3 ":6,"sddm ":62,"sdk ":[22,60],"sdk-":22,"sdk.":22,"sdk/":22,"sdk\"":22,"sdl.":62,"sdl2.":62,"sdl2_gfx.":62,"sdl2_image.":62,"sdl2_mixer.":62,"sdl2_net.":62,"sdl2_ttf.":62,"sdl_gfx.":62,"sdl_image.":62,"sdl_mixer.":62,"sdl_net.":62,"sdl_ttf.":62,"seamlessly ":79,"search ":[7,30,34,35,62,65,75,81,92],"searchable ":62,"searching ":[62,75],"searching,":62,"second ":[64,73,89],"second,":64,"second-":64,"secondary ":[62,81],"secondary_dns_ip]":37,"seconds ":[59,73],"secrets,":8,"section ":[48,64,65,68,73,79,81,89,90],"section,":90,"section.":[64,65,81],"sections ":[73,74],"sections,":64,"sections:":[64,89],"secure ":[14,20,62,89,90],"secure,":[8,90],"secure-":33,"secure.":[87,90],"securely.":62,"security ":[0,28,62,64,78,79,87,91,92],"security,":[9,90],"security-":62,"security.":[62,92],"security/":48,"securitytypes=":57,"sed ":79,"see ":[57,63,64,65,72,73,75,76,79,82,83,86,90,91,92],"seeking ":0,"seen ":[65,91],"segment ":62,"seldon-":73,"seldon/":73,"seldonov-":73,"select ":[4,5,7,17,18,19,20,64,65,73,75,76,83,87,88,90,91],"selected ":[65,81],"selecting ":90,"selection ":91,"selection.":[65,87],"selector ":62,"semicolons,":65,"send ":[31,62,63,65],"sending ":52,"sends ":85,"sensors,":62,"sent ":31,"sentence ":[64,65],"sentence,":[64,65],"sentence.":64,"sentences ":[64,65],"separate ":[62,64],"separation ":0,"sequence ":64,"sequencer ":62,"sequencing ":62,"sequential ":64,"serial ":62,"serie1.":33,"series ":[62,64,65],"serve ":[64,85],"serve.":73,"served ":73,"server ":[13,14,27,50,52,54,57,58,62,67,70,73,78,79,81,83,85,86,87,88,89,91],"server)":52,"server,":[54,62,70,74,79,82,86,89,90],"server-":[52,62],"server.":[5,13,16,42,62,67,70,73,74,79,83,85,90,91],"server/":[62,73],"server:":85,"server=":31,"server>":50,"server\\":56,"server]":27,"server_name ":[27,54],"server_state_dir ":27,"serverless ":62,"servername/":87,"servers ":[62,70],"servers.":[8,62],"service ":[8,21,30,57,62,74,85,90],"service,":[70,90],"service-":[49,62],"service.":[8,27,56,62,72,78,79,84,85],"service:":[49,79,84],"service\"":78,"service]":[27,56,57,72,78,79,84],"services ":[8,57,62,79,80,84],"services*":[9,12,60],"services.":[8,72,73,78,79],"services<":70,"services=":79,"services[":79,"serving ":62,"session ":[62,79],"session.":82,"sessions ":62,"set ":[8,11,13,16,22,31,53,62,65,70,71,73,76,78,79,80,81,83,85,87,89],"set,":78,"set-":[16,33,45,50,81],"set.":[73,88],"set:":54,"sets ":[70,88],"sets,":85,"setting ":[64,70,73,74,79,90],"setting.":64,"setting?":46,"settings ":[16,79,82,83],"settings,":79,"settings-":62,"settings.":[62,79,92],"settings:":84,"setuid ":82,"setup ":[37,64,70,86,89],"setup,":[73,90,91],"setup.":[22,33,62,73,91],"setups ":73,"several ":[57,73,91],"severity ":31,"severity,":31,"severity:":31,"sf ":[8,27,54],"sftp ":[56,62],"sftp-":56,"sftp.":56,"sh ":[11,15,17,18,22,27,31,42,57,59,67,71,73],"sh.":[67,71,73],"sh/":73,"sha-":28,"sha256 ":51,"sha256:":[7,8,59,70,73],"sha256sum ":51,"sha512 ":[42,51],"sha512sum ":[42,51],"sha512sum.":51,"sha512sums ":42,"sha512sums.":51,"shard ":60,"share ":[86,87,91],"share.":[86,87],"share/":[0,22,27,29,31,35,44,53,54,58,59,60,70,71,73,79,81,85,88,90],"shared ":[0,62,73,81,82,86],"shared-":62,"shares ":86,"shares.":[62,86],"sharing ":[62,86,87],"sharing,":86,"shasum ":42,"shell ":[8,15,20,31,58,59,62,73,78,79],"shell,":62,"shell.":8,"shell/":8,"shell`":8,"shells.":62,"shift+":5,"shiftwidth=":13,"short ":65,"short.":64,"should ":[64,65,70,71,73,74,81,82,88,90,92],"show ":[62,64,65,81,82,84,88],"showing ":[64,88],"shown ":[57,73,74,75,79,80,83,86,87,88,90,91],"shown.":79,"shows ":[64,65,73,75,76,80,81,84,88,90,91],"shuffle.":70,"shufflehandler<":70,"shut ":17,"shutdown ":16,"side ":[62,65,83],"side-":83,"sidebar ":86,"sig ":51,"sig.":[35,81],"sig_unenforce\"":34,"sign ":[8,62],"signature ":[51,81],"significant ":[62,65],"signs ":64,"simd ":[11,69],"similar ":[0,62,65,70,73,76,79,80,85,90],"simple ":[62,67,70,71,73,76,86],"simple,":[62,90],"simple.":64,"simpler ":65,"simplicity,":62,"simplicity.":79,"simplified ":62,"simply ":62,"simulation.":62,"simultaneously,":80,"simultaneously.":62,"since ":[70,71],"single ":[59,62,64,70,71,75],"single-":[62,64,65],"site ":[62,89,91],"site-":30,"site.":[70,79],"situation.":0,"size ":[6,46,70,73],"size:":13,"size\"":[27,38,46],"skim ":65,"skip ":[70,89],"skipped ":52,"sku ":8,"sku:":8,"sky ":62,"slave ":70,"slave.":71,"sleep ":[59,73],"slice ":[57,85],"slim ":62,"slow ":62,"slowing ":76,"small ":[33,62],"small,":62,"smarctl ":62,"smart ":92,"smartd,":62,"smartphone.":62,"smb ":62,"smb)":87,"smb.":86,"smb:":87,"smbpasswd ":86,"smime ":51,"smoother ":90,"smp ":[15,38,54],"smtp ":62,"snack.":65,"snail.":73,"snapshot ":8,"snapshots.":8,"snippet ":73,"so ":[53,73,74,79,81,90,92],"so$":22,"so,":[78,79],"so.":[8,80,81,82],"socket ":[56,57],"socket.":56,"socket=":79,"socket]":[56,57],"sockets ":62,"sockets.":[57,62],"sockets=":15,"socks-":84,"socks_proxy=":[79,84],"socks_proxy}":79,"software ":[4,28,30,41,52,62,64,70,73,74,82,83,90],"software-":62,"software.":[0,62,65],"solaar-":62,"sole ":9,"solid ":62,"solution ":[0,62],"solution.":[73,74],"solution:":0,"solutions ":[8,73],"solutions,":73,"some ":[62,64,65,77,78,79,81,85,90],"someone ":[65,90],"something ":73,"sometimes ":[0,65],"soname1.":62,"soname2.":62,"soname3.":62,"soon ":72,"soon,":62,"sorted ":85,"sos ":62,"sos-":62,"sound ":62,"soundfont ":62,"source ":[0,30,33,57,62,73,74,78,79,82,83,90],"source,":0,"source/":47,"source0 ":33,"source0:":33,"source1:":33,"source2:":33,"source:":31,"source>":[34,35],"source?":[81,82],"source\"":33,"source]":47,"source_with_dkms>":35,"sourcecode>":76,"sourced ":[0,8],"sources ":47,"space ":[28,46,62],"space.":73,"sparingly.":64,"spark ":58,"spark*":77,"spark-":[58,71],"spark.":71,"spark/":[58,71],"spark:":71,"spark_master_host=":71,"spdx ":22,"speakers ":62,"speakers.":65,"speaking ":65,"spec ":33,"spec:":[59,73],"special ":[64,79,80],"specialized ":76,"specific ":[62,64,65,76,85,86],"specific.":67,"specifically ":0,"specifications.":62,"specifics ":91,"specified ":[57,62,73,82],"specified,":86,"specifies ":67,"specify ":[17,18,73,87],"speed ":[62,73,78],"speed.":76,"speedstep\u00ae":39,"speex.":62,"spell ":62,"sphinx ":64,"sphinx.":[63,65],"spi2-":62,"spice ":[15,62],"spice,":62,"spice-":62,"spice:":15,"spin ":73,"spin-":33,"splash ":74,"split ":89,"spm ":62,"spool ":31,"sprintf(":31,"sql ":[8,62],"sql,":71,"sqlite-":62,"square ":64,"squeezenet ":60,"squeezenetssd-":60,"src/":[25,27,35,59,71,73],"src_dir=":73,"src_dir}":73,"srpms)":33,"srpms/":47,"srv/":54,"ss ":21,"ssd ":[60,62,73],"ssd)":60,"ssd_inception_v2_coco_2018_01_28.":73,"ssd_inception_v2_coco_2018_01_28/":73,"ssd_v2_support.":73,"sse ":69,"sse4_1)":11,"sse4_2)":11,"ssh ":[7,8,9,10,20,28,32,40,62,79],"ssh)":[20,62],"ssh-":[8,62,70,75,84],"ssh.":[81,84],"ssh/":[8,15,56,70,84],"sshd ":56,"sshd.":56,"sshd@":56,"sshd_config ":15,"ssl ":62,"ssl)":62,"ssse3)":[11,69],"stability ":31,"stable ":75,"stable,":62,"stack ":62,"stack,":73,"stack.":[0,73,85],"stack;":62,"stacks-":[59,73],"stacks/":[58,59,73],"stage.":73,"stan ":62,"standalone ":71,"standard ":[11,62,63,64,65,74],"standarderror=":57,"standardinput=":57,"standards.":62,"start ":[8,15,27,31,52,53,54,59,60,64,65,70,73,74,78,81,83,86,88,90],"start,":65,"start-":[70,71],"start.":[8,81],"start_qemu.":[15,22,27,42,53,67],"started ":[59,64,65,73],"starting ":[30,57,64,70,73,78],"starts ":[31,88],"starttime\"":8,"startup ":57,"startup-":62,"state ":[37,39,52,62],"state.":[62,73],"statedir ":52,"stateless ":[0,29,70,71,79,81,90],"statements,":65,"static ":[45,62,76,90],"static":38,"static-":31,"static.":[37,54],"static/":38,"stations.":62,"statistical ":62,"statistics ":62,"status ":[25,56,59,73,85,90],"status.":73,"status:":62,"status=":6,"status\"":8,"stdin ":31,"stdio.":[31,76],"stdlib.":[31,76],"step ":[0,7,52,63,64,71,90],"step-":64,"step.":[70,90],"step:":79,"steps ":[64,65,73,81,84,86,88,89,90,91],"steps,":90,"steps.":[64,73,79,83],"steps:":[64,73,91],"stick ":65,"still ":[62,73,77,87],"stop ":[7,8,21,31,54,57,59,73,74,85,90],"stop.":8,"stopped ":81,"stopped:":52,"stops ":31,"storage ":[8,9,16,52,62,73,74,78,87],"storage,":8,"storage-":[8,46,62,74,86],"storage.":[62,70],"storage/":73,"store ":[8,62,75,79,85,90],"store,":62,"store-":73,"store.":62,"store:":75,"stored ":0,"straightforward ":90,"strain ":62,"stream ":62,"stream-":62,"streamer.":62,"streaming ":[11,62,69],"streaming,":0,"streaming.":71,"strerror(":31,"stride)":76,"string ":[52,85],"string.":31,"string>":31,"strings,":85,"strong ":79,"strong*":64,"strong,":65,"strongly ":[74,91],"struct ":31,"structure ":[63,65,85,90],"structure-":64,"structure.":[62,65],"structured ":62,"structures ":[65,85],"stub/":53,"stubs.":62,"studio ":62,"stuffy ":65,"style ":[62,63,64,65],"style,":63,"styles.":64,"stylesheet ":[62,70],"su-":62,"subject ":65,"subject.":65,"submit ":[0,63,71],"submitting ":62,"subscription ":8,"subscriptions.":8,"subscriptions/":8,"subsequent ":64,"subsystem=":56,"subunit.":62,"succeeded\"":8,"success!":90,"success:":[11,52],"successful ":[81,88,90],"successful,":90,"successful.":8,"successfully ":[30,31,52,70,71,72,74,76,78,79,81,83,84,88,90,91],"successfully!":90,"such ":[62,63,64,65,79,80,83],"sudo ":[5,6,7,8,15,16,17,18,22,25,26,27,29,30,31,33,34,35,37,39,43,44,45,46,47,48,49,50,52,53,54,55,56,57,59,70,71,72,73,74,75,76,78,79,80,81,82,84,85,86,88,90,91,92],"sudoedit ":29,"suggest ":62,"suggested ":90,"suggestion ":63,"suggestions ":85,"suit ":79,"suitable ":67,"suite ":62,"suite,":0,"suite.":62,"suites.":62,"sum ":51,"summaries ":65,"summary ":62,"summary:":33,"super ":62,"superengi9eer\"":85,"supermicro*":66,"supplement ":64,"supplemental ":[11,69],"supplementary ":64,"support ":[62,64,73,79,81,82,92],"support)":62,"support-":0,"support.":62,"support:":35,"supported ":[24,57,64,73,78,79,82],"supporting ":[62,64,65],"supports ":[52,62,71,74],"sure ":[7,8,22,64,65,67,70,74,81,84],"surrounding ":65,"svg ":64,"svt-":62,"swap ":[46,79],"swap#":79,"swap,":62,"swap\"":[27,38,46],"swap]":[6,46],"swapoff ":79,"swaps)":79,"swarm.":74,"swarm:":52,"switch ":[13,74,79,81],"switch-":62,"switches ":74,"swupd ":[0,7,8,15,16,17,22,25,27,28,30,33,34,35,39,40,43,44,46,47,50,51,52,53,54,56,57,59,60,62,70,71,73,74,75,76,78,79,81,82,85,86,88,90],"swupd-":[8,30,52,62],"swupd/":0,"swupd]":27,"swupd_root.":[27,51],"symbolic ":82,"symlink ":30,"symlinks ":82,"sync ":6,"synchronization ":62,"synchronize ":[8,62],"synchronizer ":62,"synchronous ":62,"syntax ":[62,64,73,85],"syntax,":74,"syntaxes ":62,"synthesizer ":62,"sys/":[39,48,53,54,76],"sysadmin-":[8,40,43,50,62],"sysconfig-":81,"sysctl ":48,"sysctl.":[48,54,79],"syslog.":57,"system ":[0,5,18,35,45,62,65,70,71,73,74,79,81,82,83,87,88,90],"system'":62,"system)":29,"system,":[70,71,73,74,78,79,84,88,90],"system-":[15,37,53,57,62],"system.":[16,48,52,62,71,72,73,74,76,78,81,82,84,86,88,89,90,91,92],"system/":[27,30,35,39,53,56,57,72,78,79,81,84],"system:":[52,73,82,88,92],"system_name:":31,"systemctl ":[15,17,21,25,27,29,30,37,39,49,50,52,54,55,56,57,59,72,73,74,78,79,81,84,85,86,90],"systemd ":[39,48,52,55,56,62,72,74,78],"systemd)":84,"systemd-":[38,40,50,54,55,62,79],"systemd.":[48,55,62],"systemd/":[27,30,35,37,38,48,49,50,54,55,56,57,72,78,79,81,84],"systems ":[62,79,81,82],"systems,":[74,83,90],"systems.":[62,70,89],"s}":79,"t ":[7,8,26,52,53,54,59,63,64,65,70,73,79,81,82],"t)":65,"t/":0,"t0 ":52,"t10k-":88,"t2.":7,"tab ":8,"tab,":90,"tab-":13,"tab.":90,"table ":[0,65,91],"tables ":90,"tables,":90,"tables.":90,"tablet,":15,"tabs-":13,"tabsize=":13,"tabstop=":13,"tag ":[8,33,52,59,73],"tag/":33,"tag:":54,"tag_name>":33,"tagged ":52,"tagging ":62,"taglib.":62,"tags ":64,"tags.":8,"tags\"":8,"take ":[0,30,62,63,65,73,76,88,91],"takes ":[0,73,76],"talk ":65,"talloc.":62,"tallow ":49,"tallow.":49,"tar ":[33,34,35,52,53,54,62,73,82,90,91],"tar.":[9,22,33,34,35,52,54,73,82,90,91],"tarball ":[22,52],"target ":[22,57,62,74,76,81],"target.":81,"target>":33,"target_clones(":76,"targeted ":62,"targetmedia:":13,"task ":62,"taskbar,":87,"tasks ":[62,91],"tasks.":91,"tbb.":62,"tcc.":62,"tcl ":62,"tcl-":62,"tcl/":62,"tcp/":62,"tcp:":15,"team ":[0,55,79],"technical ":[63,65],"technology ":[14,15,62,76],"technology.":62,"tee ":[31,34,39,48,70,72,78,79,81,82],"telem_ref ":31,"telemctl ":31,"telemetrics ":31,"telemetrics)":31,"telemetrics-":[31,62],"telemetrics.":31,"telemetrics/":31,"telemetry ":31,"telemetry)":31,"telemetry,":[0,31],"telemetry-":45,"telemetry.":31,"telemetry:":13,"telempostd ":31,"telemprobd ":31,"telemprobd(":31,"tells ":65,"telnet ":62,"temperature ":[62,65],"temperature,":62,"template ":[8,62,71,73],"template:":73,"template=":38,"templates ":71,"temporarily ":[81,82],"temporarily:":79,"tenant ":79,"tense ":65,"tensor ":62,"tensorflow ":[62,88],"tensorflow*":[59,73,77],"tensorflow,":62,"tensorflow-":[62,73],"tensorflow.":73,"tensorflow/":[59,73,88],"tensorflow_object_detection_api_pipeline_config ":73,"tensorflow_use_custom_operations_config ":73,"term ":[62,65,81],"term*":64,"term.":64,"term>":30,"terminal ":[62,75,79,81,82,85],"terminal-":62,"terminal:":84,"terms ":[58,59,65,73],"terms.":65,"tertiary ":62,"tesseract.":62,"test ":[5,62,63,73,88,90],"test,":62,"test-":[45,62,74],"test.":31,"tested ":[22,66,91],"tester,":62,"testing ":[5,62,74,89,90],"testing,":73,"testing.":[62,73],"tests,":73,"tests.":73,"tests/":76,"testsuite-":62,"tex-":62,"text ":[62,65,73,90,91],"text,":64,"text-":[62,83],"text.":[62,64,65],"text/":70,"tf-":[59,73],"tf/":73,"tf_cnn_benchmarks.":[59,73],"tf_cnn_benchmarks/":[59,73],"tfjob ":[59,73],"tfjob.":73,"tfjob/":[59,73],"tfjobs ":[59,73],"tfreplicaspecs:":73,"tftp ":54,"tftp-":54,"tftp_root/":54,"tftp_root=":54,"than ":[64,65,74,82],"thanks ":90,"that ":[2,8,62,63,64,65,66,67,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,90,91],"that:":72,"the ":[5,7,8,13,16,17,18,19,20,22,27,30,33,46,48,57,59,60,62,63,64,66,67,68,72,78,79,83,84,86,87,89,91,92],"the-":[0,80,92],"their ":[62,64,73,86],"them ":[22,58,62,64,65,70,73,79,88,91],"them.":[64,79,83],"theme ":53,"themselves ":84,"then ":[64,73,78,79,83,85,86,90],"theory ":35,"there ":[0,2,63,64,65,73,87],"there,":88,"therefore ":82,"thermal ":62,"thermald ":39,"these ":[59,64,65,70,73,76,79,80,81,82,84,85,88,91,92],"they ":[22,64,65,73,76,86,91,92],"things ":[8,90],"thinkpad*":66,"thinkserver*":66,"third ":64,"third-":[62,64],"this ":[0,2,3,8,22,30,57,59,64,65,66,68,70,71,72,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92],"this,":90,"this.":65,"this:":[64,65,73],"those ":[70,71,72,85,89,91],"though ":84,"thousands ":70,"threads,":15,"threat ":62,"three ":[64,65,73],"through ":[0,62,63,64,70,72,73,74,75,82,92],"through-":0,"throughout ":91,"throughput ":62,"thumb-":13,"thus,":[70,76,90],"ti ":[72,78],"ticketing ":15,"tiff,":62,"tiff.":62,"tigervnc ":[57,62],"tight ":82,"tile ":62,"tiling ":62,"time ":[4,8,62,63,81,85,92],"time-":62,"time.":[0,62,76,86],"time:":73,"time]":50,"timed-":79,"timedatectl ":50,"timer ":30,"times ":[0,88],"times.":62,"timesyncd.":50,"timezone ":[50,62],"timezones ":50,"tips ":[64,65],"title ":64,"title,":64,"title:":64,"titled ":73,"titles ":65,"tk ":62,"tk/":62,"tls)":62,"tm)":31,"tm_create_record(":31,"tm_free_record(":31,"tm_handle ":31,"tm_handle)":31,"tm_handle,":31,"tm_send_record(":31,"tm_set_payload(":31,"tmp/":[54,82],"to ":[0,7,8,13,16,17,18,19,20,21,22,27,30,31,35,46,52,57,58,59,60,62,64,65,67,70,71,73,74,75,76,77,78,79,81,82,83,84,85,86,88,89,91,92],"to-":[0,1,34,35,59,62,64,73,79],"to/":[31,34,62],"to:":[70,73,76,79,90,91],"toctree ":64,"toctree.":64,"toctree:":64,"token ":[79,92],"token-":79,"token=":[59,73],"token>":79,"tomcat ":62,"tone ":65,"tool ":[62,64,90],"tool,":62,"tool.":62,"toolchain,":62,"toolchain.":62,"tooling ":[41,62],"tooling.":[0,62],"toolkit ":[62,73,82],"toolkit.":[62,82],"tools ":[17,62,71,73,76],"tools)":17,"tools,":[0,64],"tools.":[62,88],"tools/":[22,73,76],"top ":[62,64,91],"top-":91,"top.":86,"topic ":[63,64],"topic-":64,"topic.":64,"topics ":[8,65],"topics:":64,"topologies ":73,"topology ":[62,73],"torch.":[59,73],"total ":52,"touch ":[54,60,74,79],"towards ":65,"tpm)":62,"traceroute'":62,"tracing ":62,"track ":62,"tracking ":62,"trademark ":64,"trademarked ":65,"traditional ":80,"traffic ":[0,62],"trailing ":64,"train-":88,"trained ":[73,88],"trainer ":62,"trainer.":73,"training ":88,"training_steps=":73,"transfer ":62,"transformation ":62,"translations ":62,"transmithashpolicy=":55,"transparent ":74,"transport ":62,"transport-":62,"travel ":62,"traversal ":62,"treat ":64,"tree ":[0,62,81],"tree.":64,"tree/":[58,59,73],"trigger ":[35,81],"trimmed>":47,"troubleshooting.":62,"true ":60,"true":[31,50,79,92],"true)":31,"true:":13,"true;":[59,73],"true\"":27,"trusted ":62,"try ":[65,79],"try-":49,"tsc=":[38,54],"tsn/":62,"tue ":47,"tui ":13,"tunnel.":33,"turbo.":62,"turkish ":62,"turn ":62,"tutorial ":[70,71,73,74,75,76,78,79,80,83,84,86,87,88,89,90,91,92],"tutorial,":[64,70,71,76,85,90,91],"tutorial.":[71,89,91],"tutorial/":90,"tutorial\"":90,"tutorials ":[63,64,77],"tux ":62,"tux.":62,"twice ":[65,88],"two ":[62,64,65,67,73,76,81,88,89],"two-":62,"two.":[64,65],"txt ":73,"type ":[6,37,46,58,62,67,73,90,92],"type,":85,"type.":[67,85],"type:":[13,31,82,90],"type=":[57,70],"type>":[59,73],"type\"":[27,38,46],"type]":[6,42,67],"types ":[26,64,79],"types,":64,"typesetting ":62,"typical ":64,"typically ":[0,62,74],"typically,":[64,65],"typo,":63,"typos ":63,"u ":[4,5,12,13,33,61],"u+":[59,73],"u/":57,"u2f)":92,"u2f.":92,"ubuntu ":[15,35,62],"ubuntu*":[15,57,60],"ubyte.":88,"udev/":92,"udevadm ":92,"uefi ":[4,5,14,15,19,20,34,39,44,54,62,69],"uefi/":[35,39],"uefi_bios}":15,"ugam76u8bdr6yjc.":7,"uhttpmock.":62,"uint32_t ":31,"ulee:":52,"ulimit ":[48,58],"umount ":[6,44],"umountdisk ":6,"unable ":[0,21,52,83],"uname ":[16,33,34,35,81],"unauthorized ":90,"unclear ":65,"uncomment ":57,"under ":[3,8,62,64,70,71,81,82,92],"underline ":64,"understand ":[64,65,82],"understand.":65,"understanding ":[65,74,79],"understood ":62,"undionly.":54,"undrain ":80,"unecessary ":65,"unified ":62,"unifying ":62,"uninformative ":65,"uninstall ":73,"uninstalled ":[81,82],"uninstaller ":81,"unique ":[31,65,73,74],"unique-":8,"unique.":65,"uniquely ":64,"unit ":[21,78,85],"unit,":64,"unit]":57,"units ":[79,81,82],"universal ":[62,92],"university ":[62,63],"unix ":31,"unix,":62,"unix-":62,"unless ":[0,65,80],"unmask ":21,"unnecessary ":65,"unpack ":[62,73],"unparallel ":65,"unprivileged ":72,"unsigned-":34,"untagged:":[59,73],"untar ":73,"until ":[80,91],"untracking ":52,"unusual ":62,"unxz ":[15,22,42],"unzip ":83,"up ":[8,59,62,64,70,71,73,74,78,79,80,83,87,89],"up-":79,"up.":90,"update ":[8,16,28,30,35,52,62,63,70,71,73,74,78,79,81,86,88,90],"update,":[13,52],"update-":62,"update.":[30,79],"update/":[27,51],"update\"":[27,38],"updated ":[31,62,81,82,85,90],"updated)":49,"updated,":88,"updated.":80,"updated:":62,"updater ":[4,70,71],"updater.":62,"updates ":[0,27,30,62,73,81,82],"updates.":0,"updating.":64,"upgrade ":[62,80,81],"upgrades ":80,"upgrades.":80,"upload ":9,"upon ":[0,57,62,73,76],"upower.":49,"upper ":62,"upstream ":0,"upstream,":0,"upstream-":27,"upstreaming ":0,"url ":[21,22,27,30,33,52,92],"url-":[34,35],"url.":62,"url:":[5,21,33,84],"url=":22,"url>":27,"urllib3/":30,"urls ":64,"urls:":[59,73],"urn ":8,"us ":[8,63],"us-":7,"usability.":62,"usable ":92,"usage ":[62,73,74],"usage.":62,"usage:":64,"usb ":[4,5,6,15,44,92],"usb-":[13,15],"usbredir.":62,"use ":[8,13,18,31,46,61,62,63,64,67,72,74,75,76,78,81,82,84,86,87],"use,":[64,79],"use.":[73,81],"use:":[27,75],"usecases,":73,"used ":[0,22,62,64,73,74,76,79,82,83,84,86,87,88,90],"used,":46,"used.":64,"used:":67,"useful ":[62,81,85,88,90],"user ":[0,4,5,8,16,62,64,71,73,84,85,86,90,91],"user,":[15,72],"user-":[22,33,57,62,79],"user.":[22,33,57,81,85,86,90],"user/":70,"user1/":6,"user:":[14,31,85],"user=":57,"user>":39,"user\"":27,"user]":8,"useradd ":[43,60],"userid ":90,"userid>":[43,60],"usermod ":[27,39,43,60],"username ":91,"username/":[17,18],"username:":91,"username>":27,"username\\":[17,18],"username]":57,"users ":[0,65,86,91],"users.":[62,77],"users?":90,"users\\":[17,18],"userspace ":62,"userspace-":62,"userspace.":62,"usersusernamedocumentsvirtual ":18,"uses ":[62,73,78,79,80,81,83,86,88,90],"uses.":[64,85],"using ":[0,8,9,13,20,24,58,62,63,64,65,67,70,71,72,74,75,79,80,81,83,85,86,87,90,91,92],"using:":71,"usr/":[0,8,16,22,25,27,29,30,31,35,38,44,47,49,53,54,56,57,58,60,70,71,73,79,81,82,85,88,90],"ust.":62,"usually ":[62,84],"utf-":[13,62,70],"utf8 ":45,"util-":[22,62],"util.":[62,76],"util/":30,"utilities ":62,"utilities,":62,"utilities.":62,"utility ":[62,73],"utility,":82,"utility-":81,"utility.":62,"utils ":[62,86],"utils-":62,"utils.":62,"utils\"":22,"uuid ":37,"uwsgi ":62,"v ":[14,15,16,22,24,35,42,46,52,62,65],"v)":[33,62],"v*":[12,24,42,46,67],"v.":67,"v/":[17,18],"v0.":[59,73],"v1.":[22,59,73],"v1/":52,"v2 ":73,"v2.":[59,65,73],"v2/":31,"v3.":[53,59,73],"v4.":[11,33,73],"v4l-":62,"va-":62,"vala.":62,"valgrind'":62,"valid ":[62,86],"validate ":[82,92],"validated ":73,"validation ":62,"value ":[62,76,85],"value,":85,"value.":[85,88],"value>":70,"values ":[0,76,79,85,88],"values,":[79,85,90],"values.":[79,90],"vanilla ":62,"var":[29,40,44],"var/":[27,52,54,81,90,91],"variable ":[71,73,79,90],"variable,":[65,76],"variable.":[64,71,82],"variables ":[22,73,78,79,82],"variables,":[73,79],"variables.":79,"variant ":[64,81],"variety ":91,"various ":[0,62],"vasprintf(":31,"vbox ":16,"vbox-":16,"vbx_gas_6.":16,"vcd/":62,"vdi ":16,"ve ":[63,72,74,78,79,90],"vec ":76,"vector ":[62,73],"vectorization:":76,"vectorized ":76,"vendor ":53,"vendor:":53,"vendors ":8,"verb:":65,"verbs ":65,"verbs,":65,"verbs.":65,"verification ":[51,81],"verified,":90,"verifies ":91,"verify ":[8,30,51,52,60,62,63,65,72,73,74,79,82,84,85,90,91],"verify,":76,"verify-":76,"verify:":57,"verifying ":[30,52,65],"versatile,":62,"version ":[0,5,6,17,18,19,20,27,30,42,52,58,62,67,74,78,80,81,82,90,91],"version)":[62,73],"version,":[82,84],"version-":62,"version.":[62,73,82],"version:":[8,13,33,52,82],"version=":70,"version>":[15,16,27,33,35,81,82,90],"version\"":[27,38],"versions ":[27,73,78,82],"versions.":64,"versions:":73,"versions_path ":27,"versionurl ":27,"versionurl=":27,"version}":47,"very ":85,"vfat ":4,"vfat(":5,"vfat\"":[27,38],"vfio-":53,"vga ":15,"vi ":62,"vi:":13,"via ":[62,74,75,87],"video ":62,"video-":62,"view ":[7,62,64,65,71,75,81,86,90],"view-":[57,62],"view.":65,"viewer ":[15,62],"viewer,":62,"viewer.":62,"viewing ":62,"vim ":62,"vim]":13,"virt ":[30,62,72],"virt-":[15,62],"virtio,":15,"virtio-":15,"virtual ":[8,14,16,17,18,19,20,30,62,67,74,81,90],"virtual\"":27,"virtualbox*":[12,24],"virtualbox|":31,"virtualization ":[0,14,15,16,17,18,19,20,62,78,83],"virtualization,":78,"virtualize ":[17,18],"virtualmachines/":8,"viruses,":62,"vision ":62,"vision-":[60,62],"vision.":62,"visit ":[88,90,91],"visual ":[62,64],"visualization ":62,"visually ":64,"vm ":[8,9,12,16,19,20,67,78,83],"vm)":[16,42,62,67],"vm,":58,"vm.":[8,83],"vmdk ":20,"vmdk.":[18,20],"vmfs/":20,"vmkfstools ":20,"vmn}":15,"vmovdqu ":76,"vms.":[62,78],"vmss ":8,"vmss)":8,"vmware ":62,"vmware)":[18,20],"vmware*":[12,42,67],"vmware-":[17,18,62],"vmware.":[18,20,42,67],"vnc ":[32,56,62],"vnc)":62,"vnc,":62,"vnc-":62,"vnc/":57,"vncauth,":57,"vncserver ":57,"vncserver(":57,"vncserver.":57,"vncserver@":57,"vncviewer ":57,"vni ":59,"vni)":59,"vnni ":[59,73],"vnni)":73,"voice ":[62,65],"void ":76,"voip ":62,"volatile ":62,"voltage,":62,"volume.":73,"volume:":52,"volumes ":[62,73],"volumes/":20,"volunteer ":62,"voxel ":62,"vpaddd ":76,"vpc ":10,"vpddecode.":22,"vpn-":33,"vs ":0,"vs-":0,"vsphere ":20,"vsprintf(":31,"vswitch ":62,"vt-":[16,17,18],"vtk-":62,"vulnerabilities ":62,"vzt,":62,"w ":48,"w5ff:":52,"wacom.":62,"wait.":30,"walks ":[70,73],"want ":[7,8,13,65,70,73,74,75,79],"wanted ":0,"wantedby=":57,"warehouses.":8,"warning ":[74,83],"warning.":65,"warning:":[7,8,30,46,52,62],"warnings ":[64,83],"warnings,":64,"was ":[0,49,62,65,73,81,82,88],"watcher ":36,"wave ":62,"way ":[62,65,76,90],"wayland ":[62,75],"wayland-":62,"wayland.":62,"ways ":[63,64,86],"ways.":91,"we ":[0,63,64,65,70,73,74,75,76,80,81,85,90,91],"weakens ":65,"weather ":62,"web ":[0,8,9,12,31,36,38,40,41,54,59,60,62,64,71,73,85,88,89,92],"web-":[62,88],"web.":62,"web_root/":54,"web_root;":54,"web_root=":54,"webapp ":8,"webauth.":92,"webcam ":62,"webkitgtk.":62,"webserver-":41,"website ":[90,91,92],"website.":92,"websites ":[84,92],"websites:":64,"webster ":63,"week,":0,"weeks ":[59,73],"weight ":62,"welcome ":[8,17,18,58,74,91],"welcome-":64,"welcome.":64,"well ":73,"well-":[0,64],"were ":[52,63,65,73,81],"west-":7,"weston ":62,"weston-":62,"westus\"":8,"wget ":[73,82],"wgetrc ":84,"what ":[8,64,65,77],"whatprovides ":47,"wheel ":60,"when ":[62,64,65,70,73,75,76,79,80,81,82,83,86,90,91,92],"whenever ":[0,65],"where ":[27,62,64,65,70,76,79,81,82],"where-":0,"whether ":[63,72,79],"which ":[0,13,62,64,65,70,73,74,75,76,80,81,82,84,85,86,87,90,92],"while ":[0,59,62,73,79,80,85],"while.":30,"whitelist=":30,"whitespace ":64,"who ":[65,91],"whole ":88,"whom?":65,"why ":[64,81,82],"wide ":62,"widget ":[62,65],"widgets ":62,"width:":13,"wifi ":62,"wiki ":[35,64,65],"wiki/":64,"wikipedia.":64,"will ":[0,2,18,27,57,62,64,65,66,70,71,72,73,74,75,76,78,79,81,82,84,87,88,90,91,92],"will:":73,"window ":[62,83],"window,":83,"windows ":[6,8,14,16,17,18,42,57,62,83,86],"windows*":[5,16,17,18,57,87],"windows,":62,"windows.":8,"wire ":65,"wired ":[4,37],"wireguard-":33,"wireless ":62,"wiring ":65,"wisdom.":76,"wish ":[16,85],"with ":[0,8,20,21,30,46,57,58,59,60,62,64,65,66,67,70,71,76,77,78,79,81,82,83,84,85,86,88,90,92],"with-":52,"with:":[30,73],"within ":[62,64,73,75,88,90],"without ":[8,62,64,65,78,81,90],"wm.":62,"woff2.":62,"word ":[65,70],"wordcount.":71,"wordiness ":64,"wordpress ":90,"wordpress*":[77,90],"wordpress-":91,"wordpress.":91,"wordpress:":91,"wordpressuser ":90,"words ":64,"words,":65,"words.":65,"work ":[0,2,3,62,64,73],"work,":73,"worker ":79,"worker:":73,"workflow ":62,"working ":[0,62,73,74,81],"working,":73,"workload ":73,"workloads ":[73,79],"workloads,":74,"workloads.":[62,73],"works ":[79,90],"works!":90,"workspace/":73,"workstation ":[12,15,19,20,42],"workstation,":67,"world ":[73,91],"world,":91,"world.":91,"world\"":31,"would ":[8,16,57,65,73],"wp-":[90,91],"wpa ":62,"wpad ":21,"wpad,":21,"wpad.":21,"write ":[6,62,63,65],"writing ":[62,63,64],"writing-":64,"written ":[62,63,64,88,91],"wsgi ":62,"www ":27,"www.":[0,10,21,33,90,92],"www/":[27,90,91],"wxwidgets ":62,"wysiwym ":62,"x ":[8,11,15,16,17,18,19,20,22,27,33,56,59,62,73,76,81,82,88],"x)":[59,73],"x+":76,"x,":[64,76],"x-":81,"x.":62,"x/":[16,17,18,33],"x1 ":66,"x11 ":62,"x11,":62,"x11-":62,"x11.":62,"x11/":81,"x11displayoffset ":56,"x11forwarding ":56,"x11uselocalhost ":56,"x86 ":[39,62,69],"x86-":45,"x86_64 ":[15,60,75],"x86_64-":[53,81],"x86_64.":[17,18,33],"x86_64/":47,"x;":76,"x<":76,"x=":76,"x]":[5,57],"xapian-":62,"xargs,":62,"xauth:":57,"xauthority ":57,"xcb-":62,"xdg-":[62,75],"xdmcp,":62,"xdmcp]":57,"xdot ":62,"xeon\u00ae":[66,73],"xf ":73,"xf86-":62,"xfce ":62,"xfce4-":62,"xfree86/":82,"xfs ":62,"xjf ":54,"xkbcomp.":62,"xkeyboard-":62,"xml ":[60,62,70],"xml,":62,"xml-":70,"xml.":62,"xml>":60,"xmlsec1.":62,"xnvc.":57,"xorg ":[62,81],"xorg-":62,"xorg.":81,"xorg/":81,"xorgproto.":62,"xpdf-":62,"xps*":66,"xps,":62,"xqhj:":52,"xr-":8,"xrandr ":62,"xscreensaver ":62,"xscreensaver-":62,"xscreensaver.":62,"xsl\"":70,"xtables ":62,"xtrans.":62,"xvf ":[33,34,35,73,82],"xvnc ":57,"xvnc(":57,"xvnc.":57,"xvnc@":57,"xx.":[34,35,81],"xxxx ":69,"xxxx-":14,"xxxxx ":14,"xxxxx-":14,"xz ":[16,22,42,51,52,54,62,67],"xz-":51,"xz.":62,"xzvf ":[90,91],"y ":27,"y)":76,"y/":[8,57,90],"y;":76,"yaml ":[13,59,73],"yaml-":[59,73],"yaml\"":73,"yann ":88,"yarn-":70,"yarn.":70,"yarn<":70,"yes,":[0,7],"yes.":0,"yes/":[7,8,70],"ymm0,":76,"you ":[7,8,13,16,30,46,57,62,63,64,65,70,71,72,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,89,90,92],"you,":62,"you.":64,"you:":80,"you@":[22,33],"your ":[6,7,8,16,22,30,33,57,62,63,64,65,71,72,73,74,75,76,78,80,82,83,84,85,86,87,88,90,91,92],"your-":84,"your.":[21,84],"your_website>":91,"yourself?":63,"yubico ":92,"yubico.":92,"yubico/":92,"yubikey ":92,"yubikey*":77,"yubikey.":92,"yubikey/":92,"yubikey:":92,"yum ":[27,43],"yum-":27,"yum_conf ":27,"yy-":[34,35,81],"z ":62,"z170x-":66,"z]":79,"zabbix-":62,"zebra.":73,"zero-":33,"zeroedthick ":20,"zfcopipu.":70,"zfs ":0,"zip ":[42,47,60,62,67],"zip-":47,"zlib.":62,"zmq ":62,"zones\"":8,"zstd ":47,"zstd-":47,"zstd.":62,"zx2c4.":33,"zzzz.":[34,35,81],__ +:58,___ +:8,_gnu_source +:31,_sampl:82,a +:[33,64,65,70,73,74,79,82,85,86,88,89,90],a1sai:66,abort:22,access +:87,accessible +:85,account:90,accounts +:62,acl +:62,acronym:64,action:[7,19],activ:[4,53],active +:[31,62],ad28a3390ecc +:52,add +:0,add:[5,18,37,43,57],additional +:90,additions +:62,address:55,administr:[4,5],advanc:[4,5],advanced +:92,after +:64,agent +:62,akonadi +:62,alexnet:[59,73],aliyun +:62,all +:[64,70],alloc:16,allow:49,allows +:90,already +:78,alternative +:0,always +:65,alwaysshar:57,an +:[64,65,73,79,84,90],analitza +:62,and +:[0,64,65,68,70,74,76,79,81,82,83,85,88,91],and:65,ani:[51,82],announc:73,ansible +:62,aoe:54,api +:62,apic:16,appear +:90,appeared +:76,applet +:62,applic:75,application +:[75,85],appropriate +:79,apps +:62,apr +:62,arandr +:62,architectur:[31,59,73,79],architecture +:52,archiv:82,are +:[2,30,73,79,81,91],aren:[81,82],argument +:52,argument:[4,5],aria2 +:62,ark +:62,arrikto:73,artikulate +:62,as +:[63,64,65,66,81,82,83],aspell +:62,assert:15,assets +:62,assist:20,asunder +:62,at +:82,atk +:62,atkmm +:62,atom +:62,atom:66,attica +:62,attr +:62,attribut:16,attribute +:76,audacious +:62,audit +:62,authent:87,authentication +:92,authoritative +:54,authorized_kei:70,auto:16,autoar +:62,autoconf +:62,automat:4,automate +:79,automatically +:81,automotive +:62,autoproxi:[1,5,32,84],autospec:[1,27,30,32,33,41],autospecnew:22,autostart +:62,autostart:[15,16,41,57,75],autoupd:30,av1 +:62,available +:73,avoid +:[64,65],avoided +:81,avx2:76,aw:7,awesome +:62,aws +:62,awscleartestkei:7,axel +:62,az:8,azur:[8,24],azure +:[8,62],b +:57,babel +:62,babl +:62,backend +:31,backend:31,background:74,bad +:62,bad_signatur:51,baobab +:62,bar:65,bare +:76,base +:62,base:52,baselin:58,bash +:52,bash:[8,59,73],bashrc:[8,27],basic +:[8,52,62],basic:[7,8,41,42,43,50,52,57,59,60,67,70,71,73,74,79,80,85,88,90],bc +:62,bcc +:62,be +:[0,46,64,65,74,75,79,82,92],because +:78,befor:65,before +:64,begin:[65,80],below +:71,below:64,bench:[59,73],benchmark:[58,59],benchmarks +:[59,73],better +:63,bijiben +:62,bin +:[59,73],bin:[31,73,82],bind +:53,bindcarri:55,binutils +:62,bio:83,biosdecode +:22,bison +:62,bit:[17,18,81,83],blank +:73,blender +:62,block +:70,blog:91,bluetooth +:62,bluez +:62,bold:64,bond +:55,bond1 +:55,bond1:55,bond:55,boost +:62,boot +:[6,13,54,81],boot:[4,5,14,38],bootloader +:[8,62],borgbackup +:62,box1:45,boxes +:62,bpftrace +:62,bq9mg442b:8,brotli +:62,brows:[9,17,18],browser:[19,20],bucket:9,build +:76,build:[22,27,33],builder +:62,builder:[27,32],buildreq_add:22,bump:27,bundl:[16,17,18,23,24,27,30,43,44,72,73,82],bundle +:52,bundles +:[27,62],busctl:21,but +:[0,76],button:4,by +:[65,73,86,87,90],byobu +:62,byte_burst_limit:31,byte_window_length:31,bz2 +:82,bzip2 +:62,c +:[31,62],c2750:66,c9 +:53,c9:53,c_libraries +:22,cabextract +:62,caffemodel +:60,caffemodel:60,cairo +:62,cairomm +:62,calc +:62,calculator +:62,callout:64,can +:[65,83,85,88,90],cancel:[4,5,7,16],capac:[17,18],capit:64,capstone +:62,card +:81,cassandra +:62,casync +:62,categori:57,cb9aab +:6,ccach:33,ccache +:62,ce +:52,center:25,ceph +:62,cert:27,certificate +:51,cflag:53,cgroupfs +:52,chang:9,characters +:62,chardetect +:30,check:79,cheese +:62,chess +:62,chipset:16,chmod:[7,86],chown:86,chroot:27,ciao:38,cinnamon:15,cjson_library +:22,clamav +:62,classif:60,clear +:47,clear:[1,7,31],clearlinux +:[22,33],clearlinux:[22,31,33],clearlinuxus:86,clearlinuxuser +:86,clearly +:65,clearresourcegroup:8,clearvm:8,cli +:62,cli:[8,20,83,85],click +:83,client +:62,client:[20,21,31,70,74,77],cloc +:62,clocks +:62,clone_dmidecod:22,clone_linux:33,close:[17,18],cloud +:79,cloud:30,cloudguest +:62,cloudguest:[38,40],clr +:[31,62],clr:[5,22,31,33],clr_debug_daemon:25,clrtrust:28,cluster +:62,cluster:73,clutter +:62,cmdline +:33,cmdline:[33,38],cmrt +:62,cmus +:62,cnc +:62,cockpit +:62,code +:0,code:[0,64],codes +:62,coffee +:65,cogl +:62,collat:90,collectd +:62,collector:31,colord +:62,colorlevel:57,columbiad +:62,com +:84,com:[7,69],command +:64,command:[64,90],commands +:73,commenc:65,comment:64,common +:[59,62,73],common:[22,33],commons +:3,compani:64,compat:[19,20],compatibility +:82,compiled +:82,complet:[16,65,73],complete +:90,completed +:91,complexity +:73,compose +:62,computing +:76,concept:[64,74],concis:65,conduct:63,conf +:[27,35,38,54,71,72,78,81,90],conf:[21,29,31,34,35,38,47,48,50,54,56,57,71,79,81,82,84,85,86,90],config +:[13,33,57,62],config:[33,57,84,92],config_rte_build_shared_lib:53,configur:[4,5,37,72,77,78,80],configuration +:[70,79],configures +:70,confirm:[4,5,16],conky +:62,connect:[4,7,19,20,37,57,85,87],connection +:57,connector:60,consequ:65,consider +:87,consist:65,consol:[7,9,64],consult +:79,contacts +:62,contain:[11,30,40,52,73,74,79],container +:[52,59,73,74],containers +:79,content +:[65,90],content:64,contenturl:27,continu:[7,83,91],control +:62,control:16,convent:64,cool:39,copyq +:62,core +:[8,62],core:[45,66,73],corporation +:[8,31,52],correct +:73,corresponding +:[67,81],coturn +:62,could +:63,cpio +:62,cpu:[16,19,20,39,60,69],creat:[9,16,83,90],create +:64,created +:[82,90],creator +:62,credenti:86,cri:79,crio +:79,crio:79,cronie +:62,cryptography +:62,cryptsetup +:62,cryptsetup:[5,28],ctrl:[16,90],cuda +:82,cuda:82,curl +:[27,62],curl:[8,27,74],current +:[62,73,90],current:47,current_driv:39,cursor +:62,custom_modul:35,custom_module +:35,cve:28,d +:[34,54,81,82],d54250wyk:66,d6ee7903e14d +:52,d73d6040afd7693cccdfece479df9795 +:31,daemon +:62,dar:58,darktable +:62,dashboard:7,dat +:21,data +:0,databas:38,database +:90,datadir:60,datanod:70,datanode +:70,datasets +:62,datastor:[19,20],datastore1:20,db +:54,dbus +:62,dcd9adb40611 +:52,dd:6,ddd +:62,de +:62,debug:25,decompress +:90,deep +:73,default +:[0,59,73,74,90],defined +:64,delet:5,delete +:62,deliver +:73,demo:88,deploy:60,deployment +:73,deprecated +:62,describe +:65,descript:67,description +:62,desktop +:[45,62],desktop:[66,69,75],destin:57,detailed +:79,detect:83,dev +:[59,62,73],dev:[22,34,53,58,76],development +:2,devhelp +:62,devic:[15,16,17,18,37,60,82],device +:[13,37],devicelogin:8,devops +:62,dhcp:5,diagnos:30,dialog:83,dictionari:63,different +:75,diffoscope +:62,diffutils +:62,digikam +:62,direct:[21,64],directly +:88,directori:[19,20],directory +:[8,90],disabl:[4,30],disallow:49,disclaim:2,disconnect:37,discovery +:62,disk +:[6,13,46],disk2:6,disk:[5,9,16,18,20,46],diskpart:5,displai:[15,16,81],distinct +:64,distinction +:64,django +:62,dkms +:62,dkms_binaries_onli:35,dkms_source_tre:35,dldt:73,dlrsalexnet:[59,73],dlrsresnet50 +:[59,73],dmidecod:22,dnf +:[47,62],dnn:[59,73],dnsmasq +:54,dnsmasq:54,do +:79,doc +:62,dock +:62,docker +:[27,52,74,78],docker:[52,58,59,72,73,74,84,85],docker_image_path:27,dockerfil:58,dockerfile_openvino_bas:73,document +:65,document:[17,18,30,63,64,73,74,80,82,88],documentation +:73,documentroot +:90,documentroot:90,documents +:86,docutils +:62,does +:74,dog:64,dolphin +:62,domain:21,domotica +:62,don:[64,65],done:[72,79],dosfstools +:62,dovecot +:62,download +:75,download:[4,5,6,7,13,14,16,17,40,69,82,83,90],downloads +:86,doxygen +:62,dpdk +:62,dragon +:62,drive:[16,20,40,86],driver +:81,driver:[39,55,74,77,82],drivers +:81,drop:31,dropwatch +:62,drv:53,dtc +:62,duperemove +:62,dvd:19,e1000:53,e2fsprogs +:62,e3825:66,e47ecc039d48409b1c62e5ba874921d7f640243a4c3115bb41b3e1009ecb48e4 +:[59,73],each +:76,earlyoom +:62,eat +:65,eating +:65,ec23189ef954 +:52,ec2:7,ec5064287c60 +:52,echo:39,edit +:70,editor:[27,41],editors +:[8,27,62],education +:62,efa893350647 +:52,effects +:62,efi +:[6,62],efi:[16,19,20],eigen +:62,eigen:[59,73],elasticsearch +:62,electronics +:62,element:64,elfutils +:62,emacs +:62,email:85,emphasi:64,empti:16,enabl:[30,39,53],enable_iot_cloud_output:60,enable_kinesis_output:60,enable_s3_jpeg_output:60,enchant +:62,encrypt:[4,5],encrypted +:62,end +:33,ending +:64,endsection +:81,engin:[17,18],engineers +:82,english:[90,91],enlightenment +:62,eno1 +:54,eno2 +:54,enp1s0f3 +:55,enp1s0f3:55,enter +:86,enter:[5,7,8,31,57],environ:[26,73],environment +:[79,82],eof +:[15,52,54,57,78,79,84],eof:[15,48,52,54,57,72,78,79,81,84],eog +:62,error +:62,es +:62,esc:5,esxi:[12,17,18,19],etc +:29,etc:[29,31,40,44,56,79,92],ethernet:53,etherneten01:37,ethtool +:62,eventviews +:62,evince +:62,evolution +:62,exampl:[41,65,76,88,90],example +:[73,90],example_client +:73,exceed +:64,exclud:22,exec +:62,execstart:57,exist +:57,existing +:73,exit:[4,8,16,43,73,79],exiv2 +:62,expat +:62,expert:57,expertise +:65,explain +:64,ext4 +:13,extens:64,extfs +:52,extra:39,extracts +:81,extras +:[39,62],extremetuxracer +:62,f10:[4,44],f2:[4,5,44,81],faa:60,factori:36,fail:65,failur:65,fals:[31,52],false +:[13,52],famili:[19,20],fanci:65,fann +:62,faq:61,fast:55,fcoe:54,fd +:[15,27],fd:15,fdupes +:62,featur:16,feh +:62,ffffffff +:31,ffmpeg:0,fft:76,fftw +:62,fg +:57,fields +:85,figur:64,file +:[52,62,64,74,76,81,82,88,90],file:[9,16,19,22,30,31,41,64,65,83,87],filelight +:62,files +:[0,30,52],filezilla:75,filters +:62,find +:65,findproxyforurl:21,findutils +:62,finger:28,finish:[17,18,19,20],fio +:62,firefox +:62,firewalld +:62,firmwar:[11,19,20],firmware +:62,first +:88,fix:46,flac +:62,flag:[64,83],flannel:[59,73,79],flare +:62,flathub:75,flatpak +:62,flatpak:75,flex +:62,flink +:62,flow:63,fluidsynth +:62,fmv:76,folder:[9,86,92],follow +:[65,74,78],following +:[76,79,90],fontconfig +:62,fontforge +:62,fonttools +:62,foo +:76,foo:76,for +:[0,2,65,73,74,75,76,79,86,88],format:[27,65,70],formatting +:64,forum:0,fossil +:62,found +:[0,27],found:27,four +:88,fp16:60,fr +:62,framework:41,frameworks5 +:62,freeglut +:62,freetype +:62,fribidi +:62,friend:85,from +:70,fstab:60,ftp_proxy +:84,function_handl:60,fuse +:62,fuse:25,fwupd +:62,fwupdate +:62,g +:76,games +:62,gb:[16,46,69],gcab +:62,gcc +:[76,82],gcc7 +:62,gcc7:82,gcc8 +:62,gcc:[53,76],gce +:62,gce:9,gconf +:62,gcp:[9,73],gcr +:62,gdal +:62,gdb +:62,gdb:25,gdm +:62,gdm:[15,57],geany +:62,gear:4,geary +:62,gedit +:62,geeqie +:62,gegl +:62,gen:31,geoclue +:62,get:43,gexiv2 +:62,gfbgraph +:62,gflags +:62,gftp +:62,ghostscript +:62,gimp +:62,gis +:62,git +:[31,62,73,76,84],git:[21,30,31,59,73],giving +:65,gjs +:62,glew +:62,glfw +:62,glfw3 +:62,glib +:62,glibmm +:62,glm +:62,glmark2 +:62,global +:62,glog +:62,glu +:62,gmime +:62,gnomelibs +:62,gnupg +:62,gnuplot +:62,gnutls +:62,go +:[59,73],go:90,goaccess +:62,good +:65,googletest +:62,governor:39,gparted +:62,gpaste +:62,gperftools +:62,gpgme +:62,gphoto2 +:62,gpu +:62,gpu:[60,82],gradio +:62,gramps +:62,granted +:[87,90],graphic:81,graphical +:81,graphics +:62,graphite +:62,graphviz +:62,greengrass:60,greengrasssdk +:60,greengrasssdk:60,grilo +:62,group:43,grpc:73,gsequencer +:62,gsl +:62,gsound +:62,gspell +:62,gst +:62,gstreamer +:62,gtk +:62,gtk3 +:62,gtkmm3 +:62,gtkplus +:62,gtkspell3 +:62,gtkwave +:62,guest:17,gui +:62,guid:[22,53,60,63,64,71,81,82,84,86],guide +:64,guidelin:[64,68],guile +:62,gunzip:42,gutenprint +:62,gvim +:62,gwenview +:62,gz +:[34,35,73],gz:[9,14,35,42,67,73,88,90,91],gzip +:62,h15 +:45,h15:45,hadoop +:70,handwrit:88,haproxy +:62,harddisk:16,harden +:91,hardinfo +:62,hardwar:[17,18,19,20,68],harfbuzz +:62,hash:79,have +:82,haveged +:62,haven:63,hdf:70,heading +:64,hello:31,helm:73,help:[8,30,31],helper +:62,heof +:31,heof:31,here +:73,here:[31,42,65],heredoc:31,hexchat +:62,hget:85,hgetal:85,hmset:85,home +:6,home:[7,29,31,40,74,76,88],host +:[62,79,82,84],host:[11,15,21,27,73,77,79],hostmgmt +:62,hostmgmt:40,hostnam:[4,5,79],hostname +:21,hostnamectl:45,hosts +:90,how +:[65,79,90],html +:[59,64,73,90],html:[0,90,91],htop +:62,http:54,http_proxi:79,http_proxy +:[79,84],httpd +:62,httpd:[29,90],https_proxi:[31,79],https_proxy +:[79,84],hub:[58,59,73],huge:53,hugepag:53,hugo +:62,hwloc +:62,hyperv +:[8,62],hyperv:24,i +:57,i3 +:62,i3blocks +:62,iasimage +:62,icdiff +:62,icecream +:62,ich9:16,ici:[38,54],icu4c +:62,id:[16,53,57,59,73],if +:[65,79],ifconfig:[79,87],iftop +:62,igb_uio:53,imag:[9,15,16,19,20,26,27,42,46,52,59],image +:[51,73,74],imageformat +:62,imagemagick +:62,img:[15,22,27,42,53,67],improv:28,improvement +:63,in +:[0,30,64,70,73,75,79,83,87,88,90,91],inactive +:52,includ:79,includes +:67,infinity +:48,info +:[27,62],info:[25,27,30,52,78],init +:[33,52],init:[27,38,79],initdb:47,initrd +:[38,54],initrd:54,inkscape +:62,input:70,input_model +:60,input_proto +:60,insmod:34,instal:[0,4,5,13,16,22,26,31,43,52,59,65,73,75,81,83,91],install +:[0,31,62,75],install_dir +:73,installation +:83,installed +:90,installer +:[13,62,81],instanc:[7,9,65,85],instruct:[16,73,74],intel +:73,intel_pst:39,interfac:5,interface +:82,internal_iface +:54,internet:4,intltool +:62,introspection +:62,invite +:85,invoke +:73,io:85,iot +:62,iot:60,iotop +:62,ip:79,ip_forward:54,ipe +:62,iperf +:62,ipmctl +:62,ipmitool +:62,iproute2 +:62,ipset +:62,iptabl:0,iptables +:62,ipvsadm +:62,ipx:54,ipxe +:[38,54],ipxe_app_name +:54,ipxe_root +:54,ipynb:88,irssi +:62,is +:[0,8,65,70,73,81,85,88],iscsi +:62,iscsi:54,isn:79,iso:[4,5,42,67],issu:[0,63],ister:38,istercloudinitsvc:38,isterconf:38,istio:73,isync +:62,it +:[0,63,65,73,92],it:[65,85],ital:[64,65],iwd +:62,j3455:66,jack2 +:62,jansson +:62,jargon:65,jobtrack:70,joe +:62,joe:27,journal:31,jp:70,jps +:70,jq +:62,json:[27,38,74],jupyter +:[62,88],kamera +:62,kapidox +:62,kata +:79,kata:30,kate +:62,kb:30,kbackup +:62,kbd +:62,kblog +:62,kcachegrind +:62,kcalc +:62,kcharselect +:62,kcolorchooser +:62,kcron +:62,kde +:62,kdebugsettings +:62,kdenlive +:62,kdf +:62,kdiagram +:62,kdiff3 +:62,keditbookmarks +:62,keepalived +:62,keepassxc +:62,kei:8,kernel +:[16,33,81],kernel:[12,24,27,42,67],kernels +:33,keyboard:[4,5],keychain +:62,keystrok:64,keyword:65,kfind +:62,kfloppy +:62,kflow +:[59,73],kgeography +:62,kill:57,kinesi:60,kit +:62,kit:53,kitinerary +:62,kleopatra +:62,kmediaplayer +:62,kmod +:62,kmousetool +:62,kmplot +:62,knotes +:62,ko:[34,35],koji +:62,koji:36,kolourpaint +:62,konqueror +:62,konsole +:62,kontact +:62,konversation +:62,kpxe:54,krb5 +:62,krita +:62,ks:[59,73],ksonnet +:[59,73],ksonnet:59,ksysguard +:62,ksystemlog +:62,kube:30,kubeadm:[59,73,80],kubectl:79,kubeflow +:[59,73],kubernet:[30,59],kubernetes +:80,kvm +:62,kvm:[24,27],l3fwd:53,lab:45,label +:64,label:64,lambda:60,lamp:[89,90,91],landing +:64,languag:[4,5],language +:64,laptop:66,later:18,latest +:[59,73],latest:[8,52],launch:7,lcms2 +:62,ld_library_path:82,ldconfig:81,ldtarbal:35,learn:77,learning +:73,leas:54,leases +:54,lecun:88,legacy +:62,legal +:0,leptonica +:62,less +:62,less:76,let:91,letter +:65,lftp +:62,lga:16,lib +:62,lib32:81,lib64:[53,73,82],lib:[73,81],libabigail +:62,libarchive +:62,libass +:62,libassuan +:62,libatasmart +:62,libcanberra +:62,libcap +:62,libcgroup +:62,libconfig +:62,libcroco +:62,libcurl:21,libdatrie +:62,libdazzle +:62,libdrm +:62,libepoxy +:62,libevdev +:62,libevent +:62,libexif +:62,libffi +:62,libffi:8,libfontenc +:62,libgcrypt +:62,libgd +:62,libgdata +:62,libgee +:62,libglib +:62,libgnomekbd +:62,libgphoto2 +:62,libgsystem +:62,libgtop +:62,libgudev +:62,libgusb +:62,libgweather +:62,libical +:62,libidn +:62,libidn2 +:62,libinput +:62,libiscsi +:62,libmediaart +:62,libmicrohttpd +:62,libmnl +:62,libmspack +:62,libmtp +:62,libmypaint +:62,libndp +:62,libnetfilter_conntrack +:62,libnetfilter_cthelper +:62,libnetfilter_cttimeout +:62,libnetfilter_queue +:62,libnfnetlink +:62,libnftnl +:62,libnl +:62,libnotify +:62,liboauth +:62,libogg +:62,libopa:22,libopae +:22,libosinfo +:62,libpcap +:62,libpciaccess +:62,libpeas +:62,libpinyin +:62,libpipeline +:62,libpng +:62,libpsl +:62,library +:73,libraw +:62,libreoffice +:62,librepo +:62,librsvg +:62,libs +:62,libsamplerate +:62,libsass +:62,libsctp +:62,libseccomp +:62,libsecret +:62,libsigcplusplus +:62,libsmbios +:62,libsolv +:62,libsoup +:62,libspectre +:62,libsrtp +:62,libssh2 +:62,libstdcpp +:62,libstoragemgmt +:62,libtasn1 +:62,libtelemetri:31,libthai +:62,libtheora +:62,libtirpc +:62,libunwind +:62,libusb +:62,libuser +:62,libuuid_libraries +:22,libuv +:62,libva +:62,libvirt +:62,libvorbis +:62,libvpx +:62,libwacom +:62,libwebp +:62,libwnck3 +:62,libx11 +:62,libx11client +:62,libxau +:62,libxcb +:62,libxcomposite +:62,libxcursor +:62,libxdamage +:62,libxdmcp +:62,libxext +:62,libxfixes +:62,libxfont +:62,libxfont2 +:62,libxft +:62,libxi +:62,libxinerama +:62,libxkbcommon +:62,libxkbfile +:62,libxklavier +:62,libxml2 +:62,libxmu +:62,libxpm +:62,libxrandr +:62,libxrender +:62,libxres +:62,libxscrnsaver +:62,libxslt +:62,libxt +:62,libxtst +:62,libxv +:62,libxvmc +:62,libxxf86misc +:62,libxxf86vm +:62,libyami +:62,libzip +:62,libzmq +:62,licens:[3,22],licensing +:0,lightdm +:62,lightweight +:78,like +:64,line:5,link +:65,link:37,linux +:[33,52,62,81],linux:[0,1,16,17,18,19,20,24,33,54,82,83,92],list +:27,list:[5,6,8,22,24,37,56,57,59,63,73],listed +:57,listenstream:56,lldb +:62,llvm +:62,llvm8 +:62,llvm9 +:62,load +:[57,88],local +:[52,70],local:[0,22,27],local_bundle_dir:27,locale +:62,locales +:62,localhost +:[31,57,84],localhost:[31,57,70,79,90,91],locat:87,log:[15,22,57,76,82],login +:[57,62],login:[4,5,8],logrotate +:62,logs +:62,los_angel:[4,50],lowercas:64,ls:[59,73],lsblk:[6,44],lsusb:92,lt:[15,16,24,35,81],ltp +:62,lts +:[16,31,62],lts2017 +:62,lts2018 +:62,lts2018:16,lts2019 +:62,lttng +:62,lua +:62,luk:28,lvm2 +:62,lxqt +:62,lynx +:62,lyx +:62,lz4 +:62,m +:73,machin:[16,17,18,19,20],machine +:70,machines +:30,maco:57,macros +:62,mahjongg +:62,main +:65,mainline +:62,maintain:72,maintaining +:0,make +:[62,82],make:58,makefil:[22,33],making +:76,manag:[14,16,33],management +:62,manager +:62,manages +:70,manual:[4,16],manually +:78,many +:[81,85],map:73,mapreduc:70,mapreduce_shuffl:70,mariadb +:[62,90],marketplac:[7,8],masquerade +:54,master +:31,master:[58,71,79],match +:30,match:75,matter:64,max:48,may +:79,mb +:75,mb:[16,46,60],me:91,media:[4,5,16],mediasdk +:62,meld +:62,memcached +:62,memori:[16,17,19],memory +:52,menu:[4,5,9,83],menuconfig:33,menus +:62,mercurial +:62,mesa +:62,messag:90,metacity +:62,metal +:90,metallb:73,micro:7,might +:81,minetest +:62,minetestserver +:62,mingw +:62,minicom +:62,mint +:6,mint:57,mirror:5,missing +:52,mix:[27,36],mix_vers:27,mixbundl:27,mixer +:[27,62],mixer:[1,26,30,32,33,34,35,36,40,41],mixin:32,mixvers:27,mkl:[58,59],mkosi +:62,mktarbal:35,ml +:73,ml:73,mnist +:88,mnist:88,mnt:44,mock:33,mod_wsgi +:62,mode:16,model +:73,model:[60,73],model_loc:60,modeldir:60,models +:62,modprob:[34,35,82],modul:[0,35],modules +:81,mom +:51,mom:[27,51],monitor +:62,monitoring +:62,mono +:62,month +:64,more +:[0,31],more:65,mosquitto +:62,most +:65,motd:80,motherboard:16,mountpoint +:[6,46],mountpoint:6,move:8,movidiu:60,mozjs52 +:62,mozjs60 +:62,mpg123 +:62,mpv +:62,ms:73,mtr +:62,mtubyt:55,multiple +:74,mumble +:62,murmur +:62,musescore +:62,music +:62,musl +:62,must +:[73,91],must:79,mutt +:62,mutter +:62,mw +:62,mycroft +:62,myhost:79,mysql +:90,mysql_secure_instal:90,n +:57,name +:62,name:[4,5,7,19,20,22,37,62,64,74,85],named +:81,namenod:70,namenode +:70,names +:[59,73],nasm +:62,nat:[38,54],nativ:[4,24,27,33,34,35,53,81,85],native +:[13,27,45,52,62,79],nautilus +:62,navig:[19,20],ncat +:62,ncdu +:62,ncurses +:62,ndctl +:62,necessari:73,necessary +:76,neomutt +:62,neovim +:62,nested +:78,netdata +:62,netdev:55,nethogs +:62,netstat:57,nettle +:62,network +:[37,54],network:[5,14,37,55],networkd:[54,55],networkmanager +:62,new +:81,new_id +:53,newt +:62,next:[4,17,18,19,20],nftables +:62,ng +:62,nghttp2 +:62,nginx +:[27,54,62,74],nginx:[27,54,74],nhwc:[59,73],ni:69,nic:53,nil +:13,nil:85,nim +:62,nist:28,nload +:62,nmap +:62,nmcli:37,nmconnect:37,nmtui:5,no +:[54,72,86],no:4,no_proxi:[79,84],no_turbo:39,nobody +:57,node +:62,node:79,nodemanag:70,nodes +:70,nofil:58,none +:[57,90],not +:74,not:74,note:[59,73],notebook +:88,notebooks +:88,notes +:64,notification +:62,notmuch +:62,nouveau +:[81,82],now:16,nr_hugepag:53,nr_hugepages +:53,nspr +:62,nss +:62,ntp:50,nuc5i7ryb:66,nuc5i7ryh:66,nuc6cai:66,nuc6cayb:66,nuc6i5syh:66,nuc6i6syh:66,nuc7i5bnh:66,nuc7i5dnh:66,nuc7i7bnh:66,nuc7i7dnk:66,nuc8i7hvk:66,null +:[8,79],numactl +:62,number +:64,numbered +:64,nvidia +:81,nvidia:81,objdump:76,object +:65,object:65,oci:79,octave +:62,of +:[0,63,64,65,67,70,73,74,78,79,80,81,82,86,91],of:65,off:[16,19],offer +:65,offlineimap +:62,oiio +:62,ok:[16,17,42],okteta +:62,okular +:62,on +:[71,73,75,76,79,87],on:[18,19,20],onfailure +:73,onli:81,oop:31,open:57,openbla:[58,59,73],openblas +:62,opencv +:62,opengl +:62,opengl:81,openldap +:62,openmpi +:62,openqa +:62,openscad +:62,openssl +:62,openvino +:62,openvino:32,openvswitch +:62,oper:[59,73,74],operator +:[59,73],opt +:[59,73],optimized +:73,option:[4,5,19,20,31,81],optional +:64,opus +:62,or +:[63,64,81,90],or:[65,81],oracle +:62,orc +:62,order:83,org:[30,33],os +:[11,13,31,45,52,62,80],os:[0,1,6,10,11,12,13,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,92],oss:[59,73],ostree +:62,osv:40,other +:[8,35,65,83],otp +:62,our +:[0,64,65,70],out:[31,51],output +:81,output:[64,70],output_dir +:60,overlay +:52,overlay2:74,ownership +:22,p0:39,p1 +:33,p1:33,pacdiscoveri:21,packag:[22,23,33,35,53],pacrunn:21,pacrunner +:[21,62],page +:90,page:[27,29,37,48,73,91],pages +:62,pair:7,pandoc +:62,panel +:62,pango +:62,pangomm +:62,paragraph +:65,parallel +:62,parallel:64,parallels +:83,param_cpu_extension_path:60,param_devic:60,param_input_sourc:60,param_model_xml:60,param_num_top_result:60,param_output_directori:60,paramet:33,paraview +:62,part +:[6,13,46],part:[46,64],parted +:62,partit:5,partitionlayout:46,pass +:62,pass:4,passphras:[4,5],passwd:[43,57],password:[4,5],past_vers:27,patch +:[33,62],patch2001:33,patch:[33,73],path +:73,path:[64,82],patriot_usb +:6,payload_vers:31,pc:86,pci:53,pciutils +:62,pcre +:62,pcre2 +:62,pdns +:62,pem:[7,51],performance +:73,phoronix +:62,photos +:62,php +:90,phpmyadmin +:91,phrase +:65,picked +:64,picki:22,pickle +:65,pid +:57,pidgin +:62,pii:31,ping:85,pipelin:36,pipewire +:62,pixbuf +:62,pixman +:62,pkg:33,pl:76,place +:64,plant:57,platform +:[65,73],platform:[9,66,73],player:[17,18,19,20,42],plugins +:62,plus +:62,plzip +:62,pmdk +:62,png +:64,png:64,po4a +:62,pod +:[59,73],pod:59,point +:88,point:88,policy +:30,polkit +:62,poll:39,pong:85,poppler +:62,popt +:62,port +:[73,84],port:[5,57],portal +:62,possible +:64,postfix +:62,postgr:31,postgresql +:62,postgresql11 +:62,postgresql:31,postnonchroot:26,postpon:80,postrouting +:54,power:[17,19],poweroff +:22,poweroff:[15,27],powertop +:62,practic:[35,77,79],prerequisit:[4,6,16,27],preschool +:62,press:63,previou:7,primary +:62,primer:64,print_function +:[59,73],printing +:62,priority +:47,privileg:90,prob +:73,probe:31,procedure +:64,processor:[17,18],procf:49,product +:65,product:7,productivity +:62,profil:79,program:31,progress:6,project:[22,33,34,35,53,81,90],prompt +:13,prompt:83,proper +:76,properly +:92,properti:[57,71],proto +:62,protocols +:62,prototxt +:60,prototxt:60,provid:65,provided +:79,provis:65,proxi:[4,5],psensor +:62,pspp +:62,ptr:31,pull:[74,84],pulseaudio +:62,pushing +:81,putti:57,pwgen +:62,pxe:54,pxe_internal_ip +:54,pxe_subnet_bitmask +:54,py +:30,py:[26,59,60,73],pygobject +:62,python +:[59,73],python2 +:62,python:30,pytorch +:62,pytorch:59,pytorchjob:73,qat +:62,qbittorrent +:62,qpdf +:62,qt +:62,qt3d +:62,qt5webengine +:62,qtbase +:62,qtdeclarative +:62,qtlocation +:62,qtsvg +:62,qttools +:62,qtwebchannel +:62,qtwebengine +:62,quagga +:62,quassel +:62,quasselcore +:62,quiet:[33,39],quilt:33,r +:[16,27,34,35,62,81],r630:66,radio +:62,ram:[17,69],rate_limit_en:31,rate_limit_strategi:31,rawtherapee +:62,rc4:28,rclone +:62,rcu +:62,rdisk2:6,readline +:62,readm:[22,34,35,58],realvnc:57,reboot:[5,15,16,33,34,35,44,45,81],rebootmgr +:62,record_burst_limit:31,record_expiri:31,record_retention_en:31,record_server_delivery_en:31,record_window_length:31,recursor +:62,redi:85,redshift +:62,refer:[61,64,65],referenced +:74,reflect +:80,region:9,releas:[26,27,28,46],release +:[44,62],reload +:[27,57,72,78,79,84],reload:[27,56],remain +:81,remmina +:62,remote +:62,remov:18,remove +:90,remove_id:53,removed +:52,repair:81,replaceable +:64,replaced +:52,repo:[27,62],repoadd +:22,reporting_interv:60,repositori:[18,58,63,64],repostatu:22,represent:60,requir:82,reset:5,resize2f:46,resnet +:73,resnet:73,resolv:54,resourc:73,resourcemanag:70,resourcemanager +:70,respective +:64,rest +:62,restart:49,restic +:62,result:[22,59,71],reverse_input_channel:73,review +:72,rhythmbox +:62,rm:74,rmi:[59,73],rngd:49,ro +:75,role +:38,role:[38,64],roller +:62,root +:[13,90],root:[4,5,10,13,14,15,22,59,60,73],rpm +:0,rpm2cpio:33,rpm:[27,33],rpmbuild:22,rrdtool +:62,rsa:70,rst:64,rstudio +:62,rsync +:62,rsyslog +:62,rt +:62,rte_sdk:53,rte_target:53,rufu:6,rule:92,run +:74,run:[65,73,74,81,82],runc +:[52,79],runc:[59,73,74],running +:80,runtim:[72,74],runtime +:[62,74,82],runtimeclass +:79,rvi:[17,18],s2600wt2:66,s3:60,samba +:62,same +:65,sampl:82,samtools +:62,sandbox +:57,sasl +:62,save:[19,20],scaling_driv:39,scaling_governor:39,scan +:65,schema:[4,5],schemas +:62,science +:62,scons +:62,scope +:89,scratch +:52,screen +:90,screen:83,screenshot +:62,script:31,sda +:13,sda3:46,sda:[5,6,13],sdb:6,sdc:6,sdd2 +:6,sdd3:6,sdd:6,sddm +:62,sdk +:62,sdk:22,sdl +:62,sdl2 +:62,sdl2_gfx +:62,sdl2_image +:62,sdl2_mixer +:62,sdl2_net +:62,sdl2_ttf +:62,sdl_gfx +:62,sdl_image +:62,sdl_mixer +:62,sdl_net +:62,sdl_ttf +:62,seahorse +:62,search +:62,search:[0,21,30,34,35],secondary +:62,secondarynamenode +:70,section +:81,security +:[64,74,90,91],see +:[64,65,78],select +:[65,83,90],select:[4,5,6,7,9,64],sensitive +:62,sensors +:62,sentence +:65,server +:[8,52,62,73],server:[28,31,41,52,54,56,57,69,73,74,87,89,90],server_state_dir:27,servernam:87,servic:[21,25,35,40,49,50,54,57,78,79,81,90],service +:[8,49,54,57,90],services +:31,serving +:62,session:57,sessionmanager +:75,set +:8,set:[4,5,16,18,19,20,83,92],setup +:74,setup:[5,79],several +:90,sftp:28,sh +:[27,71,73],sh:[11,15,22,27,31,33,42,53,54,60,70,71,72,73,78],sha512:42,sha512sum:42,shall:65,share:87,shell +:58,shell:[8,56],shells +:62,should +:65,show +:88,show:37,shown +:[83,90],sig +:51,sig_unenforc:[35,81],silent:[81,82],simple +:57,simplescreenrecorder +:62,size +:[52,59,73],sku:[8,66],slice:57,smartmontools +:62,smb +:86,smb:86,smbpasswd:86,so:[53,60,65,81],socat +:62,sock +:27,sock:79,socket +:57,socket:[56,57],socket_path:31,socks_proxy +:84,softwar:[4,65],software +:[0,8,62,65,70,71,74,75],solaar +:62,solution +:0,soname1 +:62,soname2 +:62,soname3 +:62,sos +:62,sourc:[9,33],source +:[64,73],sources +:47,sox +:62,space:5,spark +:71,spark_master_host:71,spec +:22,spec:[22,33],specific +:79,spectacle +:62,speex +:62,sphinx +:62,sphinx:64,spice:15,spool:31,spool_dir:31,spool_process_tim:31,sqlite +:62,squeezenet:60,squid +:62,src +:47,src:47,srpm:47,ssd300:60,ssd:60,ssd_inception_v2_coco_2018_01_28 +:73,ssh:[7,8,15,20,56,57],sshd +:15,sshd:[15,56],sshd_config:56,sshfs +:62,sslv3:28,ssocr +:62,stacer +:62,stack:[58,77],stan +:62,standard +:74,start +:33,start:[6,16,31,64,75],starts +:73,state:[7,27,39],statedir:52,static +:62,statu:[7,18,35,37,50,53],stdin +:31,stdin:31,stdout:31,stellarium +:62,step:73,steps +:[70,73,89],stop:[7,31,74],storag:[9,16,19,20],store:[0,75,85],strace +:62,structure +:88,stubs +:62,studio +:62,subdirectory +:81,subject:65,submit:91,subunit +:62,subversion +:62,success:[11,30,51,52],successfulli:31,successfully +:52,such +:64,sudo +:62,sudo:[31,43,60,84],suggest:63,suite +:62,supertuxkart +:62,support +:73,support:[35,77],supported +:64,suricata +:62,svc:54,swap +:13,swap:[4,5],swapping +:64,swarm:74,sway +:62,swupd +:81,swupd:[0,1,4,7,8,21,22,23,26,27,28,29,31,32,34,35,36,41,43,44,47,49,51,52,58,59,60,73,74,79,80,81,82],sxiv +:62,syndication +:62,synergy +:62,syntax:13,sysctl:79,syslinux +:62,syslog +:57,sysprof +:62,sysstat +:62,system +:[75,86,90],system:[5,16,17,18,49,57,73,75,79,83,88],systemd +:[54,62],systemd:[35,49,81,85],t540p:66,tab:[4,5],tabl:8,taglib +:62,take +:90,talloc +:62,tallow:28,tar:[42,52,67],tarbal:[60,73],target +:[57,76],target:[27,57,81],targetmedia:13,task +:73,tasktrack:70,tbb +:62,tcl +:62,tcpwrapper:28,technolog:[14,15,16],telemctl:31,telemetr:[25,31],telemetri:[4,5,31],telemetrics +:62,telemetryui:31,telempostd:31,telemprobd:31,telnet +:62,tenanc:9,tensorflow +:[62,73,88],tensorflow:[59,73],term:64,tertiary +:62,tesseract +:62,test:[45,65,90],test_telem +:31,test_telem:31,testdisk +:62,testi:88,testing +:62,testsuite +:62,testx:88,texinfo +:62,texlive +:62,texmaker +:62,text +:64,text:64,tfjob +:[59,73],tftp +:54,tftp:54,tftp_root +:54,than +:[64,86],than:65,that +:[65,82,91,92],the +:[0,64,65,70,71,73,74,75,76,78,79,80,81,82,83,85,86,88,90,92],the_silver_searcher +:62,thei:65,thermal_daemon +:62,thermald:39,thermalmonitor:39,these +:[63,73],they +:79,thi:65,this +:[64,73,74,81,82,86,90],those +:76,through +:0,thunderbird +:62,tiff +:62,tigervnc +:62,tigervnc:57,tilix +:62,timer:39,times +:70,timesyncd:50,timezon:5,title +:64,tlp +:62,tlsvnc +:57,tm_handl:31,tmux +:62,to +:[0,58,63,64,65,66,70,71,73,74,76,79,82,83,86,88,90],to:[65,90],toctre:64,todo +:62,token +:79,token:79,tomcat +:62,tool +:62,tool:[22,25,59,73],toolkit +:62,toolkit:77,tools +:62,torch +:[59,73],totem +:62,tr +:62,traefik +:62,train:[59,73],traini:88,trainx:88,tree:[27,35],trigger +:81,trigger:92,triggers +:52,troubleshoot:5,troubleshooter +:62,true +:[13,52,57],ts140:66,tty1:81,tunnel:57,turbo +:62,tutori:[0,43,61,64,73,78,79,85,88,90],tutorial +:90,tutorials +:88,tweaks +:33,two +:88,txt +:73,txt:[31,38],type:[7,17,18,19,20,40,57,68],tzdata +:62,u2f +:92,u2f:92,ubuntu:57,ud5:66,udev:92,uefi +:62,uefi:[5,17],uget +:62,uhttpmock +:62,ui +:[62,88],ui:[31,88],ulimit:48,umount:6,unbind +:53,unbundle +:62,under +:[81,82,88],unicode +:62,uninstal:81,uninterrupted +:81,unison +:62,unit +:62,unit:82,unix2 +:62,unmanag:37,unparallel +:65,untrusted +:79,unzip +:62,up +:[79,88],up:65,updat:[4,5,7,27,30,34,35,41,43,47,51,52,70,71,74,78,79,80,81,86,88,90],update +:[8,16,27,34,35,62,81],updated +:[81,90],updates +:[30,80],upload:[19,20],upstreamvers:27,url:[4,5,8,21,27,38,52],urn:8,us +:13,us:[4,58,59,65,73,74],usb +:92,usb:15,usbredir +:62,use +:[64,79,81],user +:[73,75,86,90],user:[4,5,57,81,86],username +:91,users +:65,uses +:73,using +:[63,64,65,71,73,80,91],usr:[22,29,44,81,82],ust +:62,utc +:62,utc:[4,5],utf8_unicode_ci:90,util +:62,util:[25,41,46,65,86],utility +:62,utilizes +:73,utils +:[8,62],utilslib +:22,uwsgi +:62,v +:73,v1 +:[59,73],v1beta1 +:79,v1beta2 +:73,v3:66,v4:66,vala +:62,valgrind +:62,valid +:79,valid:80,valu:92,vanilla +:62,variabl:64,vbox:16,vboxguest:16,vboxsvga:16,vboxvideo:16,vcli:20,vec:76,vector +:64,vector:76,vectorized +:76,version +:[8,73],version:[8,17,18,19,20,27,31,33,51,52,65,74,77,82],versions_path:27,versionurl:27,vfat +:13,vga:15,vhd:[42,67],vhdx:[14,42,67],video0:60,viewer +:62,viewer:15,vim +:62,vinagre +:62,virt +:[30,62],virt:[30,78],virtual:[14,19,20],virtualbox +:31,virtualbox:[16,24],visit +:[71,84],vlc +:62,vm:[8,9,16,17,18,19,20,78],vma:20,vmdk:[18,20,42,67],vmkfstool:20,vmware +:[17,62],vmware:[17,18,20,26],vmx:[17,18],vnc +:[57,62],vncpasswd:57,vncserver:57,vnni:[59,73],volum:73,vpddecode +:22,vpp +:62,vt:[17,18],wacom +:62,want:65,was +:[49,82],wayland +:62,we +:[0,72,76],we:65,weather +:62,web +:90,web:38,webkitgtk +:62,webm:60,webproxy +:62,websit:[22,81,82,88,91],websites +:92,weechat +:62,westu:8,wget +:62,wheel:60,when +:[64,75],where +:65,which +:[62,74,81,86],wifi +:62,wifi:66,wiki:22,wikipedia:88,will:65,window:[17,18,57,83,87],wine +:62,wip +:62,wireguard +:33,wireshark +:62,wish:65,with +:[64,70,71,73,79,80,86],wizard:[17,18],woff2 +:62,won:73,wordcount:70,wordpress +:91,wordpress:[90,91],wordpressus:[90,91],work:44,working_directory +:73,wp_:91,wpa_supplicant +:62,wpad:21,write:64,writing +:65,www +:54,www:27,wxwidgets +:62,x +:[81,82],x11 +:[62,75],x11vnc +:62,x299:66,x86_64 +:[31,47,52],x86_64:[47,53,82],xconfig:33,xf:[4,5],xfsprogs +:62,xkbcomp +:62,xml:[60,70,73],xmlsec1 +:62,xorgproto +:62,xorriso +:62,xpra +:62,xscreensaver +:62,xstartup +:57,xstartup:57,xterm +:62,xtightvncview:57,xtrans +:62,xz +:[33,42,51,54,62],xz:[13,15,16,18,19,20,22,33,42,67,83],y +:64,yakuake +:62,yaml +:[13,73],yaml:[5,13,59,73],yarn +:62,yarn:70,yasm +:62,ye:[4,7,8,35,46,56,70,86],yes +:[8,15,56,57,86],ymm0 +:76,you +:[64,65,73,79,88,90,91],you:[0,63,65,72,73,74,78,79,85,90],your +:[70,72,73,75,82,90],yubico +:92,yubico:92,yum:[23,30],yum_conf:27,zabbix +:62,zathura +:62,zenity +:62,zip +:62,zip:[42,47,60],zlib +:62,znc +:62,zone:4,zoo:73,zsh +:62,zstd +:62,zstd:47},titles:["FAQ","\u5173\u4e8e","<no title>","<no title>","\u4ece\u5b9e\u65f6\u684c\u9762\u5b89\u88c5 Clear Linux* OS","\u4f7f\u7528\u5b9e\u65f6\u670d\u52a1\u5668\u5c06 Clear Linux* OS \u5b89\u88c5\u5728\u88f8\u673a\u4e0a","\u521b\u5efa\u53ef\u5f15\u5bfc U \u76d8","Amazon Web Services* \u4e0a\u7684 Clear Linux* OS","Microsoft* Azure* \u4e0a\u7684 Clear Linux* OS","Google Cloud Platform* \u4e0a\u7684 Clear Linux* OS","Clear Linux* OS on QingCloud* (\u5982\u4f55\u5728\u9752\u4e91 QingCloud \u4e0a\u521b\u5efa Clear Linux OS \u865a\u62df\u4e3b\u673a)","\u68c0\u67e5\u5904\u7406\u5668\u548c EFI \u56fa\u4ef6\u7684\u517c\u5bb9\u6027","\u5f00\u59cb\u4f7f\u7528","\u5229\u7528 clr-installer \u548c\u914d\u7f6e\u6587\u4ef6\u5b89\u88c5","Microsoft Hyper-V* \u4e0a\u7684 Clear Linux* OS","KVM \u4e0a\u7684 Clear Linux* OS","VirtualBox* \u4e0a\u7684 Clear Linux* OS","VMware* Workstation Player \u4e0a\u7684 Clear Linux* OS","VMware* Workstation Player \uff08\u9884\u914d\u7f6e\u6620\u50cf\uff09\u4e0a\u7684 Clear Linux* OS","VMware* ESXi \u4e0a\u7684 Clear Linux* OS","VMware* ESXi\uff08\u9884\u914d\u7f6e\u6620\u50cf\uff09\u4e0a\u7684 Clear Linux* OS","Autoproxy","autospec","bundle \u6587\u4ef6","\u5185\u6838","\u8c03\u8bd5\u7cfb\u7edf","ister.py image builder","mixer","\u64cd\u4f5c\u7cfb\u7edf\u5b89\u5168\u6027","\u65e0\u72b6\u6001","swupd","\u9065\u6d4b","\u6307\u5357","\u5185\u6838\u5f00\u53d1","\u624b\u52a8\u6dfb\u52a0\u5185\u6838\u6a21\u5757","\u4f7f\u7528 DKMS \u6dfb\u52a0\u5185\u6838\u6a21\u5757","\u8bbe\u8ba1 Clear Linux* OS \u751f\u547d\u5468\u671f","\u5206\u914d\u9759\u6001 IP \u5730\u5740","\u6279\u91cf\u4f9b\u5e94","CPU \u529f\u7387\u548c\u6027\u80fd","\u5927\u89c4\u6a21\u90e8\u7f72","\u5f00\u53d1\u4eba\u5458\u5de5\u4f5c\u7ad9","\u4e0b\u8f7d\u3001\u9a8c\u8bc1\u5e76\u89e3\u538b\u7f29 Clear Linux* OS \u6620\u50cf\uff0c","\u521b\u5efa\u5e76\u542f\u7528\u65b0\u7684\u7528\u6237\u7a7a\u95f4","\u4fee\u590d\u635f\u574f\u7684\u5b89\u88c5","\u4fee\u6539\u4e3b\u673a\u540d","\u589e\u52a0\u6620\u50cf\u7684\u865a\u62df\u78c1\u76d8\u5927\u5c0f","\u4ece\u4e0a\u6e38\u5b58\u50a8\u5e93\u67e5\u8be2\u8f6f\u4ef6\u5305\u4fe1\u606f","\u8d44\u6e90\u9650\u5236","\u64cd\u4f5c\u7cfb\u7edf\u66f4\u65b0\u540e\u91cd\u542f\u7cfb\u7edf\u670d\u52a1","\u8bbe\u7f6e\u65f6\u95f4","\u9a8c\u8bc1\u7b7e\u540d","\u6839\u636e Docker \u5bb9\u5668\u6620\u50cf\u6784\u5efa\u4e00\u4e2a\u81ea\u5b9a\u4e49 Clear Linux* OS","\u4f7f\u7528 DPDK \u5728\u5e73\u53f0\u4e4b\u95f4\u53d1\u9001\u6570\u636e\u5305","\u4f7f\u7528 iPXE \u901a\u8fc7\u7f51\u7edc\u5b89\u88c5","\u4f7f\u7528\u7f51\u7edc\u6346\u7ed1\u805a\u5408\u591a\u4e2a\u63a5\u53e3","\u542f\u7528\u5e76\u914d\u7f6e SSH \u670d\u52a1","\u4f7f\u7528 VNC \u901a\u8fc7\u8fdc\u7a0b\u684c\u9762\u8fde\u63a5\u5230\u4e3b\u673a","\u6570\u636e\u5206\u6790\u53c2\u8003\u5806\u6808","\u6df1\u5ea6\u5b66\u4e60\u53c2\u8003\u5806\u6808","\u542f\u7528 AWS Greengrass* \u548c OpenVINO\u2122 \u5de5\u5177\u5305","Clear Linux* Project","\u53ef\u7528\u7684\u6346\u7ed1\u5305","Documentation guidelines","Structure and formatting","Writing guide","Compatible Hardware","Clear Linux* OS image types","Reference","\u5efa\u8bae\u7684\u6700\u4f4e\u7cfb\u7edf\u8981\u6c42","Apache* Hadoop*","Apache* Spark*","Migrate Clear Containers to Kata Containers*","Deep Learning Reference Stack","Docker*","Flatpak*","Function multi-versioning","Tutorials","Kata Containers*","Kubernetes*","Kubernetes* Best Practices","NVIDIA* Drivers","NVIDIA* CUDA Toolkit","Parallels* Desktop for Mac*","Proxy configuration","Redis*","Samba* as a host","Samba* as a client","TensorFlow* machine learning","WordPress*","Set up a LAMP web server on Clear Linux* OS","Set up WordPress* on a LAMP web server","YubiKey* Support"],titleterms:{"1.":[4,5,41,60,66],"1:":[67,85],"2.":8,"2:":[67,85],"\u4e0a\u4f20\u81f3 ":19,"\u4e0a\u521b\u5efa ":10,"\u4e0a\u521b\u5efa\u53ef\u5f15\u5bfc ":6,"\u4e0a\u5b89\u88c5 ":9,"\u4e0a\u6e38 ":27,"\u4e0a\u7684 ":[7,8,9,14,15,16,17,18,19,20],"\u4e0b\u8f7d\u5e76\u89e3\u538b\u7f29 ":16,"\u4e0b\u8f7d\u6700\u65b0\u7684 ":[5,17,18,19,20],"\u4e0e\u4e3b\u673a\u5efa\u7acb ":57,"\u4e2d\u5b89\u88c5 ":8,"\u4e3a ":[22,27],"\u4e3b\u673a\u7684 ":57,"\u4ece\u5b9e\u65f6\u684c\u9762\u5b89\u88c5 ":4,"\u4ece\u865a\u62df\u673a\u65ad\u5f00 ":17,"\u4ee5\u5f15\u5bfc\u65b0\u5b89\u88c5\u7684 ":19,"\u4f7f\u7528 ":[31,35,37,53,54,57,58,59],"\u4f7f\u7528\u5b9e\u65f6\u670d\u52a1\u5668\u5c06 ":5,"\u4f7f\u7528\u73b0\u6709\u7684 ":35,"\u4f7f\u7528\u73b0\u6709\u89c4\u683c\u6587\u4ef6\u6784\u5efa ":22,"\u4f8b ":[13,22,27,30],"\u4fee\u6539/":5,"\u505c\u6b62 ":7,"\u505c\u6b62\u5e76\u53d6\u6d88\u5206\u914d ":8,"\u5206\u914d\u9759\u6001 ":37,"\u5217\u51fa\u5f53\u524d\u53d1\u884c\u7248\u4e2d\u7684\u6240\u6709\u4e8c\u8fdb\u5236 ":47,"\u521b\u5efa ":[8,22],"\u521b\u5efa\u53ef\u5f15\u5bfc ":6,"\u521b\u5efa\u5e76\u6253\u5305 ":60,"\u521b\u5efa\u60a8\u81ea\u5df1\u7684 ":40,"\u521b\u5efa\u65b0\u7684 ":16,"\u5220\u9664 ":10,"\u5220\u9664\u7533\u8bf7\u7684\u516c\u7f51ip":10,"\u5229\u7528 ":[13,16],"\u5378\u8f7d ":16,"\u542f\u52a8 ":[4,5],"\u542f\u7528 ":[14,17,18,56,60],"\u542f\u7528\u5e76\u914d\u7f6e ":56,"\u548c ":[53,60],"\u548c\u5e73\u53f0 ":53,"\u548c\u6e90 ":47,"\u5728 ":[6,8,9,10,16,22],"\u5728\u4e3b\u673a\u4e0a\u5b89\u88c5 ":57,"\u5728\u4e3b\u673a\u4e0a\u914d\u7f6e ":57,"\u5728\u5ba2\u6237\u7aef\u7cfb\u7edf\u4e0a\u5b89\u88c5\u4e00\u4e2a ":57,"\u5728\u6ca1\u6709\u73b0\u6210\u7684 ":35,"\u5728\u76ee\u6807\u7cfb\u7edf\u4e0a\u5b89\u88c5 ":5,"\u5728\u865a\u62df\u673a\u4e0a\u68c0\u67e5 ":46,"\u57fa\u672c ":7,"\u5982\u4f55\u5728\u9752\u4e91 ":10,"\u5b89\u88c5 ":[15,16,17,18,33,35,53],"\u5b89\u88c5\u4e00\u4e2a ":57,"\u5b89\u88c5\u7a0b\u5e8f ":[16,17,19],"\u5b89\u88c5\u7a0b\u5e8f\u5b89\u88c5 ":16,"\u5bb9\u5668*":30,"\u5bb9\u5668\u6620\u50cf\u6784\u5efa\u4e00\u4e2a\u81ea\u5b9a\u4e49 ":52,"\u5c06 ":[6,17,19,20,57],"\u5c06\u65b0\u7528\u6237\u6dfb\u52a0\u5230 ":43,"\u5c06\u7f51\u5361\u7ed1\u5b9a\u5230 ":53,"\u5e73\u53f0 ":53,"\u5e76\u6784\u5efa ":53,"\u5f15\u5bfc ":[19,20],"\u624b\u52a8\u542f\u52a8 ":57,"\u624b\u52a8\u62c9\u53d6 ":27,"\u6302\u8f7d\u5b89\u88c5 ":16,"\u6302\u8f7d\u9884\u914d\u7f6e\u7684 ":18,"\u63a7\u5236\u53f0\u4e2d\u9009\u62e9\u5e76\u542f\u52a8 ":10,"\u63d0\u53d6\u4e00\u4efd ":33,"\u65b9\u6cd5 ":57,"\u6620\u50cf\u4e0a\u4f20\u81f3 ":20,"\u6620\u50cf\u70e7\u5f55\u81f3 ":6,"\u6620\u50cf\u8f6c\u6362\u4e3a ":20,"\u66f4\u65b0 ":7,"\u6700\u65b0\u7684 ":28,"\u670d\u52a1\u811a\u672c\u81ea\u52a8\u542f\u52a8 ":57,"\u672c\u5730 ":27,"\u6784\u5efa ":[53,58],"\u6784\u5efa\u65b0\u7684 ":22,"\u67e5\u627e\u5e76\u5b89\u88c5 ":30,"\u67e5\u770b\u5668\u5e94\u7528\u7a0b\u5e8f\u548c\u4e00\u4e2a ":57,"\u6839\u636e ":52,"\u68c0\u67e5\u5904\u7406\u5668\u548c ":11,"\u68c0\u67e5\u7528\u6765\u6784\u5efa\u6620\u50cf\u7684 ":46,"\u6dfb\u52a0 ":15,"\u7279\u5b9a\u4e8e\u5e73\u53f0\u7684 ":42,"\u72ec\u7acb\u4e8e\u5e73\u53f0\u7684 ":42,"\u7533\u8bf7\u516c\u7f51ip":10,"\u767b\u5f55\u5230\u60a8\u7684 ":8,"\u786e\u8ba4 ":42,"\u7ec8\u6b62\u4e0e\u4e3b\u673a\u7684 ":57,"\u81ea\u52a8 ":28,"\u81ea\u5b9a\u4e49 ":33,"\u865a\u62df\u4e3b\u673a)":10,"\u865a\u62df\u673a\u4e0a\u5b89\u88c5 ":16,"\u8868 ":[4,5,41,42,57,60],"\u89e3\u538b ":42,"\u8bbe\u7f6e ":27,"\u8bbe\u7f6e\u4ece\u5ba2\u6237\u7aef\u7cfb\u7edf\u5230 ":57,"\u8bbe\u7f6e\u9759\u6001\u8ba1\u7b97\u673a ":31,"\u8bbe\u8ba1 ":36,"\u8fd0\u884c ":[53,59],"\u8fde\u63a5\u5230 ":[7,10,57],"\u8fde\u63a5\u5230\u4e3b\u673a\u5e76\u542f\u52a8 ":57,"\u9009\u62e9\u5e76\u542f\u52a8 ":7,"\u901a\u8fc7 ":[15,31,57],"\u9065\u6d4b ":31,"\u90e8\u7f72 ":60,"\u914d\u7f6e ":[27,47,57,60],"\u914d\u7f6e\u4e3a\u4ec5\u63a5\u53d7\u6765\u81ea ":57,"\u914d\u7f6e\u548c\u542f\u7528 ":27,"\u9644\u5f55 ":53,"\u96a7\u9053\u52a0\u5bc6 ":57,"\u96a7\u9053\u8fde\u63a5\u5230 ":57,"\u9a8c\u8bc1\u5e76\u89e3\u538b\u7f29 ":42,"a ":[0,49,53,71,73,74,75,76,84,86,87,88,90,91],"about ":78,"active ":65,"add ":0,"add-":79,"additional ":[74,81,82],"aixprt ":73,"alternative ":81,"amazon ":7,"an ":74,"and ":[0,64,65,71,73,74,76,79,81,82,84,85,90,91],"another ":0,"apache ":[70,71],"apache*":[70,71],"api ":31,"app ":75,"are ":0,"as ":[72,86,87],"autospec ":22,"available ":0,"available?":0,"avoid ":65,"aws ":60,"azure ":8,"azure*":8,"bare ":76,"based ":91,"basic ":[74,90],"be ":65,"before ":91,"best ":80,"blocks ":64,"builder.":27,"bulleted ":64,"bundle ":[23,27,30],"c ":39,"can ":0,"cautions,":64,"change ":90,"check ":82,"chrome*":0,"clear ":[0,4,5,6,7,8,9,10,14,15,16,17,18,19,20,22,32,33,36,42,52,57,61,67,72,76,83,85,86,90],"cli ":[8,85],"cloud ":[9,79],"clr-":13,"code ":64,"code*":0,"command ":75,"commas ":65,"compatibility ":82,"compatible ":66,"compiling ":73,"complete ":91,"conf ":35,"config.":46,"configuration ":[72,79,90],"configure ":[70,71,76,79,81],"connect ":87,"containers ":72,"containers*":[72,74,78],"containers-":74,"content ":65,"contribute ":63,"contribution ":63,"control ":80,"copy ":0,"cpu ":39,"create ":91,"creating ":74,"cri ":79,"cri-":79,"cuda ":82,"customization ":79,"customized ":72,"customizing ":73,"cve ":28,"dars ":58,"data ":90,"debugging ":81,"deep ":73,"default ":[0,90],"default":72,"desktop ":[83,84],"detect ":76,"did ":0,"disable ":81,"display ":15,"distro?":0,"distros ":0,"distros?":0,"dkms ":35,"dkms.":35,"dnf ":47,"do ":0,"docker ":[27,52,58,74,85],"docker)":84,"docker*":74,"documentation ":[63,64],"does ":0,"download ":[81,82,83,91],"downloading ":82,"dpdk ":53,"drive ":86,"driver ":0,"drivers ":81,"efi ":11,"enable ":[72,92],"ending ":65,"esxi ":[19,20],"etc ":0,"example ":[76,85,88],"ffmpeg ":0,"fft ":76,"file ":86,"files ":0,"firewall?":0,"flatpak ":75,"flatpak*":75,"fmv ":76,"for ":[81,83,92],"format ":27,"from ":[0,74],"fstab?":0,"function ":76,"gcc ":82,"gcp ":9,"gdm ":57,"gdm)":15,"gen ":31,"generate ":76,"git ":84,"gnome ":[15,75],"google ":9,"google*":0,"grammar ":65,"greengrass ":60,"greengrass*":60,"guest ":16,"hadoop ":70,"hadoop*":70,"host ":76,"how ":[0,63],"hyper-":14,"i ":0,"image ":[26,67,74],"improvements?":0,"in ":[65,84,86,92],"in-":64,"independent ":67,"inference ":73,"information ":78,"initialize ":83,"inline ":64,"install ":[0,70,71,74,75,76,78,79,81,82,83,85,90],"installation ":81,"installed ":0,"installer ":13,"integration ":74,"intel\u00ae":73,"ip ":37,"ipxe ":54,"is ":0,"is-":31,"iso ":[19,83],"ister.":26,"job)":73,"jupyter ":[59,73,88],"kata ":[30,72,74,78],"kata-":79,"ksonnet*":[59,73],"kubeflow ":[59,73],"kubernetes ":[59,73,79],"kubernetes*":[79,80],"kvm ":15,"l3fwd ":53,"lambda ":60,"lamp ":[90,91],"learning ":[73,88],"libtelemetry ":31,"like ":0,"line ":64,"link ":65,"linux ":[0,4,5,6,7,8,9,10,16,17,18,19,20,22,33,39,40,42,57,67,76,83,85,86,92],"linux*":[4,5,6,7,8,9,10,14,15,16,17,18,19,20,28,36,42,52,61,67,90],"lists ":64,"live-":16,"localhost ":57,"location ":87,"long ":65,"loop ":76,"mac*":83,"machine ":88,"macos*":[6,42],"make ":[0,65],"manage ":[90,91],"manager ":15,"manually ":72,"map ":86,"mapreduce ":70,"master ":71,"menu ":65,"microsoft ":[8,14],"microsoft*":[0,8],"migrate ":72,"mixer ":27,"model ":73,"more ":78,"mozilla ":92,"multi-":[73,76],"n ":49,"native ":79,"need?":0,"network ":79,"new ":[64,83],"next ":[85,90],"nginx ":27,"node ":73,"notes,":64,"noun ":65,"nouveau ":81,"numbered ":64,"nvidia ":[81,82],"nvidia*":[81,82],"o ":79,"of ":[65,67,73,81,82],"often ":0,"on ":[0,10,73,76,83,90,91],"open-":17,"openmp ":73,"openvino ":73,"openvino*":73,"optional)":[74,79],"os ":[0,4,5,6,7,8,9,10,16,17,18,19,20,22,33,36,42,57,67,76,83,85,86],"os?":0,"other ":0,"over ":84,"overuse ":65,"p ":39,"package ":[0,79],"page ":64,"parallels*":83,"phpmyadmin ":90,"pktgen ":53,"platform*":9,"platform-":67,"player ":[17,18],"pod ":79,"pre-":73,"present ":65,"product ":65,"programs ":84,"project ":76,"proxy ":[79,84],"pulling ":74,"py ":26,"pytorch ":[59,73],"qemu-":15,"qingcloud ":10,"qingcloud*":10,"quotation ":65,"realvnc ":57,"record-":31,"redis ":85,"redis*":85,"redis-":85,"reference ":73,"related ":[73,74,79,88,92],"required?":0,"results ":73,"root ":56,"rpm ":47,"rpms ":0,"rules ":92,"run ":[70,71,72,73,78,79,85,88],"running ":[73,74],"samba*":[86,87],"security ":90,"see ":0,"seldon ":73,"serial ":65,"server ":[16,71,90],"server-":[57,90],"service ":84,"services*":7,"set ":[86,88,90,91],"setup ":79,"shared ":87,"shells ":84,"simple ":65,"single ":73,"software ":[0,65,81],"space ":64,"spark ":71,"spark*":71,"specific ":67,"ssh ":[15,56,57,70],"stack ":73,"start ":[57,71,85],"start/":31,"stop ":72,"stop/":31,"strong ":65,"structure ":64,"studio ":0,"submitting ":73,"successful ":91,"swarm ":74,"swupd ":[5,41,80],"system ":84,"systemd ":57,"systemd-":37,"table ":[66,67],"telem-":31,"telemetry ":0,"tensorflow ":[59,73],"tensorflow*":88,"text ":64,"tfjob)":73,"that ":0,"the ":[0,65,70,71,73,74,75,76,80,81,82,85,88,90],"this ":73,"to ":[63,72,80,87,90],"training ":73,"try ":85,"types ":67,"u ":6,"u2f ":92,"udev ":92,"uefi ":[17,18],"under ":0,"uninstalling ":81,"up ":[86,88,90,91],"update ":80,"update?":0,"updated?":0,"updating ":81,"use ":[0,65,73,79,80,85,90],"using ":[73,76,82],"usually ":0,"v*":14,"vectorization ":76,"version ":[65,73],"via ":63,"virtualbox ":16,"virtualbox*":16,"visual ":0,"vm-":17,"vmware ":[17,18,19,20],"vmware*":[17,18,19,20],"vnc ":57,"vnc-":57,"web ":[7,27,90,91],"web-":[90,91],"what ":0,"wheel ":43,"where ":0,"white ":64,"why ":0,"windows ":87,"windows*":[6,42],"with ":[73,74,75,87,91],"wordcount ":[70,71],"wordpress ":91,"wordpress*":[89,91],"words ":65,"worker ":[71,80],"workstation ":[17,18],"writing ":65,"x11 ":56,"you ":[0,91],"your ":[70,79],"yubikey*":92,"zfs*":0,activ:31,addit:16,ami:7,apach:90,api:31,archiv:77,autom:79,autoproxi:21,autospec:22,avail:0,begin:91,benchmark:73,brief:65,builder:26,bundl:[74,85,90],candid:76,capit:65,client:87,cluster:[74,79,80],code:88,colon:65,comma:65,command:85,compat:[73,82],compon:82,conf:27,configur:[74,84],contain:[72,78],contract:65,contribut:63,daemon:[70,71],databas:90,debug:82,descript:[78,79],directori:[90,91],dkm:[35,81],dlr:73,dnf:47,docker:[27,78],driver:81,engin:73,english:65,esxi:20,exampl:[64,70,71],faq:0,featur:73,fftw:76,file:72,firefox:92,format:64,friendli:65,gener:0,github:63,gui:91,guid:65,guidelin:63,hadoop:70,harden:90,hardwar:66,head:[64,65],host:86,hub:74,id:31,imag:[64,67,73,83,85],imper:65,ing:65,instal:82,instanc:72,instruct:64,iso:[16,17,19],job:73,json:46,kei:70,kubectl:[59,73],kubeflow:[59,73],kubernet:79,kvm:15,learn:88,length:64,line:75,link:64,linux:[32,81],list:64,login:91,lsblk:46,mariadb:90,mark:65,markup:64,metal:76,mixer:27,name:65,nautilu:87,navig:64,network:73,networkd:37,networkmanag:37,node:80,nomin:65,notebook:[59,73,88],notic:64,on:79,openvino:60,optim:73,option:49,organ:64,os:[4,5,7,8,9,14,15,16,17,18,19,20,52,90],overview:73,packag:0,page:64,parallel:65,patch:76,path:81,php:90,phpmyadmin:90,phrase:65,pktgen:53,plane:80,practic:80,prerequisit:[70,71,73,74,75,78,79,80,81,82,83,84,85,86,87,88,92],project:61,punctuat:65,refer:[63,68],requisit:73,resourc:[81,82],restart:31,rpm:[22,47],runtim:79,scannabl:65,section:73,server:[85,91],session:84,setup:73,sftp:56,share:86,softwar:75,spark:71,ssh:84,stack:73,step:[85,90],structur:64,support:92,swupd:30,tens:65,termin:84,text:65,tfjob:[59,73],tool:17,toolkit:82,topic:[73,74,79,88,92],troubleshoot:[78,79],tutori:77,type:67,uninstal:[73,82],verb:65,version:76,vm:83,vnc:57,voic:65,warn:64,wget:84,window:86,word:65,yubikei:92}}) \ No newline at end of file diff --git a/zh_CN/sitemap.xml b/zh_CN/sitemap.xml new file mode 100644 index 000000000..27bf9493d --- /dev/null +++ b/zh_CN/sitemap.xml @@ -0,0 +1,2 @@ + +https://docs.01.org/clearlinux/zh_CN/latest/FAQ/index.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/about.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/disclaimers.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/documentation_license.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/bare-metal-install-desktop.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/bare-metal-install-server.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/bootable-usb.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/cloud-install/aws-web.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/cloud-install/azure.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/cloud-install/gce.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/cloud-install/qingcloud.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/compatibility-check.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/index.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/install-configfile.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/virtual-machine-install/hyper-v.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/virtual-machine-install/kvm.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/virtual-machine-install/virtualbox-cl-installer.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/virtual-machine-install/vmw-player.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/virtual-machine-install/vmw-player-preconf.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/virtual-machine-install/vmware-esxi-install-cl.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/autoproxy.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/autospec.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/bundles.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/compatible-kernels.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/debug.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/ister.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/mixer.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/security.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/stateless.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/swupd.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/clear/telemetrics.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/index.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/kernel/kernel-development.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/kernel/kernel-modules.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/kernel/kernel-modules-dkms.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/architect-lifecycle.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/assign-static-ip.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/bulk-provision.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/cpu-performance.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/deploy-at-scale.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/developer-workstation.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/download-verify-decompress.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/enable-user-space.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/fix-broken-install.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/hostname.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/increase-virtual-disk-size.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/query-upstream.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/resource-limits.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/restart.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/time.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/maintenance/validate-signatures.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/network/custom-clear-container.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/network/dpdk.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/network/ipxe-install.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/network/network-bonding.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/network/openssh-server.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/network/vnc.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/stacks/dars.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/stacks/dlrs/dlrs.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/guides/stacks/greengrass.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/index.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/reference/bundles/bundles.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/reference/collaboration/collaboration.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/reference/collaboration/structure-formatting.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/reference/collaboration/writing-guide.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/reference/compatible-hardware.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/reference/image-types.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/reference/index.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/reference/system-requirements.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/apache-hadoop.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/apache-spark.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/archive/kata_migration.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/dlrs.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/docker.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/flatpak.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/fmv.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/index.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/kata.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/kubernetes.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/kubernetes-bp.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/nvidia.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/nvidia-cuda.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/parallels.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/proxy.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/redis.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/smb.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/smb-desktop.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/tensorflow-machine-learning.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/wordpress.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/wordpress/web-server-install.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/wordpress/wp-install.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/tutorials/yubikey-u2f.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/genindex.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/genindex-all.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/genindex-H.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/genindex-R.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/genindex-S.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/genindex-环.htmlhttps://docs.01.org/clearlinux/zh_CN/latest/search.html \ No newline at end of file diff --git a/zh_CN/tutorials/apache-hadoop.html b/zh_CN/tutorials/apache-hadoop.html new file mode 100644 index 000000000..a6cb762e8 --- /dev/null +++ b/zh_CN/tutorials/apache-hadoop.html @@ -0,0 +1,1280 @@ + + + + + + + + + + + + + + Apache* Hadoop* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Apache* Hadoop*

+

This tutorial walks you through the process of installing, configuring, and +running Apache Hadoop on Clear Linux* OS. The Apache Hadoop software library is a +framework for distributed processing of large data sets across clusters of +computers using simple programming models. It is designed to scale up from +single servers to thousands of machines, with each machine offering local +computation and storage.

+
+

Prerequisites

+

Before following this tutorial, you should follow the +从实时桌面安装 Clear Linux* OS to ensure you have installed Clear Linux OS.

+

Before you install any new packages, update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+

For the purposes of this tutorial, we will install Hadoop in a single machine +running both the master and slave daemons.

+
+
+

Install Apache Hadoop

+

Apache Hadoop is included in the big-data-basic bundle. To install the +framework, enter the following command:

+
sudo swupd bundle-add big-data-basic
+
+
+
+
+

Configure Apache Hadoop

+
    +
  1. To create the configuration directory, enter the following command:

    +
    sudo mkdir /etc/hadoop
    +
    +
    +
  2. +
  3. Copy the defaults from /usr/share/defaults/hadoop to +/etc/hadoop with the following command:

    +
    $ sudo cp /usr/share/defaults/hadoop/* /etc/hadoop
    +
    +
    +
    +

    注解

    +

    Since Clear Linux OS is a stateless system, you should never modify the +files under the /usr/share/defaults directory. The software +updater will overwrite those files.

    +
    +
  4. +
+

Once all the configuration files are in /etc/hadoop, we must edit +them to fit our needs. The NameNode server is the master server. It manages +the namespace of the files system and regulates the clients’ access to files. +The first file we edit, /etc/hadoop/core-site.xml, informs the Hadoop +daemon where NameNode is running.

+

In this tutorial, our NameNode runs in our localhost. Follow these steps +to set it up correctly:

+
    +
  1. Open the /etc/hadoop/core-site.xml file using the editor of your +choice and modify the file as follows:

    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    +<configuration>
    +<property>
    +<name>fs.default.name</name>
    +<value>hdfs://localhost:9000</value>
    +</property>
    +</configuration>
    +
    +
    +
  2. +
  3. Edit the /etc/hadoop/hdfs-site.xml file. This file configures the +HDFS daemons. This configuration +includes the list of permitted and excluded data nodes and the size of +said blocks. In this example, we are setting the number of block +replication to 1 from the default of 3 as follows:

    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    +<configuration>
    +<property>
    +<name>dfs.replication</name>
    +<value>1</value>
    +</property>
    +<property>
    +<name>dfs.permission</name>
    +<value>false</value>
    +</property>
    +</configuration>
    +
    +
    +
  4. +
  5. Edit the /etc/hadoop/mapred-site.xml file. This file configures +all daemons related to MapReduce: JobTracker and TaskTrackers. With +MapReduce, Hadoop can process big amounts of data in multiple systems. In +our example, we set YARN as our +runtime framework for executing MapReduce jobs as follows:

    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    +<configuration>
    +<property>
    +<name>mapreduce.framework.name</name>
    +<value>yarn</value>
    +</property>
    +</configuration>
    +
    +
    +
  6. +
  7. Edit the /etc/hadoop/yarn-site.xml file. This file configures all +daemons related to YARN: ResourceManager and NodeManager. In our +example, we implement the mapreduce_shuffle service, which is the +default as follows:

    +
    <?xml version="1.0"?>
    +<configuration>
    +<property>
    +<name>yarn.nodemanager.aux-services</name>
    +<value>mapreduce_shuffle</value>
    +</property>
    +<property>
    +<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    +<value>org.apache.hadoop.mapred.ShuffleHandler</value>
    +</property>
    +</configuration>
    +
    +
    +
  8. +
+
+
+

Configure your SSH key

+
    +
  1. Create a SSH key. If you already have one, skip this step.

    +
    sudo ssh-keygen -t rsa
    +
    +
    +
  2. +
  3. Copy the key to your authorized keys.

    +
    sudo cat /root/.ssh/id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys
    +
    +
    +
  4. +
  5. Log into the localhost. If no password prompt appears, you are ready to +run the Hadoop daemons.

    +
    sudo ssh localhost
    +
    +
    +
  6. +
+
+
+

Run the Hadoop daemons

+

With all the configuration files properly edited, we are ready to start the +daemons.

+

When we format the NameNode server, it formats the meta-data related to +data nodes. Thus, all the information on the data nodes is lost and the nodes +can be reused for new data.

+
    +
  1. Format the NameNode server with the following command:

    +
    sudo hdfs namenode -format
    +
    +
    +
  2. +
  3. Start the DFS in NameNode and DataNodes with the following command:

    +
    sudo start-dfs.sh
    +
    +
    +
  4. +
  5. The console output should be similar to:

    +
    Starting namenodes on [localhost]
    +The authenticity of host 'localhost (::1)' can't be established.
    +ECDSA key fingerprint is
    +SHA256:97e+7TnomsS9W7GjFPjzY75HGBp+f1y6sA+ZFcOPIPU.
    +Are you sure you want to continue connecting (yes/no)?
    +
    +
    +

    Enter yes to continue.

    +
  6. +
  7. Start the YARN daemons ResourceManager and NodeManager with the +following command:

    +
    sudo start-yarn.sh
    +
    +
    +
  8. +
  9. Ensure everything is running as expected with the following command:

    +
    sudo jps
    +
    +
    +
  10. +
  11. The console output should be similar to:

    +
    22674 DataNode
    +26228 Jps
    +22533 NameNode
    +23046 ResourceManager
    +22854 SecondaryNameNode
    +23150 NodeManager
    +
    +
    +
  12. +
+
+
+

Run the MapReduce wordcount example

+
    +
  1. Create the input directory.

    +
    sudo hdfs dfs -mkdir -p /user/root/input
    +
    +
    +
  2. +
  3. Copy a file from the local file system to the HDFS.

    +
    sudo hdfs dfs -copyFromLocal local-file /user/root/input
    +
    +
    +
  4. +
  5. Run the wordcount example.

    +
    sudo hadoop jar /usr/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar wordcount input output
    +
    +
    +
  6. +
  7. Read output file “part-r-00000”. This file contains the number of times +each word appears in the file.

    +
    sudo hdfs dfs -cat /user/root/output/part-r-00000
    +
    +
    +
  8. +
+

Congratulations!

+

You successfully installed and setup a single node Hadoop cluster. +Additionally, you ran a simple wordcount example.

+

Your single node Hadoop cluster is up and running!

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/apache-spark.html b/zh_CN/tutorials/apache-spark.html new file mode 100644 index 000000000..398a502e6 --- /dev/null +++ b/zh_CN/tutorials/apache-spark.html @@ -0,0 +1,1178 @@ + + + + + + + + + + + + + + Apache* Spark* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+
+
+

Apache* Spark*

+

This tutorial describes how to install, configure, and run Apache Spark on +Clear Linux* OS. Apache Spark is a fast general-purpose cluster computing system with +the following features:

+
    +
  • Provides high-level APIs in Java*, Scala*, Python*, and R*.
  • +
  • Includes an optimized engine that supports general execution graphs.
  • +
  • Supports high-level tools including Spark SQL, MLlib, GraphX, and Spark +Streaming.
  • +
+

In this tutorial, you will install Spark on a single machine running the +master daemon and a worker daemon.

+
+

Prerequisites

+

This tutorial assumes you have installed Clear Linux OS on your host system. +For detailed instructions on installing Clear Linux OS on a bare metal system, visit +the bare metal installation guide.

+

Before you install any new packages, update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+
+
+

Install Apache Spark

+

Apache Spark is included in the big-data-basic bundle. To install the +framework, enter:

+
sudo swupd bundle-add big-data-basic
+
+
+
+
+

Configure Apache Spark

+
    +
  1. Create the configuration directory with the command:

    +
    sudo mkdir /etc/spark
    +
    +
    +
  2. +
  3. Copy the default templates from /usr/share/defaults/spark to +/etc/spark with the command:

    +
    sudo cp /usr/share/defaults/spark/* /etc/spark
    +
    +
    +
    +

    注解

    +

    Since Clear Linux OS is a stateless system, you should never modify the +files under the /usr/share/defaults directory. The software +updater overwrites those files.

    +
    +
  4. +
  5. Copy the template files below to create custom configuration files:

    +
    sudo cp /etc/spark/spark-defaults.conf.template /etc/spark/spark-defaults.conf
    +sudo cp /etc/spark/spark-env.sh.template /etc/spark/spark-env.sh
    +sudo cp /etc/spark/log4j.properties.template /etc/spark/log4j.properties
    +
    +
    +
  6. +
  7. Edit the /etc/spark/spark-env.sh file and add the +SPARK_MASTER_HOST variable. Replace the example address below +with your localhost IP address. View your IP address using the +hostname -I command.

    +
    SPARK_MASTER_HOST="10.300.200.100"
    +
    +
    +
    +

    注解

    +

    This optional step enables the master’s web user interface to +view information needed later in this tutorial.

    +
    +
  8. +
  9. Edit the /etc/spark/spark-defaults.conf file and update the +spark.master variable with the SPARK_MASTER_HOST address and port 7077.

    +
    spark.master    spark://10.300.200.100:7077
    +
    +
    +
  10. +
+
+
+

Start the master server and a worker daemon

+
    +
  1. Start the master server using:

    +
    sudo /usr/share/apache-spark/sbin/./start-master.sh
    +
    +
    +
  2. +
  3. Start one worker daemon and connect it to the master using the +spark.master variable defined earlier:

    +
    sudo /usr/share/apache-spark/sbin/./start-slave.sh spark://10.300.200.100:7077
    +
    +
    +
  4. +
  5. Open an internet browser and view the worker daemon information using +the master’s IP address and port 8080:

    +
    http://10.300.200.100:8080
    +
    +
    +
  6. +
+
+
+

Run the Spark wordcount example

+
    +
  1. Run the wordcount example using a file on your local host and output the +results to a new file with the following command:

    +
    sudo spark-submit /usr/share/apache-spark/examples/src/main/python/wordcount.py ~/Documents/example_file > ~/Documents/results
    +
    +
    +
  2. +
  3. Open an internet browser and view the application information using +the master’s IP address and port 8080:

    +
    http://10.300.200.100:8080
    +
    +
    +
  4. +
  5. View the results of the wordcount application in the ~/Documents/results file.

    +
  6. +
+

Congratulations!

+

You successfully installed and set up a standalone Apache Spark cluster. +Additionally, you ran a simple wordcount example.

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/archive/kata_migration.html b/zh_CN/tutorials/archive/kata_migration.html new file mode 100644 index 000000000..68b7f2bb2 --- /dev/null +++ b/zh_CN/tutorials/archive/kata_migration.html @@ -0,0 +1,1117 @@ + + + + + + + + + + + + + + Migrate Clear Containers to Kata Containers* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Migrate Clear Containers to Kata Containers*

+

Clear Containers and Kata Containers can co-exist in the same system. +Both can be installed through the containers-virt bundle. However, we +recommend that you migrate to Kata Containers because Clear Containers is no +longer maintained and will soon be deprecated on Clear Linux* OS.

+

This guide describes how to migrate to Kata Containers and assumes that:

+
    +
  • Clear Containers is on a Docker* system.
  • +
  • Kata Containers is installed. See Kata Containers*.
  • +
+
+

Stop Clear Containers instances

+

As an unprivileged user, stop all running instances of Clear Containers:

+
for container in $(sudo docker ps -q); do sudo docker stop $container; done
+
+
+
+
+

Manually migrate customized configuration files

+

If you have made changes to your Clear Containers configuration, review +those changes and decide whether to manually apply those changes to your +Kata Containers configuration.

+

Make any required changes before continuing this process.

+
+

注解

+

You do not need to manually remove any Clear Containers packages.

+
+
+
+

Enable Kata Containers as default

+
    +
  1. Configure Docker to use the Kata Containers runtime by default.

    +
    sudo mkdir -p /etc/systemd/system/docker.service.d/
    +cat <<EOF | sudo tee /etc/systemd/system/docker.service.d/51-runtime.conf
    +[Service]
    +Environment="DOCKER_DEFAULT_RUNTIME=--default-runtime kata-runtime"
    +EOF
    +
    +
    +
  2. +
  3. Restart the Docker systemd services.

    +
    sudo systemctl daemon-reload
    +sudo systemctl restart docker
    +
    +
    +
  4. +
  5. Verify Docker is using Kata Containers.

    +
    sudo docker info | grep -i 'default runtime'
    +Default Runtime: kata-runtime
    +
    +
    +
  6. +
+
+
+

Run Kata Containers

+

Use the following command:

+
sudo docker run -ti busybox sh
+
+
+

Congratulations!

+

You’ve successfully migrated from Clear Containers to Kata Containers.

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/dlrs.html b/zh_CN/tutorials/dlrs.html new file mode 100644 index 000000000..5d58a7c8a --- /dev/null +++ b/zh_CN/tutorials/dlrs.html @@ -0,0 +1,1879 @@ + + + + + + + + + + + + + + Deep Learning Reference Stack — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Deep Learning Reference Stack

+

This guide gives examples for using the Deep Learning Reference stack to run real-world usecases, as well as benchmarking workloads for TensorFlow*, +PyTorch*, and Kubeflow* in Clear Linux* OS.

+ +
+

Overview

+

We created the Deep Learning Reference Stack to help AI developers deliver +the best experience on Intel® Architecture. This stack reduces complexity +common with deep learning software components, provides flexibility for +customized solutions, and enables you to quickly prototype and deploy Deep +Learning workloads. Use this guide to run benchmarking workloads on your +solution.

+

The Deep Learning Reference Stack is available in the following versions:

+
    +
  • Intel MKL-DNN-VNNI, which is optimized using Intel® Math Kernel Library +for Deep Neural Networks (Intel® MKL-DNN) primitives and introduces support +for Intel® AVX-512 Vector Neural Network Instructions (VNNI).
  • +
  • Intel MKL-DNN, which includes the TensorFlow framework optimized using +Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN) +primitives.
  • +
  • Eigen, which includes TensorFlow optimized for Intel® architecture.
  • +
  • PyTorch with OpenBLAS, which includes PyTorch with OpenBlas.
  • +
  • PyTorch with Intel MKL-DNN, which includes PyTorch optimized using Intel® +Math Kernel Library (Intel® MKL) and Intel MKL-DNN.
  • +
+
+

重要

+

To take advantage of the Intel® AVX-512 and VNNI functionality (including the MKL-DNN releases) with the Deep +Learning Reference Stack, you must use the following hardware:

+
    +
  • Intel® AVX-512 images require an Intel® Xeon® Scalable Platform
  • +
  • VNNI requires a 2nd generation Intel® Xeon® Scalable Platform
  • +
+
+
+

Stack features

+ +
+

注解

+

The Deep Learning Reference Stack is a collective work, and each piece of +software within the work has its own license. Please see the DLRS Terms of Use +for more details about licensing and usage of the Deep Learning Reference Stack.

+
+
+
+

Prerequisites

+
    +
  • Install Clear Linux OS on your host system
  • +
  • containers-basic bundle
  • +
  • cloud-native-basic bundle
  • +
+

In Clear Linux OS, containers-basic includes Docker*, which is required for +TensorFlow and PyTorch benchmarking. Use the swupd utility to +check if containers-basic and cloud-native-basic are +present:

+
sudo swupd bundle-list
+
+
+

To install the containers-basic or cloud-native-basic +bundles, enter:

+
sudo swupd bundle-add containers-basic cloud-native-basic
+
+
+

Docker is not started upon installation of the containers-basic +bundle. To start Docker, enter:

+
sudo systemctl start docker
+
+
+

To ensure that Kubernetes is correctly installed and configured, follow the +instructions in Kubernetes*.

+
+
+

Version compatibility

+

We validated these steps against the following software package versions:

+
    +
  • Clear Linux OS 26240 (Minimum supported version)
  • +
  • Docker 18.06.1
  • +
  • Kubernetes 1.11.3
  • +
  • Go 1.11.12
  • +
+
+

注解

+

The Deep Learning Reference Stack was developed to provide the best user +experience when executed on a Clear Linux OS host. However, as the stack runs in a +container environment, you should be able to complete the following sections of this guide on other Linux* distributions, provided they comply with the Docker*, Kubernetes* and Go* package versions listed above. Look for your distribution documentation on how to update packages and manage Docker services.

+
+
+
+
+

TensorFlow single and multi-node benchmarks

+

This section describes running the TensorFlow Benchmarks in single node. +For multi-node testing, replicate these steps for each node. These steps +provide a template to run other benchmarks, provided that they can invoke +TensorFlow.

+
+

注解

+

Performance test results for the Deep Learning Reference Stack and for this +guide were obtained using runc as the runtime.

+
+
    +
  1. Download either the Eigen or the Intel MKL-DNN Docker image +from Docker Hub.

    +
  2. +
  3. Run the image with Docker:

    +
    docker run --name <image name>  --rm -i -t <clearlinux/
    +stacks-dlrs-TYPE> bash
    +
    +
    +
    +

    注解

    +

    Launching the Docker image with the -i argument starts +interactive mode within the container. Enter the following commands in +the running container.

    +
    +
  4. +
  5. Clone the benchmark repository in the container:

    +
    git clone http://github.com/tensorflow/benchmarks -b cnn_tf_v1.12_compatible
    +
    +
    +
  6. +
  7. Execute the benchmark script:

    +
    python benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --device=cpu --model=resnet50 --data_format=NHWC
    +
    +
    +
  8. +
+
+

注解

+

You can replace the model with one of your choice supported by the +TensorFlow benchmarks.

+

If you are using an FP32 based model, it can be converted to an int8 model +using Intel® quantization tools.

+
+
+
+

PyTorch single and multi-node benchmarks

+

This section describes running the PyTorch benchmarks for Caffe2 in +single node.

+
    +
  1. Download either the PyTorch with OpenBLAS or the PyTorch with Intel +MKL-DNN Docker image from Docker Hub.

    +
  2. +
  3. Run the image with Docker:

    +
    docker run --name <image name>  --rm -i -t <clearlinux/stacks-dlrs-TYPE> bash
    +
    +
    +
    +

    注解

    +

    Launching the Docker image with the -i argument starts +interactive mode within the container. Enter the following commands in +the running container.

    +
    +
  4. +
  5. Clone the benchmark repository:

    +
    git clone https://github.com/pytorch/pytorch.git
    +
    +
    +
  6. +
  7. Execute the benchmark script:

    +
    cd pytorch/caffe2/python
    +python convnet_benchmarks.py --batch_size 32 \
    +                      --cpu \
    +                      --model AlexNet
    +
    +
    +
  8. +
+
+
+

Kubeflow multi-node benchmarks

+

The benchmark workload runs in a Kubernetes cluster. The guide uses +Kubeflow for the Machine Learning workload deployment on three nodes.

+
+

警告

+

If you choose the Intel® MKL-DNN or Intel® MKL-DNN-VNNI image, your platform +must support the Intel® AVX-512 instruction set. Otherwise, an +illegal instruction error may appear, and you won’t be able to complete this guide.

+
+
+

Kubernetes setup

+

Follow the instructions in the Kubernetes* tutorial to get set up on +Clear Linux OS. The Kubernetes community also has instructions for creating a cluster, +described in Creating a single control-plane cluster with kubeadm.

+
+
+

Kubernetes networking

+

We used flannel as the network provider for these tests. If you +prefer a different network layer, refer to the Kubernetes network documentation +described in Creating a single control-plane cluster with kubeadm for setup.

+
+
+

Kubectl

+

You can use kubectl to run commands against your Kubernetes cluster. Refer to +the Overview of kubectl for details on syntax and operations. Once you have a +working cluster on Kubernetes, use the following YAML script to start a pod with +a simple shell script, and keep the pod open.

+
    +
  1. Copy this example.yaml script to your system:

    +
    apiVersion: v1
    +kind: Pod
    +metadata:
    +  name: example-pod
    +  labels:
    +    app: ex-pod
    +spec:
    +  containers:
    +  - name: ex-pod-container
    +    image: clearlinux/stacks-dlrs-mkl:latest
    +    command: ['/bin/bash', '-c', '--']
    +    args: [ "while true; do sleep 30; done" ]
    +
    +
    +
  2. +
  3. Execute the script with kubectl:

    +
    kubectl apply –f <path-to-yaml-file>/example.yaml
    +
    +
    +
  4. +
+

This script opens a single pod. More robust solutions would create a deployment +or inject a python script or larger shell script into the container.

+
+
+

Images

+

You must add launcher.py to the Docker image to include the Deep +Learning Reference Stack and put the benchmarks repo in the correct +location. Note that this guide uses Kubeflow v0.4.0, and cannot guarantee results if you use a different version.

+

From the Docker image, run the following:

+
mkdir -p /opt
+git clone https://github.com/tensorflow/benchmarks.git /opt/tf-benchmarks
+cp launcher.py /opt
+chmod u+x /opt/*
+
+
+

Your entry point becomes: /opt/launcher.py.

+

This builds an image that can be consumed directly by TFJob from Kubeflow.

+
+
+

ksonnet*

+

Kubeflow uses ksonnet* to manage deployments, so you must install it +before setting up Kubeflow.

+

ksonnet was added to the cloud-native-basic bundle in Clear Linux OS version +27550. If you are using an older Clear Linux OS version (not recommended), you must +manually install ksonnet as described below.

+

On Clear Linux OS, follow these steps:

+
swupd bundle-add go-basic-dev
+export GOPATH=$HOME/go
+export PATH=$PATH:$GOPATH/bin
+go get github.com/ksonnet/ksonnet
+cd $GOPATH/src/github.com/ksonnet/ksonnet
+make install
+
+
+

After the ksonnet installation is complete, ensure that binary ks is +accessible across the environment.

+
+
+

Kubeflow

+

Once you have Kubernetes running on your nodes, set up Kubeflow by +following these instructions from the Getting Started with Kubeflow guide.

+
export KUBEFLOW_SRC=$HOME/kflow
+export KUBEFLOW_TAG="v0.4.1"
+export KFAPP="kflow_app"
+export K8S_NAMESPACE="kubeflow"
+
+mkdir ${KUBEFLOW_SRC}
+cd ${KUBEFLOW_SRC}
+ks init ${KFAPP}
+cd ${KFAPP}
+ks registry add kubeflow github.com/kubeflow/kubeflow/tree/${KUBEFLOW_TAG}/kubeflow
+ks pkg install kubeflow/common
+ks pkg install kubeflow/tf-training
+
+
+

Next, deploy the primary package for our purposes: tf-job-operator.

+
ks env rm default
+kubectl create namespace ${K8S_NAMESPACE}
+ks env add default --namespace "${K8S_NAMESPACE}"
+ks generate tf-job-operator tf-job-operator
+ks apply default -c tf-job-operator
+
+
+

This creates the CustomResourceDefinition (CRD) endpoint to launch a TFJob.

+
+
+

Run a TFJob

+
    +
  1. Get the ksonnet registries for deploying TFJobs from dlrs-tfjob.

    +
  2. +
  3. Install the TFJob components as follows:

    +
    ks registry add dlrs-tfjob github.com/clearlinux/dockerfiles/tree/master/stacks/dlrs/kubeflow/dlrs-tfjob
    +
    +ks pkg install dlrs-tfjob/dlrs-bench
    +
    +
    +
  4. +
  5. Export the image name to use for the deployment:

    +
    export DLRS_IMAGE=<docker_name>
    +
    +
    +
    +

    注解

    +

    Replace <docker_name> with the image name you specified in previous steps.

    +
    +
  6. +
  7. Generate Kubernetes manifests for the workloads and apply them using these +commands:

    +
    ks generate dlrs-resnet50 dlrsresnet50 --name=dlrsresnet50 --image=${DLRS_IMAGE}
    +ks generate dlrs-alexnet dlrsalexnet --name=dlrsalexnet --image=${DLRS_IMAGE}
    +ks apply default -c dlrsresnet50
    +ks apply default -c dlrsalexnet
    +
    +
    +
  8. +
+

This replicates and deploys three test setups in your Kubernetes cluster.

+
+
+

Results of running this section

+

You must parse the logs of the Kubernetes pod to retrieve performance +data. The pods will still exist post-completion and will be in +‘Completed’ state. You can get the logs from any of the pods to inspect the +benchmark results. More information about Kubernetes logging is available +in the Kubernetes Logging Architecture documentation.

+
+
+
+

TensorFlow Training (TFJob) with Kubeflow and DLRS

+

A TFJob is Kubeflow’s custom resource used to run TensorFlow training jobs on Kubernetes. This example shows how to use a TFJob within the DLRS container.

+

Pre-requisites:

+ +
    +
  1. Deploying Kubeflow with kfctl/kustomize in Clear Linux OS
  2. +
+
+

注解

+

This example proposes a Kubeflow installation with the binary kfctl maintained by Arrikto. Please download the kfctl tarball to complete the following steps

+
+
    +
  1. Download, untar and add to your PATH if necessary

    +
    KFCTL_URL="https://github.com/kubeflow/kubeflow/releases/download/v0.6.1/kfctl_v0.6.1_linux.tar.gz"
    +wget -P ${KFCTL_URL} ${KFCTL_PATH}
    +tar -C ${KFCTL_PATH} -xvf ${KFCTL_PATH}/kfctl_v${kfctl_ver}_linux.tar.gz
    +export PATH=$PATH:${KFCTL_PATH}
    +
    +
    +
  2. +
  3. Install MetalLB

    +
    kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.1/manifests/metallb.yaml
    +
    +
    +
  4. +
  5. Install Kubeflow resource and TFJob operators

    +
    # Env variables needed for your deployment
    +export KFAPP="<your choice of application directory name>"
    +export CONFIG="https://raw.githubusercontent.com/kubeflow/kubeflow/master/bootstrap/config/kfctl_existing_arrikto.yaml"
    +
    +kfctl init ${KFAPP} --config=${CONFIG} -V
    +cd ${KFAPP}
    +
    +# deploy Kubeflow:
    +kfctl generate k8s -V
    +kfctl apply k8s -V
    +
    +
    +
  6. +
  7. List the resources

    +

    Deployment takes around 15 minutes (or more depending on the hardware) to be ready to use. After that you can use kubectl to list all the Kubeflow resources deployed and monitor their status.

    +
    kubectl get pods -n kubeflow
    +
    +
    +
  8. +
+
+

Submitting TFJobs

+

We provide several DLRS TFJob examples that use the Deep Learning Reference Stack as the base image for creating the containers to run training workloads in your Kubernetes cluster.

+
+
+

Customizing a TFJob

+

A TFJob is a resource with a YAML representation like the one below. Edit to use the DLRS image containing the code to be executed and modify the command for your own training code.

+

If you’d like to modify the number and type of replicas, resources, persistent volumes and environment variables, please refer to the Kubeflow documentation

+
apiVersion: kubeflow.org/v1beta2
+kind: TFJob
+metadata:
+  generateName: tfjob
+  namespace: kubeflow
+spec:
+  tfReplicaSpecs:
+    PS:
+      replicas: 1
+      restartPolicy: OnFailure
+      template:
+        spec:
+          containers:
+          - name: tensorflow
+            image: dlrs-image
+            command:
+              - python
+              - -m
+              - trainer.task
+              - --batch_size=32
+              - --training_steps=1000
+    Worker:
+      replicas: 3
+      restartPolicy: OnFailure
+      template:
+        spec:
+          containers:
+          - name: tensorflow
+            image: dlrs-image
+            command:
+              - python
+              - -m
+              - trainer.task
+              - --batch_size=32
+              - --training_steps=1000
+    Master:
+          replicas: 1
+          restartPolicy: OnFailure
+          template:
+            spec:
+              containers:
+              - name: tensorflow
+                image: dlrs-image
+                command:
+                  - python
+                  - -m
+                  - trainer.task
+                  - --batch_size=32
+                  - --training_steps=1000
+
+
+

For more information, please refer to: +* Distributed TensorFlow +* TFJobs

+
+
+
+

PyTorch Training (PyTorch Job) with Kubeflow and DLRS

+

A PyTorch Job is Kubeflow’s custom resource used to run PyTorch training jobs on Kubernetes. This example builds on the framework set up in the previous example.

+

Pre-requisites:

+
    +
  • A running Kubernetes* cluster
  • +
  • Please follow steps 1 - 5 of the previous example to set up your environment.
  • +
+
+

Submitting PyTorch Jobs

+

We provide several DLRS PytorchJob examples that use the Deep Learning Reference Stack as the base image for creating the container(s) that will run training workloads in your Kubernetes cluster. +Select one form the list below:

+
+
+
+

Using Kubeflow Seldon and OpenVINO* with the Deep Learning Reference Stack

+

Seldon Core is an open source platform for deploying machine learning models on a Kubernetes cluster. Seldon Core is supported in the DLRS V4.0 release.

+
+

Pre-requisites

+ +
+

注解

+

Instead of using Arrikto’s configuration manifest as shown in the preceeding example, you should use the manifest provided by Istio, for this example, as Seldon deployments depend on it.

+
+
    +
  1. Install deployment tools

    +
    INSTALL_DIR=$HOME/install_dir
    +BIN_DIR=${INSTALL_DIR}/bin
    +SRC_DIR=${INSTALL_DIR}/source
    +export PATH=${BIN_DIR}:$PATH
    +
    +mkdir -p ${BIN_DIR} && mkdir ${SRC_DIR}
    +cd ${SRC_DIR}
    +
    +
    +
  2. +
  3. Install Helm*

    +
    wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz && tar xf helm-v2.14.3-linux-amd64.tar.gz
    +mv linux-amd64/helm ${BIN_DIR}/helm
    +
    +
    +
  4. +
  5. Clean the environment

    +
    rm -rf ${SRC_DIR}/*
    +
    +
    +
  6. +
  7. Prepare the DLRS image

    +

    The DLRS base image needs to be rebuilt with the Dockerfile_openvino_base to add Seldon and the OpenVINO inference engine.

    +
    docker build -f Dockerfile_openvino_base -t dlrs_openvino_base:0.1 .
    +
    +
    +
  8. +
  9. Mount pre-trained models into a persistent volume

    +

    This will also apply all PV manifests to the cluster

    +
    kubectl apply -f storage/pv-volume.yaml
    +kubectl apply -f storage/model-store-pvc.yaml
    +kubectl apply -f storage/pv-pod.yaml
    +
    +
    +
  10. +
  11. Start a shell for the container used as pv:

    +
    kubectl exec -it hostpath-pvc -- /bin/bash
    +
    +
    +
  12. +
  13. Save pre-trained models

    +

    Now that you’re inside the running container, fetch your pre-trained models and save them at /opt/ml

    +
    root@hostpath-pvc:/# cd /opt/ml
    +root@hostpath-pvc:/# # Copy your models here
    +root@hostpath-pvc:/# # exit
    +
    +
    +
  14. +
  15. Deploy the model server

    +

    Now you’re ready to deploy the model server using the Helm chart provided.

    +
    helm install -- name=seldonov-model-server \
    +   --namespace kubeflow \
    +   --set openvino.image=dlrs_openvino_base:0.1 \
    +   --set openvino.model.path=/opt/ml/<models_directory> \
    +   --set openvino.model.name=<model_name> \
    +   --set openvino.model.input=data \
    +   --set openvino.model.output=prob
    +   dlrs-seldon/helm/seldon-model-server
    +
    +
    +
  16. +
+
+
+
+

Using the Intel® OpenVINO Model Optimizer

+

The Intel OpenVINO toolkit has two primary tools for deep learning, the inference engine and the model optimizer. The inference engine is integrated into the Deep Learning Reference Stack. It is better to use the model optimizer after training the model, and before inference begins. This example will explain how to use the model optimizer by going through a test case with a pre-trained TensorFlow model.

+

This example uses resources found in the following OpenVino Toolkit documentation.

+

Converting a TensorFlow Model

+

Converting TensorFlow Object Detection API Models

+

In this example, you will:

+
    +
  • Download a TensorFlow model
  • +
  • Clone the Model Optimizer
  • +
  • Install Prerequisites
  • +
  • Run the Model Optimizer
  • +
+
    +
  1. Download a TensorFlow model

    +

    We will be using an OpenVINO supported topology with the Model Optimizer. We will use a TensorFlow Inception V2 frozen model.

    +

    Navigate to the OpenVINO TensorFlow Model page. Then scroll down to the second section titled “Supported Frozen Topologies from TensorFlow Object Detection Models Zoo” and download “SSD Inception V2 COCO.”

    +

    Unpack the file into your chosen working directory. For example, if the tar file is in your Downloads folder and you have navigated to the directory you want to extract it into, run:

    +
    tar -xvf ~/Downloads/ssd_inception_v2_coco_2018_01_28.tar.gz
    +
    +
    +
  2. +
  3. Clone the Model Optimizer

    +

    Next we need the model optimizer directory, named dldt. This example assumes the parent directory is on the same level as the model directory, ie:

    +
    +--Working_Directory
    +   +-- ssd_inception_v2_coco_2018_01_28
    +   +-- dldt
    +
    +
    +

    To clone the Model Optimizer, run this from inside the working directory:

    +
    git clone https://github.com/opencv/dldt.git
    +
    +
    +

    If you explore the dldt directory, you’ll see both the inference engine and the model optimizer. We are only concerned with the model optimizer at this stage. Navigating into the model optimizer folder you’ll find several python scripts and text files. These are the scripts you call to run the model optimizer.

    +
  4. +
  5. Install Prerequisites for Model Optimizer

    +

    Install the Python packages required to run the model optimizer by running the script dldt/model-optimizer/install_prerequisites/install_prerequisites_tf.sh.

    +
    cd dldt/model-optimizer/install_prerequisites/
    +./install_prerequisites_tf.sh
    +cd ../../..
    +
    +
    +
  6. +
  7. Run the Model Optimizer

    +

    Running the model optimizer is as simple as calling the appropriate script, however there are many configuration options that are explainedin the documentation

    +
    python dldt/model-optimizer/mo_tf.py \
    +--input_model=ssd_inception_v2_coco_2018_01_28/frozen_inference_graph.pb \
    +--tensorflow_use_custom_operations_config dldt/model-optimizer/extensions/front/tf/ssd_v2_support.json \
    +--tensorflow_object_detection_api_pipeline_config ssd_inception_v2_coco_2018_01_28/pipeline.config \
    +--reverse_input_channels
    +
    +
    +

    You should now see three files in your working directory, frozen_inference_graph.bin, frozen_inference_graph.mapping, and frozen_inference_graph.xml. These are your new models in the Intermediate Representation (IR) format and they are ready for use in the OpenVINO Inference Engine.

    +
  8. +
+
+
+

Using the OpenVino Inference Engine

+

This example walks through the basic instructions for using the inference engine.

+
    +
  1. Starting the Model Server

    +

    The process is similar to how we start Jupter notebooks on our containers

    +

    Run this command to spin up a OpenVino model fetched from GCP

    +
    docker run -p 8000:8000 stacks-tensorflow-mkl:latest bash -c ". /workspace/scripts/serve.sh && ie_serving model --model_name resnet --model_path gs://intelai_public_models/resnet_50_i8 --port 8000"
    +
    +
    +

    Once the server is setup, use a grpc client to communicate with served model:

    +
    git clone https://github.com/IntelAI/OpenVINO-model-server.git
    +cd OpenVINO-model-server
    +pip install -q -r OpenVINO-model-server/example_client/client_requirements.txt
    +pip install --user -q -r OpenVINO-model-server/example_client/client_requirements.txt
    +cat OpenVINO-model-server/example_client/client_requirements.txt
    +cd OpenVINO-model-server/example_client
    +
    +python jpeg_classification.py --images_list input_images.txt --grpc_address localhost --grpc_port 8000 --input_name data --output_name prob --size 224 --model_name resnet
    +
    +
    +

    The results of these commands will look like this:

    +
    start processing:
    +       Model name: resnet
    +       Images list file: input_images.txt
    +images/airliner.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0
    +Processing time: 97.00 ms; speed 2.00 fps 10.35
    +Detected: 404  Should be: 404
    +images/arctic-fox.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0
    +Processing time: 16.00 ms; speed 2.00 fps 63.89
    +Detected: 279  Should be: 279
    +images/bee.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0
    +Processing time: 14.00 ms; speed 2.00 fps 69.82
    +Detected: 309  Should be: 309
    +images/golden_retriever.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0
    +Processing time: 13.00 ms; speed 2.00 fps 75.22
    +Detected: 207  Should be: 207
    +images/gorilla.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0
    +Processing time: 11.00 ms; speed 2.00 fps 87.24
    +Detected: 366  Should be: 366
    +images/magnetic_compass.jpeg (1, 3, 224, 224) ; data range: 0.0 : 247.0
    +Processing time: 11.00 ms; speed 2.00 fps 91.07
    +Detected: 635  Should be: 635
    +images/peacock.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0
    +Processing time: 9.00 ms; speed 2.00 fps 110.1
    +Detected: 84  Should be: 84
    +images/pelican.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0
    +Processing time: 10.00 ms; speed 2.00 fps 103.63
    +Detected: 144  Should be: 144
    +images/snail.jpeg (1, 3, 224, 224) ; data range: 0.0 : 248.0
    +Processing time: 10.00 ms; speed 2.00 fps 104.33
    +Detected: 113  Should be: 113
    +images/zebra.jpeg (1, 3, 224, 224) ; data range: 0.0 : 255.0
    +Processing time: 12.00 ms; speed 2.00 fps 83.04
    +Detected: 340  Should be: 340
    +Overall accuracy= 100.0 %
    +Average latency= 19.8 ms
    +
    +
    +
  2. +
+
+
+

Use Jupyter Notebook

+

This example uses the PyTorch with OpenBLAS container image. After it is +downloaded, run the Docker image with -p to specify the shared port +between the container and the host. This example uses port 8888.

+
docker run --name pytorchtest --rm -i -t -p 8888:8888 clearlinux/stacks-pytorch-oss bash
+
+
+

After you start the container, launch the Jupyter Notebook. This +command is executed inside the container image.

+
jupyter notebook --ip 0.0.0.0 --no-browser --allow-root
+
+
+

After the notebook has loaded, you will see output similar to the following:

+
To access the notebook, open this file in a browser: file:///.local/share/jupyter/runtime/nbserver-16-open.html
+Or copy and paste one of these URLs:
+http://(846e526765e3 or 127.0.0.1):8888/?token=6357dbd072bea7287c5f0b85d31d70df344f5d8843fbfa09
+
+
+

From your host system, or any system that can access the host’s IP address, +start a web browser with the following. If you are not running the browser on +the host system, replace 127.0.0.1 with the IP address of the host.

+
http://127.0.0.1:8888/?token=6357dbd072bea7287c5f0b85d31d70df344f5d8843fbfa09
+
+
+

Your browser displays the following:

+
+Jupyter Notebook +
+

Figure 1: Jupyter Notebook

+

To create a new notebook, click New and select Python 3.

+
+Create a new notebook +
+

Figure 2: Create a new notebook

+

A new, blank notebook is displayed, with a cell ready for input.

+
+New blank notebook +
+

To verify that PyTorch is working, copy the following snippet into the blank +cell, and run the cell.

+
from __future__ import print_function
+import torch
+x = torch.rand(5, 3)
+print(x)
+
+
+
+Sample code snippet +
+

When you run the cell, your output will look something like this:

+
+code output +
+

You can continue working in this notebook, or you can download existing +notebooks to take advantage of the Deep Learning Reference Stack’s optimized +deep learning frameworks. Refer to Jupyter Notebook for details.

+
+
+

Uninstallation

+

To uninstall the Deep Learning Reference Stack, you can choose to stop the +container so that it is not using system resources, or you can stop the +container and delete it to free storage space.

+

To stop the container, execute the following from your host system:

+
    +
  1. Find the container’s ID

    +
    docker container ls
    +
    +
    +

    This will result in output similar to the following:

    +
    CONTAINER ID        IMAGE                        COMMAND               CREATED             STATUS              PORTS               NAMES
    +e131dc71d339        clearlinux/stacks-dlrs-oss   "/bin/sh -c 'bash'"   23 seconds ago      Up 21 seconds                           oss
    +
    +
    +
  2. +
  3. You can then use the ID or container name to stop the container. This example +uses the name “oss”:

    +
    docker container stop oss
    +
    +
    +
  4. +
  5. Verify that the container is not running

    +
    docker container ls
    +
    +
    +
  6. +
  7. To delete the container from your system you need to know the Image ID:

    +
    docker images
    +
    +
    +

    This command results in output similar to the following:

    +
    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
    +clearlinux/stacks-dlrs-oss   latest              82757ec1648a        4 weeks ago         3.43GB
    +clearlinux/stacks-dlrs-mkl   latest              61c178102228        4 weeks ago         2.76GB
    +
    +
    +
  8. +
  9. To remove an image use the image ID:

    +
    docker rmi 82757ec1648a
    +
    +
    +
    # docker rmi 827
    +Untagged: clearlinux/stacks-dlrs-oss:latest
    +Untagged: clearlinux/stacks-dlrs-oss@sha256:381f4b604537b2cb7fb5b583a8a847a50c4ed776f8e677e2354932eb82f18898
    +Deleted: sha256:82757ec1648a906c504e50e43df74ad5fc333deee043dbfe6559c86908fac15e
    +Deleted: sha256:e47ecc039d48409b1c62e5ba874921d7f640243a4c3115bb41b3e1009ecb48e4
    +Deleted: sha256:50c212235d3c33a3c035e586ff14359d03895c7bc701bb5dfd62dbe0e91fb486
    +
    +
    +

    Note that you can execute the docker rmi command using only the first few characters of the image ID, provided they are unique on the system.

    +
  10. +
  11. Once you have removed the image, you can verify it has been deleted with:

    +
    docker images
    +
    +
    +
  12. +
+
+
+

Compiling AIXPRT with OpenMP on DLRS

+

To compile AIXPRT for DLRS, you will have to get the community edition of AIXPRT and update the compile_AIXPRT_source.sh file.AIXPRT utilizes +build configuration files, so to build AIXPRT on the image, copy, the build files from the base image, this can be done by adding these commands +to the end of the stacks-tensorflow-mkl dockerfile:

+
+
COPY --from=base /dldt/inference-engine/bin/intel64/Release/ /usr/local/lib/openvino/tools/
+COPY --from=base /dldt/ /dldt/
+COPY ./airxprt/ /workspace/aixprt/
+RUN ./aixprt/install_deps.sh
+RUN ./aixprt/install_aixprt.sh
+
+
+
+

AIXPRT requires OpenCV. On Clear Linux OS, the OpenCV bundle also installs the DLDT components. To use AIXPRT in the DLRS environment you need to either remove the shared libraries for DLDT from /usr/lib64 before you run the tests, or ensure that the DLDT components in the /usr/local/lib are being used for AIXPRT. This can be achieved using adding LD_LIBRARY_PATH environment variable before testing.

+
+
export LD_LIBRARY_PATH=/usr/local/lib
+
+
+
+

The updates to the AIXPRT community edition have been captured in the diff file compile_AIXPRT_source.sh.patch. The core of these changes relate to the version of model files(2019_R1) we download from the OpenCV open model zoo and location of the build files, which in our case is /dldt. Please refer to the patch files and make changes as necessary to the compile_AIXPRT_source.sh file as required for your environment.

+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/docker.html b/zh_CN/tutorials/docker.html new file mode 100644 index 000000000..594bcb369 --- /dev/null +++ b/zh_CN/tutorials/docker.html @@ -0,0 +1,1253 @@ + + + + + + + + + + + + + + Docker* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Docker*

+

Clear Linux* OS supports multiple containerization platforms, including a Docker +solution. Clear Linux OS has many unique features including a minimal default +installation, which makes it compelling to use as a host for container +workloads, management, and orchestration.

+

This tutorial covers:

+ +
+

注解

+

This tutorial focuses on the installaton of the Docker ecosystem. +If you want to use Clear Linux OS as a Docker container image, refer to the +official Clear Linux OS container image +published on Docker* Hub +and our guide to 根据 Docker 容器映像构建一个自定义 Clear Linux* OS.

+
+
+

Prerequisites

+

This tutorial assumes you have installed Clear Linux OS on your host system. +For detailed instructions on installing Clear Linux OS on a bare metal system, follow +the bare metal installation instructions.

+

Before you install any new packages, update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+

Additionally, you should have:

+
    +
  • A basic understanding of Linux* and Docker.
  • +
  • Clear Linux OS environment that has transparent network access to the Internet. +If you are behind a HTTP proxy server, in a corporate setting for example, +please refer to the Docker proxy instructions .
  • +
+
+
+

Install the containers-basic bundle

+

Software in Clear Linux OS is offered in the form of 可用的捆绑包 to provide a +complete function. The containers-basic provides all the required software +packages to run Docker images as containers.

+
    +
  1. First, install the containers-basic bundle by running this +swupd command:

    +
    sudo swupd bundle-add containers-basic
    +
    +
    +
  2. +
  3. Start the Docker daemon through systemd manager by running this command:

    +
    sudo systemctl start docker
    +
    +
    +

    If you want Docker to start automatically on boot, enable the +systemd service by running this command:

    +
    sudo systemctl enable docker
    +
    +
    +
  4. +
  5. Finally, verify docker has been installed by running this +command and checking the version output for both client and server:

    +
    sudo docker version
    +
    +
    +
  6. +
+

Congratulations! At this point, you have a working installation of Docker +on Clear Linux OS. You are ready to start using container images on your system.

+
+
+

Integration with Kata Containers* (optional)

+

Kata Containers, is an open source project aiming to increase security +of containers by using a hardware-backed virtual machine container runtime +rather than software namespace containers that are provided by the standard +Docker runc runtime.

+

Clear Linux OS provides easy integration of the kata-runtime with Docker. +More information on installing and using the kata-runtime may be found at Kata Containers*.

+
+

注解

+

The remaining sections of this tutorial are standard to Docker setup +and configuration. If you are familiar with Docker basics, you do not +need to continue reading. The following sections are provided here for +sake of completeness.

+
+
+
+

Additional Docker configuration

+

Perform additional Docker daemon configuration via a configuration file +typically located at /etc/docker/daemon.json. Clear Linux OS features a +无状态 system so the configuration file daemon.json does +NOT exist by default.

+
    +
  1. Create the daemon.json by running this command:

    +
    sudo touch /etc/docker/daemon.json
    +
    +
    +
    +

    注解

    +

    Refer to the Docker documentation on daemon configuration for the +full list of available configuration options and examples.

    +
    +
  2. +
  3. For production systems, we follow Docker’s recommendation to use the +OverlayFS storage driver overlay2, shown below:

    +
    {
    +   "storage-driver": "overlay2"
    +}
    +
    +
    +
    +

    注解

    +

    A testing version is found in Docker Device Mapper storage driver. +If using this storage driver, a warning message may appear: “usage of +loopback devices is strongly discouraged for production use”.

    +
    +
  4. +
  5. Save and close daemon.json.

    +
  6. +
  7. Once you’ve made any required changes, be sure to restart the +Docker daemon through systemd manager by running this command:

    +
    sudo systemctl restart docker
    +
    +
    +
  8. +
+
+
+

Pulling and running an image from Docker Hub

+

Docker Hub is a publically available container image repository which +comes pre-configured with Docker. In the example below we will pull and run +an the official Docker image for nginx*, an open source reverse proxy server.

+
    +
  1. First, pull a container image from Docker Hub using the +docker pull command. Download the latest nginx* Docker +container image by running this command:

    +
    sudo docker pull nginx
    +
    +
    +
  2. +
  3. Create and launch a new container using the docker run +command. Launch a nginx container by running this command:

    +
    sudo docker run --name test-nginx -d -p 8080:80 nginx
    +
    +
    +
    +

    注解

    +

    Below is an explanation of switches used in the command above. For +detailed docker run switches and syntax, refer to the +Docker Documentation .

    +
      +
    • The –name switch lets you provide a friendly name to +target the container for future operations
    • +
    • The -d switch launches the container in the background
    • +
    • The -p switch allows the container’s HTTP port (80) to be +accessible from the Clear Linux OS host on port 8080
    • +
    +
    +
  4. +
  5. You can access the Welcome to Nginx! splash page running in the container +by browsing to http://127.0.0.1:8080 or by running this curl +command from your Clear Linux OS machine:

    +
    curl 127.0.0.1:8080
    +
    +
    +
  6. +
  7. Finally, stop and delete the nginx container by running the +docker stop and docker rm commands.

    +
    sudo docker stop test-nginx
    +sudo docker rm test-nginx
    +
    +
    +
  8. +
+

Congratulations! At this point, you have successfully pulled a nginx +container image from Docker Hub and have run an example container.

+
+
+

Creating a Docker swarm cluster

+

Clusters of Docker hosts are referred to as swarms.

+

The process in this tutorial can be repeated to install Docker on multiple +Clear Linux OS hosts with the intent to form a Docker swarm cluster.

+

The Docker documentation on swarm key concepts and +Docker documentation on creating a swarm can be referenced +for further instructions on setting up a swarm.

+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/flatpak.html b/zh_CN/tutorials/flatpak.html new file mode 100644 index 000000000..0e3b60daf --- /dev/null +++ b/zh_CN/tutorials/flatpak.html @@ -0,0 +1,1160 @@ + + + + + + + + + + + + + + Flatpak* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Flatpak*

+

Flatpak is a framework for building and distributing desktop apps on +Linux*. It allows you to build a single app and install it on different +distributions of Linux. Flatpak apps are available through Flathub or the +Clear Linux Store.

+

This tutorial shows how to install a Flatpak app on Clear Linux OS using Gnome* Software +and the command line.

+
+

Prerequisites

+
    +
  • Clear Linux OS installed on host system

    +

    Refer to Get started for installation instructions.

    +
  • +
  • desktop-autostart bundle installed

    +

    Flatpak is included via desktop, which is included in the +desktop-autostart bundle. The Flathub repository is pre-configured when +the desktop-autostart bundle is installed.

    +

    Install the desktop-autostart bundle with the following command:

    +
    sudo swupd bundle-add desktop-autostart
    +
    +
    +
  • +
+
+
+

Install a Flatpak app with Gnome Software

+

Clear Linux OS desktop comes with Gnome Software installed. Flatpak apps can be +installed from within Gnome Software.

+
    +
  1. Launch Gnome Software from your desktop.

    +
  2. +
  3. Search for the Flatpak app that you want to install, as shown in Figure 1.

    +
    +Searching for Filezilla app in Gnome Software +

    Figure 1: Searching for Filezilla app in Gnome Software

    +
    +
  4. +
  5. When you find the app you want to install, click it to view application +details.

    +
  6. +
  7. On the app detail page, click the Install button, as shown in +Figure 2.

    +
    +Filezilla Flatpak detail page in Gnome Software +

    Figure 2: Filezilla Flatpak detail page in Gnome Software

    +
    +
  8. +
  9. After installation is complete, you will see the new application in your +Gnome applications list, as shown in Figure 3.

    +
    +Newly installed Filezilla application +

    Figure 3: Newly installed Filezilla application

    +
    +
  10. +
  11. Click the application icon to launch the application.

    +
  12. +
+
+
+

Install a Flatpak with the command line

+

Both Flathub and the Clear Linux Store provide the command line instructions for +installing a Flatpak. Figure 4 shows the command line instructions to install +Filezilla from the Clear Linux Store:

+
+Command line instructions to install Filezilla from the Clear Linux Store +

Figure 4: Command line instructions to install Filezilla from the Clear Linux Store

+
+

In this example, we install Filezilla.

+
    +
  1. Open a terminal and enter the install command for the desired app:

    +
    flatpak install flathub org.filezillaproject.Filezilla
    +
    +
    +

    You may be prompted to select which repository to use:

    +
    Looking for matches…
    +Remote ‘flathub’ found in multiple installations:
    +
    +   1) system
    +   2) user
    +
    +Which do you want to use (0 to abort)? [0-2]: 2
    +
    +org.filezillaproject.Filezilla permissions:
    +    ipc      network              ssh-auth             wayland      x11
    +    dri      file access [1]      dbus access [2]
    +
    +    [1] host, xdg-run/dconf, ~/.config/dconf:ro
    +    [2] ca.desrt.dconf, org.freedesktop.Notifications, org.freedesktop.PowerManagement,
    +        org.gnome.SessionManager
    +
    +
    +        ID                                       Arch      Branch    Remote    Download
    + 1. [] org.filezillaproject.Filezilla           x86_64    stable    flathub   11.5 MB / 11.5 MB
    + 2. [] org.filezillaproject.Filezilla.Locale    x86_64    stable    flathub    4.6 kB / 3.8 MB
    +
    +Installation complete.
    +
    +
    +
  2. +
  3. After installation, run the application with the following command:

    +
    flatpak run org.filezillaproject.Filezilla
    +
    +
    +
  4. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/fmv.html b/zh_CN/tutorials/fmv.html new file mode 100644 index 000000000..76d005043 --- /dev/null +++ b/zh_CN/tutorials/fmv.html @@ -0,0 +1,1346 @@ + + + + + + + + + + + + + + Function multi-versioning — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Function multi-versioning

+

CPU architectures often gain interesting new instructions as they evolve but +application developers find it difficult to take advantage of those +instructions. The reluctance to lose backward-compatibility is one of the +main roadblocks slowing developers from using advancements in newer computing +architectures. FMV, which first appeared +in GCC 4.8, is a way to have multiple implementations of a function, each +using a different architecture specialized instruction-set extensions. GCC +6 introduces changes to FMV to make it even easier to bring architecture- +based optimizations to the application code.

+

In this tutorial we will use FMV on general code and on +FFT library code (FFTW). Upon completing the +tutorial, you will be able to use this technology on your code and use the +libraries to deploy architecture-based optimizations to your application code.

+
+

Install and configure a Clear Linux OS host on bare metal

+

First, follow our guide to 从实时桌面安装 Clear Linux* OS. Once the bare +metal installation and initial configuration are complete, add the +desktop-dev bundle to the system. desktop-dev: contains the necessary +development tools like GCC and Perl*.

+

To install the bundles, run the following command in the $HOME +directory:

+
sudo swupd bundle-add desktop-dev
+
+
+
+
+

Detect loop vectorization candidates

+

Now, we need to detect the loop vectorization candidates to be cloned for +multiple platforms with FMV. As an example, we will use the following +simple C code:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
 #include <stdio.h>
+ #include <stdlib.h>
+ #include <sys/time.h>
+ #define MAX 1000000
+
+ int a[256], b[256], c[256];
+
+ void foo(){
+     int i,x;
+     for (x=0; x<MAX; x++){
+         for (i=0; i<256; i++){
+             a[i] = b[i] + c[i];
+         }
+     }
+ }
+
+
+ int main(){
+     foo();
+     return 0;
+ }
+
+
+

Save the example code as example.c in the current directory and build +with the following flags:

+
gcc -O3  -fopt-info-vec  example.c -o example
+
+
+

The build generates the following output:

+
example.c:11:9: note: loop vectorized
+example.c:11:9: note: loop vectorized
+
+
+

The output shows that line 11 is a good candidate for vectorization:

+
for (i=0; i<256; i++){
+    a[i] = b[i] + c[i];
+
+
+
+
+

Generate the FMV patch

+

To generate the FMV patch with the make-fmv-patch project, we +must clone the project and generate a log file with the loop vectorized +information:

+
git clone https://github.com/clearlinux/make-fmv-patch.git
+gcc -O3  -fopt-info-vec  example.c -o example &> log
+
+
+

To generate the patch files, execute:

+
perl ./make-fmv-patch/make-fmv-patch.pl log .
+
+
+

The make-fmv-patch.pl script takes two arguments: <buildlog> and +<sourcecode>. Replace <buildlog> and <sourcecode> with the proper +values and execute:

+
perl make-fmv-patch.pl <buildlog> <sourcecode>
+
+
+

The command generates the following example.c.patch patch:

+
--- ./example.c 2017-09-27 16:05:42.279505430 +0000
++++ ./example.c~    2017-09-27 16:19:11.691544026 +0000
+@@ -5,6 +5,7 @@
+
+ int a[256], b[256], c[256];
+
++__attribute__((target_clones("avx2","arch=atom","default")))
+ void foo(){
+     int i,x;
+     for (x=0; x<MAX; x++){
+
+
+

We recommend you use the make-fmv-patch script to add the attribute +generating the target clones on the function foo. Thus, we can have the +following code:

+
#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+#define MAX 1000000
+
+int a[256], b[256], c[256];
+
+__attribute__((target_clones("avx2","arch=atom","default")))
+void foo(){
+    int i,x;
+    for (x=0; x<MAX; x++){
+        for (i=0; i<256; i++){
+            a[i] = b[i] + c[i];
+        }
+    }
+}
+
+
+int main(){
+    foo();
+    return 0;
+}
+
+
+

Changing the value of the $avx2 variable, we can change the target +clones when adding the patches or in the make-fmv-patch.pl script:

+
my $avx2 = '__attribute__((target_clones("avx2","arch=atom","default")))'."\n";
+
+
+

Compile the code again with FMV and add the option to analyze the objdump +log:

+
gcc -O3 example.c -o example -g
+objdump -S example | less
+
+
+

You can see the multiple clones of the foo function:

+
foo
+foo.avx2.0
+foo.arch_atom.1
+
+
+

The cloned functions use AVX2 registers and vectorized instructions. To +verify, enter the following commands:

+
vpaddd (%r8,%rax,1),%ymm0,%ymm0
+vmovdqu %ymm0,(%rcx,%rax,1)
+
+
+
+
+

FFT project example using FFTW

+

To follow the same approach with a package like FFTW, we must use the +-fopt-info-vec flag to get a build log file similar to:

+
~/make-fmv-patch/make-fmv-patch.pl results/build.log fftw-3.3.6-pl2/
+
+patching fftw-3.3.6-pl2/libbench2/verify-lib.c @ lines (36 114 151 162 173 195 215 284)
+patching fftw-3.3.6-pl2/tools/fftw-wisdom.c @ lines (150)
+patching fftw-3.3.6-pl2/libbench2/speed.c @ lines (26)
+patching fftw-3.3.6-pl2/tests/bench.c @ lines (27)
+patching fftw-3.3.6-pl2/libbench2/util.c @ lines (181)
+patching fftw-3.3.6-pl2/libbench2/problem.c @ lines (229)
+patching fftw-3.3.6-pl2/tests/fftw-bench.c @ lines (101 147 162 249)
+patching fftw-3.3.6-pl2/libbench2/mp.c @ lines (79 190 215)
+patching fftw-3.3.6-pl2/libbench2/caset.c @ lines (5)
+patching fftw-3.3.6-pl2/libbench2/verify-r2r.c @ lines (44 187 197 207 316 333 723)
+
+
+

For example, the fftw-3.3.6-pl2/tools/fftw-wisdom.c.patch file +generates the following patches:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
    --- fftw-3.3.6-pl2/libbench2/verify-lib.c   2017-01-27 21:08:13.000000000 +0000
+    +++ fftw-3.3.6-pl2/libbench2/verify-lib.c~  2017-09-27 17:49:21.913802006 +0000
+    @@ -33,6 +33,7 @@
+
+     double dmax(double x, double y) { return (x > y) ? x : y; }
+
+    +__attribute__((target_clones("avx2","arch=atom","default")))
+     static double aerror(C *a, C *b, int n)
+     {
+         if (n > 0) {
+    @@ -111,6 +112,7 @@
+    }
+
+    /* make array hermitian */
+    +__attribute__((target_clones("avx2","arch=atom","default")))
+    void mkhermitian(C *A, int rank, const bench_iodim *dim, int stride)
+    {
+         if (rank == 0)
+    @@ -148,6 +150,7 @@
+    }
+
+    /* C = A + B */
+    +__attribute__((target_clones("avx2","arch=atom","default")))
+    void aadd(C *c, C *a, C *b, int n)
+    {
+         int i;
+    @@ -159,6 +162,7 @@
+    }
+
+    /* C = A - B */
+    +__attribute__((target_clones("avx2","arch=atom","default")))
+    void asub(C *c, C *a, C *b, int n)
+    {
+         int i;
+    @@ -170,6 +174,7 @@
+    }
+
+    /* B = rotate left A (complex) */
+    +__attribute__((target_clones("avx2","arch=atom","default")))
+    void arol(C *b, C *a, int n, int nb, int na)
+    {
+         int i, ib, ia;
+    @@ -192,6 +197,7 @@
+         }
+    }
+
+
+

With these patches, we can select where to apply the FMV technology making +bringing architecture-based optimizations to application code even easier.

+

Congratulations!

+

You have successfully installed an FMV development environment on Clear Linux OS. +Furthermore, you used cutting edge compiler technology to improve the +performance of your application based on Intel Architecture technology and +profiling of the specific execution of your application.

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/index.html b/zh_CN/tutorials/index.html new file mode 100644 index 000000000..853cc2ae5 --- /dev/null +++ b/zh_CN/tutorials/index.html @@ -0,0 +1,1086 @@ + + + + + + + + + + + + + + Tutorials — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+ + + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/kata.html b/zh_CN/tutorials/kata.html new file mode 100644 index 000000000..2a151818c --- /dev/null +++ b/zh_CN/tutorials/kata.html @@ -0,0 +1,1164 @@ + + + + + + + + + + + + + + Kata Containers* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+
+
+

Kata Containers*

+

This tutorial describes how to install, configure, and run Kata Containers +on Clear Linux* OS.

+ +
+

Description

+

Kata Containers is an open source project developing a lightweight +implementation of VMs that offer the speed of +containers and the security of VMs.

+
+
+

Prerequisites

+

This tutorial assumes you have installed Clear Linux OS on your host system. +For detailed instructions on installing Clear Linux OS on a bare metal system, follow +the bare metal installation tutorial.

+

If you have Clear Containers installed on your Clear Linux OS system, then follow the +migrate Clear Containers to Kata Containers tutorial.

+

Before you install any new packages, update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+
+
+

Install Kata Containers

+

Kata Containers is included in the containers-virt bundle. +To install the framework, enter the following command:

+
sudo swupd bundle-add containers-virt
+
+
+

Restart the Docker* and Kata Containers systemd services.

+
sudo systemctl daemon-reload
+sudo systemctl restart docker
+
+
+
+
+

Run Kata Containers

+
sudo docker run -ti busybox sh
+
+
+
+

注解

+

If you use a proxy server and your proxy environment variables are already +set, run the following commands as a shell script to configure Docker:

+
docker_service_dir="/etc/systemd/system/docker.service.d/"
+sudo mkdir -p "$docker_service_dir"
+cat <<EOF | sudo tee "$docker_service_dir/proxy.conf"
+[Service]
+Environment="HTTP_PROXY=$http_proxy"
+Environment="HTTPS_PROXY=$https_proxy"
+EOF
+echo "Reloading unit files and starting docker service"
+sudo systemctl daemon-reload
+sudo systemctl restart docker
+sudo docker info
+
+
+
+

Congratulations!

+

You’ve successfully installed and set up Kata Containers on Clear Linux OS.

+
+
+

More information about Docker

+

Docker on Clear Linux OS provides a docker.service file to start the Docker +daemon. The daemon will use runc or kata-runtime depending on the +environment:

+
    +
  • If you are running Clear Linux OS on bare metal or on a VM with Nested +Virtualization activated, Docker uses kata-runtime as the +default runtime.
  • +
  • If you are running Clear Linux OS on a VM without Nested Virtualization, +Docker uses runc as the default runtime.
  • +
+

You do not need to manually configure the runtime for Docker, because +it automatically uses the runtime supported by the system.

+
+

Troubleshooting

+
    +
  • To change the Docker storage driver, see +Additional Docker configuration.

    +
  • +
  • For some Clear Linux OS versions before 27000, you may need to manually +configure Docker* to use Kata Containers by default.

    +

    To do so, enter:

    +
    sudo mkdir -p /etc/systemd/system/docker.service.d/
    +cat <<EOF | sudo tee /etc/systemd/system/docker.service.d/50-runtime.conf
    +[Service]
    +Environment="DOCKER_DEFAULT_RUNTIME=--default-runtime kata-runtime"
    +EOF
    +
    +
    +
  • +
  • To check the version of Clear Linux OS on your system, enter:

    +
    sudo swupd info
    +
    +
    +
  • +
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/kubernetes-bp.html b/zh_CN/tutorials/kubernetes-bp.html new file mode 100644 index 000000000..2f7d642c1 --- /dev/null +++ b/zh_CN/tutorials/kubernetes-bp.html @@ -0,0 +1,1126 @@ + + + + + + + + + + + + + + Kubernetes* Best Practices — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Kubernetes* Best Practices

+
+

Use swupd to update clusters

+

This tutorial shows you how to manage your Kubernetes cluster while using +swupd to update Clear Linux* OS.

+

In our tutorial Kubernetes*, we explain how to set up a Kubernetes +cluster on Clear Linux OS using kubeadm. Kubeadm documentation often builds on the +assumption that the distribution uses a traditional package manager (e.g., +RPM/DEB).

+

In contrast, Clear Linux OS uses swupd to update the OS, which in this case updates +all of the kubernetes node and client binaries simultaneously, as part of +the cloud-native-basic bundle (e.g., kubectl, kubeadm, kubelet). Running +sudo swupd update requires special care to ensure the OS +incorporates the latest Kubernetes upgrades.

+

This document describes best practices to manage cluster upgrades with +kubeadm on a Clear Linux OS-based cluster.

+
+
+

Prerequisites

+

Assure that you:

+
    +
  • Completed Kubernetes*
  • +
  • Installed the bundle cloud-native-basic
  • +
+
+

注解

+

Other Linux* distros shown in Kubernetes upgrade documentation reflect +apt-get update, apt-mark hold kubeadm, and similar commands; however, such commands are not valid on Clear Linux OS.

+
+
+
+

Update the control plane

+
    +
  1. Read kubernetes documentation before you begin.

    +
  2. +
  3. On your master node, run the command:

    +
    sudo swupd update
    +
    +
    +
    +

    注解

    +

    If the minor version of Kubernetes changes, Clear Linux OS shows a message-of-the-day, or motd. When the motd appears, you must postpone a kubelet restart on master and nodes until the control plane is properly updated. swupd update does not restart services automatically unless explicitly configured to do so.

    +
    +
  4. +
  5. Now follow these instructions in kubernetes documentation.

    + +
  6. +
+
+
+

Update worker nodes

+
    +
  1. On each worker node, run the command:

    +
    sudo swupd update
    +
    +
    +
  2. +
  3. Now follow these instructions in kubernetes documentation:

    + +
  4. +
+
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/kubernetes.html b/zh_CN/tutorials/kubernetes.html new file mode 100644 index 000000000..31ac748f0 --- /dev/null +++ b/zh_CN/tutorials/kubernetes.html @@ -0,0 +1,1400 @@ + + + + + + + + + + + + + + Kubernetes* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Kubernetes*

+

This tutorial describes how to install, configure, and run the +Kubernetes container orchestration system on Clear Linux* OS using CRI+O and +kata-runtime.

+ +
+

Description

+

Kubernetes is an open source system for automating deployment, scaling, and +management of containerized applications. It groups containers that make up +an application into logical units for easy management and discovery. Get up +and running quickly with our Cloud native setup automation.

+

Kata Containers* kata-runtime adheres to +OCI guidelines and works seamlessly with +Kubernetes. Kata Containers provides strong isolation for untrusted +workloads or multi-tenant scenarios. Kata Containers can be +allocated on a per-pod basis, so you can mix and match both on the same host +to suit your needs.

+
+
+

Prerequisites

+

This tutorial assumes you have already installed Clear Linux OS. For detailed +instructions on installing Clear Linux OS on a bare metal system, follow the +bare metal installation tutorial. +Learn about the benefits of having an up-to-date system for cloud +orchestration on the swupd page.

+

Before you install any new packages, update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+
+
+

Install Kubernetes and CRI runtimes

+

Kubernetes, a set of supported CRI +runtimes, and networking plugins, are included in the cloud-native-basic +bundle.

+

To install this framework, enter the following command:

+
sudo swupd bundle-add cloud-native-basic
+
+
+
+

注解

+

For more on networking plugins, see Install pod network add-on.

+
+
+
+

Configure Kubernetes

+

This tutorial uses the basic default Kubernetes configuration for simplicity. +You must define your Kubernetes configuration according to your specific +deployment and your security needs.

+
    +
  1. Enable IP forwarding to avoid kubeadm preflight check errors:

    +

    Create (or edit if it exists) the file /etc/sysctl.d/60-k8s.conf +and include the following line:

    +
    net.ipv4.ip_forward = 1
    +
    +
    +

    Apply the change:

    +
    sudo systemctl restart systemd-sysctl
    +
    +
    +
  2. +
  3. Enable the kubelet service:

    +
    sudo systemctl enable kubelet.service
    +
    +
    +
  4. +
  5. Disable swap using one of the following methods, either:

    +
      +
    1. Temporarily:

      +
      sudo swapoff -a
      +
      +
      +
      +

      注解

      +

      Swap will be enabled at next reboot, causing failures in +your cluster.

      +
      +
    2. +
    +

    or:

    +
      +
    1. Permanently:

      +

      Mask the swap partition:

      +
      sudo systemctl mask $(sed -n -e 's#^/dev/\([0-9a-z]*\).*#dev-\1.swap#p' /proc/swaps) 2>/dev/null
      +sudo swapoff -a
      +
      +
      +
      +

      注解

      +

      On systems with limited resources, some performance degradation may +be observed while swap is disabled.

      +
      +
    2. +
    +
  6. +
  7. Switch to root to modify the hosts file:

    +
    sudo -s
    +
    +
    +
  8. +
  9. Create (or edit if it exists) the hosts file that Kubernetes will read to +locate the master’s host:

    +
    echo "127.0.0.1 localhost `hostname`" >> /etc/hosts
    +
    +
    +
  10. +
  11. Exit root:

    +
    exit
    +
    +
    +
  12. +
+
+
+

Configure and run Kubernetes

+

This section describes how to configure and run Kubernetes with CRI-O and +kata-runtime.

+
+

Configure and run CRI-O + kata-runtime

+
    +
  1. Enable the CRI-O service:

    +
    sudo systemctl enable crio.service
    +
    +
    +
  2. +
  3. Enter the commands:

    +
    sudo systemctl daemon-reload
    +sudo systemctl restart crio
    +
    +
    +
  4. +
  5. Initialize the master control plane with the command below and follow the +displayed instructions to set up kubectl:

    +
    sudo kubeadm init --cri-socket=/run/crio/crio.sock
    +
    +
    +
  6. +
  7. Register kata-runtime as a RuntimeClass handler:

    +
    cat << EOF | kubectl apply -f -
    +kind: RuntimeClass
    +apiVersion: node.k8s.io/v1beta1
    +metadata:
    +    name: native
    +handler: runc
    +---
    +kind: RuntimeClass
    +apiVersion: node.k8s.io/v1beta1
    +metadata:
    +    name: kata-containers
    +handler: kata
    +EOF
    +
    +
    +
  8. +
+
+
+
+

Install pod network add-on

+

You must choose and install a pod network add-on to allow your pods to +communicate. Check whether or not your add-on requires special flags when you +initialize the master control plane.

+

Notes about flannel add-on

+

If you choose the flannel add-on, then you must add the following to the +kubeadm init command:

+
--pod-network-cidr 10.244.0.0/16
+
+
+

Furthermore, if you are using CRI-O and flannel and you want to use +Kata Containers, edit the /etc/crio/crio.conf file to add:

+
[crio.runtime]
+manage_network_ns_lifecycle = true
+
+
+
+
+

Use your cluster

+

Once your master control plane is successfully initialized, instructions on +how to use your cluster and its IP, token, and hash values are +displayed. It is important that you record the cluster values because they +are needed when joining worker nodes to the cluster. Some values have a valid +period. The values are presented in a format similar to:

+
kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash <hash>
+
+
+

Congratulations!

+

You’ve successfully installed and set up Kubernetes in Clear Linux OS using CRI-O and +kata-runtime. You are now ready to follow on-screen instructions to deploy a +pod network to the cluster and join worker nodes with the displayed token +and IP information.

+
+ +
+

Cloud native setup automation

+

Optional: Clone the cloud-native-setup repository on your system and +follow the instructions. This repository includes helper scripts to automate +configuration.

+
+
+

Package configuration customization (optional)

+

Clear Linux OS is a stateless system that looks for user-defined package configuration +files in the /etc/<package-name> directory to be used as default. If +user-defined files are not found, Clear Linux OS uses the distribution-provided +configuration files for each package.

+

If you customize any of the default package configuration files, you must +store the customized files in the /etc/ directory. If you edit any of +the distribution-provided default files, your changes will be lost in the +next system update.

+

For example, to customize CRI-O configuration in your system, run the +following commands:

+
sudo mkdir /etc/crio
+sudo cp /usr/share/defaults/crio/crio.conf /etc/crio/
+sudo $EDITOR /etc/crio/crio.conf
+
+
+

Learn more about 无状态 in Clear Linux OS.

+
+
+

Proxy configuration (optional)

+

If you use a proxy server, you must set your proxy environment variables and +create an appropriate proxy configuration file for both CRI-O services. Consult +your IT department if you are behind a corporate proxy for the appropriate +values. Ensure that your local IP is explicitly included in the environment +variable NO_PROXY. (Setting localhost is not enough.)

+

If you have already set your proxy environment variables, run the following +commands as a shell script to configure all of these services in one step:

+
services=('crio')
+for s in "${services[@]}"; do
+sudo mkdir -p "/etc/systemd/system/${s}.service.d/"
+cat << EOF | sudo tee "/etc/systemd/system/${s}.service.d/proxy.conf"
+[Service]
+Environment="HTTP_PROXY=${http_proxy}"
+Environment="HTTPS_PROXY=${https_proxy}"
+Environment="SOCKS_PROXY=${socks_proxy}"
+Environment="NO_PROXY=${no_proxy}"
+EOF
+done
+
+
+
+
+

Troubleshooting

+
    +
  • <HOSTNAME> not found in <IP> message.

    +

    Your DNS server may not be appropriately configured. Try adding an +entry to the /etc/hosts file with your host’s IP and Name.

    +

    For example: 100.200.50.20 myhost

    +

    Use the commands hostname and hostname -I +to retrieve them.

    +
  • +
  • Images cannot be pulled.

    +

    You may be behind a proxy server. Try configuring your proxy settings, +using the environment variables HTTP_PROXY, HTTPS_PROXY, and NO_PROXY +as required in your environment.

    +
  • +
  • Connection refused error.

    +

    If you are behind a proxy server, you may need to add the master’s IP to +the environment variable NO_PROXY.

    +
  • +
  • Connection timed-out or Access Refused errors.

    +

    You must ensure that the appropriate proxy settings are available from the +same terminal where you will initialize the control plane. To verify the +proxy settings that Kubernetes will actually use, run the commands:

    +
    echo $HTTP_PROXY
    +echo $HTTPS_PROXY
    +echo $NO_PROXY
    +
    +
    +

    If the displayed proxy values are different from your assigned values, the +cluster initialization will fail. Contact your IT support team to learn how +to set the proxy variables permanently, and how to make them available for +all the types of access that you will use, such as remote SSH access.

    +

    If the result of the above commands is blank, you may need to add a +profile to the /etc directory. To do so, follow these steps.

    +
      +
    1. Create a profile in /etc

      +
      sudo touch profile
      +
      +
      +
    2. +
    3. With your preferred editor, open profile, and enter your proxy settings. +An example is shown below.

      +
      export "HTTP_PROXY=http://proxy.example.com:443"
      +export "HTTPS_PROXY=http://proxy.example.com:445"
      +export "SOCKS_PROXY=http://proxy.example.com:1080"
      +export "NO_PROXY= site.com,.site.com,localhost,127.0.0.1,<master IP>
      +
      +
      +
      +

      注解

      +

      <master IP> can be obtained by running ifconfig.

      +
      +
    4. +
    5. Save and exit the profile.

      +
    6. +
    7. Update your system’s environment settings by executing the following +command:

      +
      sudo source profile
      +
      +
      +
    8. +
    9. To ensure your system isn’t running previous session variables, run:

      +
      sudo kubeadm reset --cri-socket=/run/crio/crio.sock
      +
      +
      +
    10. +
    11. Continue below while passing -E in the command as shown.

      +
    12. +
    +
  • +
  • Missing environment variables.

    +

    If you are behind a proxy server, pass environment variables by adding -E +to the command that initializes the master control plane.

    +
    /* Kubernetes with CRI-O + kata-runtime */
    +sudo -E kubeadm init --cri-socket=/run/crio/crio.sock
    +
    +
    +
  • +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/nvidia-cuda.html b/zh_CN/tutorials/nvidia-cuda.html new file mode 100644 index 000000000..17316c3fc --- /dev/null +++ b/zh_CN/tutorials/nvidia-cuda.html @@ -0,0 +1,1286 @@ + + + + + + + + + + + + + + NVIDIA* CUDA Toolkit — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

NVIDIA* CUDA Toolkit

+

NVIDIA is a manufacturer of graphics processing units (GPU), also known as +graphics cards.

+

CUDA is a parallel computing platform and application programming interface +model created by NVIDIA. It allows software developers and software engineers +to use a CUDA-enabled graphics processing unit

+

These instructions show how to install the CUDA Toolkit on Clear Linux OS after the +proprietary NVIDIA drivers have been installed.

+
+

注解

+

Software installed outside of swupd is not updated with Clear Linux OS +updates and must be updated and maintained manually.

+
+ +
+

Prerequisites

+ +
+
+

Compatibility

+
+

Check compatibility of NVIDIA components

+

To install the appropriate NVIDIA CUDA Toolkit version, it is important to +understand the compute capability and compatible driver versions of your +NVIDIA hardware.

+

Information about NVIDIA compute capability, driver, and toolkit compatibility +can be found at: https://developer.nvidia.com/cuda-gpus and +https://docs.nvidia.com/deploy/cuda-compatibility/

+
+
+

Check GCC compatibility

+
+

注解

+

This is only required for the development or compilation of CUDA +applications. It is not required to run pre-built applications that have a +dependency on CUDA.

+
+

From the NVIDIA documentation:

+
+
The CUDA development environment relies on tight integration with the host +development environment, including the host compiler and C runtime +libraries, and is therefore only supported on distribution versions that +have been qualified for this CUDA Toolkit release.
+

Refer to the NVIDIA documentation on CUDA system requirements +for the latest kernel and compiler compatibility.

+

For example, CUDA 10.1 on a system with the latest Linux kernel requires GCC7, +which is older than the default GCC version for Clear Linux OS.

+

Install the compatible version of GCC, if required:

+
    +
  1. Install the bundle with the appropriate GCC version.

    +
    sudo swupd bundle-add c-extras-gcc7
    +
    +
    +
  2. +
  3. Create the directory /usr/local/cuda/bin:

    +
    sudo mkdir -p /usr/local/cuda/bin
    +
    +
    +
  4. +
  5. Add symlinks to the older GCC version in the +/usr/local/cuda/bin directory. This will cause the older version of +GCC to be used when /usr/local/cuda/bin is in the $PATH environment +variable.

    +
    sudo ln -s /usr/bin/gcc7 /usr/local/cuda/bin/gcc
    +sudo ln -s /usr/bin/g++7 /usr/local/cuda/bin/g++
    +
    +
    +
  6. +
+
+
+
+

Downloading and Installation

+
+

Download the NVIDIA CUDA Toolkit

+
    +
  1. Go to the NVIDIA CUDA downloads website to get the latest CUDA Toolkit. +If an older version of the CUDA Toolkit is required, go to the CUDA +Toolkit Archive.

    +

    Choose the following settings and click Download.

    +
      +
    • Operating System: Linux
    • +
    • Architecture: x86_64
    • +
    • Distribution: any
    • +
    • Version: any
    • +
    • Installer Type: runfile(local)
    • +
    +
  2. +
  3. Open a terminal and navigate to where the +cuda_<VERSION>_linux.run file was saved. In this +example, it was saved in the Downloads folder.

    +
    cd ~/Downloads/
    +
    +
    +
  4. +
  5. Make the cuda_<VERSION>_linux.run file executable:

    +
    chmod +x cuda_<VERSION>_linux.run
    +
    +
    +
  6. +
+
+
+

Install the NVIDIA CUDA Toolkit

+

The NVIDIA CUDA installer will be directed to install files under +/opt/cuda as much as possible to keep its contents isolated from the +rest of the Clear Linux OS files under /usr.

+

The CUDA installer automatically creates a symbolic link that allows the CUDA +Toolkit to be accessed from /usr/local/cuda regardless of where it was +installed.

+
    +
  1. Configure the dynamic linker to look for and cache shared libraries under +/opt/cuda/lib64 where the NVIDIA installer will place libraries.

    +
    sudo mkdir -p /etc/ld.so.conf.d
    +echo "include /etc/ld.so.conf.d/*.conf" |  sudo tee --append /etc/ld.so.conf
    +
    +
    +

    The CUDA installer will automatically create a file +/etc/ld.so.conf.d/cuda-<VERSION>.conf

    +
  2. +
  3. Navigate into the directory where the NVIDIA installer was downloaded:

    +
    cd ~/Downloads/
    +
    +
    +
  4. +
  5. Run the installer with the advanced options below:

    +
    sudo ./cuda_<VERSION>_linux.run \
    +--toolkit \
    +--samples \
    +--installpath=/opt/cuda \
    +--no-man-page \
    +--override \
    +--silent
    +
    +
    +
  6. +
  7. Validate the CUDA Toolkit was installed by checking the NVIDIA CUDA +compiler version:

    +
    /usr/local/cuda/bin/nvcc --version
    +
    +
    +
  8. +
+

The CUDA Toolkit is now installed and can be used to compile and run CUDA +applications.

+
+
+
+

Using the NVIDIA CUDA Toolkit

+
    +
  1. Verify that the NVIDIA device characters files /dev/nvidia* exist and have +the correct (0666) file permissions. The character devices should be +automatically created on system with the NVIDIA driver loaded through X +server, but will not be on systems that do not automatically load the +NVIDIA driver.

    +
    ls -l /dev/nvidia*
    +
    +
    +
  2. +
  3. If your system does not have the NVIDIA character devices created +automatically, run the script from NVIDIA documentation +with root privileges.

    +

    Alternatively a setuid utility, nvidia-modprobe, can be compiled +and installed to automatically create the device character files on-demand.

    +
    wget https://download.nvidia.com/XFree86/nvidia-modprobe/nvidia-modprobe-<VERSION>.tar.bz2
    +tar -xvf nvidia-modprobe-<VERSION>.tar.bz2
    +cd nvidia-modprobe-<VERSION>/
    +make
    +sudo make install PREFIX=/usr/local/cuda/
    +
    +
    +
  4. +
  5. When the CUDA toolkit is needed, export PATH variables pointing to the CUDA +directories. This will temporarily add CUDA files to the PATH and use the +specified linked version of GCC for the terminal session.

    +
    export PATH=/usr/local/cuda/bin:$PATH
    +export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
    +
    +
    +
  6. +
+

Source code for CUDA sample located at +/usr/local/cuda/NVIDIA_CUDA-<VERSION>_Samples. See the CUDA +documentation on compiling samples +to learn more.

+
+
+

Uninstalling

+

The NVIDIA drivers and associated software can be uninstalled and nouveau +driver restored by:

+
    +
  1. Run the sudo /usr/local/cuda/bin/cuda-uninstaller.
  2. +
  3. Follow the prompts on the screen and reboot the system.
  4. +
+
+
+

Debugging

+
    +
  • The NVIDIA CUDA installer places logs under +/tmp/cuda-installer.log.
  • +
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/nvidia.html b/zh_CN/tutorials/nvidia.html new file mode 100644 index 000000000..20482bc29 --- /dev/null +++ b/zh_CN/tutorials/nvidia.html @@ -0,0 +1,1377 @@ + + + + + + + + + + + + + + NVIDIA* Drivers — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

NVIDIA* Drivers

+

NVIDIA manufactures graphics processing units (GPU), also known as +graphics cards.

+

NVIDIA devices on Linux* have two popular device driver options: the +opensource drivers from the nouveau project or the proprietary drivers +published by NVIDIA. The nouveau drivers are built into the Clear Linux* OS +kernel and are loaded automatically at system boot if a compatible card +is detected.

+

These instructions show how to use the proprietary NVIDIA drivers, which +require a manual installation.

+
+

警告

+

Software installed outside of swupd is not updated +with Clear Linux OS updates and must be updated and maintained manually.

+

For example, the file /usr/lib/libGL.so conflicts with the file +provided by the mesa package in Clear Linux OS and the file NVIDIA provides. If a Clear Linux OS +update overwrites these files, a reinstallation of the NVIDIA driver might +be required.

+
+ +
+

Prerequisites

+
    +
  • A Clear Linux OS system with a desktop installed
  • +
  • An NVIDIA device installed
  • +
+
+
+

Install DKMS

+

The Dynamic Kernel Module System (DKMS) allows the NVIDIA kernel modules to be automatically +integrated when kernel updates occur in Clear Linux OS.

+

Install the appropriate DKMS bundle using the instructions below:

+
+

注解

+

The Long Term Support (LTS) kernel variant is more likely to remain +compatible between updates with NVIDIA drivers.

+
+

The kernel-native-dkms bundle provides the dkms program and +Linux kernel headers, which are required for compiling kernel modules.

+

The kernel-native-dkms bundle also:

+
    +
  • Adds a systemd update trigger +(/usr/lib/systemd/system/dkms-new-kernel.service) to automatically +run DKMS to rebuild modules after a kernel upgrade occurs with swupd +update.
  • +
  • Disables kernel module signature verification by appending a kernel +command-line parameter (module.sig_unenforce) from the +/usr/share/kernel/cmdline.d/clr-ignore-mod-sig.conf file.
  • +
  • Adds a notification to the Message of the Day (MOTD) indicating kernel +module signature verification is disabled.
  • +
+
+

警告

+

We recommend that you always review the swupd update output +to make sure kernel modules were successfully rebuilt against the new +kernel. This is especially important for systems where a successful boot +relies on a kernel module.

+
+

Install the kernel-native-dkms or kernel-lts-dkms +bundle:

+
    +
  1. Determine which kernel variant is running on Clear Linux OS. Only the native +and lts kernels are enabled to build and load out-of-tree kernel modules +with DKMS.

    +
    $ uname -r
    +5.XX.YY-ZZZZ.native
    +
    +
    +

    Ensure .native or .lts is in the kernel name.

    +
  2. +
  3. Install the DKMS bundle corresponding to the installed kernel. Use +kernel-native-dkms for the native kernel or +kernel-lts-dkms for the lts kernel.

    +
    sudo swupd bundle-add kernel-native-dkms
    +
    +
    +

    or

    +
    sudo swupd bundle-add kernel-lts-dkms
    +
    +
    +
  4. +
  5. Update the Clear Linux OS bootloader and reboot.

    +
    sudo clr-boot-manager update
    +reboot
    +
    +
    +
  6. +
+
+
+

Download and install the NVIDIA drivers

+
+

Download the NVIDIA drivers for Linux

+
    +
  1. Identify the NVIDIA GPU model that is installed.

    +
    sudo lshw -C display
    +
    +
    +
  2. +
  3. Go to the NVIDIA Driver Downloads website . Search for and download the +appropriate driver based on the NVIDIA GPU model you have with Linux +64-bit selected as the Operating System .

    +
  4. +
  5. Open a terminal and navigate to where the +NVIDIA-Linux-x86_64-<VERSION>.run file was saved. In this +example, it was saved in the Downloads folder.

    +
    cd ~/Downloads/
    +
    +
    +
  6. +
  7. Make the NVIDIA-Linux-x86_64-<VERSION>.run file executable.

    +
    chmod +x :file:`NVIDIA-Linux-x86_64-<VERSION>.run`
    +
    +
    +
  8. +
+
+
+

Disable the nouveau driver

+

The proprietary NVIDIA driver is incompatible with the nouveau driver and +must be disabled before installation can continue.

+
    +
  1. Disable the nouveau driver by creating a blacklist file under +/etc/modprobe.d and reboot.

    +
    sudo mkdir /etc/modprobe.d
    +
    +printf "blacklist nouveau \noptions nouveau modeset=0 \n" | sudo tee --append /etc/modprobe.d/disable-nouveau.conf
    +
    +
    +
  2. +
  3. Reboot the system and log back in. It is normal for the graphical +environment not to start without the NVIDIA driver loaded.

    +
  4. +
+
+
+

Configure alternative software paths

+

The NVIDIA installer is directed to install files under +/opt/nvidia as much as possible to keep its contents isolated from the +rest of the Clear Linux OS system files under /usr. The dynamic linker and X +server must be configured to use the content under +/opt/nvidia.

+
    +
  1. Configure the dynamic linker to look for and to cache shared libraries under +/opt/nvidia/lib and /opt/nvidia/lib32 in addition to the +default paths.

    +
    echo "include /etc/ld.so.conf.d/*.conf" |  sudo tee --append /etc/ld.so.conf
    +
    +sudo mkdir /etc/ld.so.conf.d
    +printf "/opt/nvidia/lib \n/opt/nvidia/lib32 \n" | sudo tee --append /etc/ld.so.conf.d/nvidia.conf
    +
    +
    +
  2. +
  3. Reload the dynamic linker run-time bindings and library cache.

    +
    sudo ldconfig
    +
    +
    +
  4. +
  5. Create a Xorg configuration file to search for modules under +/opt/nvidia in addition to the default path.

    +
    sudo mkdir -p /etc/X11/xorg.conf.d/
    +
    +sudo tee /etc/X11/xorg.conf.d/nvidia-files-opt.conf > /dev/null <<'EOF'
    +Section "Files"
    +        ModulePath      "/usr/lib64/xorg/modules"
    +        ModulePath      "/opt/nvidia/lib64/xorg/modules"
    +EndSection
    +EOF
    +
    +
    +
  6. +
+
+
+

Install the NVIDIA drivers

+
    +
  1. A terminal not running on /dev/tty1 is useful to view uninterrupted +installation progress. Switch to a secondary virtual terminal by pushing +CTRL + ALT + F2 or remotely login over SSH.

    +
  2. +
  3. Navigate to the directory where the NVIDIA installer was downloaded.

    +
    cd ~/Downloads/
    +
    +
    +
  4. +
  5. Run the installer with the advanced options below.

    +
    sudo ./NVIDIA-Linux-x86_64-<VERSION>.run \
    +--utility-prefix=/opt/nvidia \
    +--opengl-prefix=/opt/nvidia \
    +--compat32-prefix=/opt/nvidia \
    +--compat32-libdir=lib32 \
    +--x-prefix=/opt/nvidia \
    +--x-module-path=/opt/nvidia/lib64/xorg/modules \
    +--x-library-path=/opt/nvidia/lib64 \
    +--x-sysconfig-path=/etc/X11/xorg.conf.d \
    +--documentation-prefix=/opt/nvidia \
    +--application-profile-path=/etc/nvidia \
    +--no-precompiled-interface \
    +--no-nvidia-modprobe \
    +--no-distro-scripts \
    +--force-libglx-indirect \
    +--glvnd-egl-config-path=/etc/glvnd/egl_vendor.d \
    +--egl-external-platform-config-path=/etc/egl/egl_external_platform.d  \
    +--dkms \
    +--silent
    +
    +
    +
  6. +
  7. The graphical interface may automatically start after the NVIDIA driver +is loaded. Return to the working terminal and log back in if necessary.

    +
  8. +
  9. Confirm that the NVIDIA kernel modules are loaded.

    +
    lsmod | grep ^nvidia
    +
    +
    +
  10. +
  11. Run a Clear Linux OS system verification to restore files that the NVIDIA installer +likely deleted.

    +
    sudo swupd repair --quick --bundles=lib-opengl
    +
    +
    +
  12. +
+
+

注解

+

The NVIDIA software places some files under the /usr subdirectory +that are not managed by Clear Linux OS and conflict with the Clear Linux OS stateless design.

+

Although a limited version of swupd repair is run above, +other uses of the swupd repair command should be avoided +with the proprietary NVIDIA drivers installed.

+
+
+
+
+

Updating the NVIDIA drivers

+

The proprietary NVIDIA drivers are installed manually outside of +swupd and must be updated manually when needed.

+

Updating the NVIDIA drivers follows the same steps as initial installation, +however the desktop environment must first be stopped so that the drivers are +not in use.

+
    +
  1. Follow the steps in the Download the NVIDIA Drivers for Linux section +to get the latest NVIDIA drivers.

    +
  2. +
  3. Temporarily set the default boot target to the multi-user, which is +a non-graphical runtime.

    +
    sudo systemctl set-default multi-user.target
    +
    +
    +
  4. +
  5. Reboot the system and log back in. It is normal for the graphical +environment not to start.

    +
  6. +
  7. Follow the steps in the Install the NVIDIA Drivers section to update +the NVIDIA drivers. This installation will overwrite the previous NVIDIA +drivers and files.

    +
  8. +
  9. Set the default boot target back to the graphical target.

    +
    sudo systemctl set-default graphical.target
    +
    +
    +
  10. +
  11. Reboot the system and log back in.

    +
  12. +
  13. Trigger a flatpak update that will download the runtime corresponding +with the new NVIDIA drivers for the flatpak apps that require it.

    +
    flatpak update
    +
    +
    +
  14. +
+
+
+

Uninstalling the NVIDIA drivers

+

The NVIDIA drivers and associated software can be uninstalled and nouveau +driver restored with the instructions in this section.

+
    +
  1. Remove the modprobe.d file that prevents nouveau from loading.

    +
    sudo rm /etc/modprobe.d/disable-nouveau.conf
    +
    +
    +
  2. +
  3. Remove the xorg.conf.d file that adds a search path for X modules.

    +
    sudo rm /etc/X11/xorg.conf.d/nvidia-files-opt.conf
    +
    +
    +
  4. +
  5. Run the sudo /opt/nvidia/bin/nvidia-uninstall

    +
  6. +
  7. Follow the prompts on the screen and reboot the system.

    +
  8. +
+
+
+

Debugging installation of NVIDIA drivers

+
    +
  • The NVIDIA driver places installer and uninstaller logs under +/var/log/nvidia-install and /var/log/nvidia-uninstall.
  • +
  • NVIDIA-Linux-x86_64-<VERSION>.run --advanced-options shows many +parameters to control installation behavior.
  • +
  • NVIDIA-Linux-x86_64-<VERSION>.run --extract-only extracts +installation files into a directory named +NVIDIA-Linux-x86_64-<VERSION>.
  • +
+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/parallels.html b/zh_CN/tutorials/parallels.html new file mode 100644 index 000000000..6dc0e8c7d --- /dev/null +++ b/zh_CN/tutorials/parallels.html @@ -0,0 +1,1170 @@ + + + + + + + + + + + + + + Parallels* Desktop for Mac* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Parallels* Desktop for Mac*

+

This tutorial describes how to run Clear Linux OS Server in +CLI mode as a guest OS in Parallels Desktop 14 +for Mac.

+

Parallels Desktop for Mac is virtualization software that allows other +operating systems, such as Linux, to run side-by-side with macOS*.

+
+

Prerequisites

+
    +
  • Install Parallels Desktop 14 for Mac.
  • +
+
+
+

Download ISO image

+
    +
  1. Download a live-server ISO installation file from https://clearlinux.org/downloads. +This tutorial uses Clear Linux OS Server 30140 as its example.

    +
  2. +
  3. Unzip the ISO image with the command:

    +
    gunzip clear-30140-live-server.iso.xz
    +
    +
    +
  4. +
+
+
+

Initialize new VM

+

Start Parallels and initialize your VM with the +following steps.

+
    +
  1. Go to File > New.

    +
  2. +
  3. In the opening dialog window, select +Install Windows or another OS from a DVD or image, then click +Continue. (See Figure 1.)

    +
    +Parallels opening dialog +

    Figure 1: Parallels opening dialog

    +
    +
  4. +
  5. On the next screen, select Image File, then click +Select a file… as shown in Figure 2.

    +
    +Dialog to select source for VM +

    Figure 2: Dialog to select source for VM

    +
    +
  6. +
  7. Select your ISO file. The system displays the warning message “Unable to +detect operating system”, as shown in Figure 3. This message is expected and +can be ignored. Click Continue.

    +
    +Warning that OS is not detected +

    Figure 3: Warning that OS is not detected

    +
    +
  8. +
  9. You are prompted to select your OS, as shown in Figure 4. Select +More Linux > Other Linux from the drop-down menu and click +Continue.

    +
    +Select OS from drop-down menu +

    Figure 4: Select OS from drop-down menu

    +
    +
  10. +
  11. Name your VM and check Customize settings before installation. +(See Figure 5.)

    +
    +Name and Location screen +

    Figure 5: Name and Location screen

    +
    +
  12. +
  13. Click Create. The Configuration window for the new VM opens, as +shown in Figure 6.

    +

    Select Hardware > Boot Order.

    +
    +VM Configuration window +

    Figure 6: VM Configuration window

    +
    +
  14. +
  15. Expand Advanced Settings. Set BIOS to “EFI 64-bit” +and in the Boot flags field, enter “vm.bios.efi=1” as shown in +Figure 7.

    +
    +Advanced configuration settings +

    Figure 7: Advanced configuration settings

    +
    +
  16. +
  17. Close the Configuration window and click Continue.

    +

    If camera and microphone access restriction warnings are displayed, you can +ignore them.

    +
  18. +
+
+
+

Install Clear Linux OS on VM

+
    +
  1. Follow the prompts and install Clear Linux OS using the text-based installer as shown +in Figure 8.

    +

    Refer to 使用实时服务器将 Clear Linux* OS 安装在裸机上 for additional installation +instructions.

    +
    +On screen instructions from text-based installer +

    Figure 8: On screen instructions from text-based installer

    +
    +
  2. +
  3. After installation, reboot the VM. You are prompted to log in, as shown +in Figure 9. Log in with the credentials you used when you installed Clear Linux OS +on the VM.

    +
    +Log in prompt +

    Figure 9: Log in prompt

    +
    +
  4. +
+

Congratulations! You have successfully set up a Clear Linux OS VM using Parallels +Desktop for Mac.

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/proxy.html b/zh_CN/tutorials/proxy.html new file mode 100644 index 000000000..ca05886df --- /dev/null +++ b/zh_CN/tutorials/proxy.html @@ -0,0 +1,1165 @@ + + + + + + + + + + + + + + Proxy configuration — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Proxy configuration

+

This tutorial shows you how to configure your system for use behind an +outbound proxy to access the Internet.

+

Clear Linux OS applications already benefit from the Autoproxy +feature.

+ +
+

Prerequisites

+

This tutorial assumes you have installed Clear Linux OS on your host system. +For detailed instructions on installing Clear Linux OS on a bare metal system, visit +the bare metal installation guide.

+
+
+

Shells and programs in a desktop session

+
+

Terminal

+

Add the following to your ~/.bashrc:

+
export http_proxy=http://your.http-proxy.url:port
+export https_proxy=http://your.https-proxy.url:port
+export ftp_proxy=http://your.ftp-proxy.url:port
+export socks_proxy=http://your.socks-proxy.url:port
+export no_proxy=".your-company-domain.com,localhost"
+export HTTP_PROXY=$http_proxy
+export HTTPS_PROXY=$https_proxy
+export FTP_PROXY=$ftp_proxy
+export SOCKS_PROXY=$socks_proxy
+export NO_PROXY=$no_proxy
+
+
+
+
+
+

wget

+

Run this command to enable downloading from websites from the terminal:

+
echo >> ~/.wgetrc <<EOF
+http_proxy = your.http-proxy.url:port
+https_proxy = your.https-proxy.url:port
+ftp_proxy = your.http-proxy.url:port
+no_proxy = your-company-domain.com, localhost
+EOF
+
+
+
+
+

System service (Docker)

+

For Docker (and other services that use systemd), you can follow these steps to configure and check proxy settings:

+
+

注解

+

Be sure to use sudo, as you will need elevated permissions.

+
+
    +
  1. Create /etc/systemd/system/docker.service.d directory to host +configuration information for the Docker service.

    +
  2. +
  3. Create /etc/systemd/system/docker.service.d/http-proxy.conf and add:

    +
    +
    [Service]
    +Environment="HTTP_PROXY=http://your.http-proxy.url:port/"
    +Environment="HTTPS_PROXY=http://your.https-proxy.url:port/"
    +
    +
    +
    +
  4. +
  5. Load the changes and restart the service:

    +
    +
    sudo systemctl daemon-reload
    +sudo systemctl restart docker
    +
    +
    +
    +
  6. +
  7. Verify that changes have loaded:

    +
    +
    systemctl show --property=Environment docker
    +
    +
    +
    Environment=HTTP_PROXY=http://your.http-proxy.url:port/ HTTPS_PROXY=http://your.https-proxy.url:port/
    +
    +
    +
    +
  8. +
+
+

注解

+

This process enables the ability to successfully run docker pull. +Containers themselves must be configured independently.

+
+
+
+

git over ssh

+

Add the following to your ~/.ssh/config:

+
host github.com
+    port 22
+    user git
+    ProxyCommand connect-proxy -S your.ssh-proxy.url:port %h %p
+
+
+
+

注解

+

Though netcat is included with Clear Linux, it is not the BSD version, +which is the one usually used to enable git over ssh.

+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/redis.html b/zh_CN/tutorials/redis.html new file mode 100644 index 000000000..193d5f6f4 --- /dev/null +++ b/zh_CN/tutorials/redis.html @@ -0,0 +1,1234 @@ + + + + + + + + + + + + + + Redis* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Redis*

+

Redis is an in-memory key:value store designed for quick lookups, accessible +over the network. In this tutorial, you’ll install redis and launch a +redis-server on Clear Linux OS, plus learn a few basic redis commands. We also invite +you to pull our Clear Linux Redis instance on dockerhub* for application +or infrastructure development.

+

While the redis data structure store can serve as a NoSQL database for a Web application, it’s also easy to integrate in an existing stack. For example, you could use the Redis caching layer for real-time responses on a leaderboard in a gaming app. Redis offers many client libraries with language-specific bindings for Python, Perl, Ruby, and more.

+ +
+

Prerequisites

+
    +
  • Install the redis-native bundle in Clear Linux OS
  • +
  • Install the containers-basic bundle in Clear Linux OS (only required in Example 2)
  • +
+
+
+

Install the redis bundle

+

In Clear Linux OS, find redis in the redis-native bundle.

+
    +
  1. Open a Terminal and login as an administrative user.
  2. +
  3. Add redis-native.
  4. +
+
sudo swupd bundle-add redis-native
+
+
+
+

注解

+

If the bundle already exists, no action is required.

+
+
+
+

Start the redis-server

+

A systemd service unit is available to control the redis server. +By default, redis runs on port 6379.

+
    +
  1. Start the service.

    +
    systemctl start redis
    +
    +
    +
    +

    注解

    +

    To stop redis run systemctl stop redis.

    +
    +
  2. +
  3. Assure the service is running.

    +
    systemctl status redis
    +
    +
    +
  4. +
  5. Verify the redis-server sends a reply.

    +
    redis-cli ping
    +
    +
    +
    +

    注解

    +

    Expected output: PONG.

    +
    +
  6. +
  7. Optional: If you wish to apply advanced configuration, copy the +redis.conf into /etc/ directory.

    +
    sudo cp /usr/share/defaults/etc/redis.conf /etc/
    +
    +
    +
  8. +
+

The redis-server is now ready to use on Clear Linux OS. Try some examples below.

+
+
+

Example 1: Use the redis-cli and try commands

+

One advantage of redis over other NoSQL databases is that developers can +easily access data structures like lists, sets, sorted sets, strings, and +hashes using collection operations commands similar to those found in many +programming languages. These exercises are inspired by try redis io.

+

After your redis-server is running, try some basic commands.

+
    +
  1. Enter the redis-cli. It provides syntax suggestions as you type.

    +
    redis-cli
    +
    +
    +
  2. +
  3. SET key to hold string value. In the set create connections and increment.

    +
    SET server:name "clearlinux"
    +
    +
    +
    MGET server:name
    +
    +
    +
    +

    注解

    +

    If the key does not exist or hold a key value, nil is returned.

    +
    +
    SET connections 100
    +
    +
    +
    INCR connections
    +
    +
    +
    INCR connections
    +
    +
    +
    DEL connections
    +
    +
    +
  4. +
  5. Create a friends list and insert new values at the end of the list.

    +
    RPUSH friends "Deb"
    +
    +
    +
    RPUSH friends "David"
    +
    +
    +
    RPUSH friends "Mary"
    +
    +
    +
  6. +
  7. Modify friends list, using a common slice method with a 0-index.

    +
    LRANGE friends 0 1
    +
    +
    +
    LLEN friends
    +
    +
    +
    LPOP friends
    +
    +
    +
    RPOP friends
    +
    +
    +
    LLEN friends
    +
    +
    +
  8. +
  9. Consider using a hash, a very useful data type, which maps string fields +and string values, offering multiple lookup methods.

    +

    Enter many user key:values with HMSET. Then try HGET and HGETALL.

    +
    HMSET user:1000 name "Robert Noyce" password "SuperEngi9eer" email "robert.noyce@intel.com"
    +
    +
    +
    HGET user:1000 name
    +
    +
    +
    HGET user:1000 email
    +
    +
    +
    HGETALL user:1000
    +
    +
    +
  10. +
+
+
+

Example 2: Run the Clear Linux OS redis docker image

+

We also provide a Clear Linux Redis instance, which is +updated continuously and maintained by Clear Linux OS development.

+
sudo swupd bundle-add containers-basic
+
+
+
sudo systemctl start docker
+
+
+
sudo -E docker pull clearlinux/redis
+
+
+
+
+

Next Steps

+ +
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/smb-desktop.html b/zh_CN/tutorials/smb-desktop.html new file mode 100644 index 000000000..fff505f7a --- /dev/null +++ b/zh_CN/tutorials/smb-desktop.html @@ -0,0 +1,1119 @@ + + + + + + + + + + + + + + Samba* as a client — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Samba* as a client

+

This tutorial explains how to access an existing shared drive on +Windows* via Server Message Block (SMB) / Common Internet File System (CIFS) +from the Clear Linux OS GNOME desktop. CIFS filesystem is generally used to access +shared storage locations, or share files.

+
+

Prerequisites

+ +
+
+

Connect to Windows shared location with Nautilus

+
    +
  1. From the desktop, select Files from the application menu.

    +
    +

    注解

    +

    GNOME Files is also known as Nautilus.

    +
    +
  2. +
  3. In Files, select Other Locations.

    +
    +Files, Other Locations +

    Figure 1: Files, Other Locations

    +
    +
  4. +
  5. In the lower taskbar, beside Connect to Server, +enter the file-sharing address using the Windows sharing schema:

    +
    smb://servername/Share
    +
    +
    +
    +Connect to Server +

    Figure 2: Connect to Server

    +
    +
  6. +
  7. Optional: If there are issues with DNS, you can use an IP address in +place of the servername above. You must still specify the share.

    +
  8. +
  9. Optional: On the Windows machine, in a CLI, retrieve the IP address by +entering the command:

    +
    ifconfig
    +
    +
    +
    +

    注解

    +

    If using the IP address, assure that it is accessible and secure.

    +
    +
  10. +
  11. Select Connect.

    +
  12. +
  13. The server will request authentication, as shown in Figure 3.

    +
    +Authentication +

    Figure 3: Authentication

    +
    +
  14. +
  15. Log in with the same Windows system credentials for which you granted +access to the share.

    +
  16. +
  17. Select the appropriate checkbox to save your credentials. Consider +carefully the security risks as a result of your selection.

    +
  18. +
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/smb.html b/zh_CN/tutorials/smb.html new file mode 100644 index 000000000..1ca45a61a --- /dev/null +++ b/zh_CN/tutorials/smb.html @@ -0,0 +1,1159 @@ + + + + + + + + + + + + + + Samba* as a host — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Samba* as a host

+

This tutorial describes how to enable simple file sharing from a system +running Clear Linux* OS to a Windows machine using Samba. For more advanced sharing, +refer to the Samba guide.

+
+

Prerequisites

+

This tutorial assumes you have installed Clear Linux OS on your host system. For +detailed instructions, follow the steps in 从实时桌面安装 Clear Linux* OS.

+

Before you install any new packages, update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+
+
+

Set up file sharing

+
    +
  1. Log in and get root privileges.

    +
    sudo -s
    +
    +
    +
  2. +
  3. Add the storage-utils bundle, which includes the Samba binaries.

    +
    swupd bundle-add storage-utils
    +
    +
    +
    +

    注解

    +

    The os-clr-on-clr bundle also includes the Samba binaries.

    +
    +
  4. +
  5. Create a configuration file called /etc/samba/smb.conf. In this +example, [Downloads] enables a folder share with a specific user. +[Documents] enables a folder share with any user. The example assumes that a +user account clearlinuxuser already exists.

    +

    If valid users is not specified, then anyone with a user account on the +machine and with their Samba password already set can access the folder. +However, the account is only able to access files and folders for which +they have appropriate permissions.

    +

    Use chown or chmod to change either the owner of the +file or the permissions to allow other users to access the file.

    +
    [Global]
    +map to guest = bad user
    +
    +[Downloads]
    +path=/home/clearlinuxuser/Downloads
    +read only = no
    +guest ok = no
    +valid users = clearlinuxuser
    +
    +[Documents]
    +path=/home/clearlinuxuser/Documents
    +read only = no
    +browsable = yes
    +guest ok = yes
    +
    +
    +
  6. +
  7. Enable the Samba daemon to start every time.

    +
    systemctl enable smb
    +systemctl start smb
    +
    +
    +
  8. +
  9. Use smbpasswd to add the initial password for the user +account to access the share. Be aware that Samba maintains its own list of +passwords for user accounts. The Samba password list can be different than +the password used to log in.

    +
    smbpasswd -a clearlinuxuser
    +
    +
    +
  10. +
+

Setup is complete and a Windows machine on the same network can access the +shares. Windows uses the format \\[server IP or hostname]\folder to +access shares. Access the shares directly with Windows Explorer or by +mapping a network drive.

+

Use the IP address of the Clear Linux OS machine for an easy access method. If the +Clear Linux OS machine is behind an Active Directory domain controller or a DNS server, +use the hostname of the Clear Linux OS machine. For other ways to access shares using a +hostname instead of an IP address, see Chapter 7 of the Samba guide.

+
+
+

Map Clear Linux OS drive in Windows

+
    +
  1. Open Windows Explorer and click on the left sidebar on This PC +to change the options available at the top.

    +
  2. +
  3. Click the Map Network Drive icon and enter the path in the +format: \\[server IP or hostname]\[shared folder]

    +
  4. +
  5. Check the box Connect using different credentials. Enter +the Samba user clearlinuxuser and the password created with +smbpasswd. See Figure 1 for details.

    +
    +Map a network drive in Windows Explorer +

    Figure 1: Map a network drive in Windows Explorer.

    +
    +
  6. +
+

When complete, Windows Explorer displays the share drive as shown in Figure 2.

+
+View a share drive in Windows Explorer +

Figure 2: View a share drive in Windows Explorer.

+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/tensorflow-machine-learning.html b/zh_CN/tutorials/tensorflow-machine-learning.html new file mode 100644 index 000000000..9e2cb449e --- /dev/null +++ b/zh_CN/tutorials/tensorflow-machine-learning.html @@ -0,0 +1,1245 @@ + + + + + + + + + + + + + + TensorFlow* machine learning — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

TensorFlow* machine learning

+

This tutorial demonstrates the installation and execution of a TensorFlow* +machine learning example on Clear Linux* OS. It uses a Jupyter* Notebook and MNIST +data for handwriting recognition.

+

The initial steps show how to set up a Jupyter kernel and run a Notebook +on a bare-metal Clear Linux OS system.

+ +
+

Prerequisites

+

This tutorial assumes you have installed Clear Linux OS on your host system. For +detailed instructions on installing Clear Linux OS on a bare metal system, follow the +bare metal installation tutorial.

+

Before you install any new packages, update Clear Linux OS with the following command:

+
sudo swupd update
+
+
+

After your system is updated, add the following bundles to your system:

+
    +
  • machine-learning-web-ui: This bundle contains the Jupyter application.
  • +
  • machine-learning-basic: This bundle contains TensorFlow +and other useful tools.
  • +
+

To install the bundles, run the following commands in your $HOME +directory:

+
sudo swupd bundle-add machine-learning-web-ui
+
+sudo swupd bundle-add machine-learning-basic
+
+
+
+
+

Set up a Jupyter Notebook

+

With all required packages and libraries installed, set up the file structure +for the Jupyter Notebook.

+
    +
  1. In the $HOME directory, create a directory for the Jupyter +Notebooks named Notebooks.

    +
    mkdir Notebooks
    +
    +
    +
  2. +
  3. Within Notebooks, create a directory named Handwriting.

    +
    mkdir Notebooks/Handwriting
    +
    +
    +
  4. +
  5. Change to the new directory.

    +
    cd Notebooks/Handwriting
    +
    +
    +
  6. +
  7. Copy the MNIST_example.ipynb file into the Handwriting +directory.

    +
    +

    注解

    +

    After installing the machine-learning basic bundle, you can find the example code under +/usr/share/doc/tensorflow/MNIST_example.ipynb.

    +
    +
  8. +
+

The example code downloads and decompresses the MNIST data directly into the +./mnist directory. Alternatively, download the four files directly +from the Yann LeCun’s MNIST Database website and save them into a +mnist directory within the Handwriting directory.

+

The files needed are:

+ +
+
+

Run the Jupyter machine learning example code

+

With Clear Linux OS, Jupyter, and TensorFlow installed and configured, you can +run the example code.

+
    +
  1. Go to the ($HOME)/Notebooks directory and start Jupyter with the +following commands:

    +
    cd ~/Notebooks
    +
    +jupyter notebook
    +
    +
    +

    The Jupyter server starts and opens a web browser showing the Jupyter file +manager with a list of files in the current directory, as shown in +Figure 1.

    +
    +Jupyter file manager +

    Figure 1: The Jupyter file manager shows the list of available files.

    +
    +
  2. +
  3. Click on the Handwriting directory. The MNIST_example.ipynb +file created earlier should be listed there, as shown in Figure 2.

    +
    +Example file within the Jupyter file manager +

    Figure 2: The example file within the Jupyter file manager.

    +
    +
  4. +
  5. To run the handwriting example, click on the MNIST_example.ipynb +file to load the notebook, as shown in Figure 3.

    +
    +The loaded MNIST_example notebook +

    Figure 3: The loaded MNIST_example notebook within the Jupyter file +manager.

    +
    +
  6. +
  7. Click the run-cell button to execute the code in the current cell and +move to the next.

    +
  8. +
  9. Select the In [2] cell and click the run-cell button to load +the MNIST data. The successful output is shown on Figure 4.

    +
    +Successful import of MNIST data +

    Figure 4: Output after successfully importing the MNIST data.

    +
    +

    After the MNIST data is successfully downloaded and extracted into the +mnist directory within the ($HOME)/Notebooks/Handwriting +directory, four .gz files are present and the four data sets are created: +trainX, trainY, testX and testY.

    +
  10. +
  11. To inspect the imported data, the function in In [3] first +instructs Jupyter to reshape the data into an array of 28 x 28 images and to +plot the area in a 28 x 28 grid. Click the run-cell button twice to show +the first two digits in the trainX dataset. An example is shown in +Figure 5.

    +
    +Function to reshape data. +

    Figure 5: A function reshapes the data and displays the first two +digits in the trainX dataset.

    +
    +
  12. +
  13. The In [4] cell defines the neural network. It provides the +inputs, defines the hidden layers, runs the training model, and sets up +the output layer, as shown in Figure 6. Click the run-cell button four +times to perform these operations.

    +
    +Defining, building and training the neural network model +

    Figure 6: Defining, building, and training the neural network model.

    +
    +
  14. +
  15. To test the accuracy of the prediction that the system makes, select the +In [8] cell and click the run-cell button. In this example, +the number 6 was predicted with a 99% accuracy, as shown in Figure 7.

    +
    +Prediction example +

    Figure 7: The system predicts a number providing the accuracy of the +prediction.

    +
    +
    +

    注解

    +

    To retest the accuracy of a random data point’s prediction, run the +cell In [8] again. It will take another random data point +and predict its value.

    +
    +
  16. +
  17. To check the accuracy for the whole dataset, select the In [10] +cell and click the run-cell button. Our example’s accuracy is +calculated as 97.17%, as shown in Figure 8.

    +
    +System's accuracy +

    Figure 8: The system’s accuracy for the entire data set.

    +
    +
  18. +
+

For more in-depth information on the model used and the mathematics it entails, +visit the TensorFlow tutorials +TensorFlow MNIST beginners demo and TensorFlow MNIST pros demo.

+

Congratulations!

+

You have successfully installed a Jupyter kernel on Clear Linux OS. In addition, you +trained a neural network to successfully predict the values contained in a +data set of hand-written number images.

+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/wordpress.html b/zh_CN/tutorials/wordpress.html new file mode 100644 index 000000000..f58f2b27f --- /dev/null +++ b/zh_CN/tutorials/wordpress.html @@ -0,0 +1,1071 @@ + + + + + + + + + + + + + + WordPress* — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

WordPress*

+

This tutorial describes how to setup a web server to host a WordPress* site on a +Clear Linux* OS system. The tutorial is split into two sections:

+
    +
  1. Set up a LAMP web server on Clear Linux* OS
  2. +
  3. Set up WordPress* on a LAMP web server
  4. +
+

If you already have a Clear Linux OS based LAMP web server, +you can skip ahead to the second section of this tutorial.

+
+

注解

+

This tutorial is for development and testing purposes only. Additional steps +are required to secure production systems. Those steps are beyond the scope +of this tutorial.

+
+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/wordpress/web-server-install.html b/zh_CN/tutorials/wordpress/web-server-install.html new file mode 100644 index 000000000..789ec0cd7 --- /dev/null +++ b/zh_CN/tutorials/wordpress/web-server-install.html @@ -0,0 +1,1488 @@ + + + + + + + + + + + + + + Set up a LAMP web server on Clear Linux* OS — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Set up a LAMP web server on Clear Linux* OS

+

This tutorial provides instructions on how to set up a +LAMP web server on Clear Linux* OS and how +to use phpMyAdmin* to manage an associated database. Note that this +tutorial installs MariaDB*, which is a drop-in replacement for MySQL*.

+

In order to create a web server using Clear Linux OS as the host OS, your host system +must be running Clear Linux OS. This tutorial assumes you have installed Clear Linux OS on your +host system. For detailed instructions on installing Clear Linux OS on a bare metal +system, visit 从实时桌面安装 Clear Linux* OS.

+

This tutorial covers:

+ +
+

Install Apache

+

Apache is an open source HTTP web server application that can run on several +operating systems, including Clear Linux OS. Go to the Apache HTTP Server Project +for more information.

+
+

Install the web-server-basic bundle

+

The web-server-basic bundle contains the packages needed to install the +Apache software bundle on Clear Linux OS.

+
+

注解

+

Before you install new packages, update the Clear Linux OS with the following +console command:

+
sudo swupd update
+
+
+
+
    +
  1. To install the bundle, enter the following command:

    +
    sudo swupd bundle-add web-server-basic
    +
    +
    +
  2. +
  3. To start the Apache service, enter the following commands:

    +
    sudo systemctl enable httpd.service
    +sudo systemctl start httpd.service
    +
    +
    +
  4. +
  5. To verify that the Apache server application is running, open a web +browser and navigate to: http://localhost.

    +

    If the service is running, a confirmation message will appear, similar to the +message shown in figure 1.

    +
    +This web server is operational from host. +

    Figure 1: Confirmation that the Apache service is running.

    +
    +
    +

    注解

    +

    The index.html file is located in the /var/www/html directory +of your host system. You will copy this file into a new location after you +modify the configuration in the next step.

    +
    +
  6. +
+
+
+
+

Change the default configuration and data directory

+

Clear Linux OS is designed to be a 无状态 operating system which means that you +must create an optional configuration file to override the default values. +The default location of the Apache configuration file, httpd.conf, +is located in the /usr/share/defaults/httpd directory. Clear Linux OS can +override this directory as part of the stateless paradigm. This default +.conf file includes the following directives that allow for additional +locations of configuration definitions:

+
# Virtual hosts
+IncludeOptional /usr/share/defaults/httpd/conf.d/*.conf
+IncludeOptional /usr/share/defaults/httpd/conf.modules.d/*.conf
+IncludeOptional /etc/httpd/conf.d/*.conf
+IncludeOptional /etc/httpd/conf.modules.d/*.conf
+
+
+

In this section you will define your own httpd.conf file to override the +default values, and define a custom DocumentRoot for your web server.

+
    +
  1. Create the directory structure for /etc/httpd/conf.d.

    +
    sudo mkdir -p /etc/httpd/conf.d
    +
    +
    +
  2. +
  3. Create and open the httpd.conf file in your new /etc/httpd/conf.d +directory.

    +
    sudo nano /etc/httpd/conf.d/httpd.conf
    +
    +
    +
  4. +
  5. Add the DocumentRoot variable to httpd.conf. Copy the content +listed below into the new /etc/httpd/conf.d/httpd.conf file.

    +
    #
    +# Set a new location for DocumentRoot
    +#
    +DocumentRoot "/var/www/tutorial"
    +
    +#
    +# Relax access to content within /var/www/tutorial for this example
    +#
    +<Directory "/var/www/tutorial">
    +  AllowOverride none
    +  Require all granted
    +</Directory>
    +
    +
    +
  6. +
  7. Create a new DocumentRoot directory structure and copy the +index.html file from /var/www/html directory to +/var/www/tutorial.

    +
    sudo mkdir –p /var/www/tutorial
    +cd /var/www/tutorial
    +sudo cp /var/www/html/index.html .
    +
    +
    +
  8. +
  9. To ensure a successful setup, edit the new index.html file with an +obvious change.

    +
    sudo nano index.html
    +
    +
    +

    For example, we changed the default message

    +

    “It works!”

    +

    to

    +

    “It works from its new location!”

    +
  10. +
  11. Stop and then restart httpd.service.

    +
    sudo systemctl stop httpd.service
    +sudo systemctl start httpd.service
    +
    +
    +
  12. +
  13. Go to http://localhost to view the new screen. You should see your updated +default message from step 5.

    +
  14. +
  15. Change the configuration back to the default /var/www/html +location. To do this, edit the /etc/httpd/conf.d/httpd.conf file +again and replace any instance of /var/www/tutorial with /var/www/html.

    +
    sudo nano /etc/httpd/conf.d/httpd.conf
    +
    +
    +
  16. +
  17. Stop and then restart httpd.service.

    +
    sudo systemctl stop httpd.service
    +sudo systemctl start httpd.service
    +
    +
    +
  18. +
  19. Go to http://localhost and verify that you can see the default screen +again.

    +
  20. +
  21. Optionally, remove the /var/www/tutorial directory you previously created.

    +
    sudo rm /var/www/tutorial/index.html
    +sudo rmdir /var/www/tutorial
    +
    +
    +
  22. +
+
+
+

Install PHP

+

An Apache installation allows you to display static web pages. Enabling PHP +allows you to generate and display dynamic web pages. To add this +functionality to your web server, install PHP on your system.

+
    +
  1. To get the php components, enter the following command:

    +
    sudo swupd bundle-add php-basic
    +
    +
    +
  2. +
  3. To enable PHP, enter the following commands:

    +
    sudo systemctl enable php-fpm.service
    +sudo systemctl start php-fpm.service
    +sudo systemctl restart httpd.service
    +
    +
    +

    After restarting the Apache service, test your PHP installation.

    +
  4. +
  5. Create and open a file named phpinfo.php in the /var/www/html/ +directory using a text editor.

    +
    sudo nano /var/www/html/phpinfo.php
    +
    +
    +
  6. +
  7. Add the following line to the file:

    +
    <?PHP phpinfo() ?>
    +
    +
    +
  8. +
  9. Go to http://localhost/phpinfo.php.

    +
  10. +
  11. Verify that the PHP information screen appears, similar to figure 2:

    +
    +PHP information screen +

    Figure 2: The PHP information screen.

    +
    +
  12. +
+

If the PHP information screen is displayed, you have successfully installed +the PHP components and are now ready to add your database application to +complete your LAMP server implementation.

+
+
+

Install MariaDB

+

Install MariaDB to store content. MariaDB is a drop-in replacement for MySQL +and is available in the database-basic Clear Linux OS bundle.

+
    +
  1. To install the database-basic bundle, enter the following command:

    +
    sudo swupd bundle-add database-basic
    +
    +
    +
  2. +
  3. To start MariaDB after it is installed, enter the following commands:

    +
    sudo systemctl enable mariadb
    +sudo systemctl start mariadb
    +
    +
    +
  4. +
  5. To check the status of MariaDB, enter the following command:

    +
    sudo systemctl status mariadb
    +
    +
    +

    Press Ctrl + c or q to exit.

    +
  6. +
+
+

Security hardening

+

With the MariaDB service running, we can perform some basic security +hardening.

+
    +
  1. To add a basic layer of security, enter the following command:

    +
    sudo mysql_secure_installation
    +
    +
    +
  2. +
  3. Respond to the questions that appear in the script below.

    +
    +

    注解

    +

    Our suggested responses follow each question.

    +
    +
    Enter current password for root (enter for none):
    +
    +
    +

    In order to secure MariaDB, we need the current password for the root +user. For a newly installed MariaDB without a set root password, the +password is blank. Thus, press enter to continue.

    +
    OK, successfully used password, moving on...
    +
    +Set root password? [Y/n]
    +
    +
    +

    Set the root password to prevent unauthorized MariaDB root user logins. +To set a root password, type ‘y’.

    +
    New password:
    +
    +
    +

    Type the desired password for the root user.

    +
    Re-enter new password:
    +
    +
    +

    Re-type the desired password for the root user.

    +
    Password updated successfully!
    +Reloading privilege tables..
    +... Success!
    +
    +Remove anonymous users? [Y/n]
    +
    +
    +

    By default, a MariaDB installation includes an anonymous user that allows +anyone to log in to MariaDB without a user account. This anonymous user +is intended only for testing and for a smoother installation. To remove +the anonymous user and make your database more secure, type ‘y’.

    +
    ... Success!
    +Disallow root login remotely? [Y/n]
    +
    +
    +

    Normally, root should only be allowed to connect from the ‘localhost’. This +ensures that someone cannot guess the root password from the network. To +block any remote root login, type ‘y’.

    +
    ... Success!
    +Remove test database and access to it? [Y/n]
    +
    +
    +

    By default, MariaDB includes a database named ‘test’ which anyone can access. +This database is also intended only for testing and should be removed. To +remove the test database, type ‘y’.

    +
    - Dropping test database...
    +... Success!
    +- Removing privileges on test database...
    +... Success!
    +Reload privilege tables now? [Y/n]
    +
    +
    +

    Reloading the privilege tables ensures all changes made so far take +effect immediately. To reload the privilege tables, type ‘y’.

    +
    ... Success!
    +
    +Cleaning up...
    +
    +
    +

    All done! If you’ve completed all of the above steps, your MariaDB +installation should now be secure.

    +

    Thanks for using MariaDB!

    +
  4. +
+

The MariaDB installation is complete, and we can now install phpMyAdmin to +manage the databases.

+
+
+
+

Install phpMyAdmin

+

The web-based tool phpMyAdmin is a straightforward way to manage MySQL or +MariaDB databases. Visit the phpMyAdmin website for the complete +discussion regarding phpMyAdmin, its documentation, the latest downloads, +and other useful information.

+

In this tutorial, we use the latest English version of phpMyAdmin.

+
    +
  1. Download the phpMyAdmin-<version>-english.tar.gz file to your +~/Downloads directory. Here, <version> refers to the current +version available at https://www.phpmyadmin.net/downloads.

    +
    +

    注解

    +

    This example downloads and uses version 4.6.4.

    +
    +
  2. +
  3. Once the file has been successfully downloaded and verified, decompress +the file and directories into the Apache web server document root +directory. Use the following commands:

    +
    cd /var/www/html
    +sudo tar –xzvf ~/Downloads/phpMyAdmin-4.6.4-english.tar.gz
    +
    +
    +
  4. +
  5. To keep things simple, rename the newly created +phpMyAdmin-4.6.4-english directory to phpMyAdmin with the +following command:

    +
    sudo mv phpMyAdmin-4.6.4-english phpMyAdmin
    +
    +
    +
  6. +
+
+
+

Use phpMyAdmin to manage a database

+

You can use the phpMyAdmin web-based tool to manage your databases. Follow the +steps below for setting up a database called “WordPress”.

+
    +
  1. Verify that a successful installation of all LAMP server components by +going to http://localhost/phpMyAdmin. See figure 3.

    +
  2. +
  3. Log in with your root userid and the password you set up when you ran the +mysql_secure_installation command. Enter your +credentials and select Go to log in:

    +
    +phpMyAdmin login page +

    Figure 3: The phpMyAdmin login page.

    +
    +
  4. +
  5. Verify a successful login by confirming that the main phpMyAdmin page +displays, as shown in figure 4:

    +
    +phpMyAdmin dashboard +

    Figure 4: The phpMyAdmin dashboard.

    +
    +
  6. +
  7. Set up a database by selecting the Databases tab, as shown in +figure 5.

    +
  8. +
  9. Enter WordPress in the text field below the Create database +label.

    +
  10. +
  11. Select the utf8_unicode_ci option from the +Collation drop-down menu beside the text field.

    +
  12. +
  13. Click Create.

    +
    +Databases tab +

    Figure 5: The Databases tab.

    +
    +
  14. +
  15. Set up user permissions by selecting the WordPress database +located in the left panel. See figure 6.

    +
  16. +
  17. Select the Privileges tab. Figure 6 shows its contents.

    +
    +Privileges tab +

    Figure 6: The Privileges tab.

    +
    +
  18. +
  19. Click Add user account located at the bottom of the +Privileges tab. The Add user account page appears, as shown +in figure 7.

    +
    +User accounts tab +

    Figure 7: The User accounts tab.

    +
    +
  20. +
  21. Enter the following information in the corresponding fields that appear +in figure 7 above:

    +
      +
    • User name: wordpressuser
    • +
    • Password: wp-example
    • +
    • Re-type: wp-example
    • +
    +
  22. +
  23. In the Database for user account section, select +Grant all privileges on database “WordPress”.

    +
  24. +
  25. At the bottom of the page, click Go.

    +
  26. +
+

If successful, you should see the screen shown in figure 8:

+
+User added successfully +

Figure 8: The user wordpressuser is successfully added.

+
+

Congratulations!

+

You have now created a fully functional LAMP server along with a +WordPress*-ready database using Clear Linux OS.

+
+
+

Next steps

+

Next, add the WordPress components needed to host a WordPress website with Set up WordPress* on a LAMP web server.

+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/wordpress/wp-install.html b/zh_CN/tutorials/wordpress/wp-install.html new file mode 100644 index 000000000..75b96f570 --- /dev/null +++ b/zh_CN/tutorials/wordpress/wp-install.html @@ -0,0 +1,1212 @@ + + + + + + + + + + + + + + Set up WordPress* on a LAMP web server — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Set up WordPress* on a LAMP web server

+

This tutorial shows you how to install the WordPress* components on your Clear Linux OS +LAMP server. At the end of +Set up a LAMP web server on Clear Linux* OS, you created a WordPress-ready database using +phpMyAdmin* and MariaDB*. Now that the LAMP server is up and running, you +can add the WordPress components needed to host a WordPress website on your system.

+
+

Before you begin

+

This tutorial assumes that you have successfully completed +从实时桌面安装 Clear Linux* OS and you have Set up a LAMP web server on Clear Linux* OS.

+
+
+

Create a WordPress server

+

WordPress can be installed in a variety of ways. These instructions are +written for users who have followed our instructions for installing phpMyAdmin +when they set up a LAMP web server. Note that +all steps in this tutorial have been tested using a NUC6i5SYH Intel® NUC. +Visit the NUC6i5SYH product page for detailed information.

+

Numerous online articles are available to help you name your website and +acquire the necessary certificates. Those tasks are beyond the scope of this tutorial.

+

You can take several actions to harden your website from attacks. The security +of your website and the data it contains are complex and ever-evolving tasks. +Prioritize security if you plan to expose your website to the outside world. +This tutorial does not address security measures that you can take to harden +your site but we strongly encourage you to take action.

+
+

注解

+

Throughout this tutorial, we reference your website name as <your_website>.

+
+
+

Download WordPress and manage directories

+

For this tutorial, you will create a WordPress blog that can be accessed at: +http://<your_website>/blog.

+

To accomplish this setup, you must add WordPress components to the /var/www/html/blog +directory.

+

Follow these steps:

+
    +
  1. Navigate to the top level of the website’s root directory:

    +
    cd /var/www/html
    +
    +
    +
  2. +
  3. Download the latest version of WordPress:

    +
    sudo curl -O https://wordpress.org/latest.tar.gz
    +
    +
    +
  4. +
  5. Extract all files and directories from the downloaded file:

    +
    sudo tar –xzvf latest.tar.gz
    +
    +
    +
  6. +
  7. Rename the top-level WordPress directory to “blog”:

    +
    sudo mv wordpress blog
    +
    +
    +
  8. +
  9. Remove the downloaded tar file:

    +
    sudo rm latest.tar.gz
    +
    +
    +
  10. +
+
+
+

Set up WordPress with web-based GUI

+

Recall that you created a database and user when you installed phpMyAdmin when you +set up a Clear Linux OS based web server. Next, you must +connect WordPress to the database and install WordPress.

+

To continue with the setup, go to: http://<your_website>/blog/wp-admin/install.php. +The WordPress language option screen appears, as shown in figure 1.

+
    +
  1. Select English and click Continue.

    +
    +WordPress language selection +

    Figure 1: WordPress language selection screen.

    +
    +

    The WordPress installation continues until the Welcome screen appears, as shown in +figure 2:

    +
    +WordPress welcome screen +

    Figure 2: WordPress Welcome screen.

    +
    +
  2. +
  3. Click Let’s go!.

    +
  4. +
  5. Enter database connection specifics in the screen that appears, as shown in figure 3 +below.

    +
      +
    • Database name: WordPress
    • +
    • Database username: wordpressuser
    • +
    • Database password: wp-example (asterisks will not appear in the text box)
    • +
    • Database host: localhost
    • +
    • Table prefix: wp_
    • +
    +
    +Database connection details +

    Figure 3: Information necessary for WordPress to connect to the database.

    +
    +
  6. +
  7. Click Submit to complete the setup.

    +

    Figure 4 shows the confirmation screen that verifies a successful setup. WordPress +is connected to the MariaDB database.

    +
    +Successful database connection. +

    Figure 4: Successful WordPress connection.

    +
    +
  8. +
  9. Click Run the install. +The installer runs until WordPress is fully installed on your system.

    +
  10. +
+
+
+

Complete successful login

+

Once the installation is complete, you can name your blog and create a WordPress username +and password. See figure 5.

+
+WordPress user creation +

Figure 5: WordPress site information screen.

+
+
    +
  1. Enter all required information.

    +
  2. +
  3. Click Install WordPress.

    +
  4. +
  5. Verify that the initial login screen appears once the installation is complete. See figure 6:

    +
    +WordPress login +

    Figure 6: The WordPress login screen.

    +
    +
  6. +
  7. Enter your WordPress username and password.

    +
  8. +
  9. Check Remember me to save your credentials.

    +
  10. +
  11. Click Log in.

    +
  12. +
+

Figure 7 shows the WordPress dashboard after a successful login:

+
+WordPress Dashboard +

Figure 7: The WordPress dashboard.

+
+

You are ready to go!

+

To check out your blog as it is seen by the outside world, enter: +http://<your_website>/blog on your browser. Figure 8 shows the result:

+
+WordPress blog +

Figure 8: Your WordPress blog.

+
+

Congratulations, your WordPress blog is up and running!

+

You have successfully installed WordPress on a host system.

+

Add new entries to your blog and share them with the world using Clear Linux OS!

+
+
+
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh_CN/tutorials/yubikey-u2f.html b/zh_CN/tutorials/yubikey-u2f.html new file mode 100644 index 000000000..6095bee7d --- /dev/null +++ b/zh_CN/tutorials/yubikey-u2f.html @@ -0,0 +1,1148 @@ + + + + + + + + + + + + + + YubiKey* Support — Documentation for Clear Linux* project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

YubiKey* Support

+

YubiKey* is a USB security token manufactured by Yubico. Depending on the +model, a YubiKey can support different authentication protocols including: +One-Time Password (OTP), Smart card, FIDO2, and Universal 2nd Factor (U2F).

+

These instructions will go over configuring a YubiKey for U2F authentication +through a web browser on a Clear Linux* OS system.

+

A list of websites +accepting U2F authentication with the YubiKey is available on the Yubico +website. See the Yubico website to learn more about the Yubikey: +https://www.yubico.com/getstarted/meet-the-yubikey/

+ +
+

Prerequisites

+

This tutorial assumes you have:

+
    +
  1. Clear Linux OS installed and running.
  2. +
  3. Mozilla Firefox installed on Clear Linux OS.
  4. +
  5. A YubiKey.
  6. +
+
+
+

Enable Linux udev rules for YubiKey

+

udev is the Linux device manager which handles events when USB +devices are added and removed. Custom rules needs to be created to properly +identify the YubiKey and provide applications access.

+

These instructions are derived from: Yubico support article Using Your U2F +YubiKey with Linux

+
    +
  1. Create the udev rules folder under /etc

    +
    sudo mkdir -p /etc/udev/rules.d/
    +
    +
    +
  2. +
  3. Download the u2f rules from the Yubico GitHub:

    +
    curl -O https://raw.githubusercontent.com/Yubico/libu2f-host/master/70-u2f.rules
    +
    +
    +
  4. +
  5. Move the downloaded 70-u2f.rules file into the /etc/udev +folder

    +
    sudo mv 70-u2f.rules /etc/udev/rules.d/
    +
    +
    +
  6. +
  7. The udev rules should automatically be reloaded. However, they can be +manually reloaded or reboot the system:

    +
    sudo udevadm control --reload-rules && sudo udevadm trigger
    +
    +
    +
  8. +
  9. Plugin and validate the YubiKey appears as a USB device:

    +
    lsusb
    +
    +
    +
  10. +
+
+
+

Enable U2F in Mozilla Firefox

+

Firefox comes with U2F web authentication support disabled by default. U2F +needs to be enabled in the advanced settings.

+

These instructions are derived from: Yubico support article Enabling U2F +support in Mozilla Firefox

+
    +
  1. Launch Mozilla Firefox

    +
  2. +
  3. In the URL bar, type about:config to access the advanced +settings.

    +
    about:config
    +
    +
    +
  4. +
  5. Click the I accept the risk! button to continue to the advanced settings

    +
  6. +
  7. Search for the security.webauth.u2f and double-click it +so Value becomes true.

    +
  8. +
+

Your YubiKey is now usable on Clear Linux OS with Mozilla Firefox with websites that +support U2F authentication.

+
+ +
+ + +
+ +
+ + +
+ +
+

*Other names and brands may be claimed as the property of others.

+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file