init: must run as PID 1错误
Linux内核启动的用户状态的第一个进程是init,其pid为1,这是所有进程的子进程。 子进程继承父进程的文件描述符。 运行的init程序的pid不为1时会发生上述错误。
在嵌入式linux系统上,bios/boot引导程序启动内核时通常会加载kernel/initrd/dtb文件。 initrd是ramdisk,根文件系统的一级,在内存中运行。 初始化完成后,切换到辅助根文件系统,从物理存储介质启动并加载系统。
当主文件系统切换到辅助文件系统时,如果使用exec命令运行辅助文件系统的init程序,则exec命令将替换原始进程并继承原始进程的pid,因此主根文件系统在中,辅助根文件系统的init进程获得的pid不是1,除非在主根文件系统的init程序中运行exec来启动辅助根文件系统的init程序。 这样会导致init: must run as PID 1错误,导致系统复位。