Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

kexec を使用して所謂ソフトブートをする方法

More than 3 years have passed since last update.

Kexec

--help に "Directly reboot into a new kernel" とあるように、kexec を使うと現在動かしている linux にカーネルをロードしてそのままリブートすることができる。

ここで別のカーネルを読み込むこともできるが、現在動作しているカーネルと同じものを、また同じ起動オプションを指定することによって、所謂ソフトリブートができる。BIOS や boot loader を経ないので非常に速いリブートとなる。

方法

% sudo kexec -l /boot/vmlinuz-$(uname -r) --initrd=/boot/initramfs-$(uname -r).img --command-line="$(cat /proc/cmdline)"

最初にkexec -l でカーネルをロードする。
起動時に使ったのと同じ image と initial ram disk を指定し、またコマンドラインオプションを /proc/cmdline から持ってくる。
なお、各環境によってパスは異なる可能性があるので、予め確認の上実行すること。

% sudo systemctl kexec

kexec でのブートを行う。systemd 環境下では systemctl kexec を使用するのが妥当だと思う(自信なし)。kexec -e と直接 kexec を触ってもいいような気がするが長所短所はようわからない。

つなげると次の2つのコマンドを実行すれば良い。

% sudo kexec -l /boot/vmlinuz-$(uname -r) --initrd=/boot/initramfs-$(uname -r).img --command-line="$(cat /proc/cmdline)"
% sudo systemctl kexec

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away