何かの記事で kexec というコマンドの存在を知り、これを使うことで Linux を高速に再起動させることができるらしいので試してみました。
なお、OS は Linux Mint 21 のベータ版です。(Ubuntu 22.04 相当)
まずは man kexec で操作方法を確認しようとしたところ、なんと kexec コマンド自体が初期状態ではインストールされていませんでした。どうやら kexec-tools というパッケージをインストールする必要があるようです。
apt install kexec-tools
インストール途中に CUI で「kexec にリブート操作を許可するか?」と聞かれたので、それには「はい」と応答しました。
続いて、起動したい Linux Kernel のイメージファイル名などを確認します。私の環境では /boot 配下に以下のようなファイルが配置されていました。
$ ll 合計 125397 drwxr-xr-x 4 root root 4096 7月 15 10:02 ./ drwxr-xr-x 19 root root 4096 7月 15 08:14 ../ -rw------- 1 root root 6249967 6月 22 21:42 System.map-5.15.0-41-generic -rw-r--r-- 1 root root 261649 6月 22 21:42 config-5.15.0-41-generic drwx------ 3 root root 1024 1月 1 1970 efi/ drwxr-xr-x 5 root root 4096 7月 15 10:02 grub/ lrwxrwxrwx 1 root root 28 7月 15 08:44 initrd.img -> initrd.img-5.15.0-41-generic -rw-r--r-- 1 root root 110790245 7月 15 08:45 initrd.img-5.15.0-41-generic lrwxrwxrwx 1 root root 28 7月 15 10:02 initrd.img.old -> initrd.img-5.15.0-41-generic lrwxrwxrwx 1 root root 25 7月 15 08:44 vmlinuz -> vmlinuz-5.15.0-41-generic -rw------- 1 root root 11086240 6月 22 22:24 vmlinuz-5.15.0-41-generic lrwxrwxrwx 1 root root 25 7月 15 10:02 vmlinuz.old -> vmlinuz-5.15.0-41-generic
initrd.img、vmlinuz がシンボリックリンクになっているので、これを kexec のパラメーターに使用すれば良さそうです。
では、いよいよ高速再起動です。
最初の kexec コマンドで起動したい Linux Kernel の情報をセットします。続いて、systemctl kexec により Linux が再起動されます。ただし、BIOS の再起動などはありません。
sudo kexec -l /boot/vmlinuz --initrd=/boot/initrd.img --command-line="$(cat /proc/cmdline)" sudo systemctl kexec
こちらは通常の PC の再起動時に取得した情報です。BIOS の起動後、GRUB メニューが起動され、その後に Linux Mint が起動された状態です。
しかし、計測自体は Linux Mint 起動後に始まっています。
$ systemd-analyze Startup finished in 7.914s (firmware) + 8.245s (loader) + 4.969s (kernel) + 9.838s (userspace) = 30.967s graphical.target reached after 9.831s in userspace
こちらは kexec によって Linux Mint を再起動した時の情報です。Linux Mint 起動後に計測が始まっているので差はないですね。
ただし、BIOS の再起動や GRUB メニューから起動処理はスキップされています。
$ systemd-analyze Startup finished in 7.914s (firmware) + 8.245s (loader) + 5.241s (kernel) + 10.047s (userspace) = 31.448s graphical.target reached after 10.040s in userspace
というわけで、sudo reboot コマンドでなくても Linux Mint を再起動させることはできましたが、劇的に PC の再起動が速くなるというわけではなく、それほどメリットを感じられるものではありませんでした。
Linux Kernel の起動オプションを何度か調整して起動してみたい、という場合には役立つのかもしれません。