构建说明
这里说明如何从本项目文件构建得到 arCNiso 的镜像文件。
法一:在 Arch Linux 系统中构建
Section titled “法一:在 Arch Linux 系统中构建”- 一个可联网的、AMD64 架构的 Arch Linux 系统。
- 以普通用户身份登录,且具有 sudo 权限。
法二:在 Docker 容器中构建
Section titled “法二:在 Docker 容器中构建”以下对初次构建镜像的流程进行分步说明。
安装依赖(约 1 分钟,依赖网速)
Section titled “安装依赖(约 1 分钟,依赖网速)”sudo pacman -S --needed archiso git rsync pandoc base-devel fd cmake less sudo
# 安装 paru(若已添加 archlinuxcn 等第三方源,也可用 pacman 直接安装)## 自定义函数 aaa(again and again)以便在失败时自动重试;## 若失败太多次,请按 Ctrl-C 来强制停止,再排查问题function aaa { while true;do if "$@";then break;else echo "[aaa] Retrying \"$@\"";sleep 1;fi;done; }git clone https://aur.archlinux.org/paru-bin.git /tmp/paru-bincd /tmp/paru-bin;aaa makepkg -si --noconfirm;cd /tmp;rm -rf /tmp/paru-bin获取本项目(约 1 分钟,依赖网速)
Section titled “获取本项目(约 1 分钟,依赖网速)”克隆本仓库,为此在 bash 或 zsh 中运行:
# arCNiso 项目目录,路径可据实际情况设置# 若于 docker 容器内构建,请确保它与之前 docker run 的 -v 参数映射到的容器目录路径一致,默认不需要改动ARCN_DIR=$HOME/arCNisogit clone --filter=blob:none https://github.com/clsty/arCNiso $ARCN_DIR && cd $ARCN_DIR其中 --filter=blob:none 是为了仅下载所需的对象,而忽略多余的 blob,以便加快速度。
如果注重稳定性,建议切换到最新的 tag:
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)准备 .emacs.d(可选;约 5 分钟,依赖网速)
Section titled “准备 .emacs.d(可选;约 5 分钟,依赖网速)”运行
./layer-home/prepareemacs.sh接下来按指示操作即可。
准备 layer-rootfs(约 5 分钟,依赖网速和 CPU 速度)
Section titled “准备 layer-rootfs(约 5 分钟,依赖网速和 CPU 速度)”运行
./layer-rootfs/full-prepare.sh接下来按指示操作即可。
准备 AUR 包(约 30 分钟,依赖网速和 CPU 速度)
Section titled “准备 AUR 包(约 30 分钟,依赖网速和 CPU 速度)”arCNiso 使用了部分来自 AUR 的包(见 packages.x86_64 的开头部分),
因此需要提前构建它们。
可以利用
# 加 -f 参数以强制全部构建./aur/full-update.sh自动构建这些包。
但请注意,此脚本可能仍存在一些问题,可能无法一次直接地完成所有工作,或者无法合理避免重复工作,还可能会出现构建时缺依赖报错的问题,对此只要据报错信息手动解决即可(大概需要你会一点 Bash)。
或者,清理一下 ./aur/cache 目录,或者其下造成问题的子目录。
而若要单独对某个 AUR 包运行 makepkg 进行手动构建,需要先设定 $PKGDEST 环境变量的值。请 cd 至 ./aur/pkgs 目录,然后运行:
export PKGDEST=$(pwd)安全启动支持(可选,耗时未知)
Section titled “安全启动支持(可选,耗时未知)”为了支持安全启动,需要对 mkarchiso 进行修改。
而 mkarchiso 脚本来自 Arch Linux 官方,可能不断更新,从而导致旧的补丁(指 mkarchiso.patch )无效,加上其他的情况变动,均可能需要手动调整修改脚本、排查并解决问题。因此,若需要安全启动支持,则视顺利程度,耗时下限低于 5 分钟,上限则无穷大。
步骤:
- 需要确保 packages.x86_64含有的包名:mokutilshim-signed(来自 AUR)- 如果你不需要安全启动,可以选择把这些包名从中移除。
 
- 安装依赖:
./patchedmkarchiso/deps.sh- 生成密钥
./patchedmkarchiso/genkey.sh- 打补丁
./patchedmkarchiso/PATCH.sh正式构建(约 5 分钟,依赖网速和 CPU 速度)
Section titled “正式构建(约 5 分钟,依赖网速和 CPU 速度)”运行(若 OUT 目录存在,则会被删除):
./makeiso输出的镜像文件位于 ./OUT 下(为了方便使用虚拟机进行测试,每次输出时会固定更名为 arCNiso.iso )。
如果短时间内多次构建,不必重复进行正式构建之前的准备工作,可以直接运行 ./makeiso。
但是,比如一个月之后再次构建呢? 此时对整个项目再次进行准备工作就比较有必要了——不过,当然不是完全从零开始。
以下进行分步说明,但并不是所有步骤都必要,请根据实际情况适当安排。
以下默认工作目录为 arCNiso 的项目文件夹。
以 paru 为例:
function aaa { while true;do if "$@";then break;else echo "[aaa] Retrying \"$@\"";sleep 1;fi;done; }aaa paru -Sy&&aaa paru -Su --noconfirm注意,部分软件包在更新之后可能需要重启系统才能正常工作。
更新 arCNiso 项目仓库
Section titled “更新 arCNiso 项目仓库”git pull更新 .emacs.d
Section titled “更新 .emacs.d”./layer-home/prepareemacs.sh -f接下来按指示操作即可。
更新 layer-rootfs
Section titled “更新 layer-rootfs”./layer-rootfs/full-prepare.sh更新 AUR 包
Section titled “更新 AUR 包”./aur/full-update.sh -f更新 mkarchiso
Section titled “更新 mkarchiso”./patchedmkarchiso/PATCH.sh./makeiso