分类 技术 下的文章

这篇详细的教程一步一步地向你展示 如何双启动 Fedora Linux 和 Windows 10,附有适当的截图。

双启动 Linux 和 Windows 是一种完全享受这两款操作系统的流行方式。你可以在同一个硬件系统上安装 Linux 和 Windows 两款系统,并在你启动你的硬件系统时选择使用哪款操作系统。

On the grub screen, you can select the operating system

如果你有一个已经安装 Windows 的系统,你将在这篇教程中学习如何在 Windows 的旁侧安装 Fedora 。

在 Windows 的旁侧安装 Fedora

这篇教程是在一款已经安装 Windows,采用 GPT 分区和 UEFI 启动的硬件系统的基础上执行的。它应该也适用于其它的带有 MBR 分区和传统 BIOS 的硬件系统,但是我不能确认这一点。

注意:如果你的 Windows 系统使用 BitLocker 加密,在你安装 Fedora 前禁用它会是一个好主意。

必要条件

这里是你需要遵循这篇教程的东西:

  • 一个已预装 Windows 的系统
  • 良好的互联网连接速度
  • 一个至少 4 GB 大小的 USB 接口设备(U 盘)
  • 可选: 用于备份你的 Windows 现有数据的外部 USB 磁盘。
  • 可选: Windows 恢复或可启动磁盘(如果你偶遇一些严重的启动问题,你可以修复它)。

让我们看看步骤。

步骤 1: 制作 Windows 系统的数据备份 [可选]

备份总会是一个好主意。因为你将要处理磁盘分区。在一些罕见的不幸情况下,假设你出错并删除了错误的分区,你将丢失你的数据。

最简单的方法是将文档、视频、音乐、图片和其它的文件夹中的数据复制到一块外部 USB 磁盘中。你可以使用一个外部的机械硬盘(传输速度较慢,但是价格较便宜)或固态硬盘(传输速度较快,但是价格较昂贵),并将重要的文件和文件夹复制到其中。

步骤 2: 为 Fedora 的安装准备一些可用的空间

你需要创建一个分区,你将在其中安装 Fedora 。如果你只有一个 C 驱动器,缩小它的分区。如果你有 D、E 或 F 等多个驱动器,确保你可以移动这些驱动器中的数据到一些其它的分区中,删除或缩小其中的一个驱动器。超过 40 GB 的驱动器分区都能有足够的空间来安装安装 Fedora 。

在 Windows 的菜单中,搜索 “磁盘分区” 并转到 “创建并格式化磁盘分区”。

在磁盘管理工具中,右键单件你想要分区的驱动器,并选择 “缩小卷”。

如果你只有一个像这样的分区,你需要为 Linux 腾出一些可用的空间。如果你有一些空间相当大的分区,请使用除 C 驱动器分区外的分区,因为它会擦除数据。

步骤 3: 在 Windows 中制作一个 Fedora 的临场 USB

现在,这个步骤可以通过不同的方法来完成。你可以下载 ISO 并使用 Etcher 或 Rufus 或一些其它的工具来将 ISO 镜像写入 USB 磁盘。

不过,Fedora 提供了一个用于下载 ISO 镜像和制作 临场 USB Live USB 的专用工具。我将在这篇教程中使用它。Fedora 团队在创建这个工具时付出了很多艰难的努力,因此为什么不使用它呢。

但是,首先, 插入 USB 接口设备。现在,转到 Fedora 的下载页面:

你将看到针对 Windows 版本的下载 “Fedora Media Writer” 工具的选项。

它将下载一个 exe 文件。在下载完成后,转到你所下载到的文件夹,并双击 FedoraMediaWriter.exe 文件来安装 “Fedora Media Writer” 工具。只需要重复点击 “ 下一步 next

在安装完成后,运行 “Fedora Media Writer” 工具。但是在此之前,确保你已经插入 USB 设备

它将给予你安装各种 Fedora 版本的选项。针对桌面机,选择 工作站 Workstation 版本。

在接下来的屏幕中,你将会得到一个创建临场 USB 的选项。当你点击这个按钮时,它将开始下载 ISO 文件。它也将识别出你所插入的 USB 接口设备。

你需要良好的互联网访问速度来在一段时间内顺畅地下载 2GB 大小的 ISO 文件。

在下载 ISO 后,它会自动地对其进行检验,并给予你将 ISO 镜像写入到 USB 磁盘的选项,例如,创建临场 USB 。点击 “ 写入到磁盘 Write to Disk ” 按钮。

它将花费几分钟来完成安装过程。它显示 “ 完成 Finished ” 信息后,你可以关闭 “Fedora Media Writer” 工具了。

很好!现在你已经准备好了 Fedora 临场 USB 。现在是时候使用它来安装带有图形用户界面的 Fedora 了。

