分类 技术 下的文章

厌倦了窗口混乱和手动调整? GNOME 正在集体讨论一个自动化且用户友好的窗口管理系统。这是你需要了解的情况。

窗口管理是桌面计算的一个重要方面,几十年来一直是人们着迷和探索的话题。然而,尽管进行了多次尝试,仍然没有人能够破解完美的窗口管理解决方案的密码。GNOME 开发人员现在开始致力于彻底改变窗口管理,旨在提高生产力和用户体验。

GNOME 开发人员 Tobias Bernard 发表了一篇 详细的文章,介绍了开发人员如何考虑为未来创新 GNOME 桌面。

传统窗口系统的挑战

传统的窗口系统为我们提供了很好的服务,允许应用生成可以手动移动和调整大小的矩形窗口。然而,随着窗口数量和尺寸的增加,问题开始出现。重叠的窗口很快就会变得一团糟,使得在不隐藏其他应用的情况下访问特定应序变得困难。最大化窗口可能会遮挡桌面上的其他所有内容,从而导致混乱和效率低下。

多年来,各种操作系统引入了工作区、任务栏和切换器等解决方法来处理这些问题。然而,窗口管理的核心问题仍未解决。特别是对于儿童和老年人等计算机新手来说,手动排列窗口可能会很麻烦且乏味。

引入平铺窗口管理器

平铺窗口管理器提供了防止窗口重叠的替代解决方案。虽然它们在某些情况下运行良好,但也有其局限性。平铺窗口可能会导致效率低下,因为应用通常是针对特定尺寸和纵横比设计的。此外,这些窗口管理器缺乏关于窗口内容和上下文的知识,需要额外的手动调整,并违背了简化工作流程的目的。更不用说记住很多键盘快捷键了。

GNOME 当前的平铺功能

GNOME 已经在 GNOME 3 系列中尝试了基本的平铺功能。然而,现有的实现有一些局限性。这是一个手动过程,仅支持两个窗口,缺乏复杂布局的可扩展性,并且不会将平铺窗口分组到窗口栈中。

窗口管理的新愿景

该团队提出了一种新的窗口管理方法,重点关注符合用户期望和需求的自动化系统。他们的概念涉及窗口的三种潜在布局状态:马赛克、边缘平铺和浮动。

马赛克模式将成为默认行为,根据用户偏好和可用屏幕空间智能定位窗口并调整窗口大小。随着新窗口的打开,现有窗口将进行调整以适应新来者。如果窗口不适合当前布局,它将被放置在自己的工作区中。当屏幕接近布满时,窗口将自动平铺。

用户还可以通过将窗口拖动到现有窗口或空白区域上来手动平铺窗口。该系统提供了灵活性和便利性,使其更容易高效地执行多任务。

维护用户友好的浮动窗口

虽然平铺提供了多种好处,但 GNOME 开发人员明白,总会有用户更喜欢手动定位窗口的情况。因此,经典的浮动行为仍然适用于这些特定情况,但随着新的马赛克系统的引入,它可能不太常见。

利用窗口元数据增强性能

GNOME 旨在优化平铺体验,以从窗口收集有关其内容的更多信息。这包括窗口的最大所需尺寸以及应用最佳运行的理想尺寸范围等详细信息。通过使用这些元数据,系统可以定制窗口布局以满足用户的需求,从而提高整体可用性。

展望未来

虽然 GNOME 开发人员对这个新的窗口管理方向感到兴奋,但他们也承认与这种新颖方法相关的风险。他们计划进行用户研究以验证他们的假设并完善交互。尽管没有具体的实施时间表,但该项目可能会跨越多个开发周期,并成为 GNOME 46 或更高版本的一部分。

截至发布此内容时,还没有草案合并请求,你可以参与其中并提供反馈。

参考自 Tobias 的博客

(题图:MJ/04285b09-a074-4f6f-a32e-ae5af06f1d1f)


via: https://debugpointnews.com/gnome-window-management-proposal/

作者:arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

