制作 Arch Linux 内存系统启动盘
之前尝试过 Arch Linux in RAM 完全运行在内存中的轻量业务系统,最近在维护一些物理服务器看到没有安装系统的服务器不断重启,想到了可以制作类似的内存系统启动盘,以高效完成系统测试、安装、远程维护等任务。
这时候就要祭出 mkarchiso 大法了。这是自动化制作最新版 Arch Live 镜像的工具集,当然也可用于制作定制化的 Arch 镜像。
准备
首先安装 archiso
包
1 | ~> sudo pacman -Syy archiso |
它提供了两种配置方案,一种是只包含基本系统的 baseline
,一种是可以制作定制 ISO 的 releng
。要制作维护用 ISO,当然是复制 releng
配置啦。
1 | ~> cp -r /usr/share/archiso/configs/releng/ archlive |
定制
整个过程不要太简单。先来了解下各个文件的用途:
build.sh
- 用于制作镜像的自动化脚本,可以在这里修改一些名称变量或制作过程的逻辑。packages.x86_64
- 一份要安装的包列表,一行一个。pacman.conf
- pacman 的配置文件,不用多说了吧。airootfs
- Live 系统的 rootfs,除了安装的包之外,其他的定制(以及启动执行脚本等)都在这里。遵循 rootfs 的目录规则。efiboot
/syslinux
/isolinux
用于设置 BIOS / EFI 启动的配置。
将 [archlinuxcn]
仓库加入 pacman.conf
:
1 | [archlinuxcn] |
然后修改 packages.x86_64
,加入 archlinuxcn-keyring
和其他需要预安装的包:
1 | archlinuxcn-keyring |
按需修改即可啦。
要启动为内存系统,需要加启动参数 copytoram
。
修改文件 syslinux/archiso_pxe.cfg
和 syslinux/archiso_sys.cfg
文件,在启动参数后加 copytoram
,像这样:
1 | INCLUDE boot/syslinux/archiso_head.cfg |
启动时即可将整个 SquashFS 文件复制到内存。如果内存比较小,也可以指定 copytoram_size
来限制 tmpfs 占用内存的最大数量。
同样,也需要修改 efiboot/loader/entries/archiso-x86_64-usb.conf
的启动参数。在 options
行添加
1 | options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram |
制作
创建工作目录和输出目录
1 | mkdir -p work out |
最后一步,只需要以 root 权限执行 ./build.sh
就可以啦。
要看具体执行过程的话,加 -v
。-h
看所有参数。
完成后,即可在 out
目录得到准备好的 ISO 文件。将其 dd
到 USB 闪存盘,大功告成(‘・ω・’)
Ref: