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 就好。