我以为该/usr/bin/startx
脚本用于启动 X 服务器,但看起来并非如此。哪个进程或脚本启动 X 服务器?必须在 lightdmgreeter 可见之前启动 X 服务器,但具体什么时候启动?
答案1
启动到文本屏幕并使用startx
如果您的 Ubuntu 系统启动到文本屏幕,例如最小系统或服务器系统,您可以使用 startx 来启动 xserver(以及简单的窗口管理器,如 openbox 或 fluxbox 或桌面环境,如 gnome、kde、lxde 等 xfce)。
例如,在安装三个程序包后,就可以启动并使用简单的图形桌面(在最小或服务器系统中),
sudo apt update
sudo apt install fluxbox xinit xterm
使用命令
startx
直接启动进入图形桌面
如果您有 Ubuntu 桌面系统(标准 Ubuntu 或社区版本 Kubuntu、Lubuntu、... Xubuntu),则无需使用 startx,图形桌面环境会自动启动(您无需运行startx
)。如果我理解正确的话,它是通过启动的systemd
。例如,请参阅以下链接,
wiki.archlinux.org/index.php/Systemd/User#Xorg_and_systemd
wiki.archlinux.org/index.php/xorg
在文本模式和图形模式之间切换
以下链接的接受答案中描述了文本模式和图形模式之间的切换
要一次启动不带 X 的 Ubuntu 16.04 桌面,请将 systemd.unit=multi-user.target 添加到 GRUB 中的 linux 命令行。
要将其设为默认设置,请使用
sudo systemctl set-default multi-user.target
要返回默认启动 X,请使用
sudo systemctl set-default graphical.target
要查看当前默认目标,
sudo systemctl get-default
答案2
/etc/init.d/lightdm启动 Xserver。Lightdm 首先启动,然后启动 Xserver。Xserver (Xorg) 的父进程是 lightdm (PID 25600,如下例所示)。您可以通过执行以下命令来查看:
ps -ef | grep lightdm
root 25600 1 0 00:50 ? 00:00:00 /usr/sbin/lightdm
root 25608 25600 2 00:50 tty7 00:00:35 /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
root 25686 25600 0 00:50 ? 00:00:00 lightdm --session-child 12 19
运行以下命令将相应地停止并启动 lightdm 和 Xserver:
sudo /etc/init.d/lightdm stop
sudo /etc/init.d/lightdm start
答案3
您可以在这里阅读有关启动过程的信息: http://manpages.ubuntu.com/manpages/xenial/man7/boot.7.html
虽然手册中没有提到 Xserver(或 X11),但是 init 进程负责启动 Xserver。
答案4
初始化进程(PID=1)产生一切,通常包括 x11
在 16.04 中它是/sbin/init
systemd-sysv