利用Arch官方工具对Arch进行封装

利用Arch官方工具对Arch进行封装

Archiso是一个高度可定制的工具,用于构建 Arch Linux live CD/USB ISO 映像。官方镜像是用 Archiso 构建的。它可以用作救援系统、linux 安装程序或其他系统的基础。这篇 wiki 文章解释了如何安装 Archiso,以及如何配置它来控制生成的 ISO 映像的各个方面,例如包含的包和文件。技术要求和构建步骤可以在官方项目文档中找到。Archiso 是用许多 bash 脚本实现的。Archiso 的核心组件是mkarchiso命令。其选项记录在mkarchiso -h中,此处未介绍。

内容
1 安装
2 准备自定义配置文件
2.1 配置文件结构
2.2 选择包
2.2.1 自定义本地存储库
2.2.2 来自 multilib 的软件包
2.3 将文件添加到图像
2.4 核心
2.5 引导加载程序
2.5.1 UEFI 安全启动
2.6 系统单位
2.6.1 登录管理器
2.6.2 更改自动登录
2.7 用户和密码
3 建立 ISO
3.1 删除工作目录
4 使用 ISO
5 在 QEMU 中测试 ISO
6 技巧和窍门
6.1 准备 ISO 以通过 SSH 进行安装
6.2 使用 iwd 自动连接到 Wi-Fi 网络
6.3 动态调整根分区的大小
6.4 加密
7 故障排除
7.1 窗口管理器冻结
8 也可以看看
安装
安装archiso或archiso -git AUR包。

准备自定义配置文件
Archiso 带有两个配置文件,releng和baseline。

releng用于创建官方每月安装 ISO。它可以用作创建自定义 ISO 映像的起点。
基线是一个极简配置,它仅包括从媒体启动实时环境所需的最低限度的软件包。
要构建配置文件的未修改版本,请跳至#Build the ISO。否则,如果您希望调整或自定义 archiso 的一个已发布配置文件,请将其复制到具有您选择的名称的可写目录中。例如: /usr/share/archiso/configs/profile-name/

$ cp -r /usr/share/archiso/configs/ profile-name / archlive
继续以下部分以自定义和构建自定义配置文件。

配置文件结构
archiso 配置文件包含定义生成的 ISO 映像的配置。配置文件结构记录在/usr/share/doc/archiso/README.profile.rst[1]中。

选择包
编辑packages.x86_64以选择要在实时系统映像上安装的软件包,逐行列出软件包。

自定义本地存储库
要添加不在标准 Arch 存储库中的包(例如自定义包或来自AUR / ABS的包),请设置自定义本地存储库并将您的自定义包添加到其中。然后将您的存储库添加到pacman.conf如下:

archlive /pacman.conf

[自定义仓库]
SigLevel = 可选 TrustAll
服务器 = 文件:// /path/to/customrepo

注意:事项内的排序pacman.conf。要为您的自定义存储库提供最高优先级,请将其放在其他存储库条目之上。
来自 multilib 的软件包
要从multilib存储库安装软件包,只需在pacman.conf.

将文件添加到图像
airootfs 目录用作映像上实时系统的根目录( )的起点。/在安装包之前,它的所有内容都将被复制到工作目录中。

将任何自定义文件和/或目录放在airootfs/. 例如,如果您在当前系统上有一组 iptables 脚本,您希望在实时映像上使用它们,请按如下方式复制它们:

$ cp -r /etc/iptables archlive /airootfs/etc
同样,对于驻留在层次结构中某处的特殊配置文件也需要格外小心。可以使用mkdir(1)简单地创建目录结构的缺失部分。

提示:要将文件添加到安装用户的主目录,请将其放在archlive/airootfs/root/. 要将文件添加到所有其他用户的主目录,请将其放在archlive/airootfs/etc/skel/.
注意:与包提供的自定义文件冲突的自定义文件将被覆盖,除非包将它们指定为备份文件。
默认情况下,权限将644针对文件和755目录。所有这些都将归根用户所有。要为特定文件和/或文件夹设置不同的权限或所有权,请file_permissions使用profiledef.sh. 有关详细信息,请参阅README.profile.rst。

核心
虽然 archiso 包含的配置文件都只有linux,但 ISO 可以包含其他甚至多个内核。

首先,编辑packages.x86_64以包含您想要的内核包名称。当mkarchiso运行时,它将包括 ISO 中的所有文件(work_dir/airootfs/boot/vmlinuz-以及work_dir/boot/initramfs-.img用于 UEFI 引导的 FAT 映像中)。

默认情况下, mkinitcpio预设将构建备用 initramfs 图像。对于 ISO,主 initramfs 映像通常不包含autodetect挂钩,因此不需要额外的备用映像。为了防止创建后备 initramfs 映像,以便它不会占用空间或减慢构建过程,请将自定义预设放在. 例如,对于linux-lts: archlive/airootfs/etc/mkinitcpio.d/pkgbase.preset

