+++
title = "Linux之旅(3):内核/shell/包管理/文件系统/桌面环境"
date = 2023-07-22

[taxonomies]
tags = ["Linux"]
+++

前言 在Linux世界中，内核/shell/包管理/文件系统构成了Linux系统的核心，它们相互配合，共同构建了一个强大而稳定的操作环境。本文将深入探讨这些关键组成部分，解释它们的作用和原理，帮助读者更好地理解Linux系统的运作机制。
<!-- more -->

## **一.Linux内核**

有许多不同的版本，每个版本都包含了一系列的功能改进、bug修复和性能优化。在Linux发行版中，通常会使用某个特定版本的Linux内核，或者在需要时进行升级。以下是一些常见的Linux内核及其主要特点：

**Zen内核**：
   - Zen内核是Linux内核的一个变体，旨在提供更好的性能和响应性。它通常包含了一些特定的调度程序和调优参数，以提高系统的负载均衡和响应速度。Zen内核也可能包含一些来自其他内核变体的功能和补丁，以进一步优化性能。

**LTS内核**：
   - LTS（Long-Term Support）内核是一种长期支持的内核版本，它会获得更长时间的更新和维护。LTS内核通常会选择一些相对稳定和经过充分测试的功能，并对其进行长期支持，以确保系统的稳定性和安全性。

**Real-Time内核**：
   - Real-Time内核是一种专门针对实时应用场景进行优化的内核变体。它通常包含了一些实时调度算法和机制，以确保系统能够及时响应各种事件，并满足实时性要求。Real-Time内核适用于一些对实时性要求较高的应用，如工业控制、机器人控制等领域。

**Hardened内核**：
   - Hardened内核是一种针对安全性进行优化的内核变体。它通常包含了一些安全增强功能和补丁，以提高系统的安全性和抵御攻击的能力。Hardened内核适用于一些对安全性要求较高的应用，如服务器、云计算等场景。

**XanMod内核**：
   - XanMod内核是一个基于Linux内核的自定义内核，旨在提供更好的响应性和性能。它包含了一些针对桌面和工作站系统优化的功能和补丁，如MuQSS调度器、BFQ I/O调度器等，以提高系统的响应速度和性能稳定性。XanMod内核还支持一些实时性应用，如音视频处理等，适用于对系统响应速度要求较高的用户。

**CachyOS内核**：
   - CachyOS内核是一个专门针对缓存优化的Linux内核变体。它包含了一些针对缓存系统优化的功能和调整，以提高系统的缓存性能和数据访问速度。CachyOS内核通常适用于需要高性能缓存的应用场景，如数据库服务器、Web服务器等。

这些内核变体针对不同的需求和使用场景进行了优化，可以根据具体的应用需求来选择合适的内核版本。例如，如果您需要更好的性能和响应性，可以选择Zen内核；如果您需要长期支持和稳定性，可以选择LTS内核；如果您需要实时性能，可以选择Real-Time内核；如果您需要更高的安全性，可以选择Hardened内核。

## **二.Linux Shell**

在Linux系统中，有许多不同的Shell（命令行解释器），每种Shell都有自己的特点和用途。以下是一些常见的Linux Shell及其主要特点：

**Bash（Bourne Again Shell）**：
   - Bash是Linux系统中最常用的Shell之一，也是默认的命令行解释器。它是Bourne Shell的增强版，提供了丰富的功能和扩展性，包括命令历史、命令补全、作业控制等。Bash具有良好的兼容性和易用性，适用于日常的系统管理和脚本编程。

**Zsh（Z Shell）**：
   - Zsh是一种功能强大的Shell，提供了丰富的功能和扩展性，如更强大的命令补全、自动纠正拼写错误、主题和插件系统等。Zsh具有良好的可定制性和用户体验，适用于高级用户和程序员。

**Fish（Friendly Interactive Shell）**：
   - Fish是一种用户友好的交互式Shell，提供了直观的命令提示和自动补全功能，以及丰富的语法高亮和命令提示信息。Fish具有良好的用户体验和易用性，适用于初学者和普通用户。

