core-service systemd-random-seed.service(1)
systemd-random-seed.service
是 Linux 系统中的一个服务,用于加载和保存系统的随机种子。它是 systemd
系统管理工具的一部分,负责在系统启动时加载随机种子,以确保系统的随机数生成器(RNG)能够为后续的加密操作提供一个足够的随机值。在关机时,它会保存当前的随机种子,以便下次启动时可以重新加载,从而增加系统的安全性。
keson@ubuntu24:~$ head -c 16 /dev/random | base64
/yOUxOqeOjs8dTalmLZYaQ==
systemd-random-seed.service
功能:
systemd-random-seed.service
的作用是确保在系统启动时将随机种子加载到系统中,并在系统关闭时保存当前的随机种子。加载随机种子:在系统启动时,
systemd
会加载随机种子文件(通常位于/var/lib/systemd/random-seed
)以初始化系统的伪随机数生成器。保存随机种子:当系统关机或重启时,
systemd-random-seed.service
会将当前的随机种子保存到磁盘上,以便下次启动时使用,从而减少系统每次启动时随机数生成的偏差。
keson@ubuntu24:~$ systemctl status systemd-random-seed.service
● systemd-random-seed.service - Load/Save OS Random SeedLoaded: loaded (/usr/lib/systemd/system/systemd-random-seed.service; stati>Active: active (exited) since Sun 2025-10-12 15:38:44 CST; 3min 35s agoDocs: man:systemd-random-seed.service(8)man:random(4)Main PID: 403 (code=exited, status=0/SUCCESS)CPU: 11ms
keson@ubuntu24:~$active (exited) 表示服务已成功执行并退出(它是一次性任务,不是持续运行的守护进程)
服务在 2025-10-12 15:38:44 启动,运行时间 3 分 35 秒,CPU 占用仅 11ms,说明执行高效
Service
keson@ubuntu24:~$ cat /lib/systemd/system/systemd-random-seed.service
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.[Unit] 服务的 “启动规则与依赖”
服务的描述文字(systemctl status 时显示的 “Load/Save OS Random Seed” 就来自这里)
Description=Load/Save OS Random Seed服务的帮助文档路径(执行 man systemd-random-seed.service 或 man random 可查看详情)
Documentation=man:systemd-random-seed.service(8) man:random(4)启动条件 1:排除 “容器环境”(如 Docker/LXC 容器),只在物理机、虚拟机(如 KVM)上运行
ConditionVirtualization=!container
启动条件 2:排除 “初始化内存盘(initrd/initramfs)阶段”,只在系统正常启动后运行
ConditionPathExists=!/etc/initrd-release不启用 Systemd 服务的 “默认依赖”(避免和其他基础服务的依赖冲突,手动定义更精准的依赖)
DefaultDependencies=no启动顺序:在 “重新挂载文件系统服务” 之后启动(确保 /var/lib/systemd/ 目录已挂载,能读写种子文件)
After=systemd-remount-fs.service启动顺序:在 “首次启动完成” 目标之前启动(确保系统首次启动时,随机种子先加载,后续服务能用上)
Before=first-boot-complete.target
强制依赖:必须先挂载 “种子文件所在的目录”(否则服务无法读取 / 保存种子文件,直接报错)
RequiresMountsFor=/var/lib/systemd/random-seed
弱依赖:“希望”first-boot-complete.target 启动,但对方不启动也不影响本服务(非强制)
Wants=first-boot-complete.target
关机相关:服务和 “关机目标” 冲突,且必须在关机前执行(确保关机时能先保存种子,再执行关机)
Conflicts=shutdown.target
Before=shutdown.target[Service]
服务类型:“一次性任务”(不是持续运行的守护进程,执行完命令就退出,符合 “加载 / 保存种子” 的单次需求)
Type=oneshot
服务退出后,仍标记为 “active(exited)” 状态(你 systemctl status 看到的状态就来自这里,说明任务已完成但状态保留)
RemainAfterExit=yes
启动时执行的命令:调用 systemd-random-seed 工具的 load 模式(从 /var/lib/systemd/random-seed 文件加载种子到系统熵池)
ExecStart=/usr/lib/systemd/systemd-random-seed load
关机时执行的命令:调用 systemd-random-seed 工具的 save 模式(从当前系统熵池提取数据,保存到种子文件,给下次启动用)
ExecStop=/usr/lib/systemd/systemd-random-seed save# This service waits until the kernel's entropy pool is initialized, and may be
# used as ordering barrier for service that require an initialized entropy
# pool. Since initialization can take a while on entropy-starved systems, let's
# increase the timeout substantially here.
超时时间:服务最多等待 10 分钟(应对 “熵池不足” 的情况,比如服务器没键盘 / 鼠标,熵生成慢,避免服务因等不及而报错)
TimeoutSec=10min
log
keson@ubuntu24:~$ journalctl -u systemd-random-seed.service
Oct 12 02:13:37 ubuntu24 systemd[1]: Stopping systemd-random-seed.service - Load/Save OS Random Seed...
Oct 12 02:13:37 ubuntu24 systemd[1]: systemd-random-seed.service: Deactivated successfully.
Oct 12 02:13:37 ubuntu24 systemd[1]: Stopped systemd-random-seed.service - Load/Save OS Random Seed.
-- Boot 98ad5c66606d478e96cf11f856193e3b --
Oct 12 16:13:27 ubuntu24 systemd[1]: Stopping systemd-random-seed.service - Load/Save OS Random Seed...
Oct 12 16:13:27 ubuntu24 systemd[1]: systemd-random-seed.service: Deactivated successfully.
Oct 12 16:13:27 ubuntu24 systemd[1]: Stopped systemd-random-seed.service - Load/Save OS Random Seed.
Oct 12 16:13:27 ubuntu24 systemd[1]: Starting systemd-random-seed.service - Load/Save OS Random Seed...
Oct 12 16:13:27 ubuntu24 systemd[1]: Finished systemd-random-seed.service - Load/Save OS Random Seed.
Oct 12 16:13:43 ubuntu24 systemd[1]: Stopping systemd-random-seed.service - Load/Save OS Random Seed...
Oct 12 16:13:43 ubuntu24 systemd[1]: systemd-random-seed.service: Deactivated successfully.
Oct 12 16:13:43 ubuntu24 systemd[1]: Stopped systemd-random-seed.service - Load/Save OS Random Seed.
Oct 12 16:13:43 ubuntu24 systemd[1]: Starting systemd-random-seed.service - Load/Save OS Random Seed...
Oct 12 16:13:43 ubuntu24 systemd[1]: Finished systemd-random-seed.service - Load/Save OS Random Seed.