archlive /airootfs/etc/mkinitcpio.d/linux-lts.preset
预设=(‘archiso’)

ALL_kver=‘/boot/vmlinuz-linux-lts’
ALL_config=‘/etc/mkinitcpio.conf’

archiso_image=“/boot/initramfs-linux-lts.img”
最后创建引导加载程序配置以允许引导内核。

引导加载程序
Archiso 支持syslinux用于 BIOS 引导和systemd-boot用于 UEFI 引导。有关其配置语法的信息,请参阅引导加载程序的文章。

提示:
当使用 El Torito 刻录到光盘或使用Isohybrid写入硬盘(或 USB 闪存驱动器或类似设备)时,releng配置文件默认构建到支持 BIOS 和 UEFI 引导的 ISO 中。
由于 isolinux 的模块化特性,您可以使用许多插件,因为所有.c32文件都已复制并可供您使用。看看官方 syslinux 站点和archiso git repo。使用所述插件,可以制作具有视觉吸引力的复杂菜单。见[2]。
mkarchiso 期望systemd-boot配置在efiboot目录中,而syslinux配置在目录中。 syslinuxisolinux

UEFI 安全启动
如果您想让您的 Archiso 在启用 UEFI 安全启动的环境中启动,您必须使用签名的引导加载程序。您可以按照Secure Boot#Booting an installation medium上的说明进行操作。

系统单位
要为实时环境启用systemd 服务/套接字/计时器,您需要手动创建符号链接,就像systemctl enable它一样。

例如,要启用gpm.service包含WantedBy=multi-user.target的 ,请运行:

$ mkdir -p archlive /airootfs/etc/systemd/system/multi-user.target.wants
$ ln -s /usr/lib/systemd/system/gpm.service archlive /airootfs/etc/systemd/system/multi-user.target.wants/
可以通过读取 systemd 单元找到所需的符号链接,或者如果您安装了服务,则启用它并观察 systemctl 输出。

登录管理器
通过启用登录管理器的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
这将在您的实时系统上的系统启动时启用 LXDM。

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

您可以修改此文件以更改自动登录用户:

[服务]
执行开始=
ExecStart=-/sbin/agetty --autologin用户名–noclear %I 38400 linux
或完全删除它以禁用自动登录。

用户和密码
要创建将在实时环境中可用的用户,您必须手动编辑archlive/airootfs/etc/passwd、archlive/airootfs/etc/shadow和。 archlive/airootfs/etc/grouparchlive/airootfs/etc/gshadow

注意:如果这些文件存在,它们必须包含 root 用户和组。
例如,添加一个用户archie。将它们添加到archlive/airootfs/etc/passwd以下passwd(5)语法:

archlive /airootfs/etc/passwd
root❌0:0:root:/root:/usr/bin/zsh
archie❌1000:1000::/home/archie:/usr/bin/zsh
生成密码哈希openssl passwd -6并将其添加到shadow(5)archlive/airootfs/etc/shadow的语法中。例如:

归档直播 / airootfs /etc/shadow
根::14871:::::::
阿奇: 6 6 6randomsalt$cij4/pJREFQV/NgAgh9YyBIoCRRNq2jp5l8lbnE5aLggJnzIRmNVlogAg8N6hEEecLwXHtMQIl2NX2HlDqhCU1:14871::::::
archlive/airootfs/etc/group根据group(5)添加用户的组和他们将加入的组。例如:

archlive /airootfs/etc/group
根:x:0:根
adm❌4:archie
轮子:x:10:archie
uucp❌14:archie
阿奇:x:1000:
archlive/airootfs/etc/gshadow根据gshadow(5)创建适当的:

归档直播 / airootfs /etc/gshadow
根:!::root
阿奇:!
::
确保/etc/shadow并/etc/gshadow拥有正确的权限:

存档直播/profiledef.sh

