从Linux内引导新的Linux内核?

任何人都知道从Linux内部“引导”另一个Linux内核的方法,丢弃原始的内核/ initrd? 这个想法是,我可以从一个只读的Linux副本启动我的服务器,它执行一些pipe家/数据收集任务,然后检查pipe理服务器,找出如何处理服务器。 大多数情况下,只需将Linux / Windows从本地硬盘驱动器中引导出来即可。

基本上,我想要一个小小的Linux版本作为引导程序,而不是一个专门的(而且不太灵活)的引导程序包。 Linux的微小副本可能在USB密钥上,或由PXE交付。

Loadlin曾经为Windows做过这样的事情,所以我可以在DOS下创build这个环境…但是networking可能会非常棘手,我会失去很多工具。

其他选项是虚拟化。 上述所有的自动化操作都是主机操作系统的一部分,并通过pipe理服务器检查客户端是否启动等。 云服务器如何做到这一点。 或者我可以在PXE方面做一些神奇的事情:首先PXE启动Linux的数据收集副本,对PXE服务器进行更改,并在第二次PXE引导远程内核而本地OS驱动器时重新启动。

那么在纯Linux设置中,你有kexec可以用来“重新启动”内核/操作系统,而无需重置硬件/再次通过BIOS加载。 对于内核恐慌之后的任何事情来说,这都很好。

但是在一个混合的环境中,我认为Eater有一个解决scheme。 本质上,你可以启动到你的Linux,运行你需要的任何脚本/做任何需要的pipe家,然后重新启动到您select的操作系统。

但是,请注意,这会使载入速度变得exception缓慢。 当然,你可以优化Linux的启动时间到可能需要几秒钟的时间点,你仍然需要处理两次加载BIOS。 所有这些对于那些可能决定吓坏的用户来说都是可见的。

使用GRUB,你可以做这样的事情:

 [root@localhost ~]# echo "savedefault --default=2 --once" | grub --batch [root@localhost ~]# reboot 

这会指示GRUB绕过/boot/grub.conftimeoutdefault设置,并且只启动一次启动项目2。 使用--once标志可确保在随后的引导中,遵循boot/grub.conf中的默认设置。

据我所知,你不能从当前正在运行的内核中引导第二个内核。

你最好通过Xen安装一个虚拟机,让它通过虚拟networking接口执行任务。 如果您configuration了一个新的虚拟机,您将能够使用SSH连接到主机,并根据需要运行脚本和工具。

对于你在做什么,这将是我的select。