Ubuntu18.04 VMware Workstation 12 Playerのインストール

Ubuntu18.04をVMware Workstation 12 Playerのホストにする話。

まず、うちのPCは古い、というのが前提。Intel Core i5-750 プロセッサー、コードネームはLynnfield、リリースは2009年3Q。動画編集はめったにしないので、あんまり遅いと感じない。





VMware Workstation Playerは14の時点で2011年以降のCPUを要求しているので、このPCでは動かせない。だが、ダウンロードページに行くと14と15しか見つからない。なんでだろ?
VMware / ダウンロード VMware Workstation Player

 

結論からすると、Ubuntu Mate 18.04でVMware Workstation 12 Playerを動作させることができた。

やること。

 

Ubuntu Mate 18.04 のインストール

再インストールが絶対に必要ということではなく、うちの環境ではPlayerが動かせなかったので実施したもの。既にUbuntu環境があるなら、ここは飛ばしてインストールしてみれば良いと思う。

VMware Workstation 12 Player(以降Playerと表記)をインストールしたけれども、どうにもうまく動かなかったため、Ubuntu Mate 18.04をインストールし直した。

Windows 10とのデュアルブート環境で、家族がWindows 10しか使わないこともあって緊張感のある作業だった。
ぷちのいず / ファイルを消さずにUbuntu18.04をクリーンインストール

 

もともとの環境は?というと…
以前、普段遣いをUbuntuに変えられないか…というのを検討したことがあった。ざっと記憶をたどると、

  • Ubuntu16.04をインストール
  • その後にUbuntu18.04へアップグレード
  • Mateフレーバーをインストール
  • VMwareを試して失敗(14 Playerと15 PlayerはCPUが古すぎてNG)
  • KVMを試して断念
  • 放置…

普段遣いをするために…ということで色々細かな設定をしていたが、結果からするとこの環境ではVMwareを起動することができなかった。

そこで、現行のUbuntuが入っている環境のファイルを保全しつつ、上書きインストールを行ったのだった。

 

VMware Workstation 12 Playerのインストール

OSのアップデートを適用

Playerインストール前の準備として、OSのアップデートを適用する。

$ sudo apt update; sudo apt -y dist-upgrade; sudo apt -y autoremove
$ sudo reboot

 

OS再インストール前と比較すると、カーネルのバージョンが上がっていた。

** カーネル確認
$ uname -a
Linux ubu 5.0.0-23-generic #24~18.04.1-Ubuntu SMP Mon Jul 29 16:12:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

 

VMware Workstation 12 Playerを準備

別に古いバージョンを公開していないわけじゃなく、画面上の選択肢として用意していないだけの模様。
VMware / ダウンロード VMware Workstation Player

どうにか見つかってホッとした。

インストール

インストーラーをダウンロードしたら、実行権をつけてインストール開始。

$ chmod +x VMware-Player-12.5.9-7535481.x86_64.bundle
$ sudo ./VMware-Player-12.5.9-7535481.x86_64.bundle
Extracting VMware Installer...done.

 

GUIのインストーラーが起動する。
ライセンス条項(VMware Player – End User License Agreement)に同意してNext。

ライセンス条項(VMware OVF Tool component for Linux – End User License Agreement)に同意してNext。

起動するたびに新バージョンを確認しに行くか聞かれるのでNoを選択してNext。
このPCではこれ以上新しいバージョンのPlayerを使えないから(CPUが古すぎる)。

匿名でシステム使用データーを提供しないか?と聞かれるものの、古すぎるこのバージョンで情報提供してもあまり意味がないように思われ…Noを選択してNext。

ライセンスキーは持っていない。無料の範囲で使わせていただくつもりなので、空白のままNext。

準備完了、Installボタンをクリック。

待つ。

インストールが完了したら、Closeボタンをクリックして完了。

ウチではMateを使っているのだが、ここでメニューを確認したところ、
メニュー → システムツール → VMware Player が表示された。

順調かと思いきや、Playerは起動しない。サービスが動いていない。

$ systemctl status vmware
● vmware.service - LSB: This service starts and stops VMware services
Loaded: loaded (/etc/init.d/vmware; generated)
Active: inactive (dead)
Docs: man:systemd-sysv-generator(8)

 

もう少し設定が必要…

 

vmmonとvmnetのコンパイル

Playerはカーネルが変わるたびにvmmonとvmnetというモジュールをコンパイルして利用している模様。このモジュールはUbuntu 18.04では正しくコンパイルができない。

実際に試してみたところ、この2つのモジュールは

  • Ubuntu 12.04 → 問題なし
  • Ubuntu 14.04 → 関数呼び出しのパラメータ修正が必要
  • Ubuntu 16.04 → 構造体に変更への対応が必要な模様

となっていた。18.04でも当然パッチは必要になっており、有志が作ったパッチを当てて新しいモジュールを参照するようにする。

パッチをコンパイルするスクリプトの作成

OP-EDのブロマガ / Ubuntu 18.04でVMWare Player 12.5.9を動かす
GitHub / Patches needed to build VMware (Player and Workstation) host modules against recent kernels

カーネルが変わるたびに2つのモジュールをコンパイルし直す必要があるようなので、バッチを作るスクリプトを使わせていただくことにする。
StackExchange / VMWare Workstation vmmon broken on Ubuntu 18.04

