systemd ParticleOS:构建你自己的定制化不可变发行版

导航菜单

(省略导航菜单部分,因为其内容与主题关系不大,主要为 GitHub 站点的导航)

搜索或跳转到...

搜索代码、仓库、用户、议题、拉取请求...

搜索 清除 搜索语法提示

提供反馈

我们认真阅读每条反馈,并非常重视您的意见。 包括我的电子邮件地址,以便我可以联系到您 取消 提交反馈

已保存的搜索

使用已保存的搜索可以更快地过滤您的结果

名称 查询 要查看所有可用的限定符,请参阅我们的文档。 取消 创建已保存的搜索 登录 注册 重置焦点 您已在另一个标签或窗口中登录。重新加载以刷新您的会话。 您已在另一个标签或窗口中注销。重新加载以刷新您的会话。 您已在另一个标签或窗口中切换帐户。重新加载以刷新您的会话。 忽略警报 {{ message }} systemd / particleos 公开

许可协议

LGPL-2.1 license 144 stars 13 forks Branches Tags Activity Star 通知 您必须登录才能更改通知设置

其他导航选项

systemd/particleos

main 分支标签 转到文件 代码

文件夹和文件

名称| 名称| 上次提交消息| 上次提交日期 ---|---|---|---

最新提交

历史

254 次提交 mkosi.conf.d| mkosi.conf.d mkosi.credentials| mkosi.credentials mkosi.extra| mkosi.extra mkosi.images/netesp| mkosi.images/netesp mkosi.profiles| mkosi.profiles mkosi.repart| mkosi.repart mkosi.sysupdate| mkosi.sysupdate mkosi.uki-profiles| mkosi.uki-profiles .editorconfig| .editorconfig .gitignore| .gitignore LICENSE| LICENSE README.md| README.md TODO| TODO mkosi.clean| mkosi.clean mkosi.conf| mkosi.conf mkosi.finalize| mkosi.finalize mkosi.postinst.chroot| mkosi.postinst.chroot mkosi.version| mkosi.version 查看所有文件

仓库文件导航

ParticleOS

ParticleOS 是一个完全可定制的不可变发行版,它实现了 Fitting Everything Together 中描述的概念。

与其他不可变发行版相比,ParticleOS 的关键区别在于用户自己构建 ParticleOS 镜像,并使用自己的密钥对其进行签名,而不是安装供应商签名的镜像。 这允许您完全控制哪个发行版用作基础以及将哪些软件包安装到镜像中,从而根据您的喜好配置镜像。

ParticleOS 镜像是使用 mkosi 构建的。 要构建镜像,请从 ParticleOS 仓库运行 mkosi -d <distribution> --profile <profile> -f。 目前支持 archfedora 这两种发行版。 实现对新发行版(mkosi 中已支持)的支持非常简单,只需编写必要的配置文件来安装该发行版所需的软件包即可。 (可选)可以选择配置文件来添加一组软件包,目前支持 desktop,kdedesktop,gnome

要在安装后更新系统,您可以克隆 ParticleOS 仓库或其 fork,并运行 mkosi -ff sysupdate -- update --reboot,这将使用 systemd-sysupdate 更新系统,然后重新启动。

从源码构建 systemd

有时,ParticleOS 会在 systemd 功能合并到 systemd 后立即采用它们,而无需等待官方版本发布。 因此,建议在构建 ParticleOS 时从源代码构建 systemd,以确保支持所有必需的功能:

git clone https://github.com/systemd/systemd
cd systemd
mkosi -f sandbox -- meson setup build
mkosi -f sandbox -- meson compile -C build
mkosi -t none -f

然后,将以下内容写入 ParticleOS 仓库中的 mkosi.local.conf,以使用 mkosi 构建的 systemd 仓库中的 artifacts:

[Content]
VolatilePackageDirectories=../systemd/build/mkosi.builddir/<distribution>~<release>~<arch>
[Build]
ExtraSearchPaths=../systemd/build

确保 mkosi.local.conf 中的发行版和版本在 systemd checkout 和 particleos checkout 中是相同的。

