2018年8月23日木曜日

PixelbookへVMwareとAdobe CS6を入れてみる

CloudReadyとChrome OS Dev channelの(個人的にとても)大きな違いはVirtualBoxが入っていないことなんですが、VMwareのほうが好きなので動かせないかと悪あがきしてみました。
ついでに、WineHQでAdobe CS6の“日本語版”を正しく動かせないかどうか試行錯誤した記録です(※英語版は正しく動くのですが、日本語版はフォントの関係でひと手間必要です)。

VMwareのインストール

先に結論だけ書いておきますが、VMwareのインストールに関しては現段階のcrostiniでは失敗します。

とりあえずVMware Workstation Player 14を下記からダウンロードしてインストールしてみます。

https://www.vmware.com/products/workstation-player/workstation-player-evaluation.html

ダウンロードを終えたら以下のように。

$ cd ~/Downloads
$ sudo chmod 777 ./VMware-Player-14.XXXXXXXX.x86_64.bundle
$ bash ./VMware-Player-14.XXXXXXXX.x86_64.bundle

これでひととおり導入されるんですが、VMwareのカーネルモジュールが現在のカーネルとバージョン不一致なので動きません。自力でコンパイルする必要があります。

カーネルモジュールのコンパイル

ソースはディスク内にもtarballがありますが、git cloneしたほうが楽です。以下から適当に。

https://github.com/mkubecek/vmware-host-modules

Linuxのヘッダ類が必要となります。不足しているものを適宜 sudo aptitude install などでインストールしてください。

vmnet-only と vmmon-only のふたつをコンパイルするのですが、Makefileに小細工が必要です。

まず、カーネルバージョンをごまかす必要があります(uname が返すバージョンではコンパイルできないのです)。

VM_UNAME = $(shell uname -r)

上記の行を探して、以下に書き換えてください。

VM_UNAME = "4.9.0-8-amd64"

それから、以下の行を探してください。

prebuild:: ;
postbuild:: ;

この下に以下のような定義を付け足します。

KBUILD_CFLAGS += $(call cc-option, -fno-pie)
KBUILD_CFLAGS += $(call cc-option, -no-pie)
KBUILD_AFLAGS += $(call cc-option, -fno-pie)
KBUILD_CPPFLAGS += $(call cc-option, -fno-pie)
EXTRA_CFLAGS += $(CFLAGS_EXTRA) -fno-pie -Wno-pointer-sign -fno-stack-protector -mfentry

ここまでやって Makefile を保存して、make します。コンパイルしてできた vmmon.o と vmnet.o をそれぞれ vmmon.ko と vmnet.ko として /lib/modules/4.9.0-8-amd64/ へコピーしてください。

ここで、depmod -a をやって insmod vmmon (または vmnet) とすれば良いはずなのですが、なんとカーネルがモジュールを受け付けないようコンパイルされています。

カーネルをコンパイルする必要があります。

カーネルのコンパイル

カーネルは公式からダウンロードします。

https://www.kernel.org/

安定版の最新が 4.14.66 だったのでそれを。

$ cd ~/usr/src/
$ sudo tar Jxvf ~/Downloads/linux-4.14.66.tar.xz

これでソース一式が解凍されます。

$ cat /boot/config-`uname -r` > ~/defconfig

現在のカーネルコンフィグをファイルに落としておきます。

$ sudo make menuconfig

これでGUIが立ち上がりますので、Load から先ほどの ~/defconfig を読み込んでください。そして、カーネルモジュールを読み込めるよう設定して保存してください。

あとは普通のカーネルコンパイルです。

$ make

かなり時間がかかると思います。

終わったら以下のようにして、モジュールのインストールとカーネルのインストールを行います。

$ make modules_install
$ make install

が、このカーネルを読み込むための手段が現状のcrostiniには存在せず、独自カーネルを動かせないという問題がありました。

ここさえクリアできれば、VMwareやVirtualBoxのようにカーネルモジュールの動作を必要とするLinux appsも動かせるようになると思います。

ちょっと奥深すぎるので、Googleさんの今後の判断にお任せしたいです。良い方向に進めばいいですね。

Photoshop CS6

WineHQwinetricks をどうにかして導入してください。

まず、必要なライブラリや設定を winetricks で仕込みます。

$ winetricks -q atmlib gdiplus msxml3 msxml6 vcrun2005 vcrun2005sp1 vcrun2008 fontsmooth-rgb gecko

あとはふつうにセットアップを実行します。

$ cd ~/Downloads/Adobe\ CS6
$ wine ./Set-up.exe

これは至って正常に完了するはずです。

次に、Photoshop自身を起動してみます。

$ wine ~/.wine/drive_c/Program\ Files/Adobe/Adobe\ Photoshop\ CS6\ \(64\ Bit\)/Photoshop.exe
Photoshopの文字化け問題を解消する

フォントが □ に化けたり、そもそも表示されない箇所などがあるので、使用フォントを調査します。

まず、プロセス番号を確認します。

$ pgrep -fln Photoshop
12345 Photoshop.exe

この場合は 12345 なので、以下のようにして使用されているフォント情報を取り出します(lsof がない場合は同名パッケージを導入してください)。

$ lsof -p 12345 |grep -i -e ttf -e ttc -e otf

Arial, Times, Tahoma が使われていることがわかります。このうち、Arialだけは他のフォントで上書きすると Photoshop.exe が起動時にクラッシュするようになるので、このフォントが重要なようです。

いろいろやってみたのですが、確実なのは FontForge などを使って、Arialフォントをベースに別の日本語(Unicode)フォントを合成し、Unicode領域のグリフ情報を持つArialフォントを作成するのが対策としてよかったです。

FontForgeでは、arial.ttfを開いてとりあえずctrl-Aを押して全選択した状態で、Element → Font Info の中にある Em Size を 2048 に変更して(※この値は合成する日本語フォントのほうと合わせてください)、File → Save でいったん arial.sfd として保存します。
その後、Element → Merge Fontsで日本語フォント、今回の場合は DroidSansFallbackJapanese.ttf を選びます。そして、ctrl-Aで全選択し直して、Element → Font Infoで Font Name などが Arial のときと同じことを確認します。
確認して適宜編集したら、General を押して Has Vertical Metrics の項目をチェックしてください。これがないと行間が異常な感じになります。
File → Save で再び arial.sfd を保存してから、File → Generate Fonts で TrueType (TTF) を選び、arial.ttf を保存します。これで対策済みArialの完成です。

この対策済みArialを導入することでメニューバーの文字化けは解消するのですが、スプラッシュの状態表示や環境設定ダイアログでそもそもフォントが表示されない問題が解決できません。
これは、フォントとしてはTahomaが使われているところのようです。TahomaをArialと同じように合成してみたのですが、それでは直らず、別の方法を取らねばなりませんでした。

$ cp -r arial.ttf tahoma.ttf

単純に対策済みArialフォントをTahomaに上書きするだけです。

これで文字化けはほぼ解消しました。直らない場合、以下のようにして言語設定を強制しながら起動するといいかもしれません。

$ env LANG="ja_JP.UTF-8" wine ~/.wine/drive_c/Program\ Files/Adobe/Adobe\ Photoshop\ CS6\ \(64\ Bit\)/Photoshop.exe

CS6はそのままだとアップデートがうまく行かないことがあるのですが、Adobe Application Manager 10.0のアップデートをマニュアルで導入するとうまく行くようになるかもしれません。

あと、winecfg からの設定で、仮想デスクトップを 2560x1920 くらいの設定で有効にすると具合良かったです。