VirtualBox
fbterm
VirtualBoxGuestAdditions

VirtualBox 5.2.18のVESAが動かない

はじめに

VirtualBox 5.2.18のVESAでfbtermが動かなかったのでvboxvideoを無効にしてみました。

VirtualBoxとVirtualBoxGuestAdditionsを更新したらfbtermでエラー発生

VirtualBoxを新しくしたところ、fbtermが動かなくなってしまいました。

fbtermを動かしたとき
BUG: unable to handle kernel paging request at ffffec8343800020
IP: [<ffffffffa71b6b6a>] fb_deferred_io_fault+0x4a/0xd0
PGD 3f7e0067
PUD 3f7df067
PMD 0

Oops: 0000 [#1] SMP
Modules linked in: vboxsf(O) joydev hid_generic crct10dif_pclmul crc32_pclmul usbhid vboxvideo(O) hid
ghash_clmulni_intel evdev intel_rapl_perf snd_intel8x0 pcspkr ac serio_raw snd_ac97_codec sg ac97_bus
battery ttm drm_kms_helper vboxguest(O) drm video snd_pcm snd_timer snd soundcore button ip_tables
x_tables autofs4 ext4 crc16 jbd2 crc32c_generic fscrypto ecb mbcache sr_mod cdrom sd_mod ata_generic
ohci_pci crc32c_intel aesni_intel aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd psmouse ahci
libahci ehci_pci ohci_hcd i2c_piix4 ehci_hcd ata_piix usbcore e1000 usb_common libata scsi_mod
CPU: 0 PID: 634 Comm: fbterm Tainted: G           O    4.9.0-8-amd64 #1 Debian 4.9.110
-3+deb9u4
Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
task: ffff9aa179e9b140 task.stack: ffffb8220056c000
RIP: 0010:[<ffffffffa71b6b6a>]  [<ffffffffa71b6b6a>] fb_deferred_io_fault+0x4a/0xd0
RSP: 0000:ffffb8220056fdc8  EFLAGS: 00010286
RAX: ffffec8343800000 RBX: ffffb8220056fde8 RCX: ffffc00000000fff
RDX: ffffec8343800000 RSI: 0000000000000063 RDI: 0000000000000000
RBP: ffff9aa1766ad190 R08: 0000000000000000 R09: 00007ff67fe83000
R10: ffff9aa1766ad190 R11: 0000000000000001 R12: ffffec8343800000
R13: 0000000000000000 R14: ffff9aa1766ad190 R15: ffffb8220056fe70
FS:  00007ff682cd5740(0000) GS:ffff9aa17fc00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffec8343800020 CR3: 000000003a85a000 CR4: 0000000000040670
Stack:
 ffff9aa1766ad190 ffffb8220056fe68 0000000000000000 ffffffffa6fb4dc7
 024200ca00000055 0000000000000000 00007ff67fe83000 0000000000000000
 0000000000000000 ffff9aa1766ad190 26149015e51e46b1 ffff9aa1766ad190
Call Trace:
 [<ffffffffa6fb4dc7>] ? __do_fault+0x87/0x170
 [<ffffffffa6fb8dcd>] ? handle_mm_fault+0x58d/0x12b0
 [<ffffffffa6e61185>] ? __do_page_fault+0x255/0x4f0
 [<ffffffffa7417018>] ? page_fault+0x28/0x30
Code: b8 02 00 00 00 c3 41 54 55 48 89 fd 53 48 89 f3 48 8b b8 10 01 00 00 48 8b b0 f0 03 00 00 e8 fe
fe ff ff 48 85 c0 49 89 c4 74 52 <48> 8b 40 20 48 8d 78 ff a8 01 49 0f 44 fc f0 ff 47 1c 48 8b 07
RIP  [<ffffffffa71b6b6a>] fb_deferred_io_fault+0x4a/0xd0
 RSP <ffffb8220056fdc8>
CR2: ffffec8343800020
---[ end trace 8e50b1f11ba64ab9 ]---

やった対策

vboxvideoを動かないようにしました。
フレームバッファが遅くなるかも知れません。

vboxvideoを無効化
echo "install vboxvideo /bin/true" | sudo tee -a /etc/modprobe.d/vboxvideo.conf

他メモ (fbdevを有効にする方法と録画)

ブート時にgrubで止めて、カーネルオプションに追加してみた。
すると/dev/fb0が現れる。/dev/fb0のときは--vesa-mode=を使わない。

vesafb(grub)
video=vesafb:mtrr:3,y vga=0x311

録画もできる。vesaだと、未だ分からない。

録画(/dev/fb0)
ffmpeg -y -f fbdev -i /dev/fb0 -framerate 2 /tmp/out.gif