步骤 4: 从临场 USB 启动并安装 Fedora

一些系统不允许你在使用安全启动的情形下从临场 USB 启动。如果你是这种情况的话,请 禁用安全启动

在处于显示硬件系统制造商徽标的屏幕期间,按下 F2F10F12 按键。如果你不确定是哪个按键,你可以逐个尝试。但是,你要 快速地 按下按键 ,否则它将会启动到操作系统之中。

不同品牌计算机的按键是不同的。一些计算机甚至可能使用 EscDel 按键来完成此目的。

Quickly press F2, F10 or F12 keys at the screen showing your system manufacturer’s logo

在一些罕见的情况下,你可能需要 在 Windows 中访问 UEFI 启动设置

在 BIOS 设置中,通常,你应该会看到像这样的屏幕。在这里,你可以使用箭头按键来向下移动到 USB 选项,并按下回车键来从 USB 启动。请注意,在不同的系统中,这一屏幕可能会看起来有所不同。

如果一切顺利,你应该会看到像下面的一个屏幕。选择第一个选项 “ 启动 Fedora 工作站 Start Fedora Workstation ”:

在数秒后,你应该会启动到 Fedora 临场会话期间,并会看到尝试或安装它的选项。选择 “ 安装到硬盘 Install to Hard Drive ” 。

它会要求选择安装过程的语言选项。

接下来的屏幕是很重要的。如果你已经在 “步骤 2” 中创建了可用的空间,你应该能够点击 “ 开始安装 Begin Installation ” 。如果你在“ 系统 SYSTEM ”下的磁盘图标上看到一个感叹号,单击它,并查看你能够在这里使用哪种磁盘配置。

如果你有多个磁盘,你可以为 Fedora 选择使用哪个磁盘。

选择磁盘,并点击“ 完成 Done ” 。现在,你应该会看到一条警告信息。在我的实例中,我没有在 “步骤 2” 中创建可用的空间,因此它会抱怨这里没有足够的可用的空间来安装 Fedora 。

我点击 “ 回收空间 Reclaim space ” ,并缩小在这里的 Windows 分区。

在这以后,将出现 “ 开始安装 Begin Installation ” 选项,开启安装过程。

现在,它只是一个需要耐心等待的游戏了。将花费数分钟来提取文件并安装它们。

当过程完成后,你将看到 “ 结束安装 Finish Installation ” 按钮,点击它。

你将回到 Fedora 临场会话期间。单击右上角的下拉菜单并选择 “ 重新启动 Restart ” 。

现在,当系统启动时,你应该会看到带有启动到 Fedora 和 Windows 选项的 Grub 启动器

步骤 5: 完成 Fedora 安装

至此你几乎完成了安装。你注意到 Fedora 没有要求你输入用户名和密码了吗?很多发行版(像 Ubuntu )在安装期间会要求你创建一个管理用户。作为另一种方式,Fedora 会在你第一次登录到所安装的系统时给予你这个选项。

当你第一次登录时,它会运行一次设置,并创建用户名和密码来作为这次初始化设置的一部分。

在你完成后,你已经用上 Fedora Linux 了。

就这样,你可以在同一个硬件系统上以双启动的模式来享受 Fedora Linux 和 Windows 。

如果你在学习这篇教程时有一些问题或者你正在面对一些重大难题,请在评论系统中告诉我。


via: https://itsfoss.com/dual-boot-fedora-windows/

作者:Abhishek Prakash 选题:lujun9972 译者:robsean 校对:wxy

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

不再使用某个应用程序了?删除它吧。

卸载不再使用的应用是 最简单释放磁盘空间的方法 ,而且可以使系统保持整洁。

在此篇入门教程中,我会介绍几种不同在 Ubuntu 上卸载应用程序的方法。

在 Ubuntu 中有几种方法 安装应用 ,同意也有以下几种方法卸载应用:

  • 从 Ubuntu 软件中心 Software Center 卸载应用(桌面用户)
  • apt remove 命令卸载应用
  • 用命令行中删除 Snap 应用(中级到高级用户)

让我们来一个一个了解这些方法。

方法 1:用 Ubuntu 软件中心卸载应用

在左侧栏或者菜单中找到 Ubuntu 软件中心 Software Center ,打开它。

已安装 Installed 栏中列出了已安装的应用。

如果你要找的应用不在 已安装 Installed 栏中,可以使用搜索查找应用。

打开已经安装的应用,有一个 移除 Remove 选项,点击它。

这会请求输入账户密码,输入后应用会在几秒内删除。

方法2: Ubuntu 命令行卸载应用

安装应用时使用 apt-get install 或者 apt install 。 卸载应用时使用 apt-get remove 或者 apt remove ,而不是 apt-get uninstall

按照以下方式使用命令:

sudo apt remove program_name