~/work/vmware/makepatch.sh ※ディレクトリはどこでもOK。忘れないところに。
#!/bin/bash
VMWARE_VERSION=player-12.5.9
TMP_FOLDER=/tmp/patch-vmware
LANG=C
rm -fdr $TMP_FOLDER
mkdir -p $TMP_FOLDER
cd $TMP_FOLDER
git clone https://github.com/mkubecek/vmware-host-modules.git
cd $TMP_FOLDER/vmware-host-modules
git checkout $VMWARE_VERSION
git fetch
make
make install
rm /usr/lib/vmware/lib/libz.so.1/libz.so.1
ln -s /lib/x86_64-linux-gnu/libz.so.1 /usr/lib/vmware/lib/libz.so.1/libz.so.1
systemctl restart vmware

※Playerのバージョンによって落としてくるモジュールが変わる。
※LANG=Cを実行しておかないと、コンパイルエラーが発生する。
※参照元ではところどころにsudoが入っていたが、すべてrootで実行しても問題ないので、スクリプト自体をsudoで実行することにした。

実行権限をつける。

$ chmod 775 makepatch.sh 

 

パッチのコンパイル

コンパイルするために以下の2パッケージをインストールする。

$ sudo apt install git build-essential

 

これでコンパイル環境が出来上がるので、スクリプトを使ってモジュールをコンパイルする。スクリプトはソースコードを取得してコンパイルし、必要な箇所にインストールした上で、vmware.serviceを起動し直してくれる。

$ sudo ./makepatch.sh

 

以上の設定でPlayerが起動する。
Windows 10環境で構築テスト用に使っている temp という仮想マシンがあるので、マシン設定を思い出しながら作成し、HDDだけ既存のものに置き換えてみたところ、問題なく動作した。

 

カーネルがアップデートした際の対応

Playerが起動するようになってから記事を公開するまでに色々まとめてモタモタしていたところ、カーネルがバージョンアップした。

** カーネル確認
$ uname -a
Linux ubu 5.0.0-32-generic #34~18.04.2-Ubuntu SMP Thu Oct 10 10:36:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

※5.0.0-23 → 5.0.0-32 へバージョンアップ。

起動してみるとこの画面が表示された。

どうやらカーネルがアップデートするとこういうことになるらしい。gccはインストールされてるんだけどなぁ…。この段階で聞いてくれたのはラッキー、キャンセルしてPlayerを一旦終了する。

ここで、パッチをコンパイルするスクリプトを実行。

$ sudo ./makepatch.sh

 

これで、問題なくPlayerが動作するようになる。

 

VMware Workstation Playerのアンインストール

Ubuntu Mate 18.04を再インストールする前に試したメモ。

だいぶ前にWindowsからUbuntuへの移行にトライしていたが、そのときにインストールした15 Playerがインストールされたままだった。そこで、15 Playerをアンインストールして12 Playerをインストールしようと考えた。

アンインストールについて以下のサイトが教えてくれた通りに実行してみる。
Qiita / Linux版VMWareのアンインストールが分かりづらかった

# プロダクトを一覧表示させる
$ sudo ./VMware-Player-15.0.2-10952284.x86_64.bundle -l

# 表示されたプロダクトをアンインストールする
$ sudo ./VMware-Player-15.0.2-10952284.x86_64.bundle --uninstall-component=vmware-player

※前回トライしたときのメモがWordpressの非公開の記事に残っており、そのときに使用したbundleファイルも残っていたのですんなりアンインストールできた。メモしておくことは大事だな〜。

アンインストールのオプションをつけてbundleファイルを実行すると、GUIが表示されてアンインストールができる。

 

やったこと

旧OSで正しく動く状態がどんなものなのか確かめたい…

Ubuntu Mate 18.04を再インストールする前に試したメモ。

とにかく18.04では全然動かない。何をどうすれば動くのか、ということを確かめようと考えた。bundleからインストールしてみたり、ソースからコンパイルしてみたりとか、動かし方が分かれば18.04でも動かせるんじゃないかと。

Windows 10 Version 1903, Player 12でCPUx2,メモリ8GB,HDD60GBという比較的リッチな仮想マシンを作って試す。

Ubuntu12.04LTS

さすがにこれなら動くだろうと考え、本家から12.04LTSをダウンロードしてきて英語でインストールしてみる。懐かしい画面、このころはGUIに頼りっぱなしだった~。

まずは環境を最新の状態にし、open-vm-toolsをインストールして再起動。

$ sudo apt-get update; sudo apt-get -y dist-upgrade; sudo apt-get -y autoremove
$ sudo apt-get install open-vm-tools
$ sudo reboot

再起動後に…
$ sudo apt-get install open-vm-tools-lts-trusty open-vm-tools-lts-trusty-desktop
$ sudo reboot

※何か間違ったみたい。lts-trustyのやつを入れればいいっぽい。

open-vm-tools-lts-trusty-desktopをインストールすると、ゲストのUbuntuとクリップボードの共有ができて楽。

Playerをダウンロードして、インストールしてみる。

$ chmod 774 VMware-Player-12.5.9-7535481.x86_64.bundle
$ sudo ./VMware-Player-12.5.9-7535481.x86_64.bundle

 

インストール画面の選択・入力はUbuntu18.04のものと同じ。

Playerを起動すると、以下が表示された。順調。

メールアドレスを入力してOKボタンを押したら、VMwareが起動した。

えー、こんなに簡単なの?ってくらい、サクッと動いた。

 

Ubuntu14.04LTS

こちらも本家から14.04LTSをダウンロードしてきて英語でインストール。

$ sudo apt update; sudo apt -y dist-upgrade; sudo apt-get -y autoremove
$ sudo apt install open-vm-tools open-vm-tools-desktop
$ sudo reboot

 

