我想通过 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
它确实很好用!