0x1*_*111 13 grub boot sysv systemd reboot
我有一台远程服务器,运行 Linux 5.19.0-41-generic x86_64,我试图找出它是如何启动的。
显然,它不使用 systemd :
PID 1 进程是bash。
ps -p 1 -o comm=
bash
Run Code Online (Sandbox Code Playgroud)
显然,没有 GRUB,至少 /usr/sbin 中没有,并且
grub-install --version
-bash: grub-install: command not found
Run Code Online (Sandbox Code Playgroud)
我猜想,启动时并没有使用GRUB。
看起来不是虚拟机。我检查了一些文件。它似乎在裸机上运行。但配置很小:顶部仅显示少数进程,并且在 ssh 上,如果我需要更完整的功能,系统会提示我“取消最小化”。
我倾向于认为使用了 SysV:
ls /etc/init.d
apport bluetooth hwclock.sh network-manager procps rsync udev
avahi-daemon dbus iwpmd nfs-common pulseaudio-enable-autospawn saned unattended-upgrades
binfmt-support gdm3 kmod pppd-dns rpcbind ssh x11-common
Run Code Online (Sandbox Code Playgroud)
但:
runlevel
unknown
Run Code Online (Sandbox Code Playgroud)
并且 /etc/inittab 不存在。
Q1:如何诊断是什么东西启动的?
Q2:如何重启?理想情况下,使用 systemd。
sudo reboot
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
Failed to talk to init daemon.
Run Code Online (Sandbox Code Playgroud)
sudo init 6
Couldn't find an alternative telinit implementation to spawn.
Run Code Online (Sandbox Code Playgroud)
sudo shutdown -r now
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
Failed to talk to init daemon.
Run Code Online (Sandbox Code Playgroud)
谢谢。
PID 1 进程是 bash....没有 GRUB
最有可能是一个容器。
看起来不是虚拟机。我检查了一些文件
但你不会告诉我们是哪些。我很喜欢猜谜游戏。
在 ssh 上,如果我需要更完整的功能,系统会提示我“取消最小化”
从软件升级裸机很困难。
我倾向于认为使用了 SysV
SysV 上的 pid 1 是 init。
您可以通过在 /proc/self/mountinfo 中查找“lxc”或“docker”来检查您是否正在容器中运行
如何重新启动它?
如果shutdown -r不起作用,请与构建主机的人员联系。
如果不询问系统管理人员,您无法最终确定这一点。
\nLinux 不记录到底是什么将执行移交给了内核,因为\xe2\x80\x99s 无法从内核本身可靠地确定这一点(可以使用的任何机制都依赖于引导加载程序的配合)。\xe2\x80\x99s 实际上有很多大多数人从未想过的奇异可能性,例如 UML(内核在另一个 Linux 环境中作为用户进程运行,有点像虚拟机和容器之间的奇怪混合体)或 QEMU\xe2\x80\x99s 直接内核启动功能(QEMU 不是常规固件,而是初始化 VM,然后从主机系统加载内核本身,并将执行直接交给内核)。
\n综上所述,鉴于 PID 1 是bash并且没有 fstab,它\xe2\x80\x99可能是一个容器。
其他一些快速说明:
\n/etc/init.d不能可靠地指示 sysvinit。它实际上与 sysvinit 几乎没有任何关系,除了碰巧被使用 sysvinit 的 Debian 派生系统使用之外。它\xe2\x80\x99 也被其他一些符合 LSB 的服务管理系统和 OpenRC 使用,并且至少在某些 systemd 系统上它实际上包含仅调用适当systemctl命令的存根脚本。cat /proc/cmdline应该揭示它是如何发生不运行 init 服务的;然而,这并不是确定的。简单的情况下会有类似init=/bin/bash内核命令行中的内容,但一般情况下这是无法确定的。例如,如果 initramfs 内发生某些交互,您将无法找到是哪一个交互,但您仍然能够发现正在使用调试标志,因此使用了非标准 initramfs 路径。此外,在这种情况下,检查 initramfs 映像中的 init 脚本可能会有所帮助。
停止所有服务,卸载所有可能的文件系统,将其他所有内容重新安装为只读,同步,然后reboot -f;看这里。
请注意,如果 bash 像这样运行,那么它已经作为root;运行了。即使没有 .您也可以对系统执行任何操作sudo。检查与whoami.
| 归档时间: |
|
| 查看次数: |
2852 次 |
| 最近记录: |