はじめに
こんにちは、しゅんです。
新年入ってかなり気合入っています。実は自分のリアルのことで色々と現実逃避しているだけです。
今回は、Ubuntu環境でkexecを利用してデュアルブート構成のOSを切り替える方法を解説します!この記事は、デュアルブートを利用している方に向けた内容で、OSを切り替える手間を軽減したい場合に役立つ手法です。
それと!windowsはすでに半年くらい前に消しました。
自分の環境は
SSD01
→ubuntu24.04
SSD02
→ubutu22.04
注意: この方法では、システムに問題が発生した場合の保証はできません。データ損失やOSの破損などのリスクを理解した上で、自己責任でお試しください。
実現したいこと
Ubuntu 24.04
と22.04
がインストールされたデュアルブート環境で、再起動を伴わずにOSを切り替えます。
通常、OSを切り替える際には再起動してGRUB
メニューから選択しますが、kexec
を利用すると高速にカーネルを切り替えることが可能です。
必要な準備
以下の環境を前提としています:
現在の環境: Ubuntu 24.04
切り替え先: Ubuntu 22.04
ストレージ構成:
この辺は自分の環境に合わせてください
Ubuntu 24.04: /dev/nvme0n1
Ubuntu 22.04: /dev/nvme1n1p4
以下の手順を実行する前に、データのバックアップをおすすめします。
kexecを使ったOS切り替え手順
1. kexec-toolsのインストール
まず、kexec-toolsをインストールします:
sudo apt update
sudo apt install kexec-tools
2. 切り替え先カーネルの確認
Ubuntu 22.04のブートディレクトリにアクセスして、カーネルイメージとinitrdファイルを確認します。
ls /media/syun/782fb4f7-ccc5-467a-8b56-356b23da8f52/boot
出力例:
syun@syun:~$ ls /media/syun/782fb4f7-ccc5-467a-8b56-356b23da8f52/boot
System.map-5.15.0-43-generic initrd.img.old
System.map-6.8.0-49-generic memtest86+.bin
config-5.15.0-43-generic memtest86+.elf
config-6.8.0-49-generic memtest86+_multiboot.bin
efi vmlinuz
grub vmlinuz-5.15.0-43-generic
initrd.img vmlinuz-6.8.0-49-generic
initrd.img-5.15.0-43-generic vmlinuz.old
initrd.img-6.8.0-49-generic
syun@syun:~$
この場合、以下のファイルを使用します:
- カーネル:
vmlinuz-6.8.0-49-generic
- initrd:
initrd.img-6.8.0-49-generic
3. kexecでカーネルをロード
ロードの前に念の為に起動してたソフトなどのデータを保存する
Ubuntu 22.04
のカーネルをロードします:
sudo kexec -l /media/syun/782fb4f7-ccc5-467a-8b56-356b23da8f52/boot/vmlinuz-6.8.0-49-generic \
--initrd=/media/syun/782fb4f7-ccc5-467a-8b56-356b23da8f52/boot/initrd.img-6.8.0-49-generic \
--append="root=/dev/nvme1n1p4 ro quiet splash"
4. kexecでカーネルを起動
ロードが成功したら、以下のコマンドで新しいカーネルを起動します:
sudo kexec -e
すぐ起動する。失敗したら強制シャットダウンするしかないらしい。
この操作で、Ubuntu 22.04が起動します。
注意事項
- 復旧手段を用意する: 問題が発生した場合に備え、ライブUSBなどでシステムを復旧できる状態を整えておきましょう。
- ファイルシステムの整合性: 切り替え前に必ずディスクの整合性を確認してください。
- サポート外の動作: kexecは特殊なツールであり、すべてのハードウェアや環境で完全に動作するわけではありません。
Ubuntu 24.04に戻るには
1. Ubuntu 22.04で再起動
Ubuntu 22.04上で以下を実行して再起動します:
sudo reboot
2. GRUBメニューで選択
再起動後、GRUBメニューからUbuntu 24.04を選択して起動します。
こういう感じです
kexecでUbuntu24.04環境でデュアルブート再起動せずに切り替えることができた!
— SYUN (@syun88AI) January 7, 2025
便利ですね👀👀#ubuntu#dualboot pic.twitter.com/OhI52ySkgr
おわりに
kexecを利用した高速なOS切り替え方法をご紹介しました。この手法は便利ですが、リスクも伴いますので、慎重に試してください。デュアルブート環境をより効率的に活用したい方にとって役立つ内容になれば幸いです。
最後まで読んでいただきありがとうございました!