执行此操作会请求你的账户密码。当输入密码时,屏幕上不会有提示。输入完后按下回车。

待删除的应用不会立刻被删除。你需要确认。当询问你的确认时,请输入回车或者按下 Y

请在命令行中输入准确的包的名字,不然会出现 “不能找到软件包的错误” 错误 。

不要担心记不住具体的应用名字,你可以使用超级有用的 Tab 补全应用名称。 Tab 是你必须知道的 Linux 命令行技巧 之一。

你只需要输入想要卸载应用的前几个字母,然后按下 tab ,会提示以这几个字母开头的已安装应用程序。

找到要卸载的应用名称,输入完整的应用名称然后卸载。

如果不知道具体的应用名称或者开头字母,你可以 列出 Ubuntu 中所有已安装的包 ,然后查找符合你记忆的应用名称。

比如,下图的命令会列出所有已安装的应用名称中包含 ‘my’ 的应用,不仅仅是以 ‘my’ 开头的应用。

apt list --installed | grep -i my

这非常酷炫对不对?在 Ubuntu 中使用卸载命令时请注意应用名。

补充:使用 apt purge 卸载应用(进阶用户)

当在 Ubuntu 中卸载应用时,应用程序会被卸载,但是会留下细小的、修改过的用户配置文件。这些文件是故意被留下的,因为当你再次安装同样的应用时,会使用这些遗留的配置文件。

如果你想完全卸载应用,你可以使用 apt purge 命令代替 apt remove 命令,或者在 apt remove 命令后再使用它。

sudo apt purge program_name

注意 apt purge 令不会删除保存在用户目录下的数据或者配置文件。

方法3: Ubuntu 中卸载 Snap 应用

前面的几种方式可用于使用 apt 命令、 软件中心 Software Center 或者直接使用 deb 文件安装的应用。

Ubuntu 也推出了一个名为 Snap 的包管理系统。在 软件中心 Software Center 中的大部分应用都是 Snap 包格式。

你可以使用 软件中心 Software Center 轻松地卸载这些应用,也可以使用命令行卸载。

列出所有已经安装的 Snap 包名字:

snap list

选择你想要卸载的应用,然后卸载,这不会要求你确认是否删除。

sudo snap remove package_name

妙招:用一个神奇的命令清理系统

到此你已经学会怎么卸载应用,现在使用一个简单的命令清理卸载残留,比如不再用到的依赖或 Linux 内核头文件。

在终端输入如下命令:

sudo apt autoremove

这条命令很安全,而且会释放几百 MB 的磁盘空间。

总结

本文一共介绍了三种卸载应用的方法,包括通过图形界面卸载、命令行卸载,以便你了解所有方式。

希望此篇教程对 Ubuntu 初学者有所帮助,欢迎提出问题和建议。


via: https://itsfoss.com/uninstall-programs-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:amagicowboy 校对:wxy

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

对齐部署镜像和描述符是很困难的,但是某些策略可以使整个过程更高效。

 title=

在软件架构中,当两个组件之间有某些概念性或技术上的差异时会出现 阻抗失配 impedance mismatch 。这个术语其实是从电子工程中借用的,表示电路中输入和输出的电子阻抗必须要匹配。

在软件开发中,存储在镜像仓库中的镜像与存储在源码控制管理系统(LCTT 译注:SCM,Source Code Management)中它的 部署描述符 deployment descriptor 之间存在阻抗失配。你如何确定存储在 SCM 中的部署描述符表示的是正确的镜像?两个仓库追踪数据的方式并不一致,因此将一个镜像(在镜像仓库中独立存储的不可修改的二进制)和它的部署描述符(Git 中以文本文件形式存储的一系列修改记录)相匹配并不那么直观。

注意:本文假定读者已经熟悉以下概念:

  • 源码控制管理 Source Control Management (SCM)系统和分支
  • Docker 或符合 OCI 标准的镜像和容器
  • 容器编排系统 Container Orchestration Platforms (COP),如 Kubernetes
  • 持续集成/持续交付 Continuous Integration/Continuous Delivery (CI/CD)
  • 软件开发生命周期 Software development lifecycle (SDLC)环境

阻抗失配:SCM 与镜像仓库

为了更好地理解阻抗失配在什么场景下会成为问题,请考虑任意项目中的软件开发生命周期环境(SDLC),如开发、测试或发布环境。

测试环境不会有阻抗失配。现在使用 CI/CD 的最佳实践中开发分支的最新提交都会对应开发环境中的最新部署。因此,一个典型的、成功的 CI/CD 开发流程如下:

  1. 向 SCM 的开发分支提交新的修改
  2. 新提交触发一次镜像构建
  3. 新生成的镜像被推送到镜像仓库,标记为开发中
  4. 镜像被部署到容器编排系统(COP)中的开发环境,该镜像的部署描述符也更新为从 SCM 拉取的最新描述符。

换句话说,开发环境中最新的镜像永远与最新的部署描述符匹配。回滚到前一个构建的版本也不是问题,因为 SCM 也会跟着回滚。

最终,随着开发流程继续推进,需要进行更多正式的测试,因此某个镜像 —— 镜像对应着 SCM 中的某次提交 —— 被推到测试环境。如果是一次成功的构建,那么不会有大问题,因为从开发环境推过来的镜像应该会与开发分支的最新提交相对应。

  1. 开发环境的最新部署被允许入库,触发入库过程
  2. 最新部署的镜像被标记为测试中
  3. 镜像在测试环境中被拉取和部署,(该镜像)对应从 SCM 拉取的最新部署描述符

到目前为止,一切都没有问题,对吗?如果出现下面的场景,会有什么问题?

场景 A:镜像被推到下游环境,如 用户验收测试 user acceptance testing (UAT),或者是生产环境。

场景 B:测试环境中发现了一个破坏性的 bug,镜像需要回滚到某个确定正常的版本。

在任一场景中,开发过程并没有停止,即开发分支上游有了一次或多次新的提交,而这意味着最新的部署描述符已经发生了变化,最新的镜像与之前部署在测试环境中的镜像不一致。对部署描述符的修改可能会也可能不会对之前版本的镜像起作用,但是它们一定是不可信任的。如果它们有了变化,那么它们就一定与目前为止你测试过的想要部署的镜像的部署描述符不一致。

问题的关键是:如果部署的镜像不是镜像库中的最新版本,你怎么确定与部署的镜像相对应的是 SCM 中的哪个部署描述符? 一言以蔽之,无法确定。两个库直接有阻抗失配。如果要详细阐述下,那么是有方法可以解决的,但是你需要做很多工作,这部分内容就是文章接下来的主题了。请注意,下面的方案并不是解决问题的唯一办法,但是已经投入到生产环境并已经对很多项目起了作用,而且已经被构建并部署到生产环境中运行了超过一年。

二进制与部署描述符

源码通常被构建成一个 Docker 镜像或符合 OCI 标准的镜像,该镜像通常被部署到一个容器编排平台(COP)上,如 Kubernetes。部署到 COP 需要部署描述符来定义镜像被如何部署以及作为容器运行,如 Kubernetes 部署CronJobs。这是因为在镜像和它的部署描述符之间有本质差异,在这里可以看到阻抗失配。在这次讨论中,我们认为镜像是存储在镜像仓库中不可修改的二进制。对源码的任何修改都不会修改镜像,而是用另一个新的镜像去替换它。

相比之下,部署描述符是文本文件,因而可以被认为是源码且可修改。如果遵循最佳实践,那么部署描述符是被存储在 SCM,所有修改都会提交,而这很容易回溯。

解决阻抗失配

建议的解决方案的第一部分,就是提供一个能匹配镜像仓库中的镜像与对保存部署描述符的 SCM 做的代码提交的方法。最直接的解决方案是用源提交的哈希值标记镜像。这个方法可以区分不同版本的镜像、容易分辨,并且提供足够的信息来查找正确的部署描述符,以便镜像更好地部署到 COP。

再回顾下上面的场景:

场景 A 镜像被推到下游环境: 当镜像被从测试环境推到 UAT 环境时,我们可以从镜像的标签中知道应该从 SCM 的哪一次源码提交拉取部署描述符。

场景 B 当一个镜像需要在某一环节中回滚:无论我们选择回滚到那个镜像版本,我们都可以知道从 SCM 的哪一次源码提交拉取正确的部署描述符。

在每一种情景中,无论在某个镜像被部署到测试环境后开发分支有多少次提交和构建,对于每一次升级的镜像,我们都可以找到它当初部署时对应的部署描述符。

然而,这并不是阻抗失配的完整解决方案。再考虑两个场景:

场景 C 在负载测试环境中,会尝试对不同的部署描述符进行多次部署,以此来验证某一次构建的表现。

场景 D 一个镜像被推送到下游环境,在该环境中部署描述符有一个错误。

在上面的所有场景中,我们都需要修改部署描述符,但是目前为止我们只有一个源码提交哈希。请记住,最佳实践要求我们所有对源码的修改都要先提交到 SCM。某次提交的哈希本身是无法修改的,因此我们需要一个比仅仅追踪原来的源码提交哈希更好地解决方案。

解决方案是基于原来的源码提交哈希新建一个分支。我们把这个分支称为部署分支。每当一个镜像被推到下游测试或发布环境时,你应该基于前一个 SDLC 环境的部署分支的最新提交创建一个新的部署分支。

这样同一个镜像可以重复多次部署到不同的 SDLC 环境,并在后面每个环境中可以感知前面发现的改动或对镜像做的修改。

