了解内核引导外壳

Posted

技术标签:

【中文标题】了解内核引导外壳【英文标题】:understanding kernel boot shell 【发布时间】:2020-02-27 02:18:16 【问题描述】:

据我了解: 正在执行的第一个进程是 pid 为 1 的 init(具有其他现代名称)进程。 稍后根据 /etc/inittab 和所有 /rdc。文件夹的脚本其余程序正在执行。

1.shell(在我的例子中是带有登录提示的bash shell)进程只有在我上面提到的所有进程之后才开始运行。那么,如果我的 shell 还没有打开,那么所有这些脚本是如何被执行的呢?要运行脚本,我们需要一个可以运行它的 shell。对吧?

    在哪里可以找到说明我的 bash shell 究竟从什么时候开始运行的脚本?

    在我的 bash shell 运行之前,我可以向启动时开始运行的进程之一发送信号 (Ctrl z/x/c) 吗?

    我有一个包含“scanf”的进程。当我按下键盘时,进程会收到我的输入。 考虑到该进程在启动时开始运行,就像我在 shell 之前提到的那样。它是如何收到我的意见的?我的外壳仅在此过程完成后打开。

【问题讨论】:

这是Unix&Linux 的更多主题。我认为您确实高估了交互式登录外壳的作用和重要性。 1. 它不参与运行脚本(它们由非交互式 shell 实例运行,无论是否在启动时),2. 它不在启动时启动(仅在登录时),3. 它不涉及那些信号(那是终端),4.它不参与程序输入(程序直接从终端读取) 【参考方案1】:

    shell 程序可以作为脚本解释器以非交互方式运行,在这种情况下,它可以在您登录之前运行。

    shell 进程在您输入用户名和密码后由登录程序启动。

    信号是通过进程的控制端传递的,只要程序有控制端,就可以从控制端接收信号。

    scanf() 从进程的标准输入读取,该输入也链接到它的控制终端。同上。

【讨论】:

所以如果我理解正确的话: 1. 启动时的脚本是由一个我看不到/无法交互的 shell 实例运行的。 2. shell 进程(我可以交互的那个) with) 由 init 进程启动的登录进程启动 3. 终端是负责发送信号的,而不是外壳? @那个人

以上是关于了解内核引导外壳的主要内容,如果未能解决你的问题,请参考以下文章

深入了解linux操作系统引导过程详解

linux-2.6.22.6内核启动分析之head.S引导段代码

登录 Unix 操作系统

登录 Unix 操作系统

操作系统--主引导程序控制权的转移

Hello world!让 grub2 引导自己的操作系统 Xos 内核