Skip to content

Linux 的 run-level 学习

之前安装系统总是要手动 startx 才行,后来发现是 run-level 问题,学习了一波。

Run-Level in old article

首先是 Run-level 概念,每个用户都会有一个 Run-level,对应它进入系统的行为,参照下面的表。

Run Level Mode Action
0 Halt Shuts down system
1 Single-User Mode Does not configure network_interfaces,start daemons,allow non-root logins
2 Multi-User Mode Does not configure network interfaces,start daemons.
3 Multi-User Mode with Networking Starts the system normally.
4 Undefined Not used/User-definable
5 X11 As runlevel 3 + display manager(X)
6 Reboot Reboots the system

用户想要查看自己的 run-level,可以执行命令 runlevel
但是现在基本用 systemd,可能这个命令不存在了!

Run-Level in Systemd

现在用了 systemd 没有 run-level 这个词了,不过基本换汤不换药,现在用 target 来代替这个玩意了,对应关系如下。

  • poweroff.target (runlevel 0): shutdown and power off the system
  • rescue.target (runlevel 1): launch the rescue shell session
  • multi-user.target (runlevel 2,3,4): set the system in non graphical (console) multi-user system
  • graphical.target (runlevel 5): use a graphical multi-user system with network services
  • reboot.target (runlevel 6): shutdown and reboot the system

用户查看自己的默认 target,使用命令: systemctl get-default,会输出对应的 target

用户修改自己的 target,使用如下命令

# 改成自己想要的 target
$ sudo systemctl set-default multi-user.target

所以如果发现用户每次都需要手动 startx 进行图形环境,可能是 run-level/target 不对,我的就是默认为 3,改成 5 就好。

参考资料

Comments