Playerをダウンロードして、インストールしてみる。

** カーネル確認
$ uname -a
Linux VMIns2 4.4.0-148-generic #174~14.04.1-Ubuntu SMP Thu May 9 08:17:37 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

** 発生するエラーを事前に1つだけ除去(全部取りたいけれど…できなかった)
$ sudo ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so /usr/lib/libcanberra-gtk-module.so

** Playerをインストール
$ chmod +x VMware-Player-12.5.9-7535481.x86_64.bundle
$ sudo ./VMware-Player-12.5.9-7535481.x86_64.bundle
Extracting VMware Installer...done.

(vmware-installer.py:2952): Gtk-WARNING **: Unable to locate theme engine in module_path: "murrine",
…繰り返し同じメッセージが出る

 

初回起動時にvmnetとvmmonをコンパイルしようとしてエラーが発生するので、以下の情報で対処。
VMTN / Solved: Workstation 12.1 does not compile on kernel 4.6.0-1
StackExchange / 4.4.0-143-generic upgrade 16.04 VMware no longer working

まずは、vmnet.tarとvmmon.tarを展開。

$ sudo su -
# cd /usr/lib/vmware/modules/source
# cp -a vmnet.tar vmnet.tar.bak
# cp -a vmmon.tar vmmon.tar.bak
# tar xf vmnet.tar
# tar xf vmmon.tar

 

コンパイル時にエラーが出るので、ソースコードを開き、関数呼び出し時のパラメータを変更する。

vmnet-only/userif.c
*** 125行目

#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
retval = get_user_pages(addr, 1, FOLL_WRITE, &page, NULL);
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
retval = get_user_pages(addr, 1, 1, 0, &page, NULL);
#else
retval = get_user_pages(current, current->mm, addr,
1, 1, 0, &page, NULL);

#endif

 

vmmon-only/linux/hostif.c
*** 1174行目

#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
retval = get_user_pages((unsigned long)uvAddr, numPages, 0, ppages, NULL);
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL);
#else
retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
numPages, 0, 0, ppages, NULL);
#endif

 

修正ファイルをパッケージし直す。

# rm vmnet.tar ; tar cf vmnet.tar vmnet-only
# rm vmmon.tar ; tar cf vmmon.tar vmmon-only

 

ここまでやったところで、GUIからPlayerを起動してみる。
インストールボタンを押すと、パスワードの入力を求められる。

コンパイルが成功し「Welcome to VMware Workstation 12 Player」画面が表示される。メールアドレスを入力したらPlayerが起動する。

 

起きたこと(インストーラーがメッセージを出す)

インストーラーが以下のメッセージを出す…大量。

$ sudo ./VMware-Player-12.5.9-7535481.x86_64.bundle
Extracting VMware Installer...done.

(vmware-installer.py:2952): Gtk-WARNING **: Unable to locate theme engine in module_path: "murrine",
…繰り返し同じメッセージが出る
Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk-module.so: cannot open shared object file: No such file or directory

 

全部取りたいけれど、最後のメッセージだけをどうにか解除した。
どうにもmurrineの問題を取り切れなかった。

$ sudo ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so /usr/lib/libcanberra-gtk-module.so

 

メッセージがたくさん出るものの、インストールはできるようだった。

 

起きたこと(コンパイルエラー)

インストール後にPlayerを起動するとこんなメッセージが。
Installボタンをクリックすると、パスワード入力を求められた。

進めていくとコンパイルでエラーが発生した。

このログを見てどうやらコンパイルエラーが発生しているらしいことが分かる。

$ sudo vmware-modconfig --console --install-all
Stopping VMware services:
VMware Authentication Daemon done
Virtual machine monitor done
Using kernel build system.
make: Entering directory `/tmp/modconfig-Ui7Elx/vmmon-only'

include/linux/mm.h:1222:6: note: expected ‘struct vm_area_struct **’ but argument is of type ‘struct page **’
long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
^
/tmp/modconfig-Ui7Elx/vmmon-only/linux/hostif.c:1174:28: error: too many arguments to function ‘get_user_pages’
numPages, 0, 0, ppages, NULL);
^


make: *** [vmmon.ko] Error 2
make: Leaving directory `/tmp/modconfig-Ui7Elx/vmmon-only'
Using kernel build system.
make: Entering directory `/tmp/modconfig-Ui7Elx/vmnet-only'

include/linux/mm.h:1222:6: note: expected ‘struct vm_area_struct **’ but argument is of type ‘struct page **’
long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
^
/tmp/modconfig-Ui7Elx/vmnet-only/userif.c:125:28: error: too many arguments to function ‘get_user_pages’
1, 1, 0, &page, NULL);
^

make: *** [vmnet.ko] Error 2
make: Leaving directory `/tmp/modconfig-Ui7Elx/vmnet-only'
Unable to install all modules. See log for details.

 

これを解消するため、上の手順のようにソースのget_user_pages呼び出しパラメーターを変更した。

 

Ubuntu16.04LTS

こちらも本家から16.04LTSをダウンロードしてきて英語でインストール。この日の時点(2019/10/26)では、まだLTSのサポート対象。バージョンを重ねるごとにだんだんサイズが大きくなってきているんだなぁ…。

$ sudo apt update; sudo apt -y dist-upgrade; sudo apt -y autoremove
$ sudo reboot

 

Playerをダウンロードして、インストールしてみる。

** カーネル確認
$ uname -a
Linux VMPLins3 4.15.0-66-generic #75~16.04.1-Ubuntu SMP Tue Oct 1 14:01:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

