5.2. Anaconda 构架

Anaconda 是一组 Python 模块和脚本。它还使用几个外部软件包和程序库。这个工具组的主要组件包括以下软件包:

  • pykickstart - 解析并验证 Kickstart 文件。另外,提供存储安装值的数据结构。
  • yum - 安装软件包及解决依赖项的软件包管理器
  • blivet - 处理与存储管理相关的所有活动
  • pyanaconda - 包含 Anaconda 的用户界面和模块,如键盘和时区选择、网络配置和用户创建。同时提供各种执行面向系统功能的工具
  • python-meh - 包含一个异常处理程序,它在崩溃时收集和存储额外的系统信息,并将这些信息传递给 libreport 库,后者本身是 ABRT 项目 的一部分
  • dasbus - 启用 D-Bus 库与 anaconda 模块和外部组件之间的通信
  • python-simpleline - 文本 UI 框架库,用于在 Anaconda 文本模式中管理用户交互
  • gtk - 用于创建和管理 GUI 的 Gnome 工具包库

除了上面提到的软件包外,Anaconda 在内部被分成用户界面和一组模块,这些模块作为独立的进程运行,并使用 D-Bus 库进行通信。这些模块是:

  • Boss - 管理内部模块发现、生命周期和协调
  • Localization - 管理区域设置
  • Network - 处理网络
  • Payloads - 处理以不同格式的安装数据,如 rpmostreetar 和其他安装格式。有效负载管理安装的数据源 ; 源的格式可能会有所不同,比如 CD-ROM、HDD、NFS、URL 和其他来源
  • Security - 管理与安全相关的方面
  • Services - 处理服务
  • Storage - 使用 blivet 管理存储
  • Subscription - 处理 subscription-manager 工具和洞察力。
  • Timezone - 处理时间、日期、区域和时间同步。
  • Users - 创建用户和组。

每个模块声明其处理 Kickstart 的哪些部分,并具方法来将配置从 Kickstart 应用到安装环境和安装的系统。

Anaconda(pyanaconda)的 Python 代码部分作为拥有用户界面的"主"进程启动。您提供的任何 Kickstart 数据都使用 pykickstart 模块解析,并且启动 Boss 模块,其发现所有其他模块,并启动它们。然后主进程会根据其声明的功能将 Kickstart 数据发送到模块。模块处理数据,将配置应用到安装环境,UI 将验证是否已做了所有必要的选择。如果没有,您必须在互动安装模式中提供数据。完成所有必要的选择后,安装就可以开始 - 把数据写入安装系统的模块。