我正在尝试了解 Linux 以及从打开计算机的那一刻起如何启动带有 Gnome 的 Ubuntu。
我知道首先内核启动,引导完成后运行 init 程序 (upstart?)。然后 upstart 查看一些配置文件 (某处?) 并运行 X 和gnome-shell
?
那么顺序是怎样的?所有说明何时启动以及启动什么的配置文件在哪里?
答案1
不,我们systemd
已经使用了一段时间了。
一旦内核被加载到初始 RAM 磁盘,它就开始systemd
初始化。
systemd
使用“目标”处理服务管理进程。“目标”文件systemd
用于对不同单元进行分组并启动同步进程。
执行的第一个目标systemd
是( ;default.target
的符号链接)graphical.target
/usr/lib/systemd/system/graphical.target
more /usr/lib/systemd/system/graphical.target
# SPDX-License-Identifier: LGPL-2.1+
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes
这将触发multi-user.target
-> basic.target
-> sysinit.target
-> local-fs.target
-> /etc/fstab
,/etc/inittab
这只是一种简化,因为它远比这复杂得多:graphical.target
向您展示一些有关与其他目标连接的信息。这些目标中的每一个都具有相同类型的设置,最终指向桌面。
答案2
感谢@Rinzwind 为我指明了正确的方向。我最终完成了systemd
启动过程,并最终了解了如何启动 Gnome Shell。
对于其他正在寻找此软件的人来说,以下是该过程的流程(至少目前在 2021 年和 Ubuntu 20.04 中是这样的)。我想这可能会在以后的版本中发生变化。
- Kernel boots
-- Kernel launches /usr/sbin/init (symlink to SysVinit, upstart or systemd)
--- systemd executes /usr/lib/systemd/system/default.target
---- default.target executes /etc/systemd/system/display-manager.service
----- display-manager.service is a symlink to /lib/systemd/system/gdm3.service
------ gdm3.service us a symlink to /lib/systemd/system/gdm.service
------- gdm.service executes /usr/sbin/gdm3
-------- gdm3 starts the X server and after the user logs in executes /usr/share/xsessions/ubuntu.desktop
--------- ubuntu.desktop executes /usr/bin/gnome-shell