一种利用kexec从Live引导安装完成的GNU/Linux系统的想法

目前很多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

  • 跳过漫长的开机自检,直接进入新系统!


(后面不知道怎么写了,到此为止吧。)