**Dash（Debian Almquist Shell）**：
   - Dash是一种轻量级的Shell，专门设计用于系统启动过程和脚本执行。Dash具有较高的执行速度和较低的内存占用，适用于系统启动脚本和简单的脚本编程。

Bash是最常用的Shell之一，具有良好的兼容性和功能性；Zsh提供了更多的高级特性和定制选项，适用于高级用户和程序员；Fish具有友好的交互式体验和直观的用户界面，适用于初学者和普通用户；Dash则是一个轻量级的Shell，专门用于系统启动过程和简单的脚本编程。用户可以根据自己的需求和偏好选择合适的Shell。


## **三.Linux包管理器**

在Linux系统中，有几种常见的包管理器，它们各自管理着不同的发行版，具有不同的特点和用途。以下是一些常见的Linux包管理器及其主要特点：

**APT（Advanced Package Tool）**：
   - APT是Debian系（如Debian、Ubuntu）中最常用的包管理器之一。它使用基于命令行的工具，如`apt-get`、`apt-cache`等来安装、升级和删除软件包。APT还支持依赖关系的自动解决，使得软件包的安装和管理变得更加方便。

**YUM（Yellowdog Updater, Modified）**：
   - YUM是Red Hat系（如CentOS、Fedora）中常用的包管理器之一。它使用基于命令行的工具，如`yum`来管理软件包。YUM具有良好的依赖关系解决能力和事务处理功能，使得系统升级和软件包管理变得更加简单和可靠。

**DNF（Dandified YUM）**：
   - DNF是YUM的下一代版本，逐渐取代了YUM在Fedora和RHEL系列中的地位。DNF具有更快的包查询和事务处理能力，以及更友好的用户界面。它是未来主流的包管理器之一。

**Pacman（Package Manager）**：
   - Pacman是Arch Linux中常用的包管理器，也被一些其他发行版如Manjaro采用。Pacman使用简洁的命令，如`pacman -S`安装软件包、`pacman -Syu`更新系统等来管理软件包。Pacman具有简单、直观的界面和快速的操作速度，适用于对系统有一定了解的用户。

**zypper**：
   - zypper是openSUSE中常用的包管理器，它使用基于命令行的工具，如`zypper install`、`zypper update`等来管理软件包。zypper具有良好的依赖关系解决能力和事务处理功能，使得系统升级和软件包管理变得更加简单和可靠。

**dpkg**：
   - dpkg是Debian系（如Debian、Ubuntu）中的低级别软件包管理工具，用于直接管理软件包的安装、升级和删除。它提供了一系列的命令，如`dpkg -i`安装软件包、`dpkg -r`删除软件包等。

**RPM（RPM Package Manager）**：
   - RPM是Red Hat系（如CentOS、Fedora）中的低级别软件包管理工具，用于直接管理软件包的安装、升级和删除。它提供了一系列的命令，如`rpm -i`安装软件包、`rpm -e`删除软件包等。

**Portage**：
   - Portage是Gentoo Linux中的包管理器，它使用源代码进行软件包的安装和管理。Portage具有高度定制化和灵活性，允许用户根据需要自定义软件包的编译参数和依赖关系。

**Snap**：
   - Snap是一种跨发行版的软件包格式和包管理器，允许用户在不同的Linux发行版上安装和管理软件包。Snap具有自包含性和隔离性，使得软件包的安装和升级变得更加简单和安全。

**Flatpak**：
   - Flatpak是另一种跨发行版的软件包格式和包管理器，类似于Snap，允许用户在不同的Linux发行版上安装和管理软件包。Flatpak提供了一种统一的应用分发和运行环境，使得软件包的安装和升级更加简单和可靠。



## **四.Linux文件系统**

Linux系统支持多种文件系统，每种文件系统都有自己的特点和优势，适用于不同的应用场景和需求。以下是一些常见的Linux文件系统及其主要特点：

**ext4**：
   - ext4是Linux系统中最常用的文件系统之一，它是ext文件系统的后续版本，提供了更好的性能和扩展性。ext4支持更大的文件和分区大小，更快的文件系统检查和恢复速度，以及更高的性能和稳定性。

**Btrfs**：
   - Btrfs是一种先进的文件系统，具有许多先进的功能和特性，如快照、数据校验、数据压缩等。Btrfs支持在线扩展和收缩分区大小，以及动态添加和删除磁盘，适用于需要高级特性和灵活性的应用场景。此外，Btrfs对快照功能支持较好。

> 快照功能是一种文件系统的特性，它允许用户在特定时间点对文件系统的状态进行快照或备份，并且可以在需要时一键恢复到该时间点的状态。
快照允许用户轻松地创建文件系统的历史版本，并在需要时回滚到特定的版本；快照允许用户在文件系统中进行实验和测试，并在测试失败或不需要时轻松地回滚到初始状态，以避免对系统造成影响。在升级或安装过程中出现问题时快速恢复到原始状态



**XFS**：
   - XFS是一种高性能的日志文件系统，适用于大型文件和高吞吐量的应用场景。XFS支持大容量的文件和分区，具有较低的碎片化和较高的并发性能，适用于大规模存储和数据分析等应用。

**ZFS**：
   - ZFS是一种先进的文件系统，具有强大的数据管理和保护功能，如快照、数据校验、数据压缩等。ZFS支持软件RAID和存储池（pool），以及动态添加和删除磁盘，适用于数据中心和大规模存储等应用场景。

**F2FS**：
   - F2FS是一种针对闪存存储设备进行优化的文件系统，具有高性能和高可靠性。F2FS支持闪存特性如块擦除计数（block erase count）和块生命周期管理（block lifetime management），适用于固态硬盘（SSD）和闪存卡等闪存设备。

## **五.Linux桌面环境**

Linux系统有多种不同的桌面环境，每种环境都有其独特的特点、风格和用户体验。以下是一些常见的Linux桌面环境及其主要特点：

**GNOME**：
   - GNOME是一个功能强大、现代化的桌面环境，具有直观的用户界面和丰富的功能。它采用了扁平化的设计风格和简洁的用户界面，提供了丰富的应用程序和插件，适用于普通用户和开发人员。

**KDE Plasma**：
   - KDE Plasma是一个灵活、可定制的桌面环境，提供了丰富的特性和选项，如桌面特效、窗口管理器、小部件等。它采用了现代化的设计风格和强大的桌面管理功能，适用于高级用户和技术爱好者。

**XFCE**：
   - XFCE是一个轻量级、快速的桌面环境，具有简洁的用户界面和低资源消耗。它采用了传统的桌面布局和简约的设计风格，提供了基本的桌面管理功能和应用程序，适用于老旧计算机和资源有限的环境。

**LXQt**：
   - LXQt是一个轻量级、快速的桌面环境，是LXDE和Razor-qt的合并项目。它采用了现代化的设计风格和简洁的用户界面，提供了丰富的特性和可定制选项，适用于资源有限的环境和嵌入式系统。

**Cinnamon**：
   - Cinnamon是一个基于GNOME的桌面环境，具有类似于传统Windows桌面的用户界面和功能。它采用了传统的桌面布局和直观的用户体验，提供了丰富的特性和可定制选项，适用于对传统桌面风格有需求的用户。

GNOME和KDE Plasma提供了丰富的特性和高度定制化选项，适用于高级用户和开发人员；XFCE和LXQt则提供了轻量级和快速的用户体验，适用于资源有限的环境；Cinnamon则提供了类似于传统Windows桌面的用户界面和功能，适用于对传统桌面风格有需求的用户。可以根据自己的需求和偏好选择合适的桌面环境。

> 当然，也可以使用轻量级的窗口管理器。
窗口管理器是Linux系统中控制窗口布局、管理窗口行为的关键组件。它们决定了窗口的外观和行为方式，以及如何管理和排列窗口。以下是一些常见的窗口管理器及其主要特点：