** 発生するエラーを事前に1つだけ除去(全部取りたいけれど…できなかった)
$ sudo ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so /usr/lib/libcanberra-gtk-module.so

** Playerをインストール
$ chmod +x VMware-Player-12.5.9-7535481.x86_64.bundle
$ sudo ./VMware-Player-12.5.9-7535481.x86_64.bundle
Extracting VMware Installer...done.

(vmware-installer.py:2952): Gtk-WARNING **: Unable to locate theme engine in module_path: "murrine",
…繰り返し同じメッセージが出る

 

このまま起動すると、vmmonとvmnetのコンパイルに失敗するので、パッチを利用してコンパイル

$ sudo apt install git
$ sudo ./makepatch.sh

 

この後、GUIから起動すると、メールアドレスの入力画面になり、正常起動した。

なお、カーネルがバージョンアップするたびにvmmonとvmnetのコンパイルが必要になる見通し。

起きたこと(コンパイルエラー)

パッケージに含まれるvmmonとvmnetをコンパイルするとエラーが発生する。Ubuntu14.04のときと違って構造体のメンバーが変わっている?らしく、手で修正するのは諦めてパッチを利用させていただくことにした。

$ sudo vmware-modconfig --console --install-all
[sudo] password for rohhie:
Stopping VMware services:
VMware Authentication Daemon done
Virtual machine monitor done
make: Entering directory '/tmp/modconfig-cZ4Ddr/vmmon-only'

/tmp/modconfig-cZ4Ddr/vmmon-only/linux/driver.c:268:22: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
tscTimer.function = LinuxDriverEstimateTSCkHzDeferred;
^
/tmp/modconfig-cZ4Ddr/vmmon-only/linux/driver.c:270:12: error: ‘struct timer_list’ has no member named ‘data’
tscTimer.data = 0;
^
/tmp/modconfig-cZ4Ddr/vmmon-only/linux/driver.c: In function ‘init_module’:
/tmp/modconfig-cZ4Ddr/vmmon-only/linux/driver.c:312:4: error: implicit declaration of function ‘init_timer’ [-Werror=implicit-function-declaration]
init_timer(&linuxState.pollTimer);
^
/tmp/modconfig-cZ4Ddr/vmmon-only/linux/driver.c:313:24: error: ‘struct timer_list’ has no member named ‘data’
linuxState.pollTimer.data = 0;
^
/tmp/modconfig-cZ4Ddr/vmmon-only/linux/driver.c:314:34: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
linuxState.pollTimer.function = LinuxDriverPollTimeout;
^

/tmp/modconfig-cZ4Ddr/vmmon-only/linux/hostif.c:1597:31: error: implicit declaration of function ‘global_page_state’ [-Werror=implicit-function-declaration]
unsigned int lockedPages = global_page_state(NR_PAGETABLE) +
^
/tmp/modconfig-cZ4Ddr/vmmon-only/linux/hostif.c: In function ‘HostIF_InitUptime’:
/tmp/modconfig-cZ4Ddr/vmmon-only/linux/hostif.c:1832:4: error: implicit declaration of function ‘init_timer’ [-Werror=implicit-function-declaration]
init_timer(&uptimeState.timer);
^
/tmp/modconfig-cZ4Ddr/vmmon-only/linux/hostif.c:1833:31: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
uptimeState.timer.function = HostIFUptimeResyncMono;
^

make: *** [vmmon.ko] Error 2
make: Leaving directory '/tmp/modconfig-cZ4Ddr/vmmon-only'
make: Entering directory '/tmp/modconfig-cZ4Ddr/vmnet-only'

/tmp/modconfig-cZ4Ddr/vmnet-only/bridge.c:639:14: error: passing argument 1 of ‘atomic_inc’ from incompatible pointer type [-Werror=incompatible-pointer-types]
atomic_inc(&clone->users);
^

make: *** [vmnet.ko] Error 2
make: Leaving directory '/tmp/modconfig-cZ4Ddr/vmnet-only'
Unable to install all modules. See log for details.

 

Ubuntu18.04LTS(Mate)

Ubuntu18.04LTSはMateフレーバーをダウンロードしてきた。好みの問題で、Mateが使いたいと思っているから。結論からすると、パッチを当てるだけで問題なく動く。

$ sudo apt update; sudo apt -y dist-upgrade; sudo apt -y autoremove
$ sudo apt install open-vm-tools open-vm-tools-desktop
$ sudo reboot

 

Playerをダウンロードして、インストールしてみる。

** カーネル確認(16.04と一緒!?)
$ uname -a
Linux VMPLIns3 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

** Playerをインストール
$ chmod +x VMware-Player-12.5.9-7535481.x86_64.bundle
$ sudo ./VMware-Player-12.5.9-7535481.x86_64.bundle
Extracting VMware Installer...done.

 

何のエラーも表示されずにインストールが完了する。
順調かと思いきや、Playerは起動しない。サービスが動いていない。

$ systemctl status vmware
● vmware.service - LSB: This service starts and stops VMware services
Loaded: loaded (/etc/init.d/vmware; generated)
Active: inactive (dead)
Docs: man:systemd-sysv-generator(8)

 

