标签: init

init 进程可以是 Linux 中的 shell 脚本吗?

我正在阅读有关设置自定义 initramfs教程,其中指出:

唯一缺少的是 /init,它是 initramfs 根目录中的可执行文件,一旦加载内核就会执行。因为 sys-apps/busybox 包含一个功能齐全的 shell,这意味着您可以将 /init 二进制文件编写为一个简单的 shell 脚本(而不是使它成为一个必须编译的用汇编程序或 C 编写的复杂应用程序)。

并给出了一个以 init 开头的 shell 脚本示例 #!/bin/busybox sh

到目前为止,我的印象是 init 是启动的主进程,所有其他用户空间进程最终都是 init 的子进程。但是,在给定的示例中,第一个进程实际上是bin/busybox/ sh从中产生后来的 init 的。

这是正确的解释吗?例如,如果我当时有一个可用的解释器,我可以将 init 编写为 Python 脚本等吗?

linux init-script init

16
推荐指数
2
解决办法
8130
查看次数

为什么内核不能运行init?

我已经在这个页面下载了 Raspbian 镜像。我正在尝试编译可用于在 qemu 中引导映像的内核。

我从kernel.org下载了 Linux 内核源代码并运行:

make versatile_defconfig
make menuconfig
Run Code Online (Sandbox Code Playgroud)

然后我向内核添加了以下功能:

  • PCI 支持 (CONFIG_PCI)
  • SCSI 设备支持 (CONFIG_SCSI)
  • SCSI 磁盘支持 (CONFIG_BLK_DEV_SD)
  • SYM53C8XX 版本 2 SCSI 支持 (CONFIG_SCSI_SYM53C8XX_2)
  • 扩展 3 (ext3) 文件系统 (CONFIG_EXT3_FS)
  • 扩展 4 (ext4) 文件系统 (CONFIG_EXT4_FS)

我还循环安装了磁盘映像,并且:

  • 注释掉 /etc/ld.so.preload
  • 调整/etc/fstab使用/dev/sda1/dev/sda2

然后我卸载了图像并尝试使用以下命令启动机器:

qemu-system-arm \
    -M versatilepb \
    -m 256 \
    -kernel linux-4.3/arch/arm/boot/zImage \
    -hda 2015-09-24-raspbian-jessie.img \
    -serial stdio \
    -append "root=/dev/sda2 rootfstype=ext4 rw console=ttyAMA0"
Run Code Online (Sandbox Code Playgroud)

内核能够挂载文件系统,但它立即遇到了一些麻烦:

Kernel panic - not syncing: …
Run Code Online (Sandbox Code Playgroud)

arm init qemu linux-kernel

16
推荐指数
1
解决办法
6676
查看次数

如何使可执行文件作为服务运行?

在 Ubuntu 18.04 上,我可以通过以下方式启动或停止某些服务

sudo service cron start/stop
Run Code Online (Sandbox Code Playgroud)

我可以列出一些服务

service --status-all
Run Code Online (Sandbox Code Playgroud)

输出与/etc/init.d/.

我听说有几种管理服务的方法:system V init、systemd、upstart,.... 我用的是哪一种?man service显示它是 system V init。但是听说Linux用systemd代替了init。我应该在 Ubuntu 上使用 systemd 而不是 init 吗?

如何使任意可执行文件(ELF 或 shell 脚本)成为服务?

我是否需要setsid/sf/answers/1346467041/那样显式地守护可执行文件?

下面的任何帖子都适用于我吗?

谢谢。

ubuntu systemd init

16
推荐指数
2
解决办法
3万
查看次数

如何找出 /etc/init.d 脚本在 Debian 上加载的顺序?

我想在另一个之前运行一个 sysvinit 脚本并想出如何做到这一点。

为了确保这实际上按照我喜欢的顺序发生,我想查看一个列表,按照发生的顺序。

sudo insserv --showall已经找到了,但不能确定它的头或尾,因为它多次列出 init 脚本。

如何找出 /etc/init.d 脚本在 Debian 上加载的顺序?

startup debian init sysvinit

15
推荐指数
2
解决办法
6万
查看次数