GitLab 是一个开源平台,提供了强大且功能丰富的解决方案,用于管理仓库、问题、CI/CD 管道等。如果你是 Ubuntu 22.04 或 20.04 用户,并且想要设置自己的 GitLab 实例来简化你的 DevOps 工作流程,那么你来对地方了。

本分步指南将引导你完成 Ubuntu 22.04 或 20.04 上 GitLab 的安装过程。GItlab 提供企业版(Gitlab EE)和社区版(Gitlab CE)。在这篇文章中,我们将介绍社区版。

先决条件:

  • 运行 Ubuntu 22.04 或 20.04 且具有 SSH 访问权限的虚拟或专用服务器。
  • 静态主机名(gitlab.linuxtechi.net
  • 具有管理员权限的 Sudo 用户
  • 2GB 内存或更多
  • 2 个或更多 vCPU
  • 互联网连接

1、更新系统包

让我们首先更新软件包列表并将任何现有软件包升级到最新版本。

$ sudo apt update
$ sudo apt upgrade -y

应用更新后重新启动系统。

$ sudo reboot

2、安装依赖项

GitLab 需要一些依赖项才能正常运行。使用以下命令安装它们:

$ sudo apt install -y curl openssh-server ca-certificates postfix

在 postfix 安装过程中,会出现一个配置窗口。选择 “Internet Site”并输入服务器的主机名作为邮件服务器名称。这将允许 GitLab 发送电子邮件通知。

选择 “Internet Site”,然后选择 “OK”。

检查系统的主机名并选择 “OK”。

3、添加 GitLab Apt 存储库

现在,我们将添加 GitLab 仓库,运行以下 curl 命令。它将自动检测你的 Ubuntu 版本并相应地设置仓库。

$ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

4、安装 Gitlab

运行以下命令在你的 ubuntu 系统上自动安装和配置 gitlab-ce,将服务器的主机名替换为你的设置,

$ sudo EXTERNAL_URL="http://gitlab.linuxtechi.net" apt install gitlab-ce

上述命令成功执行后,我们将得到如下输出。

上面的输出确认 GitLab 已成功安装。gitlab web 界面的用户名是 root,密码存储在 /etc/gitlab/initial_root_password

注意:如果你的 ubuntu 系统上启用了操作系统防火墙,那请允许 80 和 443 端口。

$ sudo ufw allow http
$ sudo ufw allow https

5、访问 GitLab Web 界面

安装并配置 GitLab 后,打开 Web 浏览器并输入服务器的 IP 地址或主机名。

http://<Server-IP-Address-or-Hostname>
  • 用户名:root
  • 密码:从 /etc/gitlab/initial_root_password 获取密码

点击“ 登录 Sign in ”。

很好,上面确认我们已经成功登录 Gitlab Web 界面。

目前我们的 GitLab 服务器运行在 http(80)协议上,如果你想为你的 GitLab 启用 https,请参考以下步骤。

6、为 GitLab Web 界面设置 HTTPS

为提高安全性,可使用自签名证书或 Let's Encrypt 为 GitLab 实例配置 HTTPS。Let's Encrypt 只适用于互联网上有 A 记录的公有域。但在本例中,我们使用的是私有域,因此将使用自签名证书来确保 GitLab 的安全。

现在,让我们创建以下文件夹并使用 openssl 命令生成自签名证书:

$ sudo mkdir -p /etc/gitlab/ssl
$ sudo chmod 755 /etc/gitlab/ssl

使用以下 openssl 命令生成私钥:

$ sudo openssl genrsa -des3 -out /etc/gitlab/ssl/gitlab.linuxtechi.net.key 2048

输入密码并记住它。

使用以下命令创建 CSR:

$ sudo openssl req -new -key /etc/gitlab/ssl/gitlab.linuxtechi.net.key -out /etc/gitlab/ssl/gitlab.linuxtechi.net.csr

从密钥中删除密码串,依次执行以下命令:

$ sudo cp -v /etc/gitlab/ssl/gitlab.linuxtechi.net.{key,original}
$ sudo openssl rsa -in /etc/gitlab/ssl/gitlab.linuxtechi.net.original -out /etc/gitlab/ssl/gitlab.linuxtechi.net.key
$ sudo rm -v /etc/gitlab/ssl/gitlab.linuxtechi.net.original

创建证书文件:

$ sudo openssl x509 -req -days 1460 -in /etc/gitlab/ssl/gitlab.linuxtechi.net.csr -signkey /etc/gitlab/ssl/gitlab.linuxtechi.net.key -out /etc/gitlab/ssl/gitlab.linuxtechi.net.crt

使用下面的 rm 命令删除 CSR 文件:

$ sudo rm -v /etc/gitlab/ssl/gitlab.linuxtechi.net.csr

设置密钥和证书文件的权限:

$ sudo chmod 600 /etc/gitlab/ssl/gitlab.linuxtechi.net.key
$ sudo chmod 600 /etc/gitlab/ssl/gitlab.linuxtechi.net.crt

Gitlab 服务器的所有重要配置均由文件 /etc/gitlab/gitlab.rb 控制,因此编辑此文件,搜索 external_url 并添加 https://gitlab.linuxtechi.net

$ sudo vi /etc/gitlab/gitlab.rb
----------------------------------------------------------
external_url 'https://gitlab.linuxtechi.net'
----------------------------------------------------------

保存并退出文件,使用下面的命令重新配置 gitlab,以便其 Web 界面可以使用 HTTPS。

$ sudo gitlab-ctl reconfigure

成功执行上述命令后,你的 GitLab 界面应该可以通过 HTTPS 协议访问,在我的例子中,URL 为:https://gitlab.linuxtechi.net/

当你第一次访问它时,它会说你的连接不安全,点击“接受风险并继续”。

结论

恭喜! 你已在 Ubuntu 22.04 或 20.04 系统上成功安装 GitLab。随着 GitLab 的启动和运行,你现在可以创建仓库,与你的团队协作,并通过 GitLab 令人印象深刻的功能增强你的开发工作流程。享受无缝版本控制、持续集成等,一切尽在你的掌控之中!

(题图:MJ/c6a3e27e-fe58-4184-b133-9e9c67224316)


via: https://www.linuxtechi.com/how-to-install-gitlab-on-ubuntu/

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这里有一些技巧和调整,通过将终端和文件管理器结合在一起,以节省你的时间。

Nautilus 是 GNOME 桌面环境中的图形化文件浏览器。你可以使用它来访问和管理系统中的文件和文件夹。

尽管并非所有人都喜欢使用终端来管理文件和目录,但你也可以通过终端进行文件和目录管理。

然而,你可能会遇到需要在终端和文件管理器之间切换的情况。

有多种方法可以在 Nautilus 文件管理器和终端之间进行交互。令人惊讶的是,并不是所有的 Linux 用户都知道这些方法。

例如,在 Nautilus 中,右键单击并选择“ 在终端中打开 Open in terminal ”选项,将在终端中打开当前目录位置。

在 Linux 中从 Nautilus 文件管理器中打开终端

这只是我在本文中要与你分享的众多示例之一。

1、拖放获取绝对路径

如果你将文件夹或文件拖放到终端中,其绝对路径将被粘贴到终端屏幕上。

将文件或文件夹从 Nautilus 拖放到终端会粘贴该项的绝对路径

当你在文件浏览器中深入目录结构并且不想在终端中键入整个路径时,这样做很有帮助。

2、进入目录

这与上面看到的类似。如果你在目录结构中深入进入,并且不想为 切换到该目录 键入整个路径,这个技巧很有帮助。

在终端中键入 cd 命令,然后拖放以进入目录。

在键入"cd"命令后,通过拖放将目录输入终端

3、在编辑器中打开文件

类似地,你可以使用 Nano 或 Vim 编辑器打开文件进行 编辑

将文件拖放到 nano 命令中以打开它进行编辑。

在键入"nano"后,将需要编辑的文件拖放到终端

4、使用 sudo 权限打开文件进行编辑

与上述相同,但这次你可以使用 sudo 权限打开文件进行编辑。

使用 sudo 权限打开 sources.list 文件进行编辑

5、拖放多个文件(如果命令支持多个参数)

你也可以拖放多个文件以获取它们的绝对路径。这可以与接受多个参数的命令一起使用。

例如,diff 命令用于检查两个文件之间的差异。输入 diff,然后拖放你想要检查差异的文件。

通过选择文件并将其拖放为 diff 命令参数来检查两个文件的差异

6、从文本文件复制粘贴

阅读文档并且需要在终端中运行其中提到的命令?你当然可以 在终端中复制粘贴

然而,更快捷的方法是选中文本并将其拖放到终端。

这个技巧也适用于 GNOME-Sushi 预览。

使用 GNOME-Sushi 从任何文件的预览中拖放一些文本

7、从浏览器中拖放

与上述的文本文件类似,你也可以从浏览器中拖放文本。这有助于在进行教程操作时同时查看教程。

从互联网拖放代码或网址到终端,无需复制或粘贴

8、在 Nautilus 中嵌入终端

无法离开终端?直接将其嵌入到文件管理器中。这样,你无需单独 打开一个终端

这里的关键是,如果你在文件浏览器中切换到另一个目录,嵌入的终端会自动切换到相应的目录。

你也可以在 Nautilus 嵌入的终端中执行大部分上述的拖放操作。例如,通过拖放 .bashrc 文件并使用 grep,在 .bashrc 中搜索特定文本。

通过在嵌入的终端中拖放 .bashrc 文件并使用 grep,在 bashrc 中搜索特定文本

9、在嵌入的终端之间拖放文件标签

终端和文件管理器都支持选项卡视图。你可以在选项卡之间拖放文件。

例如,要 检查 ISO 的 shasum 值,输入 shasum 命令,然后从另一个选项卡中拖放文件,如下所示。

检查 ISO 的 shasum 值,输入 shasum 命令,然后从另一个选项卡中拖放文件

更多关于 Nautilus 和终端的内容

喜欢这些技巧吗?也许你想学习更多类似的技巧。

如果你想更充分地利用 Nautilus 文件管理器,这里有一些技巧供你参考。

调整你的 Nautilus 文件管理器的 13 种办法

这里还有一些探索的终端技巧:

19 个你应该掌握的基本但重要的 Linux 终端技巧

? 你是否了解其他将终端和文件管理器结合使用的酷炫技巧?不妨在下方的评论区与我们分享一下!

(题图:MJ/ba1ee1c9-07e5-4fc8-bd2c-bde469ce095c)


via: https://itsfoss.com/terminal-nautilus-combination/

作者:Abhishek Prakash 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LUKS 是 Linux 用户中流行的磁盘加密机制。在这篇术语解析文章中,可以了解更多关于 LUKS 的信息。

计算机安全旨在保护私密信息。有许多方法可以保护系统。一些用户使用简单的用户名/密码登录方案进行基本保护。其他用户可能会通过加密以不同的方式增加额外的保护,如使用 VPN 和磁盘加密。

如果你的计算机上有敏感的客户数据(你可能在经营一家企业),或被视为知识产权的材料,或者你对隐私非常谨慎,你可能要考虑磁盘加密。

磁盘加密的一些好处包括:

  • 保护系统免受黑客的攻击
  • 防止数据泄露
  • 保护你免受潜在的责任问题

磁盘加密软件可以防止台式机硬盘驱动器、便携式 USB 存储设备或笔记本电脑被访问,除非用户输入正确的身份验证数据。如果你的笔记本电脑丢失或被盗,加密会保护磁盘上的数据。

如今,新的 Windows 系统默认配备了 BitLocker 加密。在 Linux 上,LUKS 是最常用的磁盘加密方式。

想知道什么是 LUKS?我会为你简要介绍这个主题。

技术术语

在继续之前,需要定义一些术语。LUKS 有很多内容,因此将其拆解为细项将有助于你进一步了解。

Volume :卷是一个逻辑存储区域,可用于存储数据。在磁盘加密的场景中卷指的是已加密以保护其内容的磁盘部分。

参数 Parameters :参数是控制加密算法运行方式的设置。参数可能包括所使用的加密算法、密钥大小以及有关如何执行加密的其他详细信息。

加密类型 Cipher type **:它是指用于加密的数学算法。它指的是用于保护加密卷上数据的具体加密算法。

密钥大小Key size:密钥大小是衡量加密算法强度的指标:密钥大小越大,加密强度越高。通常以位数表示,例如 128 位加密或 256 位加密。

头部 Header :头部是加密卷开头的特殊区域,包含有关加密的信息,例如所使用的加密算法和加密密钥。

下一个定义对于新手来说可能有些棘手,但了解它还是很重要的,尤其在处理 LUKS 时,这会非常有用。

容器 Container :容器是一个特殊的文件,类似于虚拟加密卷。它可以用于存储加密数据,就像加密分区一样。不同之处在于容器是一个文件,可以存储在未加密的分区上,而加密分区是整个磁盘的一部分,已经完全加密。因此,容器是 充当虚拟加密卷的文件

LUKS 是什么以及它能做什么?

LUKS( Linux 统一密钥设置 Linux Unified Key Setup )是由 Clemens Fruhwirth 在 2004 年创建的磁盘加密规范,最初用于 Linux。它是一种知名的、安全的、高性能的磁盘加密方法,基于改进版本的 cryptsetup,使用 dm-crypt 作为磁盘加密后端。LUKS 也是网络附加存储(NAS)设备中常用的加密格式。

LUKS 还可以用于创建和运行加密容器。加密容器具有与 LUKS 全盘加密相同的保护级别。LUKS 还提供多种加密算法、多种加密模式和多种哈希函数,有 40 多种可能的组合。

LUKS 结构示意图

任何文件系统都可以进行加密,包括交换分区。加密卷的开头有一个未加密的头部,它允许存储多达 8 个(LUKS1)或 32 个(LUKS2)加密密钥,以及诸如密码类型和密钥大小之类的加密参数。

这个头部的存在是 LUKS 和 dm-crypt 的一个重要区别,因为头部允许使用多个不同的密钥短语,并能轻松更改和删除它们。然而,值得提醒的是,如果头部丢失或损坏,设备将无法解密。

LUKS 有两个版本,LUKS2 具有更强的头部损坏抗击性,并默认使用 Argon2 加密算法(LUKS1 使用 PBKDF2)。在某些情况下,可以在两个版本之间进行转换,但是 LUKS1 可能不支持某些功能。

希望了解更多信息?

希望本文有助于你对 LUKS 和加密有一些了解。关于使用 LUKS 创建和使用加密分区的确切步骤会因个人需求而异,因此我不会在此处涵盖安装和设置方面的内容。

如果你想要一份指南来帮助你设置 LUKS,可以在这篇文章中找到一个很好的指南:《使用 LUKS 对 Linux 分区进行基本加密指南》。如果你对此还不熟悉,并且想要尝试使用 LUKS,可以在虚拟机或闲置计算机上进行安全学习,以了解其工作原理。

(题图:MJ/2c6b83e6-4bcb-4ce3-a49f-3cb38caad7d2)


via: https://itsfoss.com/luks/

作者:Bill Dyer 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文介绍如何在 Fedora 中自动签署英伟达内核模块。

在启用安全启动的 Fedora 中安装英伟达驱动

背景信息

现在新出厂的电脑 UEFI 会默认开启 安全启动 Secure Boot ,它的作用是防止恶意软件侵入。当电脑的引导程序被病毒修改之后,它会给出提醒并拒绝启动,避免可能带来的进一步损失。不过它同样会阻止一些未经微软签名的 Linux 内核启动运行。虽然可以直接选择在主板设置中关闭安全启动来解决这些麻烦,但在近期微软公布的 Windows 11 最低硬件标准中可以看到,安全启动被微软看的越来越重。如果你的电脑是 Windows + Linux 双系统,最好还是让 Linux 本身支持安全启动。

而最好用的发行版之一 Fedora 更热衷于开源驱动。Fedora 其本身是支持安全启动的,但是当你通过 Rpmfusion 安装官方的英伟达驱动,会造成这些驱动的内核模块未签名。在 Linux 启动过程中因为安全启动校验签名,会阻止加载这些模块,进而无法正常驱动显卡。

用过 Ubuntu 的伙伴们应该知道,在安全启动开启的情况下,Ubuntu 安装程序会自动用自签密钥来签名英伟达驱动内核模块,并在开机过程中自动将该自签密钥导入 MOK List(安全启动机器主人信任密钥列表)。但 Fedora 只会保证自身内核签名有效,而对 Rpmfusion 中的第三方内核模块签名问题不予理会,导致无法正常加载英伟达驱动。

本文介绍如何在 Fedora 中自动签署英伟达内核模块

准备工作

在 Fedora 36 之前,要像 Ubuntu 那样自动签署内核模块有点困难。但从这个版本开始,你只需几个简单的步骤就能做到。

在开始之前,让我们先确认一些前提条件已经满足:

  1. 已启用安全启动;
  2. 尚未安装英伟达驱动程序(非常关键,如果你已经安装了专有的英伟达驱动,可能需要重装系统才行);
  3. 以及安装了 Fedora 36 及以上版本。

本指南主要参考了以下资料:

  1. Rpmfusion 的官方英伟达文档
  2. Rpmfusion 的官方安全启动文档
  3. Andrei Nevedomskii 的博客教程

希望深入了解的朋友可以阅读上述资料进一步研究。

具体步骤

1、安装自动签名所需的工具

sudo dnf install kmodtool akmods mokutil openssl

2、生成签名密钥

sudo kmodgenca -a

该命令会在 /etc/pki/akmods/certs/ 目录下生成密钥,运行正确的情况下不会有输出。

3、启动密钥注册

这将使 Linux 内核信任使用你的密钥签名的驱动程序。

sudo mokutil --import /etc/pki/akmods/certs/public_key.der

你会被要求输入一个密码。请记住这个密码,在下面的第五步中还需要再次使用。

4、重启以注册密钥

sudo reboot

5、注册密钥

重启后,你将看到蓝色的 MOK 管理器界面,不要被这种类似 BSOD 的页面吓坏,按照以下步骤注册密钥。

如果你曾在启用安全启动的 Ubuntu 中安装过英伟达驱动程序,你可能见过这个界面。

1、首先要及时按任意建继续进入 MOK 管理(如果没有及时进入 MOK 管理,系统会重启)

MOK 管理界面1

2、首先选择 “Enroll MOK” 注册 MOK。

3、然后选择 “Continue”。

4、选择 “Yes” 并输入步骤 3 中的密码并回车(密码不会在输入框中显示,输入密码直接回车就好了)。

MOK 管理界面2

5、此时密钥已经注册,选择 “reboot”,设备将再次重启。

MOK 管理界面3

6、安装英伟达驱动程序

现在只需正常安装英伟达驱动程序。

sudo dnf install gcc kernel-headers kernel-devel akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-libs

7、确保内核模块已编译

sudo akmods --force

8、确保启动镜像也已更新

sudo dracut --force

9、重启设备

sudo reboot

验证是否成功

重启完成后,输入以下命令确认驱动是否加载:

lsmod | grep -i nvidia

如果有类似以下的输出,恭喜你,一切顺利,一切就绪!

$ lsmod | grep -i nvidia

nvidia_drm             94208  2
nvidia_modeset       1560576  2 nvidia_drm
nvidia_uvm           3493888  0
nvidia              62517248  118 nvidia_uvm,nvidia_modeset
video                  73728  3 asus_wmi,i915,nvidia_modeset

现在,你可以愉快的在开启安全启动的情况下使用英伟达显卡了。

希望本文能够帮助到你。


作者简介:一个喜欢瞎鼓捣的外科医生


via: https://www.insidentally.com/articles/000034/

作者:insidentally 编辑:wxy

本文由贡献者投稿至 Linux 中国公开投稿计划,采用 CC-BY-SA 协议 发布,Linux中国 荣誉推出

对于什么是 systemd,以及为什么它经常成为 Linux 世界争议的焦点,你可能仍然感到困惑。我将尝试用简单的语言来回答。

在 Linux 世界中,很少有争议能像传统的 System V 初始化 系统(通常称为 SysVinit)和较新的 systemd 之间的斗争那样引起如此大的争议。

在这篇文章中,我将简要讨论什么是 systemd、它相对于传统初始化系统有哪些优点和缺点以及为什么它会引起争议。

什么是 systemd?

systemd 是一个系统和服务管理器,于 2010 年首次推出,用于取代传统的 System V 初始化系统。它旨在提高启动速度并更有效地管理系统服务。如今,systemd 是许多流行 Linux 发行版的默认初始化系统,包括 Ubuntu、Fedora 和 Red Hat Enterprise Linux(RHEL)。

systemd 是守护进程吗?

尽管名字中带有 “d”,但 systemd 并不是一个守护进程。相反,它是一个为 Linux 提供许多系统组件的软件套件。其目标是标准化 Linux 发行版的服务配置和行为。

systemd 的主要组件是一个“系统和服务管理器”,它充当初始化系统来引导用户空间并管理用户进程。它还提供了各种守护程序和实用程序的替代品,从设备和登录管理到网络连接管理和事件记录。

systemd 的主要特性

systemd 具有许多功能,例如它能够主动并行化操作、方便按需启动守护进程、使用 Linux 控制组监视进程、管理挂载点和自动挂载点,以及实现复杂的基于事务依赖的服务控制逻辑。

此外,systemd 支持 SysV 和 LSB 初始化脚本,作为 SysVinit 的替代品。它还提供了一个日志守护进程和用于管理基本系统配置的工具程序。

systemd on fedora - Courtesy of Wikimedia

systemd 与 SysVinit:争议

SysVinit 与 systemd 争论的核心围绕如何最好地管理基于 Linux 的系统。关注的范围从复杂性和兼容性到管理系统服务的最佳方式,涉及系统管理员和 Linux 爱好者面临的基本问题。

批评者认为 systemd 过于复杂和巨大化,使得故障排除变得更加困难。他们担心单点故障,因为所有服务都由一个守护进程管理,并且担心与 Linux 内核的紧密集成,这可能会限制向其他系统的可移植性。

这就是为什么有些人创建 脱离 systemd 的发行版 的原因。

然而,支持者称赞 systemd 提供了一种更高效、更现代的系统管理方法,其服务启动的并行性和守护进程的按需启动减少了启动时间并提高了系统响应能力。他们还赞扬其先进的日志记录功能。

尽管存在争议,systemd 已成为许多 Linux 发行版的默认初始化系统,系统管理员和开发人员已经开始欣赏它的高级特性和功能。

systemd 与 SysVinit 的优点和缺点

优点:

SysVinit 的优点systemd 的优点
简单且熟悉提高启动速度
尊重 Unix 哲学标准化日志系统
更直接地控制系统服务一致的服务管理方法
系统成熟稳定与现代 Linux 系统和应用程序的兼容性
与遗留系统和应用的兼容性来自大型开发者和贡献者社区的积极开发和支持

缺点:

SysVinit 的缺点systemd 的缺点
与新的初始化系统相比功能有限复杂性和陡峭的学习曲线
缺乏对服务并行启动的内置支持有侵入性,可能会破坏与传统 Unix 工具和程序的兼容性
可能比新的初始化系统效率低,尤其是在大型系统上某些系统可能会出现不稳定和崩溃的情况
对现代 Linux 系统和应用的有限支持与尚未支持 systemd 的遗留系统和应用的兼容性有限

总结:个人观点

作为一名来自 UNIX 早期的 Linux 用户,我更倾向于传统的初始化系统。然而,尽管我最初有所抵触,但我已经开始接受 systemd,并看到了它的一些好处。每个系统在 Linux 世界中都有自己的位置,了解这两个系统非常重要。

关于 systemd 的争论仍在继续。你对此有何看法?

(题图:MJ/efce857c-2d1a-4bf0-a400-8eb60e9f3271)


via: https://itsfoss.com/systemd-init/

作者:Bill Dyer 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出