syslogに以下のエラーが出ていた。
/var/log/syslog
Oct 27 06:30:36 VMPLIns3 systemd[1]: Starting Cleanup of Temporary Directories...
Oct 27 06:30:36 VMPLIns3 systemd[1]: Started Cleanup of Temporary Directories.
Oct 27 06:32:08 VMPLIns3 systemd[1]: Starting LSB: This service starts and stops VMware services...
Oct 27 06:32:08 VMPLIns3 vmware[2828]: Starting VMware services:
Oct 27 06:32:08 VMPLIns3 vmware[2828]: Virtual machine monitor#033[71Gfailed
Oct 27 06:32:08 VMPLIns3 vmware[2828]: Virtual ethernet#033[71Gfailed
Oct 27 06:32:08 VMPLIns3 vmware[2828]: VMware Authentication Daemon#033[71G done
Oct 27 06:32:08 VMPLIns3 systemd[1]: vmware.service: Control process exited, code=exited status=1
Oct 27 06:32:08 VMPLIns3 systemd[1]: vmware.service: Failed with result 'exit-code'.
Oct 27 06:32:08 VMPLIns3 systemd[1]: Failed to start LSB: This service starts and stops VMware services.

 

ip addr コマンドでアダプターの状態を確認したが、vmnet1とvmnet8が作られておらず、vmmonとvmnetの問題?のように見える。
パッチを利用してコンパイル。

$ sudo apt install git build-essential
$ sudo ./makepatch.sh

※build-essentialがインストールされていなかった。

この後、GUIから起動すると、メールアドレスの入力画面になり、正常起動した。

んんん?ちゃんと動くじゃん、なんでウチの環境で動かないの???

OSの再インストールをすりゃ動くなこりゃ。

パッチのコンパイルで 十六進数ダンプ:: 無効な十六進数です

パッチを作成しているときにエラーが出ている(黄色文字)。

