Ubuntu 的启动过程是怎样的?

Ubuntu 的启动过程是怎样的?

我正在尝试了解 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

相关内容