VMware Player (14.1.1) segfaults для встроенного ядра и встроенных модулей ядра VMware

Как часть моих экспериментов и исследований LLVM из Clang / LLVM с разными версиями ядра, я попытался установить VMware Player 14.1.1 (x86_64) на Ubuntu 17.10 x86_64 с встроенными модулями ядра VMware (vmmon и vmnet) на ядре ядра chang 4.16 (последняя стабильная на данный момент).

Проблема

Когда я установил VMware Player 14.1.1 с помощью VMware-Player-14.1.1-7528167.x86_64.bundle. Установщик GUI показал, что «Установка прошла успешно ...». Но когда я попытался запустить vmplayer из командной строки, это привело к segfault / crash:

Segmentation fault (core dumped) "$BINDIR"/vmware-modconfig --appname="VMware Player" --icon="vmware-player"

Неясно, что на самом деле пошло не так - было ли это внутренним молчащим сбоем установщика, остались незаметными или не были успешно созданы / установлены / загружены модули ядра, или это была некоторая проблема совместимости с VMware Player с основным ядром ядра, а не с gcc-встроенным ядром.

Итак, я вручную построил vmmon и vmnet из /usr/lib/vmware/modules/source/(vmmon|vmnet).tar, используя сам компилятор clang / LLVM, так как хост Linux kernel 4.16.0 также был построен. После успешного создания, установки и загрузки их и проверки их правильной загрузки (lsmod и т. Д.) Я повторно запустил команду vmplayer - она ​​снова потерпела неудачу с тем же самым segfault, как показано выше.

$ cat /proc/version Linux version 4.16.0 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #4 SMP Thu Apr 5 02:12:22 PDT 2018 $ lsmod | grep "vmnet\|vmmon" vmnet 53248 13 vmmon 90112 0 $ vmplayer --version . . VMware Player 14.1.1 build-7528167 $ vmplayer + /usr/bin/vmware-modconfig '--appname=VMware Player' --icon=vmware-player /usr/bin/vmplayer: line 109: 1467 Segmentation fault (core dumped) "$BINDIR"/vmware-modconfig --appname="VMware Player" --icon="vmware-player" + exit 1

Для моего предыдущего отчета об успешном создании ядра clang-built для Ubuntu 17.10 x86_64 вместе со встроенным драйвером Nvidia (v390.25, v390.42 и т. д.) см .: Как создать 4.15.7 ядро с LLVM / clang и драйвер Nvidia 390.25 x86_64 на Ubuntu 17.10 x86_64?

0
задан 11 April 2018 в 11:15

2 ответа

этап 1 : я попытался с помощью [F9] и invidually с VMware-config или vmplayer бинарных взглянуть на не точка в их код. Бег gdb на на [F11] и [F12 в] бесполезно, так как они просто скрипт и запустить непосредственно на их двоичные аналоги: [от f13] и gdb /usr/lib/vmware/bin/vmplayer, не привели ни обработка выхода онлайн / оффлайн/аварии либо.

так, я должен ссылаться на сессии gdb в составе /usr/bin/vmware-config сам хотя она запускает /usr/lib/vmware/bin/vmware-modconfig --appname="VMware Player" --icon="vmware-player" в себя. Что работал, и я увидел [f17 в] в libvmware-modconfig.so пытался получить текущую информацию о версии ядра и при этом или извлечение информации о версии после его, это segfaulted.

