一种利用 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

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


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