根据所选的 grub 选项启动不同的 sysyemd 服务

根据所选的 grub 选项启动不同的 sysyemd 服务

我对 grub 比较陌生,我想知道是否可以制作一个 grub 启动选项来启动 systemd 服务。

例如,假设我想将我的电脑既用作服务器又用作桌面,因此根据我的需要,我选择不同的启动选项。选择服务器选项将以服务器模式启动我的电脑并启动minecraftd.servicehttpd.service.将开始选择桌面选项gdm.service

这样的事情可能吗?

答案1

如果您安装了多个桌面环境,gdm则应该已经提供了一种在登录时为会话选择其中一个环境的方法。如果屏幕右下角附近有一个齿轮图标,请单击它以获取可用会话类型的菜单;至少在 Ubuntu 22.04 中似乎是这样做的。

桌面系统很可能默认配置为使用 systemd 目标单元graphical.target。如果您想以无 GUI“服务器模式”启动系统,您可以使用预定义的模式multi-user.target。如果您想设置自定义模式,您可以定义自己的目标单元,并依赖于您希望在该特定模式下启动的服务。

在GRUB中,您可以使用引导选项来选择启动模式systemd.unit=<name>.target

要在系统运行时以非持久方式从一个目标更改为另一个目标,可以使用systemctl isolate <name>.target.这将使systemd启动和停止服务与指定目标单元描述的系统状态相匹配。

要永久设置默认启动模式以供将来重新启动,您应该使用systemctl set-default <name>.target

最后,任何内核无法识别的启动选项都将按/proc/cmdline原样显示。因此,如果出于某种原因上述选项对您来说不够,您可以创建一个脚本来/proc/cmdline查找您的自定义关键字,并根据您的要求更改系统状态。然后只需将该脚本设置为在启动过程的适当阶段执行即可。

相关内容