Archiso (简体中文) - ArchWiki

# Archiso (简体中文)

From ArchWiki
Jump to navigation Jump to search
翻译状态： 本文是 Archiso 的本地化版本。上次翻译日期：2020-05-02。如果英文版本有所更改 ，则您可以帮助同步翻译。

相关文章

- Remastering the Install ISO
- PXE
- Archboot

Archiso 是用于构建 Arch Linux Live CD ISO 映像的工具。 官方映像 是使用 Archiso 构建的。 Archiso 是可配置的，并且可以用作不同系统的基础，例如救援系统或 Linux 安装程序。 这篇 Wiki 文章介绍了如何安装 Archiso，以及如何配置它以控制生成的 ISO 映像的各个方面，例如随附的软件包和文件。 技术需求和构建步骤可以在 官方项目文档 中找到。 Archiso 通过许多 bash 脚本实现。 Archiso 的核心组件是 mkarchiso 命令。 其选项记录在其用法输出中，此处未涉及。 用户不需要直接与 mkarchiso 交互。

## 安装和配置

注意: 以下操作请在ROOT权限下使用，在错误的权限下操作会造成问题。

安装 archiso 或 archiso-gitAUR。

Archiso 附带2个预定义配置（profiles）: releng 和baseline。

- 如果您想要创建完全定制的 Live Arch Linux ，并预装所有您喜爱的程序和配置，使用 releng。

- 如果您只是想构建一个简易 Live 镜像，无预装软件并仅有基础配置，那么使用 baseline。

使用以下命令将您选择的配置文件复制到目录中。 用 `releng` 或 `baseline` 替换 `profile`，并用你选择的目录名称替换 `archlive`。

    # cp -r /usr/share/archiso/configs/profile archlive

现在，根据所选的配置文件和您的目标进入不同的章节。

- releng：如果您选择了 releng ，并且
  - 如果要自定义映像，请继续进行章节 #配置 Live 介质。
  - 如果要复制官方映像，请继续进行 #构建ISO。
- baseline：如果您选择了 baseline 配置文件，请继续进行 #构建ISO。

## 配置 Live 介质

本节详细介绍如何配置映像，以及定义以后将复制到映像的软件包和配置。

在 #安装和配置 中创建的`archlive`目录中有许多文件和目录; 我们只关注以下的：

- `packages.x86_64` - 此文件列出了 Live 系统映像上安装的软件包。
- `airootfs` - 此目录用作覆盖，并允许您进行自定义。

您可以通过编辑 `archlive/airootfs/root/customize_airootfs.sh` 来编写遵循安装指南（或安装后）的所有管理任务的脚本，除了软件包安装。该脚本是从正在运行的 Live 系统的角度编写的，即，在脚本中，路径 `/` 是指正在运行的 Live 系统的根目录。

### 安装包

编辑 `packages.x86_64` 中的软件包列表，以配置将哪些软件包安装在 Live 系统映像上，逐行列出软件包。

注意: 如果要在 Live CD 中使用 窗口管理器，则必须添加必要且正确的 video drivers，否则 WM 可能在加载时冻结。

#### 自定义本地库

为了准备自定义软件包或从 AUR/ABS 准备软件包，您还可以 自建本地仓库。

然后，您可以将以下内容放入 `~/archlive/pacman.conf` 中，添加到其他仓库条目上方（最高优先级）：

    ~/archlive/pacman.conf

    ...
    # custom repository
    [customrepo]
    SigLevel = Optional TrustAll
    Server = file:///home/user/customrepo/$arch
    ...

#### 安装 multilib 中的软件包

要从 Multilib 资源库中安装软件包，仅需在`~/archlive/pacman.conf`中取消注释以下行以启用 multilib：

    pacman.conf

    [multilib]
    SigLevel = PackageRequired
    Include = /etc/pacman.d/mirrorlist

### 向映像里添加文件

注意: 你必须使用 root 权限来完成这件事，不要改变任何你复制过来的文件的所有权，airootfs 中的所有文件必须为 root 用户所有。适当的所有制将在不久被解决。

airootfs 目录作为要覆盖的文件，把它看作是在当前系统上的根目录'/'，所以你在这个目录中放置的任何文件都将在开机时被复制。

所以，如果你在当前系统上有一组 iptables 脚本且想要在 Live 映像上使用，请这样复制:

    # cp -r /etc/iptables ~/archlive/airootfs/etc

在用户 home 文件夹里放置文件的方法有些许不同。不要把它们放在 `airootfs/home`，而是在 airootfs/ 里创建 skel 目录并将其放置在那里。然后我们会将相关命令添加到 `customize_airootfs.sh`——我们要使用它在引导时复制文件以及梳理权限。

首先，创建 skel 目录

    # mkdir ~/archlive/airootfs/etc/skel

现在，复制 'home' 的文件到 skel 目录。例如，对于 `.bashrc`：

    # cp ~/.bashrc ~/archlive/airootfs/etc/skel/

当 `~/archlive/airootfs/root/customize_airootfs.sh` 被执行，并且一个新用户已被创建, skel 目录中的文件将自动被复制到新的 home 文件夹中，并被设置正确的权限。