文件权限=(

[“/etc/shadow”]=“0:0:0400”
[“/etc/gshadow”]=“0:0:0400”
)
包安装后,mkarchiso将为列出的用户创建所有指定的主目录archlive/airootfs/etc/passwd并复制work_directory/x86_64/airootfs/etc/skel/*到他们。复制的文件将具有适当的用户和组所有权。

建立 ISO
构建一个 ISO,然后您可以通过运行以下命令将其刻录到 CD 或 USB:

mkarchiso -v -w /path/to/work_dir -o /path/to/out_dir /path/to/profile/

-w指定工作目录。如果未指定该选项,它将默认work在当前目录中。
-o指定将放置构建的 ISO 映像的目录。如果未指定该选项,它将默认out在当前目录中。
需要注意的profiledef.sh是,运行mkarchiso时不能指定profile文件,只能指定文件的路径
替换/path/to/profile/为自定义配置文件的路径,或者/usr/share/archiso/configs/releng/如果您正在构建未修改的配置文件,则替换为。

提示:如果内存允许,最好将工作目录放在tmpfs上。例如:

mkarchiso -v -w /tmp/archiso-tmp /path/to/profile/

运行时,脚本将下载并安装您指定的包work_directory/x86_64/airootfs,创建内核和初始化映像,应用您的自定义,最后将 ISO 构建到输出目录中。

删除工作目录
警告:如果mkarchiso中断,请运行findmnt(8)以确保在删除之前没有挂载绑定 - 否则,您可能会丢失数据(例如,在构建过程中挂载的外部设备被绑定)。/run/media/user/labelwork/x86_64/airootfs/run/media/user/label
临时文件被复制到工作目录中。成功构建 ISO 后,可以删除工作目录及其内容。例如:

rm -rf /path/to/work_dir

使用 ISO
有关各种选项,请参阅安装指南#准备安装介质。

在 QEMU 中测试 ISO
安装可选的依赖项qemu和edk2-ovmf。

使用便捷脚本run_archiso使用QEMU运行构建的映像。

$ run_archiso -i /path/to/ archlinux- yyyy.mm.dd -x86_64.iso
虚拟机也可以使用 UEFI 仿真运行:

$ run_archiso -u -i /path/to/ archlinux- yyyy.mm.dd -x86_64.iso
技巧和窍门
准备 ISO 以通过 SSH 进行安装
注意:自 以来archlinux-2021.02.01-x86_64.iso,提供了cloud-init 支持,并且sshd.service默认启用。
要通过 SSH 安装 Arch Linux而不与系统进行任何交互,必须将 SSH 公钥放在authorized_keys.

添加 SSH 密钥可以手动完成(在此处解释),也可以通过 cloud-init完成。

要手动添加密钥,首先将 Archiso 的 releng 配置文件复制到可写目录。以下示例使用archlive.

$ cp -r /usr/share/archiso/configs/ profile/ archlive
在用户的主目录中创建一个.ssh用于登录的目录。以下示例将使用 root 用户。

$ mkdir archlive/airootfs/root/.ssh
将用于登录的 SSH 公钥添加到authorized_keys:

$ cat ~/.ssh/ key1 .pub >> archlive/airootfs/root/.ssh/authorized_keys
$ cat ~/.ssh/ key2 .pub >> archlive/airootfs/root/.ssh/authorized_keys
为目录和文件设置正确的权限和所有权: .sshauthorized_keys

archlive/profiledef.sh

文件权限=(

[“/root”]=“0:0:0750”
[“/root/.ssh”]=“0:0:0700”
[“/root/.ssh/authorized_keys”]=“0:0:0600”
)
最后构建 ISO。启动 ISO 后,OpenSSH将启动,并且可以使用相应的 SSH 私钥登录。

使用 iwd 自动连接到 Wi-Fi 网络
/var/lib/iwd/在配置文件的目录中创建airootfs并设置正确的权限:

$ mkdir -p archlive /airootfs/var/lib/iwd
archlive/profiledef.sh

文件权限=(

[“/var/lib/iwd”]=“0:0:0700”
)
按照iwd#Network 配置和iwd.network(5)中的说明为您的 Wi-Fi 网络创建网络配置文件。

将配置文件保存在archlive/airootfs/var/lib/iwd/.

动态调整根分区的大小
探戈不准确.png本文或部分的事实准确性存在争议。探戈不准确.png

原因:解释如何但省略原因会使整个部分无用。(在谈话中讨论:Archiso)
如果您在启动的 ISO 环境中下载文件或安装软件包时收到以下错误消息,您可能需要在重新启动 Archiso 时关闭并调整根分区的大小。

错误:分区/太满:需要 63256 个块,61450 个块空闲
错误:没有足够的可用磁盘空间
错误:提交事务失败(没有足够的可用磁盘空间)
发生错误:未升级任何软件包。
要在实时 Arch Linux 系统上调整根分区的大小,请按Tab键编辑内核参数。cow_spacesize=2G在末尾追加以获得 2G 大小的根分区。按Enter继续引导到实时系统。您可以通过运行以下命令检查文件系统的大小:

$ df -h
您还可以通过运行以下命令即时调整根分区大小:

mount -o remount,size=2G /run/archiso/cowspace

在此处查看更多启动参数

加密
要生成加密图像,您可以使用archiso-encryption AUR包。

要构建包含的encrypted配置文件,您必须设置一个包含cryptsetup-archiso AUR包的自定义存储库。

如果您在运行时无法找到根设备,请调整encrypt上述包中的挂钩。

故障排除
窗口管理器冻结
如果您想在 Live CD 中使用窗口管理器,则必须添加必要且正确的视频驱动程序,否则 WM 可能会在加载时冻结。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值