$ sudo apt install git
$ ./makepatch.sh
Cloning into 'vmware-host-modules'...
remote: Enumerating objects: 261, done.
remote: Counting objects: 100% (261/261), done.
remote: Compressing objects: 100% (181/181), done.
remote: Total 1607 (delta 156), reused 124 (delta 80), pack-reused 1346
Receiving objects: 100% (1607/1607), 1.15 MiB | 1.42 MiB/s, done.
Resolving deltas: 100% (1234/1234), done.
Branch 'player-12.5.9' set up to track remote branch 'player-12.5.9' from 'origin'.
Switched to a new branch 'player-12.5.9'
make -C vmmon-only
make[1]: ディレクトリ '/tmp/patch-vmware/vmware-host-modules/vmmon-only' に入ります
Using kernel build system.
make -C /lib/modules/4.15.0-65-generic/build/include/.. M=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[2]: ディレクトリ '/usr/src/linux-headers-4.15.0-65-generic' に入ります
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/driverLog.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/driver.o
/tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/driver.c: In function ‘LinuxDriver_Ioctl’:
/tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/driver.c:1987:1: warning: the frame size of 1168 bytes is larger than 1024 bytes [-Wframe-larger-than=]
}
^
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/hostif.o
./scripts/ubuntu-retpoline-extract-one: 134 行: printf: 0x十六進数ダンプ:: 無効な十六進数です
symbolmap: 00000000: invalid section
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/memtrack.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/apic.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/hashFunc.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/vmx86.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/cpuid.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/task.o
./scripts/ubuntu-retpoline-extract-one: 134 行: printf: 0x十六進数ダンプ:: 無効な十六進数です
symbolmap: 00000000: invalid section
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/comport.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/phystrack.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmcore/moduleloop.o
LD [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmmon.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmmon.mod.o
LD [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmmon.ko
make[2]: ディレクトリ '/usr/src/linux-headers-4.15.0-65-generic' から出ます
make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[2]: ディレクトリ '/tmp/patch-vmware/vmware-host-modules/vmmon-only' に入ります
make[2]: 'postbuild' は更新済みです.
make[2]: ディレクトリ '/tmp/patch-vmware/vmware-host-modules/vmmon-only' から出ます
cp -f vmmon.ko ./../vmmon.o
make[1]: ディレクトリ '/tmp/patch-vmware/vmware-host-modules/vmmon-only' から出ます
make -C vmnet-only
make[1]: ディレクトリ '/tmp/patch-vmware/vmware-host-modules/vmnet-only' に入ります
Using kernel build system.
make -C /lib/modules/4.15.0-65-generic/build/include/.. M=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[2]: ディレクトリ '/usr/src/linux-headers-4.15.0-65-generic' に入ります
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/driver.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/hub.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/userif.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/netif.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/bridge.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/procfs.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/smac_compat.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/smac.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vnetEvent.o
./scripts/ubuntu-retpoline-extract-one: 134 行: printf: 0x十六進数ダンプ:: 無効な十六進数です
symbolmap: 00000000: invalid section
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vnetUserListener.o
./scripts/ubuntu-retpoline-extract-one: 134 行: printf: 0x十六進数ダンプ:: 無効な十六進数です
symbolmap: 00000000: invalid section
LD [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vmnet.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/patch-vmware/vmware-host-modules/vmnet-only/vmnet.mod.o
LD [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vmnet.ko
make[2]: ディレクトリ '/usr/src/linux-headers-4.15.0-65-generic' から出ます
make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[2]: ディレクトリ '/tmp/patch-vmware/vmware-host-modules/vmnet-only' に入ります
make[2]: 'postbuild' は更新済みです.
make[2]: ディレクトリ '/tmp/patch-vmware/vmware-host-modules/vmnet-only' から出ます
cp -f vmnet.ko ./../vmnet.o
make[1]: ディレクトリ '/tmp/patch-vmware/vmware-host-modules/vmnet-only' から出ます
install -D -t /lib/modules/4.15.0-65-generic/misc vmmon-only/vmmon.ko vmnet-only/vmnet.ko
strip --strip-debug /lib/modules/4.15.0-65-generic/misc/vmmon.ko /lib/modules/4.15.0-65-generic/misc/vmnet.ko
if test -z ""; then /sbin/depmod -a 4.15.0-65-generic; fi

 

この状態のままPlayerを起動したらクラッシュした。当然か…。

このことについて、「LANG=Cを忘れると出るエラー」として紹介されていたので、コンパイルするスクリプトの中で LANG=C を実行するようにしてこの問題を解決した。
ガジェット好きの日記 / ポータブック用カスタムカーネルのビルド手順【Ubuntu18.04版】

日本語でデスクトップをインストールすると、LANG=ja_JP.UTF-8になっている。エラーメッセージが日本語で表示されるのでとても助かるのだが、トラブルが発生したときに日本語メッセージをキーに検索すると情報量が少ない。LANG=Cした後で同じエラーを発生させるとメッセージが英語になるので、この方法を知ってからガシガシ活用している。

KVMの残骸の後始末

以前トライして挫折したKVMの残骸が影響している?まぁ、互いに仮想ホストという関係だし、影響しているかもしれない。

KVM関連パッケージのアンインストール

KVMはアンインストールした形跡があるんだけれど、ネットワークの調子がいまいち良くない…

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000

3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000

5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000

 

このbr0, virbr0, virbr0-nicはKVMを試したときの残骸。これが宅内のIPv6環境(DHCPでIPアドレスを割り付けている)がうまく動かない問題も発生している。パッケージはqemu-kvmらしい。

で、qemuって?

QEMU は x86, PowerPC, S390, ARM などのマシンのエミューレータ.

面白そうだけれども、今は外していく。

$ sudo apt remove qemu libvirt0 libvirt-bin
$ sudo apt auteremove

 

ip addr で確認してみたところ、まだbr0とかが残っている。

$ dpkg -l
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
||/ 名前 バージョン アーキテクチャ 説明
+++-===================-==============-==============-===========================================

rc libvirt-bin 4.0.0-1ubuntu8 amd64 programs for the libvirt library
rc libvirt-clients 4.0.0-1ubuntu8 amd64 Programs for the libvirt library
rc libvirt-daemon-syst 4.0.0-1ubuntu8 amd64 Libvirt daemon configuration files

rc qemu-kvm 1:2.11+dfsg-1u amd64 QEMU Full virtualization on x86 hardware
rc qemu-system-common 1:2.11+dfsg-1u amd64 QEMU full system emulation binaries (common
rc qemu-system-x86 1:2.11+dfsg-1u amd64 QEMU full system emulation binaries (x86)


 

しまった。設定が残っている。
Qiita / dpkg -lの”rc”状態とは

$ sudo apt remove --purge libvirt-bin libvirt-clients libvirt-daemon-system

dpkg: 警告: libvirt-daemon-system の削除中、ディレクトリ '/var/lib/libvirt/images' が空でないため削除できませんでした
dpkg: 警告: libvirt-daemon-system の削除中、ディレクトリ '/etc/libvirt/qemu' が空でないため削除できませんでした
dpkg: 警告: libvirt-daemon-system の削除中、ディレクトリ '/etc/apparmor.d/libvirt' が空でないため削除できませんでした
libvirt-clients (4.0.0-1ubuntu8.13) の設定ファイルを削除しています ...
dpkg: 警告: libvirt-clients の削除中、ディレクトリ '/etc/libvirt' が空でないため削除できませんでした

$ sudo apt remove --purge qemu-kvm qemu-system-common qemu-system-x86

 

警告は出ているものの、関連するパッケージはとりあえず削除できたものと思われる。

 

残ってしまったブリッジ設定の削除

再起動後にip addr で確認してみたところ、まだbr0が残っている。

このUbuntuは16.04からアップグレードした18.04で、Mateフレーバーを後からインストールしている。ネットワーク管理はNetworkManagerだと思われる。

$ nmcli device show
GENERAL.DEVICE: br0
GENERAL.TYPE: bridge

GENERAL.DEVICE: enp3s0
GENERAL.TYPE: ethernet

GENERAL.DEVICE: lo
GENERAL.TYPE: loopback

 

ってな具合に並んでいる。

$ nmcli con
NAME UUID TYPE DEVICE
br0 e617374f-b753-4d56-b484-843cd5912171 bridge br0

$ nmcli con down br0
接続 'br0' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/1)
$ nmcli con delete br0
接続 'br0' (d61fb9ec-9469-479f-b0a7-38dedf70038f) が正常に削除されました。

 

正常に削除された…といいつつ、br0は残っている…これは嫌な予感。

$ nmcli dev delete br0
デバイス 'br0' が正常に削除されました。
$ nmcli dev connect enp3s0
エラー: 新規接続の追加またはアクティベートに失敗しました: Connection 'enp3s0' is not available on the device enp3s0 at this time.
$ nmcli dev
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet 管理無し --
lo loopback 管理無し --

 

なんだこれ…再起動したらbr0が復活して接続ができるように…ん〜。

$ export LANG=en_US
$ nmcli dev
DEVICE TYPE STATE CONNECTION
br0 bridge connected br0
enp3s0 ethernet unmanaged --
lo loopback unmanaged --

 

原因はネットワーク設定を手でいじっていたことだった…。NetworkManagerがネットワーク管理をする手前でinterfacesファイルで設定を噛ませていたがゆえに、NetworkManagerでいくら操作をしても無駄だったと思われる。

このファイルとGUIを色々操作している過程で、2年前に利用していた「有線接続 1」が復活して、再起動したことでenp3s0で接続ができるようになった。GUIで最後の接続タイミングが見える、KVMを試したのは2年前だったのか…

/etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

#auto enp3s0
#iface enp3s0 inet manual

#auto br0
#iface br0 inet dhcp
#bridge_ports enp3s0
#bridge_maxwait 0
#bridge_df 0
#bridge_stp off

※NetworkManagerやnetworkingを再起動しても駄目だった。もしかしたら、network-managerという形で再起動すればOKだったかも。

$ nmcli dev
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet 接続済み 有線接続 1
lo loopback 管理無し --

$ nmcli con
NAME UUID TYPE DEVICE
有線接続 1 nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn ethernet enp3s0

 

 

最後まで正しく動かなかった環境で起きていたこと

過去に普段遣いをUbuntuに変えられないか検討したことがあり、Windows 10とのデュアルブート環境を作っていた。

Ubuntu16.04から18.04へのアップグレードを行い、Mateフレーバーを後からインストールした環境。14 Playerや15 Playerを試し、KVMに手を出して放置状態…要らないものは削除してきれいにしたつもりではあるものの、どうやっても12 Playerは動かなかった。

仕方がないのでUbuntu Mate 18.04を再インストールし、どうにか12 Playerを動作させられるようになったものの、再インストールしてからそれっぽく使いやすい環境にするにはそれなりの時間がかかるから、やっぱり再インストールのハードルはそれなりに高いと思う。

ということで、再インストールの判断材料になるかもしれないダメダメ情報をメモとして残してみる。

 

appLoaderでクラッシュ

インストールしただけではPlayerはクラッシュした。

/var/log/kern.log
Oct 20 19:33:39 ubu kernel: [ 1976.495759] show_signal_msg: 21 callbacks suppressed
Oct 20 19:33:39 ubu kernel: [ 1976.495761] vmware-modconfi[5235]: segfault at 2360 ip 0000000000002360 sp 00007ffca471cb78 error 14 in appLoader[55a1c1e78000+ad000]

※syslogにも同じログが出ている。

/var/log/apport.log
ERROR: apport (pid 5240) Sun Oct 20 19:33:39 2019: called for pid 5235, signal 11, core limit 0, dump mode 1
ERROR: apport (pid 5240) Sun Oct 20 19:33:39 2019: executable: /usr/lib/vmware/bin/appLoader (command line "/usr/lib/vmware/bin/vmware-modconfig --launcher=/usr/bin/vmware-modconfig --appname=VMware Player --icon=vmware-player")
ERROR: apport (pid 5240) Sun Oct 20 19:33:39 2019: debug: session gdbus call: (true,)
ERROR: apport (pid 5240) Sun Oct 20 19:33:40 2019: wrote report /var/crash/_usr_lib_vmware_bin_appLoader.1000.crash

 

/tmp/vmware-hogeuser/vmware-apploader-5240.log
2019-10-20T19:33:39.817+09:00| appLoader| I125: Unable to dlopen libgtk-x11-2.0.so.0 on the system. /usr/lib/vmware/lib/libz.so.1/libz.so.1: version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16)

 

ZLIB_1.2.9が見つからないと言われたので、インストールしてみた。

$ sudo apt install zlib1g-dev
$ sudo apt install zlib1g
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
zlib1g はすでに最新バージョン (1:1.2.11.dfsg-0ubuntu2) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

 

それでも同じエラーが出るので、libz.soを置き換えるという無謀な処置をしてみたものの、結果は同じだった。

$ sudo mv /usr/lib/vmware/lib/libz.so.1/libz.so.1 /usr/lib/vmware/lib/libz.so.1/libz.so.1.bak
$ ln -s /lib/x86_64-linux-gnu/libz.so.1 /usr/lib/vmware/lib/libz.so.1/libz.so.1

※ちゃんと動くようになった今から考えるとやっちゃいけなかったことと思われる。

ここまでやったところで先に進まないことに気付いて…探してみたら見つかった記事がこれ!最終的にPlayerを動作させることができたが、その扉を開いてくれた。
OP-EDのブロマガ / Ubuntu 18.04でVMWare Player 12.5.9を動かす

この方がパッチを当ててくれていた。
GitHub / vmware-host-modules

旧ウチの環境ではこのパッチだけではうまく動かすことができなかったが、再インストールしたらサクッと動作した。旧ウチの環境にはこれ以外の原因があった訳だけれども、調査は途中で打ち切った。デバッガで中身を追っていくとか、もう無理だなーって思ったから。

Gtk-Messageが出てクラッシュ

ちょこちょこ設定を入れながらPlayerを起動するが一向に起動せず、syslogに以下が出力されていた。

/var/log/syslog
Oct 22 08:43:44 ubu org.mate.panel.applet.BriskMenuFactory[2068]: Gtk-Message: Failed to load module "appmenu-gtk-module": libappmenu-gtk-module.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
Oct 22 08:43:44 ubu org.mate.panel.applet.BriskMenuFactory[2068]: Gtk-Message: Failed to load module "atk-bridge": /usr/lib/x86_64-linux-gnu/libatspi.so.0: undefined symbol: g_type_class_adjust_private_offset
Oct 22 08:43:44 ubu org.mate.panel.applet.BriskMenuFactory[2068]: Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk-module.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
Oct 22 08:43:44 ubu kernel: [ 8413.673871] vmware-modconfi[22161]: segfault at 0 ip 0000000000000000 sp 00007ffe22b4fac8 error 14 in appLoader[563fb9aa1000+ad000]
Oct 22 08:43:44 ubu org.mate.panel.applet.BriskMenuFactory[2068]: /usr/bin/vmplayer: 106 行: 22161 Segmentation fault (コアダンプ) "$BINDIR"/vmware-modconfig --appname="VMware Player" --icon="vmware-player"

 

パネルに登録されているコマンドを実行すると、同じエラーが出る。

$ /usr/bin/vmplayer %u
Gtk-Message: Failed to load module "appmenu-gtk-module": libappmenu-gtk-module.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
Gtk-Message: Failed to load module "atk-bridge": /usr/lib/x86_64-linux-gnu/libatspi.so.0: undefined symbol: g_type_class_adjust_private_offset
Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk-module.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
Segmentation fault (コアダンプ)

 

ないというならインストールしてみるか…。

$ sudo apt install appmenu-gtk-module-common ← 既にインストール済み

 

だめ。

色々探していたら、2013年9月に以下のやり取りがあったので試してみる。
要するにsoのシンボリックリンクを作ってみようという話。
StackExchange / GTK error in VMware Player for 12.04 LTS

$ sudo ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libappmenu-gtk-module.so /usr/lib/libappmenu-gtk-module.so
$ /usr/bin/vmplayer %u
Gtk-Message: Failed to load module "appmenu-gtk-module": /usr/lib/x86_64-linux-gnu/libappmenu-gtk2-parser.so.0: undefined symbol: g_action_group_list_actions
Gtk-Message: Failed to load module "atk-bridge": /usr/lib/x86_64-linux-gnu/libatspi.so.0: undefined symbol: g_type_class_adjust_private_offset
Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk-module.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
/usr/bin/vmplayer: 106 行: 22033 Segmentation fault (コアダンプ) "$BINDIR"/vmware-modconfig --appname="VMware Player" --icon="vmware-player"

 

ちょっとだけエラー出力の様子が変わった。コアダンプが出ているcanberraもやってみよう。

$ sudo ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so /usr/lib/libcanberra-gtk-module.so
$ /usr/bin/vmplayer %u
Gtk-Message: Failed to load module "appmenu-gtk-module": /usr/lib/x86_64-linux-gnu/libappmenu-gtk2-parser.so.0: undefined symbol: g_action_group_list_actions
Gtk-Message: Failed to load module "atk-bridge": /usr/lib/x86_64-linux-gnu/libatspi.so.0: undefined symbol: g_type_class_adjust_private_offset
/usr/bin/vmplayer: 106 行: 22128 Segmentation fault (コアダンプ) "$BINDIR"/vmware-modconfig --appname="VMware Player" --icon="vmware-player"

 

一歩前に進んだが、まだ、問題解消しない。

ライブラリが足らない?

$ sudo apt install libgtkmm-2.4-1v5 ← 既にインストール済み

 

だめ。

32ビット版のライブラリを入れれば動くの?
StackExchange / Failed to load module “canberra-gtk-module” … but already installed

$ sudo apt install libappmenu-gtk-parser-dev-common:i386
$ sudo apt install libappmenu-gtk2-parser0:i386
$ sudo apt install libappmenu-gtk3-parser0:i386
$ sudo apt install libcanberra-gtk-module:i386

 

効果なし。

マイクロコードが古い?なんか大事になってきたぞ。
archlinux VMware / Intel のマイクロコードが古いせいで起動時にセグメンテーション違反が発生する

Linuxが動作している間だけ適用される方法があるみたい。
Hatena Blog / UbuntuでCPUのマイクロコードの更新を適用するようにしてみた

最初に現状を確認してみる。

$ dmesg | grep microcode
[ 0.000000] microcode: microcode updated early to revision 0xa, date = 2018-05-08
[ 0.035652] MDS: Vulnerable: Clear CPU buffers attempted, no microcode
[ 1.175028] microcode: sig=0x106e5, pf=0x2, revision=0xa
[ 1.175248] microcode: Microcode Update Driver: v2.2.

 

なんだか新しい日付な気がする…念の為、パッケージをインストールしてみる。

$ sudo apt install intel-microcode ← 既にインストール済み

 

だめ。

もう一息頑張ってみようか…

$ sudo mv libatspi.so.0 libatspi.so.0.bak
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libatspi.so.0 libatspi.so.0

 

効果なし。

これはどう?

$ sudo mv libfontconfig.so.1 libfontconfig.so.1.bak
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 ./libfontconfig.so.1

 

効果なし。

ココらへんまでやって、Playerをもう一度、インストールしてみることにした。
アンインストールして、再起動、そして再度インストール。

だめだった…これでOSの再インストールを決意した。

さいごに

デュアル環境へのUbuntu Mate再インストールは少し緊張したけれど、結果としてVMware Workstation 12 Playerが動作したので良かった。

これで本格的に移行できる準備ができたので、Ubuntu Mateフレーバーに慣れようと思い、ここ2週間ほど記事を書くための時間の殆どをUbuntu Mateで過ごしている。

やっぱりWindowsで長年かけて作ってきた環境との違いにちょっと戸惑ったりして、代替品を探したりWineで動くアプリを探したりと、ちょっとおもしろいことになってきている。

あぁ、その前にUbuntu16.04のサーバーをリプレースしなきゃだ。動いているからいいやって話じゃない、なんとか今年度のうちに終わらせないとサポートが切れる、ちょっと頑張らないとな〜。

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です