在大二的时候曾经天真的想过是否可以更换内核而不重启操作系统,也就是说不杀掉现有的各种服务,偷偷地把操作系统内核换掉。偶然间在2.6.16内核中发现了kexec这个系统调用,原以为是自己想要的,看了些文档之后发现,这个系统调用只是能够达到重启操作系统或者是更换内核,不用回到BIOS自检和BootLoader的那个阶段,重启后直接进行内核的初始化和服务的初始化,不过这也是够激动人心的,毕竟还是节省了好多时间。
Gentoo系统中用kexec快速重启操作系统的操作步骤如下:
- 编译内核,选中Processor type and features中的kexec system call选项。
- 安装用户空间软件kexec-tools,直接用命令emerge kexec-tools就行了。
- 编辑/etc/conf.d/kexec,一般只需要设定KNAME="vmlinuz",INITRD="/boot/fbsplash-emergence-1024x768"。
- 用命令rc-update add kexec boot将kexec加入boot运行级。并启动此服务 /etc/init.d/kexec start
- 重启操作系统,是不是没有看到计算机自检的界面呢?是不是速度开了好多呢?
如果更换了新的内核一般需要手动重启kexec服务(/etc/init.d/kexec restart),然后重启就行了。如果不想用kexec重启操作系统,比如说想重启进入windows操作系统,因为目前kexec还不支持重启其它非Linux内核(我想重启windows内核,最终也不会被支持的),所以只能进行“真实”的重启,用kexec -u取消kexec,再重启你将进行真实的重启。
参考资料:
eboot Linux faster using kexec
阅读(3231) | 评论(0) | 转发(0) |