Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在initrd映像内重新启动_Linux_Reboot_Initrd - Fatal编程技术网

Linux 在initrd映像内重新启动

Linux 在initrd映像内重新启动,linux,reboot,initrd,Linux,Reboot,Initrd,我正在寻找一种从init底部脚本*中重新启动/重置linux系统的方法。在执行脚本时,系统位于/root下,我可以访问busybox 但是busybox中的“reboot”命令不起作用。还有其他可能性吗 我的系统使用initramfs映像正常启动,我的脚本最终导致更新过程。debian附带的新systemd对此很恼火。但通过电源重置,一切都很好。我发现: echo b>/proc/sysrq触发器 (就像按CTRL+ALT+DEL)如果您是-are-init(进程/脚本的PID为0),那么启动

我正在寻找一种从init底部脚本*中重新启动/重置linux系统的方法。在执行脚本时,系统位于/root下,我可以访问busybox

但是busybox中的“reboot”命令不起作用。还有其他可能性吗


我的系统使用initramfs映像正常启动,我的脚本最终导致更新过程。debian附带的新systemd对此很恼火。但通过电源重置,一切都很好。

我发现:

echo b>/proc/sysrq触发器

(就像按CTRL+ALT+DEL)

如果您是-are-init(进程/脚本的PID为0),那么启动busybox重新启动程序将不起作用,因为它试图向init发出重新启动(未启动)的信号

相反,作为PID 0,您应该执行init将执行的操作。这是为重新启动调用正确的内核API。有关详细信息,请参阅

假设您正在运行c程序或其他程序,您可以执行以下操作:

#include <unistd.h>
#include <sys/reboot.h>

void main() { reboot(0x1234567); }

这会更好,我可以移动这个主题还是必须在那里重新创建它?(unix.stackexchange.com)
pid_t pid;
pid = vfork();
if (pid == 0) { /* child */
    reboot(0x1234567);
    _exit(EXIT_SUCCESS);
}
while (1); /* Parent (init) waits */