跳转至内容

更新或升级失败后的恢复

来自 ArchWiki
注意 本文主要面向计算机使用知识较少或有特定需求的家庭用户,并侧重于设置恢复环境。

如果在更新过程中出现问题,例如计算机中途断电或更新进程被停止,可能会导致安装损坏,因为软件包可能处于半安装状态且缺少某些依赖项。本文档介绍了如何创建一个单独的恢复环境,以帮助减轻更新过程中出现问题所造成的损害,并修复由此引发的任何问题。

GUI 恢复环境

如果用户执行的升级或更新导致无法启动到 桌面环境,或者在用户能够看到 显示管理器 的情况下无法启动应用程序,那么最好为用户创建一个独立的环境,以便他们能够轻松自行修复这些错误。这对于 Linux 知识有限的用户尤其有用。安装 openbox 或其他等效的窗口管理器,并使用 ideskAUR,然后创建自己的程序按钮或更好的脚本,这些脚本配置为在启动前执行操作、显示警告以及显示系统管理员的联系信息。为了防止任何未经授权的用户使用“故障安全”环境或某些恢复任务,您可以在启动脚本或窗口管理器的自动启动项开头添加以下内容:

AllowedUser="JolinTsai";
if [ "$(whoami)" != " ${AllowedUser,,}" ];then zenity --warning --text="You are not the allowed user!
The allowed user is "$AllowedUser;
#openbox --exit
exit 1
fi

您需要从“会话类型”列表中删除所有不必要的条目。可以通过删除或最好是将包含其信息的 *.desktop 文件移至备份文件夹,然后创建自己的自定义配置文件来完成。简单来说,只需将一个 *.desktop 文件复制到一个您想要的名称的文件中,然后修改 Exec 和 description 部分即可。

您可以使用类似这样的方法来删除或将文件移至备份目录。

通常可以在 /usr/share/xsessions/ 中找到它们。

您还需要删除窗口边框,以防止用户关闭正在工作的窗口(例如,如果您使用 xterm 显示命令输出)。您可以使用 devilspie 来实现此目的。

要获取可用于 devilspie 配置文件中的窗口名称列表,您可以使用 wmctrl 工具 wmctrl -l | awk '{print substr($0, index($0,$4))}',或者在启动 devilspie 时,您将看到所有可用于配置文件中的信息。

窗口标题:'name@host:~/.path';应用程序名称: 'name@host:~/.path' ;类: 'XTerm' ;几何:492x350+487+226

window_nameapplication_namewindow_class 可用于更改窗口属性。

您可为首选应用程序使用的 devilspie 配置文件示例

.devilspie/DesktopConsole.ds
(if (is (window_class) "XTerm")
        (begin
(undecorate)
(skip_tasklist)
(above)
(fullscreen)
(maximize)                       
(unpin)                
(skip_pager)       
            )
        )

XTerm 也有一个全屏启动命令行:xterm -fullscreen

提示 以全屏模式运行应用程序可防止用户在任务完成前点击桌面上的其他按钮。

准备安全恢复/重置整个存储设备

这里将描述关于如何通过使用您自己制作的“重置”功能来更轻松地恢复默认操作系统(例如 Arch Linux)的基本理论步骤,这对于初学者/普通用户非常有用,或者如果您计划销售预装 Linux 的计算机。

物理锁定存储

  • 初始工厂设置必须存储在写保护的存储设备上,例如 Secure Digital (SD) 卡,这种卡可以物理锁定到只读模式。
  • 最新的工厂设置必须存储在可写存储设备上,或单独的分区上,但访问权限有限,例如在 fstab 中预定义写保护挂载,和/或在附加挂载脚本 mount.* 中使用,这些脚本会检查已挂载的设备/分区,并仅允许普通用户以只读模式挂载。
  • 将这些目标隐藏在文件管理器菜单中也是个好主意。
  • BIOS 需要配置为从 SD 卡启动,并设置密码保护(密码可以是计算机的名称+型号)。SD 卡需要永久连接并密封(粘合)。

您可以使用 Archiso 创建自己的自定义 Live CD,其中必须包含以下功能:

  • 健康监测工具,例如 smartmontools,用于显示错误和有关目标存储设备损坏时该怎么做的说明。
  • 使用 fsarchiver 等工具从备份映像恢复整个存储设备,以防主分区损坏,或将其作为一种选项。
  • 从互联网检索更新(如果可用)。
  • 使用最新的“ISO”安装更新(如果可用)。

附加 ISO 可以在预定义的用户数量更新后,或由用户手动创建到单独的分区上。

首次登录时,用户必须有机会选择一个云服务器,其中存储了所有已安装应用程序和已更新配置文件的列表。

在 PC 上,恢复介质可以存储在盒子内,通过适配器连接到 USB 卡。笔记本电脑缺少存储额外存储设备的能力,这些设备可用于修复目的,但有些笔记本电脑可以放置额外的存储设备,例如 Secure Digital (SD) 卡,这些卡只能存储初始的“工厂”ISO,还可以选择性地存储内部存储设备的备份映像。

虚拟化

创建 Linux 的最小安装,其中一个用户将自动登录,并启动预配置的虚拟机的 .xinitrc,该虚拟机具有计划的快照,甚至可以存储在远程存储上。

每次启动时恢复所需部分

注意 这可能适用于网吧的计算机或家中的儿童。为了防止因 mv/cp/rm 等命令造成的损坏,可以将它们重命名并替换为带有检查哪些路径/文件允许删除的脚本。

通过创建可引导的 ISO 映像或 SquashFS,并使用 GRUB 启动。这些可以预先配置,甚至包含最少的必要应用程序、X 服务器或 Wayland 和用户。启动后,您可以自动挂载到 /usr//home/ 或物理存储或文件中的其他自定义文件夹的路径。这有助于保护引导和内核设置免受可能的损坏。用户将能够更新程序,如果分区/文件挂载到 /var/lib/pacman/ 并具有写入权限。