text内核参数的神话

text内核参数的神话

我的/etc/default/grub情况如下 - 见图 - 但 VM 正在启动到 GUI。为什么?

截屏

答案1

text内核参数的神话

过去几年来,系统管理员一直流传着这样一个传说:Linux 的标准内核参数,可以从正在使用的任何引导加载程序中指定,名称为text;并且在引导时指定该参数可确保系统以带网络连接但没有图形用户界面的多用户模式启动——在某些带有 System 5 的系统上,init曾经是一个可以在引导时选择的独特运行级别。

如果你使用 GRUB“,数百个网络日志、教程、论坛帖子,甚至 Stack Exchange 答案都这么说,例如这个这个这个; “然后,您可以通过将内核参数添加到设置text内容中来指定它,或者您只需从 GRUB 菜单以交互方式编辑内核命令行并在那里添加。GRUB_CMDLINE_LINUX_DEFAULT/etc/default/grubtext

这不是一个广泛使用的内核参数。这是一个仅有的作品 —

  • 在 Ubuntu Linux 上,使用 GDM,当 upstart 负责系统服务时;
  • 在 Debian Linux 上,使用 GDM,当 System Vrc负责系统服务时。

这是因为它是一段 shell 脚本,用于检查内核参数列表上的每个单词,以查找读取texts或 的单词single。在 Ubuntu Linux 上,它位于 GDM 的 upstart 作业单元中。在 Debian Linux 上,它位于 GDM 的旧 System Vrc脚本中。它不是 GDM 本身的一部分。它也不是一般惯例。

人们早已(如2011 年 AskUbuntu 的答案举个例子),我发现使用 LightDM 或 KDM 而不是 GDM 的 Ubuntu 不遵循此参数。为 LightDM 添加了类似的 upstart 作业文件 bodge。随着版本 15 中从 upstart 切换到 systemd,人们发现,正如您所发现的,这现在根本不起作用。

是时候把这个烂摊子扔进历史的垃圾箱了。近十年来,运行级别一直是 Ubuntu Linux 上的向后兼容措施。这是系统管理员的职责当前默认的。systemd doco 实际上明确将它们描述为“过时的”。它们不是思考事物的方式。具有讽刺意味的是,“单用户模式”已经过时了很长时间,实际上几乎是原来的两倍。它被分裂的“救援模式”和“紧急模式”模型所取代20 世纪 90 年代中期init获得其-b选择权时。

-b开关将通过 LILO 传递init并导致紧急启动 [...]

— David A. Bandel (1997-01-01)。Linux下的磁盘维护。.Linux 日志。

关于这个拙劣作品的更多细节,请参见Ubuntu 错误 #436936

做正确的事

正确的处理方法是将其视为服务管理中的普通练习。毕竟,显示管理器是由 upstart 或 systemd 作为服务启动的。因此,只需使用标准服务管理工具即可处理它。

systemd 的人员认为(正如 Lennart Poettering 所做的那样) 使用这种特殊的每个子系统旋钮来使服务自行禁用的特殊 shell 脚本逻辑不是一个好主意。更好的想法是使用服务管理系统本身提供的通用跨服务旋钮。

暴发户

正如其他地方详细提到的,使用 upstart 可以将相关服务更改为手动启动的服务,方法是添加manual去工作

echo 手册 >> /etc/init/lightdm.override
可以通过编辑该节将其改回来,或者简单地删除覆盖(如果它不包含其他内容),方法是

rm /etc/init/lightdm.override
/etc/init/gdm.override酌情 替换。

systemd

default.target是 systemd 在非救援非紧急模式下通常在引导时启动的。这是一个指向用户选择要启动的实际目标的别名。一旦选择为graphical.target,则会导致用户选择的任何显示管理器启动。显示管理器是可以通过 使其“需要”来启用/禁用的服务graphical.target

您可以通过指向来停止 systemd 的启动graphical.target(以及任何显示管理器,无论哪个实际已启用),使用default.targetmulti-user.target

systemctl set-default --force 多用户.target

您可以使用 systemd 特定的内核参数执行一次性非持久性覆盖,该参数从 GRUB 菜单添加到内核命令行,如前所述:

systemd.unit=多用户.目标

您还可以通过启用/禁用其服务来启用/禁用特定的显示管理器。当然,启用仅在默认设置下才有效graphical.target。要禁用 GDM,例如:

systemctl 禁用 gdm.service

小吃

nosh 有一个内置的 GDM 服务包,你可以像前面一样使用它:

系统控制禁用 gdm
那里一个graphics目标,但它在 1.23 版之前的 nosh 版本中无效。

进一步阅读

答案2

如果我能理解你的意思,你只是想默认启动到非图形(控制台)界面

您只需运行以下命令即可。几分钟前我在 VM (15.10) 中运行了它们,效果很好:

切换运行级别

sudo systemctl set-default multi-user.target --force

禁用 LightDM(Ubuntu 的桌面管理器)

sudo systemctl disable lightdm.service --force

完全禁用 GUI

sudo systemctl disable graphical.target --force

禁用启动时的加载屏幕

sudo systemctl disable plymouth.service --force

来源

阿曼德

相关内容