注意: 在某个环境中做的修改是如何影响下一个环境的,是用可以共享数据的工具(如 Helm Charts)还是手动剪切、粘贴到其他目录,都不在本文讨论的范围内。

因此,当一个镜像被从一个 SDLC 环境中推到下一环境时:

  1. 创建一个部署分支

    1. 如果镜像是从开发环境中推过来的,那么部署分支就基于构建这个镜像的源码提交哈希创建
    2. 否则,部署分支基于当前部署分支的最新提交创建
  2. 镜像被部署到下一个 SDLC 环境,使用的部署描述符是该环境中新创建的部署分支的部署描述符

deployment branching tree

图 1:部署分支树

  1. 部署分支
  2. 下游环境的第一个部署分支,只有一次提交
  3. 下游环境的第二个部署分支,只有一次提交

有了部署分支这个解决方案,再回顾下上面的场景 C 和场景 D:

场景 C 修改已经部署到下游 SDLC 环境中的镜像的部署描述符

场景 D 修复某个 SDLC 环境中部署描述符的错误

两个场景中,工作流如下:

  1. 把对部署描述符做的修改提交到 SLDC 环境和镜像对应的部署分支
  2. 通过部署分支最新提交对应的部署描述符把镜像重新部署到 SLDC 环境

这样,部署分支彻底解决了(存储着代表一次独一无二的构建的单一的、不可修改的镜像的)镜像仓库与(存储着对应一个或多个 SDLC 环境的可修改的部署描述符的)SCM 仓库之间的阻抗失配。

实践中的思考

这看起来像是行得通的解决方案,但同时它也为开发者和运维人员带来了新的实践中的问题,比如:

A. 为了更好地管理部署分支,部署描述符作为资源应该保存在哪里,是否要与构建镜像的源码保存在同一个 SCM 仓库?

到目前为止,我们都在避免谈论应该把部署描述符放在哪个仓库里。在还没有太多细节需要处理时,我们推荐把所有 SDLC 环境的部署描述符与镜像源码放在同一个 SCM 仓库。当部署分支创建后,镜像的源码可以作为方便找到部署的容器中运行的镜像的引用来使用。

上面提到过,可以通过镜像的标签来关联镜像与原始的源码提交。在一个单独的仓库中查找某次提交的源码的引用,会给开发者带来更大的困难(即便借助工具),这就是没有必要把所有资源都分开存储的原因。

B. 应该在部署分支上修改构建镜像的源码吗?

简答:不应该

详细阐述:不应该,因为永远不要在部署分支上构建镜像,它们是在开发分支上构建的。修改部署分支上定义一个镜像的源码会破坏被部署的镜像的构建记录,而且这些修改并不会对镜像的功能生效。在对比两个部署分支的版本时这也会成为问题。这可能会导致两个版本的功能差异有错误的测试结果(这是使用部署分支的一个很小的额外好处)。

C. 为什么使用镜像 标签 tag 标记 label 不可以吗?

通过 标签 tag 可以在仓库中很容易地查找镜像,可读性也很好。在一组镜像中读取和查找 标记 label 的值需要拉取所有镜像的 清单文件 manifest ,而这会增加复杂度、降低性能。而且,考虑到历史记录的追踪和不同版本的查找,对不同版本的镜像添加 标签 tag 也很有必要,因此使用源码提交哈希是保证唯一性,以及保存能即时生效的有用信息的最简单的解决方案。

D. 创建部署分支的最佳实践是怎样的?

DevOps 最重要的三个原则:自动化、自动化、自动化。

依赖资源来持续地强迫遵循最佳实践,充其量只是碰运气,因此在实现镜像的升级、回滚等 CI/CD 流水线时,把自动化部署分支写到脚本里。

E. 对部署分支的命名规范有建议吗?

<部署分支标识>-<环境>-<源码提交哈希>

  • 部署分支标识: 所有部署分支范围内唯一的字符串;如 “deployment” 或 “deploy”
  • 环境: 部署分支适用的 SDLC 环境;如 “qa”(测试环境)、 “stg”(预生产环境)、 或 “prod”(生产环境)
  • 源码提交哈希: 源码提交哈希中包含原来构建被部署的镜像的源码,开发者可以通过它很容易地查找到创建镜像的原始提交,同时也能保证分支名唯一。

例如, deployment-qa-asdf78s 表示推到 QA 环境的部署分支, deployment-stg-asdf78s 表示推到 STG 环境的部署分支。

F. 你怎么识别环境中运行的哪个镜像版本?

我们的建议是把最新的部署分支提交哈希和源码提交哈希添加到 标记 中。开发者和运维人员可以通过这两个独一无二的标识符查找到部署的所有东西及其来源。在诸如执行回滚或前滚操作时,使用那些不同版本的部署的选择器也能清理资源碎片。

