VirtualBox で RHEL9 を起動できない

  • 投稿日:
  • by

VirualBox のバージョンは現時点で最新の 6.1.36。

Rocky Linux 9 / AlmaLinux 9 を試そうと VirtualBox で仮想マシンを作成・起動すると以下のエラー(Kernel panic)が出て起動できない。

Fatal glibc error: CPU does not support x86-64-v2
[    4.845736] Kernel panic - not syncing: Attempted to kill init! exit code=0x00007f00
[    4.845755] CPU: 0 PID: 1 Comm: init Not tained 5.14.0-70.13.1.el9_0.x86_64 #1
[    4.845773] Hardware name: inotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
[    4.845792] Call Trace:
[    4.845802]  dump_stack_lvl+0x34/0x44
[    4.845816]  panic+0x102/0x2d4
[    4.845827]  do_exit.cold+0x87/0x9f
[    4.845838]  do_group_exit+0x33/0xa0
[    4.845850] __x64_sys_exit_group+0x14/0x20
[    4.845863] do_syscall_64+0x3b/0x90
[    4.845875] entry_SYSCALL_64_after_hwframe+0x44/0xae
[    4.845889] RIP: 033:0x7fdbc8e20171
[    4.845900] Code: c3 0f 1f 84 00 00 00 00 00 f3 0f 1e fa be e7 00 00 00 ba 3c 00 00 00 eb 0d 89 d0 0f 05 48 3d 00 f0 ff ff 77 1c f4 89 f0 0f 05 <48> 3d 00 f0 ff ff 76 e7 f7 d8 89 05 5f 00 01 00 eb dd 0f 1f 44 00
[    4.845940] RSP: 002b:00007ffe47a018f8 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
[    4.845958] RAX: ffffffffffffffda RBX: 00007fdbc8e1ae10 RCX: 00007fdbc8e20171
[    4.845975] RDX: 000000000000003c RSI: 00000000000000e7 RDI: 000000000000007f
[    4.845991] RBP: 00005565b0509040 R08: 0000rffe47a01469 R09: 0000000000000000
[    4.846022] R10: 00000000ffffffff R11: 0000000000000246 R12: 000000000000000d
[    4.846048] R13: 0000000000000001 R14: 0000000000000001 R15: 0000000000000001
[    4.846290] Kernel Offset: 0x2000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[    4.846317] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 ]---

見ると「CPU does not support x86-64-v2」と出ている。え、CPU が x86_64 アーキテクチャーに対応してない??しかも v2 ってなんだ...

調べてみると、どうやら x86_64 アーキテクチャーにはバージョンが存在するようだ。知らなかった...
で、RHEL9 からは x84_64x v1 を切り捨て、v2 以降のサポートになっている様子。
Rocky Linux 9 も AlmaLinux 9 も RHEL9 クローンなので同じ条件だから、x84_64 v2 以降じゃないと動かないというわけだ。

自分の CPU は結構古く、第 4 世代 Core i7(4790K)なのでちょっと心配になりネットをあさる。
バージョンごとの定義は以下のページで紹介されているのを見つけた。

x86-64-v2では、Streaming SIMD Extensions 4.2(SSE4.2)およびSupplemental Streaming SIMD Extensions 3 (SSSE3) までのベクトル命令、POPCNT命令 (データ解析や一部のデータ構造でのビット操作に有用)、CMPXCHG16B (並列アルゴリズムに有用な2ワードの比較およびスワップ命令) などがサポートされています。

以下のページでは x86_64 のバージョンと Intel CPU のコードネームでの対応状況が書かれている。

対応する機能:x86_64-v2のすべて + AVX
Sandy Bridge世代に該当します。この世代は差が小さいので、あまり使われないだろうとのこと。この世代はx86_64-v*表記ではスキップされていてLevel表記だけです。

CPU-Z で調べると Core i7-4790K は Haswell(Refresh)世代なので、v2 どころか v3 相当だ。ということは CPU は問題ないわけだ。ちょっと安心。

しかし、そうなると何が問題なのかよくわからない...
仮想マシンの設定で「システム」>>「プロセッサー」を見ると、「拡張機能」の「ネステッドVT-x/AMD-Vを有効化」が選択不能になっている。これなのか??
調べてみると「ネステッドVT-x」は「第 2 レベルのアドレス変換(SLAT)」のことらしく、Intel の公式サイトの情報だと Core i7-4790K は対応しているとある。(Intel CPU の実装名は「EPT」)

ただ、これはアーキテクチャ対応とはちょっと別っぽい。とはいえ CPU で対応しているのに選択できないのは VirtualBox の不具合だと思うが...
以下の VirtualBox のフォーラムでは、SLAT には 6.1.22 時点で対応していないとある。じゃあなんで選択肢として表示されてるんだよ...

ちなみに VirtualBox では SLAT 対応は 10 年以上放置されていたそうで、6.0/6.1 で突然サポートされ始めたとのこと。どんな事情が...w

ちょっと手詰まり感があったので、問題を切り分けるためにもいったん VirtualBox を離れ、VMWare Workstation Player 16 で Rocky Linux 9 / AlmaLinux 9 をインストールしてみることに。
結果、あっさり起動した...w
これまでの苦労はなんだったんだ...しっかりしてくれ VirtualBox...所詮無料故のクォリティなのか、VMWare がすごいのかわからんけど。