30
Wine on Solaris 11 Express で紡ぐ絆 Kazuyuki Sato

Wine on Solaris 11 Express

Embed Size (px)

Citation preview

Page 1: Wine on Solaris 11 Express

Wine on Solaris 11 Expressで紡ぐ絆

Kazuyuki Sato

Page 2: Wine on Solaris 11 Express

Agenda

Wineについてそして、転落する日々がはじまる

絆ブレイク

旅立ちの時

libumemっておいしいの ? ^q^wineを注いでください参考情報

Page 3: Wine on Solaris 11 Express

Presentation Title pg 3

Wine on Solaris 11 Express

"Wine Is Not just an Emulator" “Compatibility layer"

Windows APIを native system callにトランスレート

VirtualBoxの Direct3D周りでもWineの実装が使われている

サン・マイクロシステムズの PWI (Public Windows Initiative)やWabiに影響されるこれに懐かしさを感じる人は・・・

http://www.winehq.org/

Page 4: Wine on Solaris 11 Express

Presentation Title pg 4

Wine on Solaris 11 Express

なぜ、Wineなのか?Solaris上でOVDC (Oracle VirtualDesktop Client)を動かしたかった

結果は?少し問題があったものの・・・

* OVDC ・・・ ソフトウェア版 Sun Ray Client 。 Windows, Linux, Mac OS X 版が提供

大成功!!

Page 5: Wine on Solaris 11 Express

Presentation Title pg 5

Page 6: Wine on Solaris 11 Express

Agenda

Wineについてそして、転落する日々がはじまる

絆ブレイク

旅立ちの時

libumemっておいしいの ? ^q^wineを注いでください参考情報

Page 7: Wine on Solaris 11 Express

Presentation Title pg 7

Wine on Solaris 11 Express

そして、転落の日々が始まる・・・

んっ?んっ?

Page 8: Wine on Solaris 11 Express

Presentation Title pg 8

Wine on Solaris 11 Express

広い画面と GPU 搭載の MacBook Pro 15" 行きたいなぁ・・・広い画面と GPU 搭載の MacBook Pro 15" 行きたいなぁ・・・広い画面と GPU 搭載の MacBook Pro 15" 行きたいなぁ・・・広い画面と GPU 搭載の MacBook Pro 15" 行きたいなぁ・・・

2009 年・・・

Page 9: Wine on Solaris 11 Express

Presentation Title pg 9

Wine on Solaris 11 Express

Page 10: Wine on Solaris 11 Express

Agenda

Wineについてそして、転落する日々がはじまる

絆ブレイク

旅立ちの時

libumemっておいしいの ? ^q^wineを注いでください参考情報

Page 11: Wine on Solaris 11 Express

Presentation Title pg 11

Wine on Solaris 11 Express

OVDCの問題は新しいWineで解決

だがしかし・・・

Page 12: Wine on Solaris 11 Express

Presentation Title pg 12

Wine on Solaris 11 Express

Final Fantasy XIを起動すると・・・

Unhandled page fault

「動け、動け、動いてよ !!! 今動かなきゃ、

今ログインできなきゃ、みんないなくなっちゃうんだ!」

Page 13: Wine on Solaris 11 Express

Agenda

Wineについてそして、転落する日々がはじまる

絆ブレイク

旅立ちの時

libumemっておいしいの ? ^q^wineを注いでください参考情報

Page 14: Wine on Solaris 11 Express

Presentation Title pg 14

Wine on Solaris 11 Express

というわけで、 FFXIが動作しなくなったので遊べなくなった

ログインしなくなったので、絆崩壊 wwww うぇっ

そして、社内ニートへ・・・よーし、暇だから手パッチで動かなくなった原因を追求するよ!

見つけた1.1.32と 1.1.33の diff を取り、一つづつ手パッチこの時点での wine最新版は、 1.3.15

Page 15: Wine on Solaris 11 Express

