从 initrd 重新启动系统而不导致内核崩溃

从 initrd 重新启动系统而不导致内核崩溃

我想通过 pxe 启动来启动一个 Linux 内核,加载一个非常小的 initram,在那里做一些工作,然后重新启动机器。

所以我的初始化脚本如下所示:

#!/bin/sh -e
# used for initramfs
export PATH
. /lib/debian-installer/init-debug
debugshell "just booted"

mount /proc
mount /sys
/lib/debian-installer/start-udev

udhcpc

tftp -l - -r /srv/tftp/welcome_test -g 10.10.10.1
sleep 10

reboot

基本上我复制了 debian netinstaller 脚本并做了一些改动。

现在的问题是,如果我想重新启动,我会得到这个内核恐慌:

Kernel Panic - not syncing: Attemted to kill init!

那么,我在机器上完成工作后如何重新启动?还是我需要通过 init 启动单独的脚本?

答案1

好的,我只是忽略了一个事实,我还没有产生任何初始化进程,所以我一直以内核模式运行......奇怪的事情发生了:D

所以我调整了脚本

exec busybox init

并创建一个/etc/inittab规则

::sysinit:/bin/bash /bin/reinstall.sh

它确实很好用!

相关内容