2022-07-26

Linux Mint を高速再起動してみた

何かの記事で 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 の起動オプションを何度か調整して起動してみたい、という場合には役立つのかもしれません。