首先声明,kexec并不是什么传说中的“内核热切换”,它仅仅相当于不经过硬件和启动引导器的重启。
这是正常的重启: init系统停止服务等->内核退出并向硬件发送重启信号->硬件关闭和启动->启动引导器(如GRUB)->内核初始化->init系统启动服务等 这是kexec的重启: init系统停止服务等->内核推出并直接启动新的内核->init系统启动服务等
从直观上看区别就是,用了kexec后重启变块了,而且不会出现bios界面了。
kexec分为2个部分,一般在内核里的部分都是默认就有的,所以我们安装用户空间上的kexec程序即可
在Debian系发行版上安装kexec的用户空间部分(来跟我一起念:Debian大法好
[滑稽])
sudo apt-get install kexec-tools
安装时会问你,是否对reboot命令使用kexec,这里我们选是,这样以后用reboot命令重启就是用kexec的了
然后执行sudo reboot
即可看到效果
如果你想手动用kexec命令来重启,这样:
kexec -l <kernel-image> --append="<command-line-options>" kexec -e
<kernel-image>
是内核镜像的地址,<command-line-options>
是内核参数,缺一不可,内核参数可以通过cat /proc/cmdline
查看
第一行只是设置,第二行才是真正的去重启。