qemuにAlma Linuxを入れたい会(未遂)
今まで "安定した" LinuxディストリビューションとしてUbuntuを使ってきたけど、世間的な標準はRed HatだしRHEL互換ディストリビューションにするかということでAlma Linuxに乗り換えたい。
(あと永年おせわになったVirtualBoxからもそろそろ乗り換えたい。)
prev
結局qemu自体はコンテナ化できなかったが、ここでビルドしたqemuを活用する。
そもそもインストーラーが起動しない
... マジで。。?
Alpine Linuxは当然の権利のようにちゃんと起動する:
/c/qemu/qemu-system-x86_64.exe -accel whpx,kernel-irqchip=off \
-vnc 127.0.0.1:5500,reverse -machine q35 -smp cpus=6 \
-k ja -cdrom f:/diskimages/alpine-virt-3.20.0-x86_64.iso -netdev user,id=emul
(WHPXを切ってもブートローダーから先に進まない。)
スクリーンショット取れないけどキーボードのLEDが光って怖いんだよなぁ。。つまりカーネルパニックが発生している。
まず、 qemu のメモリ指定を忘れていた。 -m 8192
くらいかな。次、 qemu側に -serial mon:stdio
して カーネルの起動パラメタ(起動メニューで tab して入力) は quiet
を削除、 console=ttyS0 earlyprintk=ttyS0
でシリアルコンソールにカーネルの起動ログを出す:
[ 5.041677] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[ 5.065475] x86/mm: Checking user space page tables
[ 5.108764] x86/mm: Checked W+X mappings: passed, no W+X pages found.
Fatal glibc error: CPU does not support x86-64-v2[ 5.120412] Run /init as init process
[ 5.128442] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
[ 5.128445] CPU: 0 PID: 1 Comm: init Not tainted 5.14.0-427.16.1.el9_4.x86_64 #1
[ 5.141247] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.3-0-ga6ed6b701f0a-p
rebuilt.qemu.org 04/01/2014
[ 5.150282] Call Trace:
[ 5.152753] <TASK>
[ 5.154334] dump_stack_lvl+0x34/0x48
[ 5.157579] panic+0x107/0x2f7
[ 5.159965] do_exit.cold+0x15/0x15
[ 5.163351] ? exit_to_user_mode_prepare+0xec/0x100
[ 5.166744] do_group_exit+0x2d/0x90
[ 5.170289] __x64_sys_exit_group+0x14/0x20
[ 5.175187] do_syscall_64+0x5c/0x90
[ 5.178606] ? do_user_addr_fault+0x1d6/0x6a0
[ 5.182223] ? exc_page_fault+0x62/0x150
[ 5.186314] entry_SYSCALL_64_after_hwframe+0x72/0xdc
[ 5.190652] RIP: 0033:0x7fbdf31216e5
[ 5.193858] Code: ba 01 00 00 00 b8 ca 00 00 00 0f 05 c3 0f 1f 84 00 00 00 00 00 f3 0f 1e fa ba e
7 00 00 00 eb 06 0f 1f 44 00 00 f4 89 d0 0f 05 <48> 3d 00 f0 ff ff 76 f3 f7 d8 89 05 eb fa 00 00 eb
e9 66 0f 1f 84
[ 5.212561] RSP: 002b:00007fff7eb4c448 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
[ 5.218380] RAX: ffffffffffffffda RBX: 00007fbdf311c310 RCX: 00007fbdf31216e5
[ 5.224492] RDX: 00000000000000e7 RSI: 00007fff7eb4c010 RDI: 000000000000007f
[ 5.230194] RBP: 00007fff7eb4c5d0 R08: 00007fff7eb4bfb9 R09: 0000000000000000
[ 5.239268] R10: 00000000ffffffff R11: 0000000000000246 R12: 00007fbdf30fa000
[ 5.247817] R13: 0000002300000007 R14: 0000000000000007 R15: 00007fff7eb4c5e0
[ 5.256122] </TASK>
[ 5.258043] Kernel Offset: 0x13e00000 from 0xffffffff81000000 (relocation range: 0xffffffff800000
00-0xffffffffbfffffff)
[ 5.265420] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 ]---
Fatal glibc error: CPU does not support x86-64-v2
か。とりあえず -cpu Westmere
を追加してみると aesni_gcm_init_avx_gen2+0x37/0xab
でkernel panicした。これはWHPXを無効にすると解消したので、CPUの世代を偽装するのが上手くいってない可能性が高いな。
ホストのCPUに近い選択、例えば -cpu Broadwell-noTSX
をすると、ユーザーランド直前でハングしてしまう。たぶんWHPXなqemuはそこまで熱心にデバッグされていないんだろうな。。