VMware Workstation 12 on Fedora 23のパッチを書いた

2016-06-16 4.5.6-200.fc23.x86_64 + vmware workstaion 12.1.1 works as well!

のりと勢いで自宅サーバをFedora23にあげたら、VMware Workstationが動かなくなったので、その対応

環境

$ uname -r
4.2.5-300.fc23.x86_64
$ vmware-installer -l
Product Name         Product Version
==================== ====================
vmware-workstation   12.0.1.3160714

原因究明

$ systemctl status vmware.service
● vmware.service - SYSV: This service starts and stops VMware services
   Loaded: loaded (/etc/rc.d/init.d/vmware)
   Active: failed (Result: exit-code) since 月 2015-11-09 13:36:54 JST; 11min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 7954 ExecStart=/etc/rc.d/init.d/vmware start (code=exited, status=1/FAILURE)
   CGroup: /system.slice/vmware.service
           ├─ 1108 /usr/sbin/vmware-authdlauncher
           ├─28782 /usr/bin/vmnet-bridge -s 6 -d /var/run/vmnet-bridge-0.pid -n 0
           ├─28790 /usr/bin/vmnet-netifup -s 6 -d /var/run/vmnet-netifup-vmnet1.pid /dev/vmnet1 vmnet1
           ├─28798 /usr/bin/vmnet-dhcpd -s 6 -cf /etc/vmware/vmnet1/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet1/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet1.pid vmnet1
           ├─28801 /usr/bin/vmnet-natd -s 6 -m /etc/vmware/vmnet8/nat.mac -c /etc/vmware/vmnet8/nat/nat.conf
           ├─28804 /usr/bin/vmnet-netifup -s 6 -d /var/run/vmnet-netifup-vmnet8.pid /dev/vmnet8 vmnet8
           └─28811 /usr/bin/vmnet-dhcpd -s 6 -cf /etc/vmware/vmnet8/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet8/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet8.pid vmnet8

11月 09 13:36:53 localhost vmware[7954]: Virtual machine monitor[  OK  ]
11月 09 13:36:53 localhost vmware[7954]: Virtual machine communication interface[  OK  ]
11月 09 13:36:53 localhost vmware[7954]: VM communication interface socket family[  OK  ]
11月 09 13:36:53 localhost vmware[7954]: Blocking file system[失敗]
11月 09 13:36:54 localhost vmware[7954]: Virtual ethernet[  OK  ]
11月 09 13:36:54 localhost vmware[7954]: VMware Authentication Daemon[  OK  ]
11月 09 13:36:54 localhost systemd[1]: vmware.service: Control process exited, code=exited status=1
11月 09 13:36:54 localhost systemd[1]: Failed to start SYSV: This service starts and stops VMware services.
11月 09 13:36:54 localhost systemd[1]: vmware.service: Unit entered failed state.
11月 09 13:36:54 localhost systemd[1]: vmware.service: Failed with result 'exit-code'.

$ vmware-modconfig --console --build-mod vmblock
make: Entering directory '/tmp/modconfig-ePdeal/vmblock-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.2.5-300.fc23.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernels/4.2.5-300.fc23.x86_64'
  CC [M]  /tmp/modconfig-ePdeal/vmblock-only/linux/filesystem.o
  CC [M]  /tmp/modconfig-ePdeal/vmblock-only/linux/stubs.o
  CC [M]  /tmp/modconfig-ePdeal/vmblock-only/linux/file.o
  CC [M]  /tmp/modconfig-ePdeal/vmblock-only/linux/block.o
/tmp/modconfig-ePdeal/vmblock-only/linux/filesystem.c: In function ‘Iget’:
/tmp/modconfig-ePdeal/vmblock-only/linux/filesystem.c:325:21: error: storage size of ‘actualNd’ isn’t known
    struct nameidata actualNd;
                     ^
/tmp/modconfig-ePdeal/vmblock-only/linux/filesystem.c:325:21: warning: unused variable ‘actualNd’ [-Wunused-variable]
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-ePdeal/vmblock-only/linux/filesystem.o' failed
make[2]: *** [/tmp/modconfig-ePdeal/vmblock-only/linux/filesystem.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/tmp/modconfig-ePdeal/vmblock-only/linux/file.c: In function ‘FileOpOpen’:
/tmp/modconfig-ePdeal/vmblock-only/linux/file.c:135:18: error: ‘struct file’ has no member named ‘f_dentry’
    if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) {
                  ^
/tmp/modconfig-ePdeal/vmblock-only/linux/file.c:135:51: error: ‘struct file’ has no member named ‘f_dentry’
    if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) {
                                                   ^
/tmp/modconfig-ePdeal/vmblock-only/linux/file.c: In function ‘FileOpReaddir’:
/tmp/modconfig-ePdeal/vmblock-only/linux/file.c:191:10: error: implicit declaration of function ‘vfs_readdir’ [-Werror=implicit-function-declaration]
    ret = vfs_readdir(actualFile, Filldir, &info);
          ^
/tmp/modconfig-ePdeal/vmblock-only/linux/file.c: At top level:
/tmp/modconfig-ePdeal/vmblock-only/linux/file.c:240:4: error: unknown field ‘readdir’ specified in initializer
    .readdir = FileOpReaddir,
    ^
/tmp/modconfig-ePdeal/vmblock-only/linux/file.c:240:15: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
    .readdir = FileOpReaddir,
               ^
/tmp/modconfig-ePdeal/vmblock-only/linux/file.c:240:15: note: (near initialization for ‘RootFileOps.owner’)
cc1: some warnings being treated as errors
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-ePdeal/vmblock-only/linux/file.o' failed
make[2]: *** [/tmp/modconfig-ePdeal/vmblock-only/linux/file.o] Error 1
Makefile:1390: recipe for target '_module_/tmp/modconfig-ePdeal/vmblock-only' failed
make[1]: *** [_module_/tmp/modconfig-ePdeal/vmblock-only] Error 2
make[1]: Leaving directory '/usr/src/kernels/4.2.5-300.fc23.x86_64'
Makefile:120: recipe for target 'vmblock.ko' failed
make: *** [vmblock.ko] Error 2
make: Leaving directory '/tmp/modconfig-ePdeal/vmblock-only'

なんか、vmblockのビルドがうまくいかないようだ。

対策

gentooな人たちがいろいろパッチ作ってるみたいだったので、関係ありそうなパッチを細かく当ててってビルド通るようにした

See the gist on github.
* 作ったパッチ

See the gist on github.

2015-04-17 追記

  • kernel 4.4.6で作ったパッチがうまく動かなかったので再度作成

See the gist on github.

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください