安装 ReliefOS¶
安装前¶
备份目标磁盘。安装器的重新分区、格式化会破坏所选磁盘的数据;
先用磁盘型号、容量和现有分区核对身份,不能只凭设备编号判断。
默认介质包括 reliefos-installer.iso、reliefos-live.iso 和 reliefos.vmdk,
同一介质支持 Legacy BIOS 与 UEFI。ISO 使用双 El Torito 光盘入口,
不承诺是可直接写入 U 盘的 hybrid 镜像。
安装器运行时、Live 会话和安装后的系统是不同的根文件系统。 只有实际安装并移除 ISO 后启动成功,才能证明安装后的系统可用。
全新安装¶
在 GRUB 中选择图形安装或控制台安装;控制台会话条目为
Install ReliefOS (console session)。图形向导依次选择语言、安装模式、目标磁盘、
引导方式、分区和账户,最后确认安装。TTY 同样在分区之前选择引导方式。
Xorg 桌面默认安装,也可选择纯控制台系统。
图形向导在语言选择后显示 Apache License 2.0 英文原文,可滚动阅读全文。
该文本直接取自仓库的 LICENSE,中文界面也保留许可证原文。
新安装默认同时安装 BIOS、UEFI 引导器,可分别取消。两者都取消时不写入 可直接启动的 loader,必须另行配置引导。自动 GPT 布局根据所选引导方式生成:
选择 BIOS 时创建 1 MiB 未格式化 BIOS Boot 分区;只选 UEFI 或都不选时省去该分区。 BIOS Boot 不能格式化、挂载或直接占用已有文件系统。
所有方案都创建 128 MiB FAT32 ESP,保存内核、GRUB 配置及所选引导器的资源。 BIOS 引导同样从该 FAT32 分区读取启动资源,不能因为只选 BIOS 而删除它。
剩余整 MiB 空间用作 ext4 根分区。
分区页显示当前磁盘分区,以及尚未写入的自动方案和预计根分区容量。
最终确认安装时才执行待应用的自动方案;分区工具中的 Automatic / auto
则在独立擦盘确认后立即创建 GPT,最终安装时再格式化 ESP 和根分区。
返回修改引导方式会重新计算待应用的方案和校验已有分区,不会自动再次擦盘。
已应用的两分区布局改选 BIOS 后,必须显式重新自动分区或手动补齐合格的 BIOS Boot
分区;手动布局必须提供所选引导方式所需的分区才能继续。
格式化前会检查所选载荷需要的空间和 inode。菜单通过 GPT PARTUUID 绑定 根分区;缺失、无效或重复身份应报错,不能以连接顺序替代身份。 完成后正常关机、移除安装介质,再从目标磁盘启动。
全新安装可选择创建根分区的 /swapfile,默认不选。建议值为内存大小向上
取整到 MiB 后限制在 512 MiB 至 2 GiB;可以手动填写其他有效的整数 MiB,
安装器不会自动缩小。所需文件空间和余量在重新分区或格式化之前一起检查。
该选项要求所选目标系统的已验证内核包启用 swap,且目标磁盘的真实 PCI 父
控制器为 AHCI;当前不支持用 NVMe、IDE 或其他存储作为这个 swap 后端。
安装器不会在 Live 或安装器会话中启用目标 swap。
安装器完整写入并格式化文件,设置 root 所有、权限 0600,再发布 fstab 和
OpenRC 配置。标准 swap 服务在 localmount 后运行;项目检查服务会核对
/proc/swaps 中实际出现的 /swapfile,以便发现配置存在但启用失败的
情况。重启后可检查 /proc/swaps 以及服务状态。磁盘 I/O 或清理本身失败时,
安装器会报告错误;单文件同步和替换不构成跨文件的断电原子事务。
未选择此项时不会自动启用 swap。手工配置须先准备完全分配、位于支持的
AHCI SATA 设备上的专用文件或未挂载分区,再使用 mkswap 初始化并通过
swapon 激活;mkswap 会覆盖所选目标。只有完成身份核对和必要备份后
才能执行。swapoff 需要先恢复仍被引用的页面,内存不足时可能失败并保留
活动区域;不能把失败当成已卸载,也不保证所有后续分配立即成功。
共享 ESP 与多系统¶
与已有系统共存时选择手动分区,为 ReliefOS 指定单独的根分区。
所选根分区会格式化;已有 FAT32 ESP 默认保留,不要求它达到自动方案的
128 MiB,但必须有足够剩余空间。只有显式勾选格式化 ESP 才会清除其中的
所有 EFI 文件。TTY 对应 format-esp yes / format-esp no。
自动分区仍是明确的整盘擦除方案,不是保留其他系统的并列安装。
新安装将物理 ESP 挂到 /efi,并把
/efi/reliefos/instances/<根分区 PARTUUID> bind 到 /boot。
每个实例有独立的 GRUB 配置、根分区绑定、A/B 内核状态和版本文件;
内核包更新检查实例所有权,拒绝把当前根的内核发布到另一个实例。
initramfs 在切换真实根之前按 fstab 完成两层挂载。
UEFI 文件位于 /EFI/ReliefOS/<根分区 PARTUUID>/grubx64.efi;
标准厂商入口 /EFI/ReliefOS/grubx64.efi 指向一个已有安装,其菜单可选择其他实例。
已有的其他系统 EFI 文件和未知的 /EFI/BOOT/BOOTX64.EFI 保持不变。
只有空的 fallback 路径,或内容摘要和所有权记录均匹配的 ReliefOS fallback,
才会被安装或更新。固件启动变量和 BootOrder 不由此文件复制过程修改;
若固件没有显示新入口,使用完成页显示的 EFI 文件路径添加启动项。
GRUB 在启动时枚举其他 ReliefOS 实例;UEFI 菜单识别常见的 Windows、
shim/GRUB 和 systemd-boot 文件,BIOS 菜单支持 Windows 分区引导及其他
系统的 GRUB 配置。其他系统的配置只在用户选择相应条目后执行。
BIOS 安装会替换所选整盘的主引导代码;只需 UEFI 共存时可取消 BIOS。
旧预制磁盘若没有 ESP 上的 core.img 副本,更新器会校验 MBR 中的
GRUB 核心位置及 BIOS Boot 分区内的块列表,识别实际嵌入的引导器。
新预制镜像同时保存该副本,保持与安装器生成的布局一致。
Live 只有一个普通启动项。安装介质保留图形和控制台两个安装入口; 磁盘保留普通启动及高级选项中的日志暂停、关闭内核日志颜色和有效旧内核回退。 不再展示失效的 debug/autospawn 参数、重复日志条目或同内核副本伪装的回退。 ISO 优先从固件交接的实际介质加载菜单,Live 与 Installer 的后备标记相互独立。
独立磁盘镜像身份¶
IMAGE_INSTANCE_ID``(也可在 menuconfig 中设置 ``DISK_INSTANCE_ID)
决定预制磁盘的 GPT 磁盘和分区身份,并同步生成 fstab、GRUB 根绑定和查找标记。
同一输入、同一实例标识保持可重现;需要同时连接的镜像应使用不同标识,例如:
make O=out/desktop-a defconfig
make O=out/desktop-a IMAGE_INSTANCE_ID=desktop-a image-vmdk
make O=out/desktop-b defconfig
make O=out/desktop-b IMAGE_INSTANCE_ID=desktop-b image-vmdk
逐字节复制一张已有磁盘仍会复制其 UUID,不能把这样的副本当作独立安装同时连接。 正式安装到不同根分区时使用各自 GPT 身份,不依赖预制镜像的实例标识。
更新已有系统¶
更新不自动重分区。旧两分区 UEFI 磁盘保持原有布局,缺少 BIOS Boot
空间时增加 BIOS 引导的请求应在写入前失败。先备份用户文件和引导分区,
检查已安装 APK 数据库、信任密钥及所选更新介质。正常关闭已安装系统后,
再从安装介质启动。
在安装器中选择更新和目标磁盘后,独立的后台进程只读检查已安装系统、桌面
类型、软件包数据库、安装介质和空间。确认页列出当前版本、介质版本、根分区、
ESP 和空间需求,并默认选中已检测到的 BIOS/UEFI 引导器。核对后点击更新。
同盘有多个安装时,可在目标磁盘页选择明确的根分区和 ESP;留空 ESP 时读取
所选根的 fstab,不能简单取磁盘上第一个 ESP。显式选择与该根的 fstab 不一致时
拒绝更新,避免把引导文件写到其他系统的分区。旧的 /boot 直接挂载 FAT32
布局继续兼容,更新不强制改变现有挂载布局。
旧布局中未能通过所有权验证的现有 EFI 可执行文件及相邻配置会保留,
不会因系统更新而覆盖。兼容命令 reliefos-grub-installer 现直接转交原生
CLI,需要明确的 --disk、--boot-directory 和根分区身份;
不再接受无法绑定安装实例的旧式单个 ESP 路径复制操作。
TTY 入口使用相同的后端,并在显示摘要和引导选项后通过 y/N 确认。
检查过程使用私有 APK 数据库和已安装系统的信任密钥,验证签名索引、完整 软件包归档以及离线依赖。确认后的执行会再次核对磁盘、分区 UUID、索引和 已安装包数据库及 world 选择;目标已经变化时需要重新检查。已被其他路径挂载的分区、 无法唯一识别的根分区或 ESP,以及早于已安装系统的介质会在写入前被拒绝。
根文件系统使用 APK 更新,保留外部包、world 选择和受保护配置;新默认配置
可能以 .apk-new 出现。根事务成功后才发布引导文件。
离线更新只从安装介质的签名仓库取得新软件包。world 中已有的
@testing、@alpine 等标签在本次事务的私有配置中注册到该仓库,
使已安装的外部软件包可以继续满足依赖,不要求原仓库在线或保留索引缓存。
原有仓库配置和标签选择保持不变;介质和已安装软件包无法满足的版本约束
仍会在预检查时拒绝,不会强制忽略依赖。
更新保留现有 fstab 和 swap 设置,不会自动添加或更改交换文件。
更新详情显示软件包和引导操作的实际输出,完整日志位于安装器运行环境的
/var/log/installer-update.log。失败页面提供重新检查入口。
目标系统的 /var/lib/reliefos/installer-update/state 持久记录软件包、根同步、
引导提交和完成阶段。同一介质的引导提交失败后,重新检查会核对已完成的根
事务,再继续引导提交;软件包阶段失败则重新预检并执行包事务。旧内核模块
保留与 A/B 内核发布继续使用共同的原生引导接口。更新期间由独立进程持有
安装器更新锁,释放目标挂载后才报告完成。APK 已记录为损坏的系统包会先通过
已验证的归档执行定向修复,再执行升级;已有的外部包错误保留并在日志中说明。
单文件原子替换不等于全部包、ESP 和 BIOS 写入的整体断电原子事务。 回退条目只使用通过完整性检查的匹配内核与 initramfs,不把当前内核的别名当作回退。
运行验证和未覆盖范围见 支持范围与已知限制。