第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 利用Arch官方工具对Arch进行封装

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

时间:2018-11-24 09:54:22

相关推荐

利用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-.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 配置和work(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 可能会在加载时冻结。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。