普段使いのPCとして Ubuntu Desktop を使っています。2026年3月1日、時々やるアップデートの後で再起動したらなんとカーネルパニックになりました。
かなり焦りましたが、いろいろ調べてなんとか対処できました。そのやり方を記しておきます。
TL;DR
原因は、古い VirtualBox のモジュールのビルドに失敗したため。(古いVirtualBox入れてる人以外はこのエラー出ないと思います。) 対処としては
-
カーネルパニックが出た直後に起動する時は、ブート時に'Advanced Options for Ubuntu'を選び、その中からひとつ前のカーネルを選んで起動する
-
apt remove で VirtualBox を消す。この時カーネルモジュールも作り直される
-
リブートすると無事起動する
-
(必要ならVirtualBoxを再インストール)
で完了です。
とりあえず動かす
まずはパニックの原因を調べるところからです。直前にアップデートした時、たしかになんかエラーが出てたような気はしたんですよね。ただアップデート時のメッセージはだーっと速く進んで行くためちゃんとは見えていませんでした。そこでまずアップデート時のメッセージを確認しようと思いました。
とはいえまずは起動しないと話になりません。普通にただリブートするとカーネルパニックになるのですが、ブート時のオプションメニューを選ぶと、その中に'Advanced Options for Ubuntu'というのがあります。
これを選ぶと、次にいくつかのカーネルバージョンの中から選ぶ画面になります。
この中からひとつ前のカーネルを選んで起動すると、前の動いていたバージョンのカーネルを起動できます。
原因究明
aptのログってどこで見えるんだっけ?と検索したところ、/var/log/apt にあるそうです。ここをlsで見ると、{history|term}.log[.NN.gz] というファイルがたくさんあります(NNは数字)。term.*というのが、端末に表示されるメッセージのログだそうです。ls -lの日付から見て、term.log.1.gzというのがアップデートした時のだなと思い、これを見てみます。
% zcat /var/log/apt/term.log.1.gz | less
細かい話ですが、今はzcatで.gzを読めるんですね。昔は .gz は gzcat で読むんだった気がしますが。
で何か怪しそうなメッセージがないか探すと、最初のエラーはこういうもの。
make -j12 KERNELRELEASE=6.17.0-14-generic -C /lib/modules/6.17.0-14-generic/buil
d M=/var/lib/dkms/virtualbox/7.0.16/build...(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.17.0-14-generic (x86_64)
Consult /var/lib/dkms/virtualbox/7.0.16/build/make.log for more information.
dkms autoinstall on 6.17.0-14-generic/x86_64 failed for virtualbox(10)
「このファイルを見ろ」とあるので、じゃあというんでそのmake.logを見に行きます。
% less /var/lib/dkms/virtualbox/7.0.16/build/make.log
するとこんなメッセージがあります。
In file included from vboxdrv/SUPDrv.c:43:
vboxdrv/SUPDrvInternal.h:47:10: fatal error: VBox/cdefs.h: No such file or directory
なんじゃそりゃ、と思い、このメッセージをそのまま検索窓に貼り付けます。そしたらこんなのが見つかりました。
これ、どんぴしゃりです。まさにそのものでした。ありがとうClaus7さん。
対処
「VirtualBoxを消してリブートしたらうまくいった」とのことなのでやってみます。まず何を消せばいいんだっけ、から。
% dpkg -l | grep -i virtualbox
私の場合は virtualbox{,-dkms,ext-pack,-qt} の4つが入っていたので、これらを消します。
# sudo apt remove virtualbox virtualbox-dkms virtualbox-ext-pack virtualbox-qt
これをやったときのメッセージを見ていると、自動的にカーネルモジュールを作り直し、initrdも作り直したようでした。
ちなみにいろいろ調べてた中でこんな記事があったのですが、
これによるとなんか難しいおっかなそうな操作が必要なのかと一瞬ビビりましたが、今回はそんなことはなく、apt removeだけで全て済みました。ただこの記事の記述は参考になって、/boot/grub/grub.cfg を見るとたしかに最初は 6.17.0-14 に対して initrd の行がなく、/boot/initrd.img-6.17.0-14-generic のファイルもなかった。それが apt remove 後には両方治っており、これはうまくいきそうだなと思いました。
でリブートしたところ、無事起動。よかったよかった。
後処理
なお VirtualBox を削除したので普通なら再インストールが必要なところなんですが。私は最近VBox使ってないのでやっていません(以前は使ってた)。ただ上述のClaus7さんは「最新のvirtualbox 7.2.6を入れたらNo Errorだった」と書いているので、使う人は最新版を入れればうまく行くのだと思います。