$ vmplayer GNU gdb (Ubuntu 8.0.1-0ubuntu1) 8.0.1 Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /usr/lib/vmware/bin/vmware-modconfig...(no debugging symbols found)...done. (gdb) r Starting program: /usr/lib/vmware/bin/vmware-modconfig --launcher=/usr/bin/vmware-modconfig --appname=VMware Player --icon=vmware-player [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". process 24600 is executing new program: /usr/lib/vmware/bin/appLoader [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7fffe4b15700 (LWP 24633)] [New Thread 0x7fffdffff700 (LWP 24634)] Thread 1 "vmware-modconfi" received signal SIGSEGV, Segmentation fault. 0x00007ffff73312e8 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 (gdb) bt #0 0x00007ffff73312e8 in () at /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007ffff674d72b in ModConf_NewKernelInfo () at /usr/lib/vmware/lib/libvmware-modconfig.so/libvmware-modconfig.so #2 0x00007ffff6749540 in main () at /usr/lib/vmware/lib/libvmware-modconfig.so/libvmware-modconfig.so #3 0x000055555556db6b in () #4 0x0000555555569fd7 in main ()

этап 1 : я использовал [зг19] на [20 фунтов], чтобы получить дальше в направлении ядра версии поиск/парсинг, который в результате аварии. Оказалось, что выше аварии, скорее всего, связанные с анализом содержания [клавиши f21].

$ strace /usr/bin/vmware-modconfig --appname="VMware Player" --icon="vmware-player" 2>&1 | tail write(10, "2018-04-07T00:16:17.901-07:00| v"..., 89) = 89 openat(AT_FDCWD, "/proc/version", O_RDONLY) = 11 fstat(11, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 fcntl(11, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE) fstat(11, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 read(11, "Linux version 4.16.0 (exp@exp) (clan"..., 4096) = 111 read(11, "", 3072) = 0 close(11) = 0 --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} --- +++ killed by SIGSEGV (core dumped) +++ $ cat /tmp/vmware-g/vmware-17594.log 2018-04-07T00:16:17.768-07:00| vthread-1| I125: Log for VMware Workstation pid=17594 version=14.1.1 build=build-7528167 option=Release 2018-04-07T00:16:17.768-07:00| vthread-1| I125: The process is 64-bit. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: Host codepage=UTF-8 encoding=UTF-8 2018-04-07T00:16:17.768-07:00| vthread-1| I125: Host is Linux 4.16.0 Ubuntu 17.10 2018-04-07T00:16:17.768-07:00| vthread-1| I125: DictionaryLoad: Cannot open file "/usr/lib/vmware/settings": No such file or directory. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: [msg.dictionary.load.openFailed] Cannot open file "/usr/lib/vmware/settings": No such file or directory. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: PREF Optional preferences file not found at /usr/lib/vmware/settings. Using default values. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: DictionaryLoad: Cannot open file "/home/g/.vmware/config": No such file or directory. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: [msg.dictionary.load.openFailed] Cannot open file "/home/g/.vmware/config": No such file or directory. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: PREF Optional preferences file not found at /home/g/.vmware/config. Using default values. 2018-04-07T00:16:17.813-07:00| vthread-1| W115: Logging to /tmp/vmware-g/vmware-17594.log 2018-04-07T00:16:17.901-07:00| vthread-1| I125: Obtaining info using the running kernel.

этап 3: После того, глядя на [f22 и ф23] конкретную информацию из вышеуказанных этапов, я думал запуска обычно vmware-modconfig --console --install-all, чтобы исправить резервного модулей ядра проблема, так как я не имею исходный код [f25 привод датчика] для отладки в дальнейшем для нахождения что с ядром версии(/proc/version и т. д.) определение и метод анализа в рамках ModConf_NewKernelInfo() от libvmware-modconfig.so. Он также segfaulted, как я ожидал, так как он включает в себя те же vmware-modconfig*.

$ sudo vmware-modconfig --console --install-all [AppLoader] GLib does not have GSettings support. Segmentation fault

этап 3: переход на один шаг дальше, я потратил времени на выход [f30 с] - одна вещь, что я обратила внимание-информация компилятора компилятора, используемые для построения ядра. Это был наезд-на-ногт-на-свою-голову момент! Я понял, что VMware плеер настройка/скрипты, вероятно, предполагает, главным ядра Linux построен с использованием некоторых gcc-* версия компилятора и ожидает выход [f32 из] у некоторых gcc ... и если он не находит, что (в данном случае, это clang... как это компилятор, использованный для создания ядра хоста), это, кажется, не сообщайте о любых ошибках/предупреждения и просто падений - наверное, из-за NULL(от [f36 в] поиск на выходе [fунции f37] для gcc...) разыменования.

ниже то, что, кажется, происходит в пределах vmware-modconfig и/или внутренних программ/скриптов:

## My visualization of crash(SIGSEGV) case when compiler used to build kernel is clang-*/LLVM : ## ## == Likely a dereferencing of NULL similar to the below case == const char *gcc_ver = strstr("Linux version 4.16.0 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #4 SMP Thu Apr 5 02:12:22 PDT 2018", "gcc..."); if (strcmp(gcc_ver, "gcc...") == 0) { // Here, there's no check on gcc_ver to be // non-NULL - since it's likely that the compiler used to build the kernel // is *assumed* to be always some gcc and so on. Probably, it's not designed to work // work with clang/LLVM if the compiler used to build kernel is clang/LLVM. . . . . } ## ## My visualization of working case when compiler used to build kernel is gcc-* : ## const char *gcc_ver = strstr("Linux version 4.16.0 (exp@exp) (gcc version 7.3.0 (Ubuntu 7.3.0-8ubuntu3)) #4 SMP Thu Apr 5 02:12:22 PDT 2018", "gcc..."); if (strcmp(gcc_ver, "gcc...") == 0) { // Works as always . . . . }

этап 6 : ради Расширенная конфигурация скрипта проверить, изменен linux-4.16/fs/proc/version.c в докладе GCC 7.3.0 на *need* основы, так как Линукс компилятор, использованный для создания текущей версии ядра(4.16) вместо [пулемет f44] компилятор используется в строительстве в текущем ядре(4.16). На это ушло мимо [f45 с] вызов мимо точки, где она будет обработка выхода онлайн / оффлайн, в противном случае, поскольку информация компилятора /proc/version и быть gcc-specific но лязг-конкретные! Это подтвердило, что мое понимание и толкование VMware проигрыватель конфиг/скрипт, который не способен правильно перевести лязг-компилятор информацию в /proc/version в реальных лязг/инфраструктура llvm компилятор, используемый для сборки базового узла ядра и, следовательно, неожиданных SIGSEGV/обработка выхода онлайн / оффлайн.

$ eclang /lib/modules/4.16.0/build/vmlinux | head -1 ++ strings -a /lib/modules/4.16.0/build/vmlinux ++ grep 'clang version' Linux version 4.16.0 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #4 SMP Thu Apr 5 02:12:22 PDT 2018 $ egcc /lib/modules/4.16.0/build/vmlinux ++ strings -a /lib/modules/4.16.0/build/vmlinux ++ grep 'GCC: (' ### ### [procfs] - version logic updated. ### $ cat /proc/version Linux version 4.16.0 (exp@exp) (gcc version 7.3.0 (Ubuntu 7.3.0-8ubuntu3)) #4 SMP Thu Apr 5 02:12:22 PDT 2018 $ strace /usr/bin/vmware-modconfig --appname="VMware Player" --icon="vmware-player" 2>&1 | grep -A 40 -B 1 "/proc/version" write(10, "2018-04-07T00:37:09.944-07:00| v"..., 89) = 89 openat(AT_FDCWD, "/proc/version", O_RDONLY) = 11 fstat(11, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 fcntl(11, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE) fstat(11, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 read(11, "Linux version 4.16.0 (exp@exp) (gcc "..., 4096) = 106 read(11, "", 3072) = 0 close(11) = 0 write(10, "2018-04-07T00:37:09.944-07:00| v"..., 71) = 71 access("/sbin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/CodeSourcery/Sourcery_G++_Lite/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/.local/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/local/sbin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/local/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/sbin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/sbin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/games/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/local/games/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/snap/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/lib/jvm/java-8-oracle/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/lib/jvm/java-8-oracle/db/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/lib/jvm/java-8-oracle/jre/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/sbin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/CodeSourcery/Sourcery_G++_Lite/bin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/bin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/.local/bin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/usr/local/sbin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/usr/local/bin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/usr/sbin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/usr/bin/gcc-7", X_OK) = 0 getuid() = 1000 stat("/usr/bin/gcc-7", {st_mode=S_IFREG|0755, st_size=287, ...}) = 0 access("/usr/bin/gcc-7", X_OK) = 0 getuid() = 1000 write(10, "2018-04-07T00:37:09.944-07:00| v"..., 119) = 119

этап 6 :, связанные с вышеуказанным обновлением для /proc/version(fs/proc/version.c), чтобы показать ССЗ-* на *need* основы, vmplayer не обработка выхода онлайн / оффлайн/аварии - но, с помощью gcc(7.3.0) для построения решения VMware модулей ядра([f55, которая] и vmmon), который был of course "expected", как это было в /proc/version - я не хотел этого - я хотел clang/LLVM можно использовать для построения ядра VMware модули, например, я сделал то же самое для других модулей ядра (драйверов NVIDIA, VirtualBox и т. д.), которые работают без каких-либо проблем. Проще говоря, я хочу, чтобы оба базовых ядро и все модули должны быть построены в clang/llvm и не [от f60].

я заметил, что скрипт конфигурации VMware выполняет проверку препроцессора с установленным компилятором (gcc-7.3.0 в данном случае) и эта команда выглядит так:

/usr/bin/gcc-7 -E -I/lib/modules/4.16.0/build/include - ....

после этого заполнить и удается, он переходит на проверить, если это необходимо для создания VMware kernel modules - vmnet и [64-го фокуса].

этап 7: вручную VMware и модули ядра(из источника : [f65 В] И vmnet.tar) может быть построен с помощью clang/llvm и я их строил(с все необходимые патчи для hostif.c ([f68 Не]) и bridge.c ([р70]), установить и использовать его без каких-либо проблем, вызывая /usr/lib/vmware/bin/vmplayer напрямую. Но, при вызове в VMware Player на просто vmplayer или нажав на VMware плеер иконку из меню приложения/список, vmware-modconfig выполняет проверку на компилятор и его версия, используемой для построения текущего ядра и затем проверяет, что VMware ядра модули построены и загружены, перед запуском ваще vmplayer. И не компилятор проверить, что [f75 в Джей] не, не похоже на работу, если компилятор(как показано на /proc/version) - это [f77 на английском языке] вместо gcc, как показано выше.

$ ~/vmware_modules_compiler.sh ++ eclang /lib/modules/4.16.0/misc/vmmon.ko ++ head -1 +++ strings -a /lib/modules/4.16.0/misc/vmmon.ko +++ grep 'clang version' clang version 5.0.0-3 (tags/RELEASE_500/final) ++ eclang /lib/modules/4.16.0/misc/vmnet.ko ++ head -1 +++ strings -a /lib/modules/4.16.0/misc/vmnet.ko +++ grep 'clang version' clang version 5.0.0-3 (tags/RELEASE_500/final) $ ~/vmware_modules_metadata.sh ++ strings -a /lib/modules/4.16.0/misc/vmnet.ko ++ grep VMware author=VMware, Inc. description=VMware Virtual Networking Driver. ++ strings -a /lib/modules/4.16.0/misc/vmmon.ko ++ grep VMware author=VMware, Inc. description=VMware Virtual Machine Monitor. $ lsmod | grep "vmnet\|vmmon" vmnet 53248 13 vmmon 90112 0

этап 7: с таким пониманием, как VMware конфиг/скрипт выполняет начальную preprocessor check с компилятором определяется gcc-7(.3.0) и как последующие вызовы произойдет для строительства VMware модули ядра, я работал на компилятор вызов логике для обоих случаев vmware-modconfig скрипт/программу :

во-первых, чтобы выполнить "preprocessor check" с фактическим ССЗ (7.3.0) сам компилятор. Второй и все последующий вызов компилятора с clang/llvm с вместо 7.3.0 ССЗ - у ядра VMware модули должны быть построены с clang/llvm с себя как соответствующего основного ядра.

этап 9: С что мне удалось полностью автоматизировать весь VMware проигрыватель установку, первый вызов, настройка и общую настройку с помощью clang-причине (через установщик сам) VMware на ядре модулей на базовых узлов лязг-встроенный Линукс 4.16.0 ядра.

## Compact log of VMware kernel modules built using clang/LLVM instead of gcc, automatically by vmware-* config/scripts ## ## NOTE : Needed to run "vmplayer" as root(sudo) for (only) the first time for building kernel modules and install them. ## Normal user mode didn't go beyond the start of "VMware kernel modules build..." step. $ sudo vmplayer Stopping VMware services: VMware Authentication Daemon done VM communication interface socket family done Virtual machine communication interface done Virtual machine monitor done Blocking file system done make: Entering directory '/tmp/modconfig-sImz9k/vmmon-only' Using kernel build system. /usr/bin/make -C /lib/modules/4.16.0/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= modules make[1]: Entering directory '/media/exp/ext/linux-4.16' + /usr/bin/clang -print-file-name=include CC [M] /tmp/modconfig-sImz9k/vmmon-only/linux/driverLog.o . . ++ /usr/bin/clang -Wp,-MD,/tmp/modconfig-sImz9k/vmmon-only/linux/.hostif.o.d -nostdinc -isystem /usr/lib/llvm-5.0/lib/clang/5.0.0/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -DCONFIG_CC_STACKPROTECTOR -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -mno-80387 -mstack-alignment=8 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -O2 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-const-variable -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-merge-all-constants -fno-stack-check -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Wall -Wstrict-prototypes -DVMW_USING_KBUILD -DVMMON -DVMCORE -I/tmp/modconfig-sImz9k/vmmon-only/./include -I/tmp/modconfig-sImz9k/vmmon-only/./common -I/tmp/modconfig-sImz9k/vmmon-only/./linux -I/tmp/modconfig-sImz9k/vmmon-only/./vmcore -DMODULE '-DKBUILD_BASENAME="hostif"' '-DKBUILD_MODNAME="vmmon"' -c -o /tmp/modconfig-sImz9k/vmmon-only/linux/.tmp_hostif.o /tmp/modconfig-sImz9k/vmmon-only/linux/hostif.c . . . . . . LD [M] /tmp/modconfig-sImz9k/vmmon-only/vmmon.ko make[1]: Leaving directory '/media/exp/ext/linux-4.16' /usr/bin/make -C $PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= postbuild make[1]: Entering directory '/tmp/modconfig-sImz9k/vmmon-only' make[1]: 'postbuild' is up to date. make[1]: Leaving directory '/tmp/modconfig-sImz9k/vmmon-only' cp -f vmmon.ko ./../vmmon.o make: Leaving directory '/tmp/modconfig-sImz9k/vmmon-only' make: Entering directory '/tmp/modconfig-sImz9k/vmnet-only' Using kernel build system. /usr/bin/make -C /lib/modules/4.16.0/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= modules make[1]: Entering directory '/media/exp/ext/linux-4.16' + /usr/bin/clang -print-file-name=include CC [M] /tmp/modconfig-sImz9k/vmnet-only/driver.o . . . ++ /usr/bin/clang -Wp,-MD,/tmp/modconfig-sImz9k/vmnet-only/.bridge.o.d -nostdinc -isystem /usr/lib/llvm-5.0/lib/clang/5.0.0/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -DCONFIG_CC_STACKPROTECTOR -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -mno-80387 -mstack-alignment=8 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -O2 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-const-variable -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-merge-all-constants -fno-stack-check -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Wall -Wstrict-prototypes -DVMW_USING_KBUILD -I/tmp/modconfig-sImz9k/vmnet-only/. -DVMW_NETIF_TRANS_UPDATE -DMODULE '-DKBUILD_BASENAME="bridge"' '-DKBUILD_MODNAME="vmnet"' -c -o /tmp/modconfig-sImz9k/vmnet-only/.tmp_bridge.o /tmp/modconfig-sImz9k/vmnet-only/bridge.c . . . . . . LD [M] /tmp/modconfig-sImz9k/vmnet-only/vmnet.ko make[1]: Leaving directory '/media/exp/ext/linux-4.16' /usr/bin/make -C $PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= postbuild make[1]: Entering directory '/tmp/modconfig-sImz9k/vmnet-only' make[1]: 'postbuild' is up to date. make[1]: Leaving directory '/tmp/modconfig-sImz9k/vmnet-only' cp -f vmnet.ko ./../vmnet.o make: Leaving directory '/tmp/modconfig-sImz9k/vmnet-only' Starting VMware services: Virtual machine monitor done Virtual machine communication interface done VM communication interface socket family done Blocking file system done Virtual ethernet done VMware Authentication Daemon done Shared Memory Available done . . $ ls -lrt /lib/modules/4.16.0/misc/vm*.ko -rw-r--r-- 1 root root 2597952 Apr 7 01:55 /lib/modules/4.16.0/misc/vmmon.ko -rw-r--r-- 1 root root 2614432 Apr 7 01:55 /lib/modules/4.16.0/misc/vmnet.ko $ ~/vmware_modules_compiler.sh ++ eclang /lib/modules/4.16.0/misc/vmmon.ko ++ head -1 +++ strings -a /lib/modules/4.16.0/misc/vmmon.ko +++ grep 'clang version' clang version 5.0.0-3 (tags/RELEASE_500/final) ++ eclang /lib/modules/4.16.0/misc/vmnet.ko ++ head -1 +++ strings -a /lib/modules/4.16.0/misc/vmnet.ko +++ grep 'clang version' clang version 5.0.0-3 (tags/RELEASE_500/final) $ ~/vmware_modules_metadata.sh ++ strings -a /lib/modules/4.16.0/misc/vmnet.ko ++ grep VMware author=VMware, Inc. description=VMware Virtual Networking Driver. ++ strings -a /lib/modules/4.16.0/misc/vmmon.ko ++ grep VMware author=VMware, Inc. description=VMware Virtual Machine Monitor. ## ## Subsequent invocation of "vmplayer" as usual(without any root/sudo usage). ## $ vmplayer + /usr/bin/vmware-modconfig '--appname=VMware Player' --icon=vmware-player + vmware_module_exists vmmon + modalias=vmmon + /sbin/modprobe -n vmmon + set +x $ vmplayer --version . . VMware Player 14.1.1 build-7528167 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 17.10 Release: 17.10 Codename: artful

этап 9:

VMware проигрыватель гостевой ОС Ubuntu x86_64 с 17.10 - успешно работает в при установки VMware плеер:

-1
ответ дан 17 July 2018 в 17:18

этап 1 : я попытался с помощью [F9] и invidually с VMware-config или vmplayer бинарных взглянуть на не точка в их код. Бег gdb на на [F11] и [F12 в] бесполезно, так как они просто скрипт и запустить непосредственно на их двоичные аналоги: [от f13] и gdb /usr/lib/vmware/bin/vmplayer, не привели ни обработка выхода онлайн / оффлайн/аварии либо.

так, я должен ссылаться на сессии gdb в составе /usr/bin/vmware-config сам хотя она запускает /usr/lib/vmware/bin/vmware-modconfig --appname="VMware Player" --icon="vmware-player" в себя. Что работал, и я увидел [f17 в] в libvmware-modconfig.so пытался получить текущую информацию о версии ядра и при этом или извлечение информации о версии после его, это segfaulted.

$ vmplayer GNU gdb (Ubuntu 8.0.1-0ubuntu1) 8.0.1 Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /usr/lib/vmware/bin/vmware-modconfig...(no debugging symbols found)...done. (gdb) r Starting program: /usr/lib/vmware/bin/vmware-modconfig --launcher=/usr/bin/vmware-modconfig --appname=VMware Player --icon=vmware-player [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". process 24600 is executing new program: /usr/lib/vmware/bin/appLoader [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7fffe4b15700 (LWP 24633)] [New Thread 0x7fffdffff700 (LWP 24634)] Thread 1 "vmware-modconfi" received signal SIGSEGV, Segmentation fault. 0x00007ffff73312e8 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 (gdb) bt #0 0x00007ffff73312e8 in () at /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007ffff674d72b in ModConf_NewKernelInfo () at /usr/lib/vmware/lib/libvmware-modconfig.so/libvmware-modconfig.so #2 0x00007ffff6749540 in main () at /usr/lib/vmware/lib/libvmware-modconfig.so/libvmware-modconfig.so #3 0x000055555556db6b in () #4 0x0000555555569fd7 in main ()

этап 1 : я использовал [зг19] на [20 фунтов], чтобы получить дальше в направлении ядра версии поиск/парсинг, который в результате аварии. Оказалось, что выше аварии, скорее всего, связанные с анализом содержания [клавиши f21].

$ strace /usr/bin/vmware-modconfig --appname="VMware Player" --icon="vmware-player" 2>&1 | tail write(10, "2018-04-07T00:16:17.901-07:00| v"..., 89) = 89 openat(AT_FDCWD, "/proc/version", O_RDONLY) = 11 fstat(11, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 fcntl(11, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE) fstat(11, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 read(11, "Linux version 4.16.0 (exp@exp) (clan"..., 4096) = 111 read(11, "", 3072) = 0 close(11) = 0 --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} --- +++ killed by SIGSEGV (core dumped) +++ $ cat /tmp/vmware-g/vmware-17594.log 2018-04-07T00:16:17.768-07:00| vthread-1| I125: Log for VMware Workstation pid=17594 version=14.1.1 build=build-7528167 option=Release 2018-04-07T00:16:17.768-07:00| vthread-1| I125: The process is 64-bit. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: Host codepage=UTF-8 encoding=UTF-8 2018-04-07T00:16:17.768-07:00| vthread-1| I125: Host is Linux 4.16.0 Ubuntu 17.10 2018-04-07T00:16:17.768-07:00| vthread-1| I125: DictionaryLoad: Cannot open file "/usr/lib/vmware/settings": No such file or directory. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: [msg.dictionary.load.openFailed] Cannot open file "/usr/lib/vmware/settings": No such file or directory. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: PREF Optional preferences file not found at /usr/lib/vmware/settings. Using default values. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: DictionaryLoad: Cannot open file "/home/g/.vmware/config": No such file or directory. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: [msg.dictionary.load.openFailed] Cannot open file "/home/g/.vmware/config": No such file or directory. 2018-04-07T00:16:17.768-07:00| vthread-1| I125: PREF Optional preferences file not found at /home/g/.vmware/config. Using default values. 2018-04-07T00:16:17.813-07:00| vthread-1| W115: Logging to /tmp/vmware-g/vmware-17594.log 2018-04-07T00:16:17.901-07:00| vthread-1| I125: Obtaining info using the running kernel.

этап 3: После того, глядя на [f22 и ф23] конкретную информацию из вышеуказанных этапов, я думал запуска обычно vmware-modconfig --console --install-all, чтобы исправить резервного модулей ядра проблема, так как я не имею исходный код [f25 привод датчика] для отладки в дальнейшем для нахождения что с ядром версии(/proc/version и т. д.) определение и метод анализа в рамках ModConf_NewKernelInfo() от libvmware-modconfig.so. Он также segfaulted, как я ожидал, так как он включает в себя те же vmware-modconfig*.

$ sudo vmware-modconfig --console --install-all [AppLoader] GLib does not have GSettings support. Segmentation fault

этап 3: переход на один шаг дальше, я потратил времени на выход [f30 с] - одна вещь, что я обратила внимание-информация компилятора компилятора, используемые для построения ядра. Это был наезд-на-ногт-на-свою-голову момент! Я понял, что VMware плеер настройка/скрипты, вероятно, предполагает, главным ядра Linux построен с использованием некоторых gcc-* версия компилятора и ожидает выход [f32 из] у некоторых gcc ... и если он не находит, что (в данном случае, это clang... как это компилятор, использованный для создания ядра хоста), это, кажется, не сообщайте о любых ошибках/предупреждения и просто падений - наверное, из-за NULL(от [f36 в] поиск на выходе [fунции f37] для gcc...) разыменования.

ниже то, что, кажется, происходит в пределах vmware-modconfig и/или внутренних программ/скриптов:

## My visualization of crash(SIGSEGV) case when compiler used to build kernel is clang-*/LLVM : ## ## == Likely a dereferencing of NULL similar to the below case == const char *gcc_ver = strstr("Linux version 4.16.0 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #4 SMP Thu Apr 5 02:12:22 PDT 2018", "gcc..."); if (strcmp(gcc_ver, "gcc...") == 0) { // Here, there's no check on gcc_ver to be // non-NULL - since it's likely that the compiler used to build the kernel // is *assumed* to be always some gcc and so on. Probably, it's not designed to work // work with clang/LLVM if the compiler used to build kernel is clang/LLVM. . . . . } ## ## My visualization of working case when compiler used to build kernel is gcc-* : ## const char *gcc_ver = strstr("Linux version 4.16.0 (exp@exp) (gcc version 7.3.0 (Ubuntu 7.3.0-8ubuntu3)) #4 SMP Thu Apr 5 02:12:22 PDT 2018", "gcc..."); if (strcmp(gcc_ver, "gcc...") == 0) { // Works as always . . . . }

этап 6 : ради Расширенная конфигурация скрипта проверить, изменен linux-4.16/fs/proc/version.c в докладе GCC 7.3.0 на *need* основы, так как Линукс компилятор, использованный для создания текущей версии ядра(4.16) вместо [пулемет f44] компилятор используется в строительстве в текущем ядре(4.16). На это ушло мимо [f45 с] вызов мимо точки, где она будет обработка выхода онлайн / оффлайн, в противном случае, поскольку информация компилятора /proc/version и быть gcc-specific но лязг-конкретные! Это подтвердило, что мое понимание и толкование VMware проигрыватель конфиг/скрипт, который не способен правильно перевести лязг-компилятор информацию в /proc/version в реальных лязг/инфраструктура llvm компилятор, используемый для сборки базового узла ядра и, следовательно, неожиданных SIGSEGV/обработка выхода онлайн / оффлайн.

$ eclang /lib/modules/4.16.0/build/vmlinux | head -1 ++ strings -a /lib/modules/4.16.0/build/vmlinux ++ grep 'clang version' Linux version 4.16.0 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #4 SMP Thu Apr 5 02:12:22 PDT 2018 $ egcc /lib/modules/4.16.0/build/vmlinux ++ strings -a /lib/modules/4.16.0/build/vmlinux ++ grep 'GCC: (' ### ### [procfs] - version logic updated. ### $ cat /proc/version Linux version 4.16.0 (exp@exp) (gcc version 7.3.0 (Ubuntu 7.3.0-8ubuntu3)) #4 SMP Thu Apr 5 02:12:22 PDT 2018 $ strace /usr/bin/vmware-modconfig --appname="VMware Player" --icon="vmware-player" 2>&1 | grep -A 40 -B 1 "/proc/version" write(10, "2018-04-07T00:37:09.944-07:00| v"..., 89) = 89 openat(AT_FDCWD, "/proc/version", O_RDONLY) = 11 fstat(11, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 fcntl(11, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE) fstat(11, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 read(11, "Linux version 4.16.0 (exp@exp) (gcc "..., 4096) = 106 read(11, "", 3072) = 0 close(11) = 0 write(10, "2018-04-07T00:37:09.944-07:00| v"..., 71) = 71 access("/sbin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/CodeSourcery/Sourcery_G++_Lite/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/.local/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/local/sbin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/local/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/sbin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/sbin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/games/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/local/games/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/snap/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/lib/jvm/java-8-oracle/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/lib/jvm/java-8-oracle/db/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/usr/lib/jvm/java-8-oracle/jre/bin/gcc-7.3", X_OK) = -1 ENOENT (No such file or directory) access("/sbin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/CodeSourcery/Sourcery_G++_Lite/bin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/bin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/home/g/.local/bin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/usr/local/sbin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/usr/local/bin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/usr/sbin/gcc-7", X_OK) = -1 ENOENT (No such file or directory) access("/usr/bin/gcc-7", X_OK) = 0 getuid() = 1000 stat("/usr/bin/gcc-7", {st_mode=S_IFREG|0755, st_size=287, ...}) = 0 access("/usr/bin/gcc-7", X_OK) = 0 getuid() = 1000 write(10, "2018-04-07T00:37:09.944-07:00| v"..., 119) = 119

этап 6 :, связанные с вышеуказанным обновлением для /proc/version(fs/proc/version.c), чтобы показать ССЗ-* на *need* основы, vmplayer не обработка выхода онлайн / оффлайн/аварии - но, с помощью gcc(7.3.0) для построения решения VMware модулей ядра([f55, которая] и vmmon), который был of course "expected", как это было в /proc/version - я не хотел этого - я хотел clang/LLVM можно использовать для построения ядра VMware модули, например, я сделал то же самое для других модулей ядра (драйверов NVIDIA, VirtualBox и т. д.), которые работают без каких-либо проблем. Проще говоря, я хочу, чтобы оба базовых ядро и все модули должны быть построены в clang/llvm и не [от f60].

я заметил, что скрипт конфигурации VMware выполняет проверку препроцессора с установленным компилятором (gcc-7.3.0 в данном случае) и эта команда выглядит так:

/usr/bin/gcc-7 -E -I/lib/modules/4.16.0/build/include - ....

после этого заполнить и удается, он переходит на проверить, если это необходимо для создания VMware kernel modules - vmnet и [64-го фокуса].

этап 7: вручную VMware и модули ядра(из источника : [f65 В] И vmnet.tar) может быть построен с помощью clang/llvm и я их строил(с все необходимые патчи для hostif.c ([f68 Не]) и bridge.c ([р70]), установить и использовать его без каких-либо проблем, вызывая /usr/lib/vmware/bin/vmplayer напрямую. Но, при вызове в VMware Player на просто vmplayer или нажав на VMware плеер иконку из меню приложения/список, vmware-modconfig выполняет проверку на компилятор и его версия, используемой для построения текущего ядра и затем проверяет, что VMware ядра модули построены и загружены, перед запуском ваще vmplayer. И не компилятор проверить, что [f75 в Джей] не, не похоже на работу, если компилятор(как показано на /proc/version) - это [f77 на английском языке] вместо gcc, как показано выше.

$ ~/vmware_modules_compiler.sh ++ eclang /lib/modules/4.16.0/misc/vmmon.ko ++ head -1 +++ strings -a /lib/modules/4.16.0/misc/vmmon.ko +++ grep 'clang version' clang version 5.0.0-3 (tags/RELEASE_500/final) ++ eclang /lib/modules/4.16.0/misc/vmnet.ko ++ head -1 +++ strings -a /lib/modules/4.16.0/misc/vmnet.ko +++ grep 'clang version' clang version 5.0.0-3 (tags/RELEASE_500/final) $ ~/vmware_modules_metadata.sh ++ strings -a /lib/modules/4.16.0/misc/vmnet.ko ++ grep VMware author=VMware, Inc. description=VMware Virtual Networking Driver. ++ strings -a /lib/modules/4.16.0/misc/vmmon.ko ++ grep VMware author=VMware, Inc. description=VMware Virtual Machine Monitor. $ lsmod | grep "vmnet\|vmmon" vmnet 53248 13 vmmon 90112 0

этап 7: с таким пониманием, как VMware конфиг/скрипт выполняет начальную preprocessor check с компилятором определяется gcc-7(.3.0) и как последующие вызовы произойдет для строительства VMware модули ядра, я работал на компилятор вызов логике для обоих случаев vmware-modconfig скрипт/программу :

во-первых, чтобы выполнить "preprocessor check" с фактическим ССЗ (7.3.0) сам компилятор. Второй и все последующий вызов компилятора с clang/llvm с вместо 7.3.0 ССЗ - у ядра VMware модули должны быть построены с clang/llvm с себя как соответствующего основного ядра.

этап 9: С что мне удалось полностью автоматизировать весь VMware проигрыватель установку, первый вызов, настройка и общую настройку с помощью clang-причине (через установщик сам) VMware на ядре модулей на базовых узлов лязг-встроенный Линукс 4.16.0 ядра.

## Compact log of VMware kernel modules built using clang/LLVM instead of gcc, automatically by vmware-* config/scripts ## ## NOTE : Needed to run "vmplayer" as root(sudo) for (only) the first time for building kernel modules and install them. ## Normal user mode didn't go beyond the start of "VMware kernel modules build..." step. $ sudo vmplayer Stopping VMware services: VMware Authentication Daemon done VM communication interface socket family done Virtual machine communication interface done Virtual machine monitor done Blocking file system done make: Entering directory '/tmp/modconfig-sImz9k/vmmon-only' Using kernel build system. /usr/bin/make -C /lib/modules/4.16.0/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= modules make[1]: Entering directory '/media/exp/ext/linux-4.16' + /usr/bin/clang -print-file-name=include CC [M] /tmp/modconfig-sImz9k/vmmon-only/linux/driverLog.o . . ++ /usr/bin/clang -Wp,-MD,/tmp/modconfig-sImz9k/vmmon-only/linux/.hostif.o.d -nostdinc -isystem /usr/lib/llvm-5.0/lib/clang/5.0.0/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -DCONFIG_CC_STACKPROTECTOR -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -mno-80387 -mstack-alignment=8 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -O2 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-const-variable -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-merge-all-constants -fno-stack-check -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Wall -Wstrict-prototypes -DVMW_USING_KBUILD -DVMMON -DVMCORE -I/tmp/modconfig-sImz9k/vmmon-only/./include -I/tmp/modconfig-sImz9k/vmmon-only/./common -I/tmp/modconfig-sImz9k/vmmon-only/./linux -I/tmp/modconfig-sImz9k/vmmon-only/./vmcore -DMODULE '-DKBUILD_BASENAME="hostif"' '-DKBUILD_MODNAME="vmmon"' -c -o /tmp/modconfig-sImz9k/vmmon-only/linux/.tmp_hostif.o /tmp/modconfig-sImz9k/vmmon-only/linux/hostif.c . . . . . . LD [M] /tmp/modconfig-sImz9k/vmmon-only/vmmon.ko make[1]: Leaving directory '/media/exp/ext/linux-4.16' /usr/bin/make -C $PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= postbuild make[1]: Entering directory '/tmp/modconfig-sImz9k/vmmon-only' make[1]: 'postbuild' is up to date. make[1]: Leaving directory '/tmp/modconfig-sImz9k/vmmon-only' cp -f vmmon.ko ./../vmmon.o make: Leaving directory '/tmp/modconfig-sImz9k/vmmon-only' make: Entering directory '/tmp/modconfig-sImz9k/vmnet-only' Using kernel build system. /usr/bin/make -C /lib/modules/4.16.0/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= modules make[1]: Entering directory '/media/exp/ext/linux-4.16' + /usr/bin/clang -print-file-name=include CC [M] /tmp/modconfig-sImz9k/vmnet-only/driver.o . . . ++ /usr/bin/clang -Wp,-MD,/tmp/modconfig-sImz9k/vmnet-only/.bridge.o.d -nostdinc -isystem /usr/lib/llvm-5.0/lib/clang/5.0.0/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -DCONFIG_CC_STACKPROTECTOR -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -mno-80387 -mstack-alignment=8 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -O2 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-const-variable -g -gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-merge-all-constants -fno-stack-check -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Wall -Wstrict-prototypes -DVMW_USING_KBUILD -I/tmp/modconfig-sImz9k/vmnet-only/. -DVMW_NETIF_TRANS_UPDATE -DMODULE '-DKBUILD_BASENAME="bridge"' '-DKBUILD_MODNAME="vmnet"' -c -o /tmp/modconfig-sImz9k/vmnet-only/.tmp_bridge.o /tmp/modconfig-sImz9k/vmnet-only/bridge.c . . . . . . LD [M] /tmp/modconfig-sImz9k/vmnet-only/vmnet.ko make[1]: Leaving directory '/media/exp/ext/linux-4.16' /usr/bin/make -C $PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= postbuild make[1]: Entering directory '/tmp/modconfig-sImz9k/vmnet-only' make[1]: 'postbuild' is up to date. make[1]: Leaving directory '/tmp/modconfig-sImz9k/vmnet-only' cp -f vmnet.ko ./../vmnet.o make: Leaving directory '/tmp/modconfig-sImz9k/vmnet-only' Starting VMware services: Virtual machine monitor done Virtual machine communication interface done VM communication interface socket family done Blocking file system done Virtual ethernet done VMware Authentication Daemon done Shared Memory Available done . . $ ls -lrt /lib/modules/4.16.0/misc/vm*.ko -rw-r--r-- 1 root root 2597952 Apr 7 01:55 /lib/modules/4.16.0/misc/vmmon.ko -rw-r--r-- 1 root root 2614432 Apr 7 01:55 /lib/modules/4.16.0/misc/vmnet.ko $ ~/vmware_modules_compiler.sh ++ eclang /lib/modules/4.16.0/misc/vmmon.ko ++ head -1 +++ strings -a /lib/modules/4.16.0/misc/vmmon.ko +++ grep 'clang version' clang version 5.0.0-3 (tags/RELEASE_500/final) ++ eclang /lib/modules/4.16.0/misc/vmnet.ko ++ head -1 +++ strings -a /lib/modules/4.16.0/misc/vmnet.ko +++ grep 'clang version' clang version 5.0.0-3 (tags/RELEASE_500/final) $ ~/vmware_modules_metadata.sh ++ strings -a /lib/modules/4.16.0/misc/vmnet.ko ++ grep VMware author=VMware, Inc. description=VMware Virtual Networking Driver. ++ strings -a /lib/modules/4.16.0/misc/vmmon.ko ++ grep VMware author=VMware, Inc. description=VMware Virtual Machine Monitor. ## ## Subsequent invocation of "vmplayer" as usual(without any root/sudo usage). ## $ vmplayer + /usr/bin/vmware-modconfig '--appname=VMware Player' --icon=vmware-player + vmware_module_exists vmmon + modalias=vmmon + /sbin/modprobe -n vmmon + set +x $ vmplayer --version . . VMware Player 14.1.1 build-7528167 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 17.10 Release: 17.10 Codename: artful

этап 9:

VMware проигрыватель гостевой ОС Ubuntu x86_64 с 17.10 - успешно работает в при установки VMware плеер:

-1
ответ дан 23 July 2018 в 18:09

Другие вопросы по тегам:

Похожие вопросы: