目前很多 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
;
- 跳过漫长的开机自检,直接进入新系统!
(后面不知道怎么写了,到此为止吧。)