Presentation Title pg 15

Wine on Solaris 11 Express

この修正が原因

diff --git a/libs/wine/mmap.c b/libs/wine/mmap.cindex fc5b1d9..b400189 100644--- a/libs/wine/mmap.c+++ b/libs/wine/mmap.c@@ -350,6 +350,12 @@ void mmap_init(void) reserve_malloc_space( 8 * 1024 * 1024 ); + if (!list_head( &reserved_areas ))+ {+ /* if we don't have a preloader, try to reserve some space below 2Gb */+ reserve_area( (void *)0x00110000, (void *)0x40000000 );+ }+ /* check for a reserved area starting at the user space limit */ /* to avoid wasting time trying to allocate it again */ LIST_FOR_EACH( ptr, &reserved_areas )

こいつを backoutすることで動作した

Page 16: Wine on Solaris 11 Express

Agenda

Wineについてそして、転落する日々がはじまる

絆ブレイク

旅立ちの時

libumemっておいしいの ? ^q^wineを注いでください参考情報

Page 17: Wine on Solaris 11 Express

Presentation Title pg 17

Wine on Solaris 11 Express

そして、すでに BugDBに登録されていたBug 22033 - World of Warcraft Crashes on startup (due to broken Solaris malloc())http://bugs.winehq.org/show_bug.cgi?id=22033

おまえらどんだけWorld of Warcraft好きなんだよ・・・しかも、

Solaris で・・・

Page 18: Wine on Solaris 11 Express

Presentation Title pg 18

Wine on Solaris 11 Express

libumemの奇跡Bug 22033に書かれていた

libumem使うと、動くよ?

libumem = user-mode (nonkernel mode) memory allocator library

kernel memory allocator として実装されているSlab Allocatorを userlandでも利用できるようにしたもの強力なmemory debug 機能も持つ

「こいつ・・・動くぞ!」

Page 19: Wine on Solaris 11 Express

Presentation Title pg 19

Wine on Solaris 11 Express

libumemは何をやっているか?libcで提供されるmallocを置き換えるメモリ確保処理のバックエンドが選択可能

brk (default)mmap

libumem自体は、高機能なメモリアロケータと して利用できる

ちなみに、 google-perftoolsにて提供されるlibtcmalloc.soでも可

Page 20: Wine on Solaris 11 Express

Agenda

Wineについてそして、転落する日々がはじまる

絆ブレイク

旅立ちの時

libumemっておいしいの ? ^q^wineを注いでください参考情報

Page 21: Wine on Solaris 11 Express

Presentation Title pg 21

Wine on Solaris 11 Express

Wineの導入方法についてパッケージさえ揃っていれば、簡単に buildできる

下記に詳細あります!

http://goo.gl/649Q4

ついでに、 SSL接続できなかったのを修正Kindle for PC 動いた

注意点Wineを実行するときは、必ず、下記の環境変数を渡して実行すること

$ env LD_PRELOAD=libumem.so \ UMEM_OPTIONS=backend=mmap wine hoge.exe

Page 22: Wine on Solaris 11 Express

Presentation Title pg 22

Wine on Solaris 11 Express

WINEPREFIX 環境変数Windowsで言うところの C:\ ドライブとなる複数作って、この環境変数で切り替え

ZFS dataset上に作成しておくと便利Snapshotで簡単バックアップCloneで環境を複製別アカウント用

さらに、 compression したり意外と気にならず。領域も節約可能

Page 23: Wine on Solaris 11 Express

Presentation Title pg 23

Wine on Solaris 11 Express

こんな感じで ZFS datasetに配置# zfs create -o compress=on rpool/wine/FFXI# chown -R ore:ore /rpool/wine/FFXI$ env WINEPREFIX=/rpool/wine/FFXI wine hoge.exe

さぁ、みんなもおいでよ!