类似地，需要注意位于层次结构下方的特殊配置文件。作为示例，配置文件 `/etc/X11/xinit/xinitrc` 位于可能被安装包覆盖的路径上。要将 `xinitrc` 的配置文件放在 `~/archlive/airootfs/etc/skel/` ，然后修改 `customize_airootfs.sh` 以适当地移动。

### 引导器

默认的文件应该可以正常工作，所以你应该不需要去碰它。

由于 isolinux 的模块化性质，你能够使用很多插件，因为所有 *.c32 都被复制且可以可供您使用。看看 syslinux 官方网站 和 Archiso Git Repo。使用所述插件，便有可能做出更具视觉吸引力及复杂的菜单。参见 此处。

#### UEFI 安全启动

如果要使 Archiso 在启用 UEFI 安全启动的环境下可启动，则必须使用签名过的启动加载程序。您可以按照 Secure Boot#Booting an install media 中的说明进行操作。

### 登录管理器

通过启用您登录管理器的 systemd 服务来做到在引导时启动 X 。如果您知道哪一个 .service 文件需要软链接，那就太好了。如果不知道，你也可以轻松找出——如果你在创建 iso 所用的系统上使用相同的程序的话。只需使用：

     $ ls -l /etc/systemd/system/display-manager.service

现在在 `~/archlive/airootfs/etc/systemd/system` 中创建相同的软链接。如 LXDM：

    # ln -s /usr/lib/systemd/system/lxdm.service ~/archlive/airootfs/etc/systemd/system/display-manager.service

这将使您在 live 系统启用在系统上启动 LXDM。(This will enable LXDM at system start on your live system.)

或者，您也可以启用 `airootfs/root/customize_airootfs.sh` 中的服务以及其中启用的其他服务。

如果您希望图形环境在启动过程中自动启动，请确保编辑 `airootfs/root/customize_airootfs.sh` 并替换

    systemctl set-default multi-user.target

为

    systemctl set-default graphical.target

### 改变自动登录

Getty 的自动登录配置位于 `airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf`。

您可以修改这个文件来更改自动登录用户：

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty --autologin isouser --noclear %I 38400 linux

或者干脆删除它来禁用自动登录。

## 构建ISO

现在，你已经准备好把你的文件转换成 .iso，以便可以刻录到 CD 或 USB。

在 `~/archlive` 中执行：

    # ./build.sh -v

该脚本将现在下载并安装你指定的软件包到 `work/*/airootfs`，创建内核和 init 映像（initramfs），应用您的修改，并最终把 ISO 建立到 `out/`。

### 重建ISO

在修改之后重建 ISO 不被官方支持。但是，通过应用两个步骤很容易。首先，您必须删除工作目录中的锁定文件：

    # rm -v work/build.make_*

如果您编辑了 `airootfs/root/customize_airootfs.sh`以创建非特权用户，则重建将在创建时失败，因为该用户已经存在（FS#41865）。 为避免此问题，您需要在运行 `useradd` 之前检查用户是否存在，例如 通过运行 `id`：

    ! id arch && useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/zsh arch

同时删除创建的用户或符号链接，如 `/etc/sudoers` 等持久性数据。

This article or section needs expansion.

Reason: 报告需要删除或重置的更多数据。 (Discuss in Talk:Archiso (简体中文)#)

通过编辑 pacstrap 脚本（位于 /bin/pacstrap）并在第 361 行更改以下内容，可以稍微加快重建速度：

修改前:

    if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then

修改后:

    if ! pacman -r "$newroot" -Sy --needed "${pacman_args[@]}"; then

这增加了初始引导的速度，因为它不必下载和安装任何已经安装的基础包。

### 删除工作目录

临时文件将复制到工作目录中。 如果碰巧 build.sh 脚本被中断，请确保在删除之前没有 mount binds - 否则，您可能会丢失数据（例如，安装在 `/run/media/$user/$label` 的外部设备在构建过程中被绑定在 `work/x86_64/airootfs/run/media/$user/$label` 中。

## 使用 ISO

有关各种选项，请参见 Installation guide (简体中文)#启动到 live 环境。

## 在 QEMU 中运行 ISO

     qemu-system-x86_64 \
       -accel kvm \
       -boot order=d,menu=on,reboot-timeout=5000 \
       -m size=3072,slots=0,maxmem=$((3072*1024*1024)) \
       -k en \
       -name archiso,process=archiso_0 \
       -drive file=/path/to/archlinux-yyyy.mm.dd-x86_64.iso,media=cdrom,readonly=on \
       -display sdl \
       -vga virtio \
       -enable-kvm \
       -no-reboot \
       -no-shutdown

## 参阅

### 文档和教程

- Archiso 项目页面
- 官方文档

### 示例自定义模板

- A live DJ distribution powered by ArchLinux and built with Archiso

### 创建脱机安装 ISO

- Archiso offline

### 查找以前版本的 ISO 映像

- Arch Linux Archive

Categories:

- Live Arch systems (简体中文)
- Installation process (简体中文)
- Arch projects (简体中文)

Hidden category:

- Pages or sections flagged with Template:Expansion