G. 什么时候应该把部署分支的修改合并回开发分支?

这完全取决于开发团队。

如果你修改的目的是为了做负载测试,只是想验证什么情况会让程序崩溃,那么这些修改不应该被合并回开发分支。另一方面,如果你发现和修复了一个错误,或者对下游环境的部署做了调整,那么就应该把部署分支的修改合并回开发分支。

H. 有现成的部署分支示例让我们试水吗?

el-CICD 已经在生产上使用这个策略持续一年半应用到超过一百个项目了,覆盖所有的 SDLC 环境,包括管理生产环境的部署。如果你可以访问 OKD、Red Hat OpenShift lab cluster 或 Red Hat CodeReady Containers,你可以下载el-CICD 的最新版本,参照 教程 来学习部署分支是何时以怎样的方式创建和使用的。

结语

通过实践上面的例子可以帮助你更好的理解开发过程中阻抗失配相关的问题。对齐镜像和部署描述符是成功管理部署的关键部分。


via: https://opensource.com/article/21/8/impedance-mismatch-cicd

作者:Evan "Hippy" Slatis 选题:lujun9972 译者:lxbwolf 校对:wxy

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

“用户态 Linux” 是什么?它是一种可以在用户态运行的 Linux 内核。(用户态是什么,这里就不解释了)

它有什么用?它用于内核隔离、替代 QEMU/Bochs 来调试 Linux 内核,也可以在低性能设备上代替 KVM 进行虚拟化。

但它也存在一些缺陷,比如不支持 ARM 架构以及多核系统。

编译 Linux 内核

首先通过 git 下载 Linux 内核源代码:

git clone --depth 1 https://mirrors.tuna.tsinghua.edu.cn/git/linux.git

(这里使用了清华大学的镜像站,kernel.org 也是可以的。)

然后采用如下步骤编译它:

$ cd linux
$ export ARCH=um # 非常重要 设置架构为用户态
$ make defconfig
$ make -j8

 LD      .tmp_vmlinux.kallsyms1
 KSYMS   .tmp_vmlinux.kallsyms1.S
 AS      .tmp_vmlinux.kallsyms1.S
 LD      .tmp_vmlinux.kallsyms2
 KSYMS   .tmp_vmlinux.kallsyms2.S
 AS      .tmp_vmlinux.kallsyms2.S
 LD      vmlinux
 SYSMAP  System.map
 LINK linux
 MODPOST modules-only.symvers
 GEN     Module.symvers

经过漫长的编译之后,你获得了一个 vmlinux 文件。它和正常的 Linux 内核的区别是,这个 vmlinux 可以在用户态运行。

准备根文件系统

先别着急启动,先来准备内核所使用的根文件系统。

以下内容以 Debian Linux 为例。

首先安装 debootstrap 软件包:

sudo apt install debootstrap

以下命令皆需要 root 权限,先切换到 root 用户:

$ sudo su

然后构建根文件系统,存放在 rootfs 文件中:

