目前很多GNU/Linux发行版(以下简称“Linux系统”)都提供Live环境,供用户测试,基本等同于一个完整的操作系统,可以安装各种软件,包括kexec
工具(Debian系为kexec-utils
软件包)。而kexec允许计算机从当前运行的Linux内核直接跳转到新的内核,跳过引导阶段以减少重启时间。一次经历,使我产生了一个大胆的想法:通过kexec
从Live系统直接启动已安装的系统,减少重启时间。
我的经历
最近,我在给我的服务器安装Proxmox VE,但发现安装盘不能正常使用,于是我启动到了另外一个Live系统,打算重新格式化U盘刷安装镜像。安装盘做好后我突然想起来kexec
可以直接启动另一个内核,于是我先安装了kexec-utils
,再打开安装盘,找到安装盘的内核、initrd和grub配置文件,然后执行了
kexec -l /media/PVE/boot/vmlinuz --append=<从grub配置文件复制的参数> --initrd=/media/PVE/boot/initrd.img
接下来,kexec -e
,顺利进入PVE安装程序,跳过了服务器漫长的开机自检。
想法
既然可以从Live环境进入另一个安装程序,那么应该可以进入已安装的系统,毕竟都是Linux系统。我觉得这样可以节省不少时间。
我的思路如下:
- Live环境下的内核启用
kexec
支持,用户空间预置kexec
工具;
- 安装程序在生成grub配置文件的同时生成对应的
kexec
命令;
- 安装完成时,添加一个“
快速进入新系统
”的按钮,点击后可直接执行kexec -e
;
- 跳过漫长的开机自检,直接进入新系统!
(后面不知道怎么写了,到此为止吧。)