当我运行命令 startx 时,它会立即启动 Gnome,而无需登录,如果我尝试通过在 x 终端中输入命令 init 3 返回命令行界面,它什么也不做。
如果我尝试按下 CTRL-ALT-Backspace,它什么也不会做,但是如果我运行 init 5,它会启动 Gnome 显示管理器并期望我登录,如果我在 x 终端运行 init 3,它会关闭 x 服务器并返回到命令行界面。
答案1
理论上你做的是正确的。理论上,处于运行级别 N 意味着与编号 N 相关的所有服务都在运行,而没有运行的服务则没有运行。
实际上,如果不明确告知系统为您进行转换,您就无法进行这种转换。
不过,您确实将运行 startx 与运行级别 5 中通常发生的情况混淆了。当您进入运行级别 5 时,系统会启动显示管理器登录(gdm、kdm 等)。这是一个简单的显示管理器,它会在您登录后以您的身份启动 X(类似于您使用 startx 所做的操作……区别很小)。
如果你从运行级别 3 以 root 身份启动 gdm,则可以想象如果您随后指示要处于运行级别 3,则运行级别转换/管理的某些实现将停止 gdm。我不会指望它在现实生活中以这种方式工作。首先,系统可能会忽略您,因为没有人告诉它它处于运行级别 5,即使 gdm 正在运行。其次,系统可能不会以处理自动启动的进程的方式处理您启动的进程。
答案2
init 5
是一个runlevel
。一个运行级别基本上通过启动软件来初始化系统。运行级别 5 通常用于以图形模式启动。
如果您以非图形模式启动,或者您打开tty
(通常Ctrl-F1
通过Ctrl-F6
)startx,则可以在另一个 tty(F7 - F9)中启动 X。运行 startx 时,您已经登录到系统,因此无需启动登录管理器。在图形模式下运行时,系统会启动登录管理器来验证可能登录的用户。
当您init 3
从控制台(tty 或 pts)运行时,您都在告诉系统您正在更改其运行级别(不是明确的,只是这次),然后(简单地说)每个软件都会停止,并且只启动在运行级别 3 上运行的程序。
答案3
简短的回答,因为我面前没有 Linux 系统:
Startx 执行 .xinitrc 中的脚本,该脚本可能不是很定制,因此它很可能只是在当前用户下启动 X。
Init 5 切换到运行级别 5,根据 /etc/inittab/,运行 /etc/rc5.d(或类似位置)中包含的脚本
参见:
startx:
http://www.xfree86.org/current/startx.1.html
在里面:
http://wiki.linuxquestions.org/wiki/Run_Levels#Configuring_each_run_level
https://wiki.archlinux.org/index.php/Init_and_inittab#inittab