rpool/wine 87.5G 94.8G 69.1M /rpool/winerpool/wine/Diablo2LoD 2.02G 94.8G 2.01G /rpool/wine/Diablo2LoDrpool/wine/DragonAge2Demo 2.04G 94.8G 2.03G /rpool/wine/DragonAge2Demorpool/wine/DragonAgeOrigins 16.8G 94.8G 16.8G /rpool/wine/DragonAgeOriginsrpool/wine/FinalFantasyXI 10.6G 94.8G 10.5G /rpool/wine/FinalFantasyXIrpool/wine/FinalFantasyXI_en 12.1G 94.8G 12.1G /rpool/wine/FinalFantasyXI_enrpool/wine/FinalFantasyXI_jp 10.2G 94.8G 9.82G /rpool/wine/FinalFantasyXI_jprpool/wine/OVDC 172M 94.8G 44.5M /rpool/wine/OVDCrpool/wine/Rift 16.3G 94.8G 9.38G /rpool/wine/Riftrpool/wine/Rift_solarisx 8.21G 94.8G 10.2G /rpool/wine/Rift_solarisxrpool/wine/Steam 7.55G 94.8G 6.97G /rpool/wine/Steamrpool/wine/emu 1.35G 94.8G 1.32G none

# zfs create -o compress=on rpool/wine/FFXI# chown -R ore:ore /rpool/wine/FFXI$ env WINEPREFIX=/rpool/wine/FFXI wine hoge.exe

Page 24: Wine on Solaris 11 Express

Presentation Title pg 24

Wine on Solaris 11 Express

XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_openXIM common/xiiimp _SwitchOpenIM # XIM_openXIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister

XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_openXIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregisterXIM common/xiiimp _SwitchOpenIM # XIM_open

順番を入れ替える

日本語入力についてATOKとの相性最悪

Solaris 11 Expressはギリギリセーフ/usr/share/X11/locale/ja_JP.UTF-8/XI18N_OBJSを修正

Page 25: Wine on Solaris 11 Express

Presentation Title pg 25

Wine on Solaris 11 Express

動作させたいアプリは人それぞれ動かしたいものがあるなら、調べてみるWine Application Database - http://appdb.winehq.org/

Mailing Listに問い合わせてみる

何が言いたいかというと・・・

動けば、ラッキー!

Page 26: Wine on Solaris 11 Express

Agenda

Wineについてそして、転落する日々がはじまる

絆ブレイク

旅立ちの時

libumemっておいしいの ? ^q^wineを注いでください参考情報

Page 27: Wine on Solaris 11 Express

Presentation Title pg 27

参考情報WineHQhttp://www.winehq.org/

Wine Key Mailing Lists/Forumshttp://www.winehq.org/forums

Wine WIkihttp://wiki.winehq.org/FrontPage

Wine Application Databasehttp://appdb.winehq.org/

A Comparison of Memory Allocators in Multiprocessorshttp://developers.sun.com/solaris/articles/multiproc/multiproc.html

いつも心に太陽を - Winehttp://goo.gl/ywAI3

いつも心に太陽を - libumemhttp://goo.gl/tChtD

Page 28: Wine on Solaris 11 Express

Presentation Title pg 28

Page 29: Wine on Solaris 11 Express

Presentation Title pg 29

Page 30: Wine on Solaris 11 Express

Presentation Title pg 30

Wine on Solaris 11 Express

「動け、動け、動いてよ !!! 今動かなきゃ、

今ログインできなきゃ、みんないなくなっちゃうんだ!」

すでに、中の人が動いてるので確認できしだい修正されるっぽい

http://forums.riftgame.com/showthread.php?215541-pm-patch-6-24

そして、修正準備中 (2011/6/28)http://forums.riftgame.com/showthread.php?215541-pm-patch-6-24&p=2700410&viewfull=1#post2700410

最近はまっているのは、 Rift今朝・・・ Hotfix #2 適用後、動作しなくなった

New!