ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

archinstall 官方文档总览:从引导安装器到 Python 库与插件体系

2026/9/25 3:36:39 拓冰建站 浏览量
archinstall 官方文档总览:从引导安装器到 Python 库与插件体系 运维CLI【免费下载链接】archinstallArch Linux installer - guided, templates etc.项目地址https://gitcode.com/gh_mirrors/ar/archinstall点击查看免费下载本篇技术文章以 archinstall 项目的 Sphinx 文档入口 docs/index.rst 为骨架梳理该项目的定位、核心特性顺序执行、日志透明、TUI 无障碍支持与文档站的四大板块结构。读完后你将能够快速理解 archinstall 作为“可安装 Arch Linux 的 Python 库”的设计意图掌握引导安装器guided的运行方式与--config/--creds配置机制知道如何以库/模块/插件方式集成 archinstall并能定位日志与文档站构建方法等工程细节。1. 项目定位archinstall 是一个“安装库”而不是单纯的 CLI 工具文档首页 docs/index.rst 对项目的定位非常明确archinstallis a library which can be used to install Arch Linux. The library comes packaged with different pre-configured installers, such as the default guided installer.即 archinstall 的核心身份是一个可用于安装 Arch Linux 的 Python 库随库打包的是一组预配置的安装脚本installer其中最常用的是默认的guided引导安装器。这一“库 预置脚本”的双层结构贯穿整个仓库库的入口与 CLI 实现在 archinstall/main.py 和 archinstall/main.py支持python -m archinstall的模块模式预置安装脚本集中在 archinstall/scripts/ 目录包含guided.py引导安装、minimal.py最小化安装、only_hd.py仅硬盘安装三个脚本文档中提到的archinstall --script script列表命令就是枚举这个目录安装主流程的Installer类被文档明确定义为“访问一个安装实例的主类”API 参考页 docs/archinstall/Installer.rst 直接通过autofunction渲染archinstall.Installer的签名其源码位于 archinstall/lib/installer.py。从源码结构看archinstall/lib/下的模块划分disk/、profile/、network/、packages/、pacman/、mirror/、bootloader/、user/等与引导安装器的各个菜单一一对应这与文档首页“库先行、安装器为包装”的表述一致。2. 文档首页列出的三大核心特性docs/index.rst 用三条要点概括了 archinstall 的设计特性下面逐条结合仓库源码展开。2.1 Context friendly顺序执行 上下文包装器文档原文指出库总是按顺序执行调用确保安装步骤不重叠、不以错误顺序执行同时使用“上下文包装器”context wrappers保证清理与收尾任务如mkinitcpio在需要时被调用。这一特性对应源码中的install上下文管理主类Installer实现了__enter__/__exit__在安装流程进入时保存状态、退出时执行清理与收尾动作例如生成 initramfs 所需的mkinitcpio调用。也就是说文档宣称的“context wrappers”并非营销话术而是Installer类以 Python 上下文管理器形式落地以with archinstall.Installer(...)方式组织安装生命周期保证任何一步抛出异常时收尾逻辑依然被触发。这也是将 archinstall 用作库时值得遵循的调用方式。2.2 Full transparency日志落在 /var/log/archinstall文档声明日志与洞察信息位于/var/log/archinstall在 live ISO 和已安装系统部分上都能找到。这一点可以在 archinstall/lib/log.py 中得到直接印证Logger类的默认路径就是Path(/var/log/archinstall)日志文件为install.logself._path / install.log每次log()写入形如[时间戳] - 级别 - 内容的文本行并附带 ANSI 色彩输出当终端支持时_check_permissions在目标目录不可写时会回退到当前目录写日志并给出警告这解释了文档中“partially on the installed system”的谨慎措辞——日志落盘位置依赖运行环境的权限。排障时真正有用的不止install.log。根据 docs/help/report_bug.rst/var/log/archinstall/下还有这些辅助文件文件内容user_configuration.json存储引导安装器中大部分菜单答案user_credentials.json存储用户名/密码可作为--creds传入user_disk_layouts.json存储所选磁盘及其布局install.logarchinstall 执行步骤日志承诺不含敏感信息可公开分享cmd_history.txt逐条、按顺序排列的完整命令历史cmd_output.txtarchinstall 执行的所有命令的原始输出文档特别强调只有install.log被承诺保证不含敏感信息其余文件尤其是user_credentials.json分享时必须极度谨慎并提供archinstall share-log快速上传install.log并打印可分享 URL仓库中有对应的测试 tests/test_share_log.py 覆盖该行为。2.3 Accessibility friendlyTUI espeakup文档首页的第三条特性是archinstall 使用 TUI文本用户界面实现因此能与espeakup等无障碍工具协同工作。仓库中 TUI 的实现位于 archinstall/tui/ 目录components.py、menu_item.py、binding_descriptions.py等espeakup正是 Arch 官方 ISO 中为屏幕阅读器服务的 TTS 工具TUI 的按键式导航模型与其天然兼容。这一点属于“从源码结构看”可以确认的对应关系交互层没有依赖图形控件全部基于文本终端事件流。3. 文档站四大板块toctree逐一解读docs/index.rst 用四个toctree组织了整份文档分别对应“运行 archinstall”、“获取帮助”、“把 archinstall 当库用”和“API 参考”。以下按该结构展开每个板块的实际内容。3.1 Running Archinstall引导安装installing/guided该板块唯一条目是 docs/installing/guided.rst是整个文档中最具实战价值的一页要点如下启动方式。在最新 Arch Linux ISO 上直接运行archinstall由于引导安装器是默认脚本这等价于archinstall guided。文档同时提示其他预置脚本可用archinstall --script script不带.py调用archinstall --script list可列出全部脚本对应 archinstall/scripts/ 目录并明确警告安装器不会在安装开始前配置 Wi-Fi需要读者自行了解 Arch 的网络配置。预配置回答--config与--config-url。引导安装支持用 JSON 配置文件预填所有菜单答案两个参数均为可选--config file.json本地 JSON包含引导安装器的整体配置与菜单答案--config-url url远端 JSON内容结构相同。archinstall --config config.json archinstall --config-url https://domain.lan/config.json文档给出了获取最新选项的稳妥方法archinstall --dry-run以安全模式模拟运行不会对系统做持久化操作并把配置保存到磁盘。完整配置字段表由 CSV 文件 docs/cli_parameters/config/config_options.csv 驱动生成在 docs/installing/guided.rst 中以csv-table引入仓库内还附带了示例文件 examples/config-sample.json 与 tests/data/test_config.json 可作对照。一个典型配置摘自文档示例包含以下关键字段{ bootloader: Systemd-boot, bootloader_config: { bootloader: Systemd-boot, uki: false, removable: false }, disk_config: { config_type: manual_partitioning, device_modifications: [ { device: /dev/sda, partitions: [ { fs_type: fat32, mountpoint: /boot, flags: [boot], status: create, type: primary }, { fs_type: ext4, mountpoint: /, status: create, type: primary } ], wipe: false } ] }, disk_encryption: { encryption_type: luks, partitions: [分区obj_id] }, hostname: archlinux, kernels: [linux], locale_config: { kb_layout: us, sys_enc: UTF-8, sys_lang: en_US }, ntp: true, offline: false, packages: [], script: guided, timezone: UTC }文档中的示例还包含mirror_config、profile_config、save_config等更多字段。文档特别强调两点行为约束所有键值必须严格符合 JSON 标准示例中带有链接的可读形式实际会破坏语法需自行适配若disk_config中没有任何条目guided 安装将直接使用当前已挂载在/mnt/archinstall下的文件系统不执行任何磁盘操作——这是把 archinstall 用于“挂载盘安装”场景的关键前提。敏感凭据--creds。凭据文件与常规配置分离把密码等敏感数据从--config中剥离。最小示例是设置 root 密码{ root_enc_password: SecretSanta2022 }--creds支持的可选项见 docs/installing/guided.rst 的 list-tableKey类型说明是否必填encryption-passwordstr磁盘加密密码不提供则不加密否root_enc_passwordstrroot 账户密码否usersJSON 列表元素形如{username: 名, enc_password: 密码哈希, sudo: false}普通用户凭据列表视情况文档给出的规则是只有当设置了root_enc_password时users才是可选的否则users被强制要求且至少需要有 1 个拥有 sudo 权限的用户。3.2 Getting help已知问题、报告 Bug、社区该板块收录三个页面内容在各自文档中已经相当具体。Known Issuesdocs/help/known_issues.rst列出了若干超出 archinstall 自身范围、但高频出现的问题及排查手段等待时间同步根因通常是网络拓扑导致timedatectl show无法对默认服务器完成同步重启systemd-timesyncd.service可能有效更多时候需要按网络设计配置/etc/systemd/timesyncd.conf。若确认本机时间正确可用archinstall --skip-ntp跳过时间同步archlinux-keyring-wkd-sync 挂起WKD 同步服务/定时器可能因无法连通密钥服务器而“无限期”挂起可通过手动运行/usr/bin/archlinux-keyring-wkd-sync验证并用systemctl show检查 timer 的ActiveEnterTimestamp与 service 的SubState。修复流程为killall gpg-agent→ 清理/etc/pacman.d/gnupg→pacman-key --init pacman-key --populate→pacman -Sy archlinux-keyring→ 重启同步 timer。确认 ISO 最新且密钥有效时可用archinstall --skip-wkd跳过代价是可能出现 PGP 签名 “unknown trust” 报错Nvidia 专有驱动缺包某些内核选择/硬件组合需要额外包常见 workaround 是安装linux-headers与nvidia-dkmsARM / 32 位等架构报错Arch Linux 官方仅支持x86_64其他架构理论上可用但非重点Keyring 过期通常是 ISO 过旧导致archlinux-keyring过期且网络未就绪时同步服务会失败使 archinstall 基于旧 keyring 运行文档建议依靠上游同步服务而非在 archinstall 内做规避。值得注意的是该问题也可能出现在刚发布几天的新 ISO 上——某些密钥可能在 keyring 烧录进 ISO 后随即过期AUR 包不支持AUR 不受支持因此诸如 ZFS 文件系统之类的功能无法通过 AUR 包解决但借助插件机制见 3.3 节可以以“不受支持的用法”引入社区 AUR 插件官方文档给出了archinstall --plugin url的两个社区参考实现命令示例并明确警告这意味着允许在安装过程中不受支持地使用 AUR。Report Issues Bugsdocs/help/report_bug.rst问题与 Bug 应在项目的 issues 渠道报告一般性问题、增强与安全漏洞也可以一并提交简单问题可去 Discord 帮助频道。提交求助时应附带/var/log/archinstall/install.loglive ISO 与已装入基础包的文件系统中都存在archinstall share-log可一键上传。Discorddocs/help/discord.rst社区 Discord 服务器有贡献者常驻#Release Party频道发布新版本通知可用Party Animals角色订阅贡献者可通过!verify验证流程激活Contributors角色。3.3 Archinstall as a library库安装、模块模式、插件这是文档首页 toctree 中“Archinstall as a library”板块由 docs/installing/python.rst、docs/examples/python.rst 和 docs/archinstall/plugins.rst 三页组成。三种安装方式docs/installing/python.rst# 方式一pacman官方仓库同时装入脚本与库 pacman -S archinstall # 只需库、不要 helper 可执行文件时用 python-archinstall 包 # 方式二PyPI pip install archinstall # 方式三源码安装clone 仓库后把目录移入项目直接 import archinstall # 或用 PyPA build/installer 装入 Python 模块路径 git clone 仓库地址 cd archinstall python -m build . python -m installer dist/*.whl文档同时声明如果你使用的是官方 Arch Linux ISO这些步骤都不需要——ISO 已内置 archinstall。仓库根目录的 pyproject.toml 定义了包名、入口点与构建后端是上述安装方式得以成立的工程基础。模块模式module modedocs/examples/python.rstarchinstall 支持python -m archinstall --script name调用但该模式只能执行scripts文件夹下的脚本因此文档要求把自定义安装脚本放进仓库的archinstall/scripts/目录后再构建安装。文档给出了一个可验证的最小例子——新建scripts/test_installer.pyfrom archinstall.lib.disk.device_handler import device_handler from pprint import pprint pprint(device_handler.devices)安装后运行python -m archinstall test_installer若打印出BDevice设备对象列表含model、path、分区信息partition_infos等字段说明脚本位置正确、库工作正常。文档还提醒包括该示例在内的多数调用都需要 root 权限。该示例中的device_handler确实存在于 archinstall/lib/disk/device_handler.py磁盘/分区能力由 archinstall/lib/disk/ 目录承载。插件机制docs/archinstall/plugins.rstarchinstall 支持两种插件加载方式--plugin参数运行时通过本地或远端路径加载特定插件。优点是插件路径会被存入--config状态重跑安装时自动加载缺点是需要事先知道并写好路径Python 插件发现entry points按archinstall.plugin分类的 entry point 自动发现可一次加载多个插件但插件必须预先安装到运行 archinstall 的系统上主要面向自制 ISO 的构建者。插件的扩展点是“查询驱动”的宿主代码在特定调用点遍历插件、查找约定的钩子函数。文档给出的例子是——若插件定义了def on_pacstrap(*packages): ...那么archinstall.Pacman().strap([...])会硬编码地遍历插件查找on_pacstrap若存在则调用它并用插件的返回值替换初始包列表。文档坦承这部分文档目前偏少建议直接在源码中搜索plugin.on_前缀来确定全部受支持的钩子。仓库中插件加载逻辑位于 archinstall/lib/plugins.py可在其中核对钩子调用与 entry point 发现的具体实现。3.4 API ReferenceInstaller 类最后一个板块只有一页 docs/archinstall/Installer.rst内容是把archinstall.Installer作为“访问安装实例的主类”并声明与安装系统内部相关的一切都在这个类里。页面通过 Sphinxautodoc的autofunction指令直接渲染该类的签名与 docstring配合 docs/conf.py 中的扩展配置sphinx.ext.autodoc、sphinx.ext.inheritance_diagram等与自定义的process_docstring后处理将 docstring 中 8 空格缩进替换为 4 空格以适配 reST生成完整的类参考。4. 文档站本身如何构建了解文档入口之后文档站的构建方式也值得开发者掌握docs/README.mdpip install -U sphinx sphinx-rtd-theme cd docs make html # 产物在 _build/html/index.html关键配置都在 docs/conf.py项目名为python-archinstall主题sphinx_rtd_thememaster_doc index即本文剖析的 docs/index.rstexclude_patterns排除_build等另有一个自定义 Sphinx 扩展挂钩autodoc-process-docstring用于修正 docstring 缩进。静态资源logo、样式位于 docs/_static/自定义页脚/导航模板位于 docs/_templates/layout.html。5. 小结沿着 index.rst 的路径图使用文档docs/index.rst 虽然篇幅不长却是 archinstall 文档的信息枢纽它用三句话定义了项目“库 预置安装器”的身份用三条特性顺序执行与上下文收尾、/var/log/archinstall全透明日志、TUI 无障碍概括了实现取向再用四个 toctree 把读者导向四条路径——跑安装读 docs/installing/guided.rst掌握archinstall/--config/--config-url/--creds/--dry-run全套用法排障求助读 docs/help/ 三页熟悉日志文件清单、share-log与各已知问题的标准排查流程当库集成读 docs/installing/python.rst 与 docs/examples/python.rst掌握 pacman/PyPI/源码三种安装方式与模块模式写插件/查 API读 docs/archinstall/plugins.rst 与 docs/archinstall/Installer.rst并以 archinstall/lib/ 源码与plugin.on_钩子调用点为最终权威参考。对 Agent 与自动化场景而言最值得记住的工程事实是--dry-run可无副作用导出配置、disk_config为空时直接复用/mnt/archinstall已挂载文件系统、凭据与常规配置分离存放于--creds、以及日志目录/var/log/archinstall下各文件的敏感程度差异仅install.log保证可公开。赞分享运维CLI【免费下载链接】archinstallArch Linux installer - guided, templates etc.项目地址https://gitcode.com/gh_mirrors/ar/archinstall点击查看免费下载相关推荐isort 文档总览Python 导入排序的安装、命令行、Python API 与完整配置体系isort 文档总览Python 导入排序的安装、命令行、Python API 与完整配置体系 本文是 isort 项目官方文档首页 docs/index.开发工具代码质量格式化LintJAX 官方文档全景导览安装、六层学习路径与生态体系JAX 官方文档全景导览安装、六层学习路径与生态体系 本文基于当前仓库 docs/index.rst https://link.gitcode.com/i/b人工智能机器学习深度学习编译器高性能计算WeasyPrint 官方文档中心导览从入门安装到 API 参考与源码架构的完整索引WeasyPrint 官方文档中心导览从入门安装到 API 参考与源码架构的完整索引 WeasyPrint 是一个用 Python 编写的 HTML/CSS文档后端上一篇react-router-redux与LiveScript集成简洁语法的React开发下一篇终极指南K3s与边缘Kubernetes安全检测的完整解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考