# dd if=/dev/zero of=rootfs seek=2G # 创建一个 2GB 大小的空 rootfs 文件
 2000000000字节(2 GB,2 GB)已复制,0.137825 s,570 MB/s`

# mkfs.ext4 rootfs # 将其格式化为 ext4 格式
 mke2fs 1.46.5 (30-Dec-2021)
 Discarding device blocks: done                            
 Creating filesystem with 76748 1k blocks and 19200 inodes
 Filesystem UUID: 9dc7f1f6-8b16-4c64-9e22-94ede327c532
 Superblock backups stored on blocks: 
      8193, 24577, 40961, 57345, 73729

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done 

然后挂载 rootfs/mnt 下:

# mount rootfs /mnt

在其中创建 Debian Linux 的根文件系统(/):

# cd /mnt
# debootstrap sid ./ https://mirrors.tuna.tsinghua.edu.cn/debian
 I: Configuring python-central... 
 I: Configuring ubuntu-minimal... 
 I: Configuring libc-bin... 
 I: Configuring initramfs-tools... 
 I: Base system installed successfully.

通过 chroot 将其改变为根目录:

# chroot ./

设置 root 密码:

# passwd 
 New password: 
 Retype new password: 

然后退出 chroot 环境,并卸载:

# exit # 退出 chroot 环境
# cd ..
# umount /mnt
# exit # 退出 sudo 环境

设置 rootfs 的所有权为普通用户:

$ sudo chown `whoami` rootfs

这样,这个用户态 Linux 的根文件系统就准备好了。

测试用户态 Linux

然后就可以用这个内核启动了,只需要一行命令:

$ screen ./vmlinux mem=1G root=/dev/root rootfstype=hostfs hostfs=./rootfs  con=null con0=null,fd:2 con1=fd:0,fd:1

启动后,使用你前面设置的 root 用户/密码登录,便可以进入到用户态 Linux 容器中了。

有别于 Docker,这个容器的内核和宿主的内核是隔离的,可以使用这个容器作为一个调试内核的工具,如:

echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger

即可手动触发一个“ 内核恐慌 Kernel Panic ”错误。

延伸阅读:

作者简介:

calvinlin:一个普通的深圳初中生。


via: https://www.bilibili.com/read/cv15626523

作者:calvinlin 编辑:wxy

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

本教程为你提供了一些简单的步骤来自定义 GNOME 桌面,用最少的努力打造干净的外观。下面如何做的。

如果你对最喜欢的 GNOME 桌面的样子已经看厌烦了,那么你就来对了。让我们安装一些主题图标并进行一些调整以提升你的桌面格调。我们将转换如下桌面(GNOME 40.5 和 Ubuntu 21.10)。

Ubuntu Desktop with GNOME – Before Customization

这个定制教程将使用漂亮的 Colloid GTK 主题、Mkos-Big-Sur 图标、一个带有额外扩展的酷炫光标主题,以及 Conky。

自定义 GNOME 桌面,用简洁的外观提升它的形象

安装

首先,通过在终端运行以下命令来设置 GNOME Shell 扩展。

sudo apt install chrome-gnome-shell

然后 打开这个页面,将 GNOME 扩展的插件添加到你的浏览器(Chrome/Firefox)。

Add Browser Add-on for GNOME Shell Extension

安装“扩展”应用(Flatpak),你可能需要它来改变 GNOME 扩展的设置。

之后,从终端使用以下命令安装 GNOME 优化工具 GNOME Tweaks 。我们将使用这个工具来改变主题和其他设置。

sudo apt install gnome-tweaks

下载 Colloid GTK 主题。下载后解压文件。然后将解压后的文件夹复制到你主目录下的 ~/.themes。如果文件夹不存在,请创建它。完成这些后,打开终端,运行 install.sh 文件。

下载 Mkos-Big-Sur 图标主题。下载完成后,解压文件并将父文件夹复制到你的主目录中的 ~/.icons

下载 Vimix 光标主题,并按照上述步骤操作。将提取的文件夹复制到 ~/.icons 目录中。然后打开一个终端,运行 install.sh 文件。

现在,安装 Conky 和一些扩展,这些扩展最终会给你的 GNOME 桌面一个干净的外观。要安装 Conky 和 Conky 管理器,打开终端提示符并运行以下命令。

sudo apt install conky
sudo add-apt-repository ppa:tomtomtom/conky-manager
sudo apt update && sudo apt install conky-manager2

现在,打开下面每个扩展的链接,依次安装它们。要安装时,打开页面,点击 ON/OFF 切换开关(见下图)。它将要求你提供管理员密码和安装许可。

GNOME Extension – Page

配置

在你完成上述步骤后,做一些基本配置。你可能会看到在你安装上面的 GNOME 扩展时,有些变化已经生效了。例如,在安装上面的 Move Clock 扩展时,时钟应该已经被移到了右边。

优化工具

打开 优化 GNOME Tweaks 工具(从应用菜单中搜索“Tweaks”),进入“ 外观 Apperance ”。

将应用主题改为 “Colloid Dark”,光标主题为 “Vimix Cursors”,图标主题为 “Mkos-big-sur”,Shell 主题为 “Colloid Dark”。如果你愿意,你可以选择浅色主题和不同的选项。

Apply Themes

Arc 菜单

打开“ 扩展 Extension ”应用,进入 Arc 菜单设置 Arc Menu Settings

将菜单布局改为 “ 替代菜单布局 Alternative Menu Layout > Raven”。

将应用的菜单按钮改成你喜欢的一些图标。在本指南中,我从 这里 下载了一个 GNOME 图标。并通过 Arc 菜单的 “ 设置 Settings > 按钮外观 Button Appearance > 浏览图标 Browse Icon ”应用它。它应该看起来像这样。

Arc Menu – Raven

从“ 扩展 Extension ”程序中打开 “Dash to Dock” 设置。在“ 外观 Appearance ”选项卡中,改变以下项目:

  • 启用收缩到 Dash 的功能
  • 自定义窗口计数指示器为 Dash
  • 启用自定义 Dash 颜色
  • 自定义不透明度为固定
  • 不透明度为 12%

在位置和大小选项卡中,将停靠区位置改为底部,图标大小限制为 39px。

如果你喜欢,你可以启动 Conky,并下载一张与 Colloid 主题相配的漂亮墙纸。在这个演示中,我选择了一张漂亮的灰色墙纸,它与深色主题搭配看起来非常漂亮。

结果

在所有的配置之后,如果一切顺利,你的桌面应该是这样的。

GNOME Customization in Ubuntu with a simple look-1

GNOME Customization in Ubuntu with a simple look-2

GNOME Customization in Ubuntu with a simple look-3

你可以通过多种设置组合来玩转这个主题的不同变体。并创造一个更适合你的外观。

我希望这个指南能帮助你把你的 GNOME 桌面改造成简洁的外观。如果你喜欢这个设置,请在下面的评论中告诉我。


via: https://www.debugpoint.com/2022/03/customize-gnome-clean-look-2022-1/

作者:Arindam 选题:lujun9972 译者:geekpi 校对:wxy

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

现在你可以在 Arch Linux 中体验 Cutefish 桌面了。本文概述了在 Arch Linux 系统中安装 Cutefish 桌面环境的步骤。

Cutefish 桌面

前一阵子,我们点评了 CutefishOS,它带有看起来非常棒的 Cutefish 桌面,得到了我们的读者的积极反应和关注。因此,我们认为这是一个完美的时机,是时候在你最喜欢的 Arch Linux 中体验一下这个桌面了。

在你进入安装部分之前,这里有一些关于 Cutefish 桌面的小知识。

Cutefish 桌面是 CutefishOS 的一部分,这是一个正在开发的新 Linux 发行版。这个基于 Debian 的 Linux 发行版具有令人难以置信的外观、轻量级的 Cutefish 桌面。

Cutefish 桌面其内部是以 Qt Quick、QML、C++ 和 KDE 框架为基础编写的。这个现代的桌面环境使用 KWin 和 SDDM 进行窗口和显示管理。

Cutefish 桌面为你带来了所寻求的一个完全 macOS 风格的、开箱即用的 Linux 桌面。也就是说,你可以获得令人惊叹的图标、壁纸、全局菜单、带有漂亮通知弹出窗口的顶部栏和底部停靠区。

你可在 [这里] 阅读详细的点评。

在 Arch Linux 中安装 Cutefish 桌面

安装基础 Arch 系统

本指南假设在尝试这些步骤之前,你的系统中已经安装好了基本的 Arch Linux。或者,如果你也安装了任何基于 Arch 的 Linux 发行版,你也可以尝试。只是在这些情况下要注意显示管理的问题。

如果你是 Arch 的新手,你可以参考我们的 Arch Linux 安装指南。

安装 Cutefish 桌面

Arch Linux 社区仓库包含了 Cutefish 组,其中有该桌面运行所需的所有组件。它包括核心软件包、原生应用和下面提到的附加工具。

在你的 Arch Linux 系统的终端提示符下,运行下面的命令来安装所有 Cutefish 桌面软件包。

pacman -S cutefish

A base Arch Linux prompt

Install Cutefish in Arch Linux

接下来,我们需要通过下面的命令安装 Xorg 和显示管理器 SDDM。如果你将 Cutefish 桌面安装在安装有其他诸如 GNOME、KDE Plasma 或 Xfce 等桌面环境的 Arch Linux 中,那么请注意,因为你已经安装了一个显示管理器和 Xorg。所以,你可以轻松跳过这一步。

pacman -S xorg sddm

上述命令完成后,通过 systemctl 启用显示管理器。

systemctl enable sddm

这就是裸机安装 Cutefish 桌面的全部内容。完成后,重启系统,登录后你应该看到 Cutefish 桌面如下。

Cutefish Desktop in Arch Linux

基础安装需要额外的定制,因为它不像 Cutefish OS 那样接近。

安装后的配置

尽管 Arch 仓库中的 Cutefish 组包含了它的原生应用,如计算器和文件管理器,但该桌面缺乏基本的应用,你需要单独安装这些应用来使它成为一个功能齐全的高效桌面。

我建议使用下面的命令来安装以下基本的应用。你可以跳过这一步,或者选择任何其他的应用/组合。

  • Firefox 网页浏览器
  • Kwrite 文本编辑器
  • ttf-freefont 字体
  • VLC 媒体播放器
  • Gwenview 图像查看器
  • GIMP 图像编辑器
  • LibreOffice
  • Transmission
pacman -S firefox ttf-freefont kwrite vlc gwenview gimp libreoffice-still transmission-qt

安装后,打开设置,改变你选择的字体。默认字体是 courier,它在桌面上看起来很糟糕。

按照你的选择完成所有的定制后,重启系统。然后享受 Arch Linux 中的 Cutefish 桌面。

The Stunning Login Lock Screen of Cutefish Desktop

结束语

这个桌面正在开发中,所以在写这篇文章时,你会发现设置项目不多。例如,没有办法改变分辨率、隐藏停靠区等等。不过,你仍然可以安装额外的应用来使用。如果你想做体验一番,可以去试试。

加油。


via: https://www.debugpoint.com/2022/02/cutefish-arch-linux-install/

作者:Arindam 选题:lujun9972 译者:geekpi 校对:wxy

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