**X Window Manager (XWM)**：
   - X Window Manager是最基本的窗口管理器，用于管理X Window系统中的窗口。它提供了最基本的窗口布局和管理功能，如窗口移动、调整大小、最小化等。XWM本身并不提供任何外观效果，但可以与其他工具配合使用来实现更丰富的窗口管理和外观特性。

**Openbox**：
   - Openbox是一个轻量级的窗口管理器，具有简洁的用户界面和低资源消耗。它提供了丰富的自定义选项和扩展功能，如虚拟桌面、窗口装饰、键盘快捷键等。Openbox适用于资源有限的环境和对简洁风格有需求的用户。

**i3**：
   - i3是一个动态平铺窗口管理器，采用了平铺式布局，将窗口按照一定规则自动排列在屏幕上。它提供了快速的窗口切换和管理功能，支持键盘操作和自动布局调整，适用于需要高效多任务处理的用户。

**Awesome**：
   - Awesome是一个高度可定制的动态平铺窗口管理器，具有丰富的特性和扩展功能。它采用Lua脚本语言进行配置和定制，支持强大的自定义选项和扩展功能，适用于高级用户和技术爱好者。

**KWin**：
   - KWin是KDE桌面环境中的默认窗口管理器，具有丰富的特性和功能。它提供了多种窗口布局和管理选项，支持虚拟桌面、窗口效果、窗口组织等功能，适用于需要丰富特性和高度定制化的用户。

这些窗口管理器之间的主要异同在于窗口布局、外观效果、自定义选项和功能特性等方面。Openbox和i3提供了简洁的用户界面和低资源消耗，适用于资源有限的环境；Awesome和KWin则提供了丰富的特性和扩展功能，适用于高级用户和技术爱好者。用户可以根据自己的需求和偏好选择合适的窗口管理器。

> Wayland和X11
Wayland和X11都是用于Linux系统的图形显示协议，它们负责管理图形用户界面（GUI）的显示和交互。下面是它们的简要介绍以及异同点：

- **X11（X Window System）**：
X11是一个由MIT开发的图形显示协议，长期以来一直是Linux系统中最常用的图形显示系统。它采用客户端-服务器模型，图形应用程序（客户端）通过X服务器与显示设备（服务器）进行通信。X11提供了丰富的图形特性和功能，如窗口管理、窗口装饰、多任务处理等。

- **Wayland**：
Wayland是一个由Red Hat主导开发的新一代图形显示协议，旨在取代X11成为Linux系统的标准图形显示系统。Wayland采用了现代化的设计理念和架构，取消了X11中复杂的客户端-服务器模型，将图形显示功能直接集成到操作系统中。Wayland具有更低的延迟和更高的性能，支持更好的硬件加速和多触摸设备，以及更简洁的代码结构。

**异同点**：
- **架构差异**：X11采用了客户端-服务器模型，图形应用程序通过X服务器与显示设备进行通信；而Wayland取消了这种模型，将图形显示功能直接集成到操作系统中，减少了中间层的复杂性。
- **性能差异**：Wayland具有更低的延迟和更高的性能，支持更好的硬件加速和多触摸设备，使得图形显示更加流畅和响应。
- **功能差异**：X11提供了丰富的图形特性和功能，如窗口管理、窗口装饰、多任务处理等；Wayland在功能上相对较少，但提供了更简洁的代码结构和更好的性能。
- **兼容性差异**：X11在Linux系统中被广泛使用，拥有大量的应用程序和工具的支持；而Wayland在兼容性方面仍在发展中，尚未完全取代X11成为Linux系统的标准图形显示系统。

总的来说，Wayland是未来Linux系统中的趋势，具有更好的性能和更简洁的架构，但在兼容性和功能丰富度上仍有待改进。X11则是当前仍然广泛使用的图形显示系统，拥有丰富的生态和大量的应用程序支持。


## **六.后记**

个人使用推荐Zen+Zsh+Pacman+Btrfs+Hyprland,并使用 paru xxx 来搜索软件包，使用paru -S xxx 安装软件。