什么可以使将 init=/path/to/program 传递给内核而不是将程序作为 init 启动?

我正在尝试在 Linux 系统上调试 init 脚本;我正在尝试传递init=/bin/sh给内核以使其在sh不启动的情况下启动,init以便我可以手动运行 init 序列。

我发现内核init无论如何都在启动。在启动期间,printk 消息之一是命令行,这表明该行设置正确;此外,我可以使用内核命令行影响其他事情。我已经检查以确保路径存在;确实如此。

这是一个busybox系统,init是busybox的符号链接;所以为了确保busybox在PID为1时不会做奇怪的事情,我还尝试将非busybox程序作为init运行;那也没有用。似乎无论我做什么,init 都会运行。

什么可能导致这种行为?

linux init

14
推荐指数
2
解决办法
1万
查看次数

在不重启系统的情况下重启init

这个问题中,接受的答案指出

例如,/sbin/init 使用 glibc [易受攻击的库],并且在不重启的情况下重新启动它是非常重要的。

现在,非平凡是不可能的工程,但我仍然很好奇:

是否可以在不重新启动整个系统的情况下重新启动 init?

init

13
推荐指数
1
解决办法
1万
查看次数

带有内核和 BusyBox 的最小 Linux:忽略 /etc/inittab,只执行 /init

我设法创建了一个小型且功能齐全的实时 Linux CD,其中仅包含内核(使用默认选项编译)和 BusyBox(使用默认选项 + 静态编译,所有小程序都存在,包括/sbin/init)。我没有问题,建立initrd和填充/dev/proc并且/sys也是我在所有与我没有任何问题/initshell脚本。

最近我读到 BusyBox 支持/etc/inittab配置(至少在某种程度上),我非常想执行以下任一操作:

  • 忘记我的/initshell 脚本,完全依赖于/etc/inittab配置。
  • 使用/initshell 脚本和/etc/inittab配置。

现在是实际问题 -/etc/inittab当我的发行版启动时,这似乎完全被忽略了。症状是:

  • 当我删除/init并离开时,/etc/inittab我最终会遇到内核恐慌。我的假设是内核根本不执行/sbin/init,或者/sbin/init没有 find (or read) /etc/inittab
  • 我读到 BusyBox 即使没有/etc/inittab. 所以,我删除了/initand/etc/inittab并猜猜是什么 - 内核再次恐慌。
  • 我试图执行/sbin/init从我的外壳经过几次猜测,其中包括exec /sbin/initsetsid /sbin/initexec setsid /sbin/init我结束了内核崩溃。文件系统上存在和不存在 /etc/inittab 的情况。 …

linux init-script busybox init sysvinit

12
推荐指数
1
解决办法
1万
查看次数

为什么在用户注销时运行 `killall init`?

在运行 Ubuntu 14.XX 的多台计算机上,我以用户身份运行命令“killall init”,并立即注销。我可以毫无问题地重新登录。为什么是这样?幕后发生了什么?

kill init logout

12
推荐指数
1
解决办法
1277
查看次数

Ubuntu 中的文件相当于 RedHat 中的 /etc/inittab 文件

Ubuntu 中的哪个文件相当于/etc/inittabRedHat 中的文件?

在 RedHat 中,该/etc/inittab文件包含与要在其中启动 Linux 的运行级别相关的设置。

linux ubuntu init

11
推荐指数
2
解决办法
3万
查看次数

sudo reboot -> 无法与 init 守护进程对话

在我的 Raspberry Pi 上运行 jessie。安装 mosquitto 后,我无法再运行 sudo reboot。出现此错误:“无法与 init 守护程序对话。”。可能是什么问题呢?我已经卸载了 Mosquitto。非常感谢!

pi@fhem:~ $ sudo 重启

无法与 init 守护程序对话。

init reboot

11
推荐指数
1
解决办法
4万
查看次数

标签 统计

init ×10

linux ×4

init-script ×2

sysvinit ×2

ubuntu ×2

arm ×1

busybox ×1

debian ×1

kill ×1

linux-kernel ×1

logout ×1

qemu ×1

reboot ×1

startup ×1

systemd ×1