要构建较新的 systemd,请在 systemd 仓库中运行 git pull,然后运行 mkosi -f sandbox -- meson compile -C buildmkosi -t none

签名密钥

ParticleOS 镜像使用用户的密钥进行安全启动签名。 要生成新密钥,请运行 mkosi genkey。 必须安全地存储密钥,更新签名需要该密钥。

密钥可以存储在智能卡中。 然后,您必须在 mkosi.local.conf 中设置密钥:

[Validation]
SecureBootKey=pkcs11:object=Private key 1;type=private
SecureBootKeySource=provider:pkcs11
SignExpectedPcrKey=pkcs11:object=Private key 1;type=private
SignExpectedPcrKeySource=provider:pkcs11
VerityKey=pkcs11:object=Private key 1;type=private
VerityKeySource=provider:pkcs11

安装

在安装 ParticleOS 之前,请确保目标系统上的安全启动处于设置模式。 可以在目标系统的 UEFI 固件界面中配置安全启动模式。 如果目标系统上已经存在 Linux 安装,请运行 systemctl reboot --firmware-setup 以重新启动到 UEFI 固件界面。 同时,请确保 UEFI 固件界面受密码保护,以便攻击者无法再次禁用安全启动。

要使用 USB 驱动器安装 ParticleOS,请首先如上所述在现有 Linux 系统上构建镜像。 然后,使用 mkosi burn /dev/<usb> 将其刻录到 USB 驱动器。 刻录到 USB 驱动器后,将 USB 驱动器插入要安装 ParticleOS 的系统,并通过固件启动到 USB 驱动器。 然后,启动到“Installer”UKI 配置文件。 当您最终进入 root shell 时,运行 systemd-repart --dry-run=no --empty=force --defer-partitions=swap,root,home /dev/<drive> 将 ParticleOS 安装到系统的驱动器。 最后,重新启动到目标驱动器(不是 USB),并启动到常规配置文件(而不是安装程序),以完成安装。

LUKS 恢复密钥

systemd 不支持将恢复密钥添加到仅使用令牌(tpm/fido2)注册的分区。 可以使用 cryptenroll 将恢复密码添加到 root 分区:cryptsetup luksAddKey --token-type systemd-tpm2 /dev/<id>

固件

仅包含作为内核模块依赖项的固件,但某些模块未正确声明其依赖项。 可以使用 modinfo 查找模块的依赖项。 如果您遇到缺少固件的情况,则应将其报告给模块维护者。 可以在 mkosi.local.conf 中添加 FirmwareInclude=,以包含固件,而不管模块是否依赖于它。

安装后配置 systemd-homed

安装 ParticleOS 并登录到您的 systemd-homed 管理的用户后,运行以下命令来配置 systemd-homed 以获得最佳体验:

homectl update \
  --auto-resize-mode=off \
  --disk-size=max \
  --luks-discard=on \
  --luks-extra-mount-options "user_subvol_rm_allowed,compress=zstd:1"

禁用自动调整大小模式可避免系统启动和关闭速度缓慢。 启用 LUKS 丢弃可确保 home 目录不会变得无法访问,因为 systemd-homed 无法调整 home 目录的大小。 额外的 LUKS 挂载选项是 BTRFS 挂载选项,通过压缩磁盘上的数据并允许用户删除子卷,可以使 mkosi 的镜像构建速度更快。

在虚拟机中启动时默认 root 密码和用户

如果您使用 mkosi vm 在虚拟机中启动 ParticleOS,则 root 密码会自动设置为 particleos,并且还会创建一个默认用户 particleos,密码为 particleos

关于

未提供描述、网站或主题。

资源

Readme

许可协议

LGPL-2.1 license Activity Custom properties

Stars

144 stars

Watchers

17 watching

Forks

13 forks 报告仓库

Releases

未发布任何版本

Packages 0

未发布任何软件包

Contributors 8

语言

页脚

© 2025 GitHub, Inc.

页脚导航

您现在无法执行该操作。