ノーゲーム・ノーライフ[games on linux] - kernel/vm北陸1
DESCRIPTION
1. iCloud同期のKeynoteでスライドが消えてしまいましたツイート 経緯は、 2. Chromeと間違えてKeynoteを終了→再度開くとなにやら不穏なダイアログ 3. スライド消えた\(^o^)/ 4. 編集もできなくった\(^o^)/ 5. すばらしいiCloudですね! 未完の部分が多いですが温かい目でご鑑賞お願いいたします。 6. ノーゲーム・ノーライフ←サブタイトル 「Games on Linux」←メインタイトル 7. about me 8. 日々こんなところでカーネル開発しています紹介 9. 今やってる10の課題 10. ゲームとは 11. SteamOS 12. SteamOSとは 13. 対応ゲームが多い 14. 知っているあんな名作もLinuxで動く! 15. 第一部:巷で話題のSteamOSを調査した件 16. インストール 17. システム要求 18. 今回用意したシステム構成 19. - 21. インストール過程 メディアを用意したらインストールは簡単 全自動でゲームができる環境が整う 22. SteamOSのいいところ 23. ダメなところ 24. カーネルを調べる いつもみなさんが最初にやることです 25. - 26. Steamアカウントがないとデスクトップへのアクセスができないようなので Ctrl+Alt(Meta)+F4でttyにアクセスしてuser: desktop, password: でアクセス 27. 見慣れたDebian風Desktop 28. カーネルバージョン 29. Debian Wheezyとの違い 30. kernel-3.10.11との変更点 31. 主な変更点 32. 気になった変更点 33. 第二部:普通の大学生が【Linuxゲーム】やってみた 34. 要するに本当にSteamOSでゲームを楽しめるかの調査 35. ゲームを楽しむための必需品コントローラー 36. Steamのコントローラー対応状況 37.- 39. SteamOSが対応しているかカーネルに聞いてみる 40. CONFIG_HID_SONY PS2/3/4のコントローラーをLinuxでサポートするためのオプション 41. moduleとして有効化されている 42. SteamOSに接続 43. dmesgで確認→認識してる 44. - 45. ゲーム画面でも動作した! 46. ゲームを楽しむための必需品ヘッドセット 47. - 50. ※スライド参照 51. - 54. 実際に認識するかどうか→認識した! 55. ゲームを楽しむための必需品ゲーミングライト 56. ゲーミングライトとは 57. SteamOSでも使いたい! 58. Windowsで動作させてみる→HIDデバイスとしてドライバが導入される 59. - 60. HIDとは 61. Linux × USB HID 62. /dev/hidrawX 63. /dev/hidrawXとは /dev/hidrawXを使えばLinuxで動かせるっぽい! 64. - 68. USBパケット調査 (詳しく説明する予定でした) 69. SteamOSに接続 ↓ 70. /dev/hidrawXをしらべる ↓ 71. 現れない 72. lsusbで接続を確認 ※画像追加しました。 Saitek社製のデバイスとして認識 73. dmesgで確認 エラーがおきてる 74. カーネルに聞いてみる 75. - 76. Saitekの名のつくオプション発見 77. CONFIG_HID_SAITEK Saitek社製のコントローラーモジュール HIDに準拠してないデバイスのためのパッチみたいなもん ゲーミングライトには非対応 78. HID仕様書を見てみる Interrupt Inは必須となっているが、このゲーミングライトには搭載されていない機能となっている 故にHIDに準拠していない 79. ということは... 80. みんな死ぬしかないじゃない!! 81. - 86. いろいろつくってSteamOSに対応させました 87. デモ動画 88. 第三部: 89. 復旧に時間かかりすぎて準備できなかったことの説明 次回以降への目標 90. まとめ 91. カーネル開発しようず 92. ライセンスTRANSCRIPT
ておくれ
About Me• Yuki Mizuno(みっきー)
• 職種:大学生
• 趣味:パケット観察
• Seccamp2013 NW
• coinsカーネル実験中
「」
【一つ】カーネルのコンパイルとパラメタの設定 【二つ】カーネルのリモート・デバッグ 【三つ】システムコールの追加 【四つ】デバイス・ドライバの作成 【五つ】/proc ファイル・システムの作成 【六つ】定期的な仕事 【七つ】ファイルシステムの追加 【八つ】ユーザレベルでのファイルシステムの追加 【九つ】その他 【十】別のオペレーティングシステムでの実験
ゲームon Linux「」
「 」
SteamOS© Valve Corporation
SteamOS
• Valve社が開発 • Debian GNU/Linuxがベース • 現在ベータ版 • 2014年中に登場するらしい • 自由なソフトウェア[要出典]
対応ゲームが多い
SteamOSに関して いろいろ調べてみた件
インストール
システム要求
!
Processor: Intel or AMD 64-bit capable processor Memory: 4GB or more RAM Hard Drive: 500GB or larger disk Video Card: NVIDIA graphics card (AMD and Inter graphics support coming soon!) Additional: UEFI boot support USB port for installation
システム構成
!
Processor: Intel Core i5-2500S Memory: 8GB DDR3-1333 Hard Drive: 2TB HDD Video Card: NVIDIA GeForce GTX 750 Ti (AMD and Inter graphics support coming soon!) Additional: UEFI boot support USB port for installation
インストールする
インストールする
インストールする
SteamOSのいいところ
• GPUのドライバを自動インストールしてくれる • ゲームできる環境が一発でできあがる • Linuxだと思わせない完成度
SteamOSのダメなところ
• 某***dows Updateを思い出させる起動時の自動アップデート
• 動かないSteamゲームがあるところ
カーネルを調べる
カーネルを調べる
カーネルを調べる
カーネルを調べる
カーネルを調べる
カーネルバージョン
Linux 3.2.57 Linux 3.10.112014/7/7 1:00時点の最新版比較
カーネルの変更点
https://gist.github.com/mzyy94/c5b8d99e0d1f6934ca52
カーネルの変更点
• 沢山のデバイスを扱えるようにドライバが有効に • デバッグ用にハイパーバイザーサポートが有効に • defconfigで’y’のものが多数’m’に変えられている
気になった点
CONFIG_NR_CPUS=512
CONFIG_EFI_STUB=y
CONFIG_FIREWIRE=m
CONFIG_SECURITY_TOMOYO=y
# CONFIG_SECURITY_SELINUX_DISABLE is not set
普 通 の 大 学 生 が
【Linuxゲーム】 やっ て みた 。
SteamOSでゲームを楽しめるかの調査
コントローラー
Steam対応状況
• Steamにはコントローラー対応ゲームがたくさん • 操作性高くよい • ゲームしてる感がある • Xbox 360 Controller / Dualshock 3などに対応
カーネルに聞いてみる
CONFIG_HID_SONY
• PS3コントローラーサポート • Linux-2.6.28で追加 • JoyStickとして/dev/input/jsXにデバイスができる
SteamOSに接続
コントローラー接続前
コントローラー接続後
ヘッドセット
※ておクラウドに召されました
ヘッドセット on SteamOS
• USBヘッドセットの利用は可能
• Steamで利用するためには起動時に刺さってないとだめ
• ホットプラグ不可
どのようなモジュールか
• USBヘッドセットが接続されたらデバイス名を‘Build-in Audio’に変える
• 子供騙しのようだけど実際動く
ゲーミングライト
amBX Gaming Light
• 間接照明で臨場感を演出 • 約1677万色を照射 • 2個セット • 対応OS:Windows XP/7 • 画面の色をごにょごにょしていい感じに照らしてる
参考:4Gamer.net ― Mad Catzの「ゲーマー向け間接照明」レビュー http://www.4gamer.net/games/097/G009735/20130125084/
SteamOSでも使いたい
HID仕様
• USB.orgにて策定
• 2001年生まれ
• HIDデバイスの満たすべき仕様
• http://www.usb.org/developers/devclass_docs/HID1_11.pdf
USB HID 1.11
• URB*転送でのデータ交換を定めた規格 • デバイスとの割り込み送受信などを定義 • プロトコル中のIDなどの定義
*URB: USB Request Block
USB HID ✖ Linux
/dev/hidrawX
/dev/hidrawX
• Linux-2.6.24で追加 • HIDデバイスをお手軽に操作できる • 一般的でないのHIDデバイス操作向け
USBパケット調査
USBパケット調査
• USBPcap.exeを利用する • Snoopy Proを利用する • VMwareのログを利用する
SteamOSに接続
/dev/hidraw0 ・・・ キーボード /dev/hidraw1 ???????
/dev/hidrawXが作成されない
lsusbしたらSaitek社製のデバイスとして 認識していた画像
※ておクラウドに召されました
追加:SteamOS on VMware → でlsusbしてチェックしました。
カーネルに聞いてみる
CONFIG_HID_SAITEK
• Saitek社のコントローラー用config • HID仕様に準拠していないのを解決するもの • 型番PS1000のコントローラーにのみ対応 • amBX Gaming Lightには非対応
HID1_11.pdf (p20)
ということは…
• Cyborg amBX Gaming Light ≠ HIDデバイス • 単なるデータ転送のみをサポートしたUSB機器 • 仕様に従わないダメな例 • スペシャルファイルが作成されない • /dev/hidrawXが作成されない
ス ペ シ ャ ル フ ァ イ ル が な い な ら ・ ・ ・
作 る し か な い じ ゃ な い !!
作りました
ライブラリがない
作りました
アプリがない
作りました
つくったもの
• ドライバ • ambxlight.ko
• ライブラリ • libambxlight.so
• アプリケーション • ambxtest.o
https://www.youtube.com/watch?v=SWssSmWJDYk
※復旧できませんでした
• USBのお話する予定だった
• HIDとかUVCとか
• 実は進捗もやばかった
• 次回以降に発表させていただきます(ごめんなさい)
まとめ
楽しくゲームするために カーネル開発しよう
• ノーゲームノーライフ画像 パグリックドメイン
• http://commons.wikimedia.org/wiki/File:No-Game-No-Life-anime-logo.svg
• タックス画像 CC BY-SA 3.0
• http://commons.wikimedia.org/wiki/File:Linux_Logo_in_Linux_Libertine_Font.svg
• debianロゴ パブリックドメイン
• http://commons.wikimedia.org/wiki/File:Ardebian_logo.svg
• 地球の画像 パブリックドメイン
• http://commons.wikimedia.org/wiki/File:View_from_the_SR-71_Blackbird.jpg
• イプシロン星の画像 パブリックドメイン
• http://commons.wikimedia.org/wiki/File:NASA-JPL-Caltech_-_Double_the_Rubble_(PIA11375)_(pd).jpg
• SteamOSロゴ ©2014 Valve Corporation. All rights reserved.
• http://store.steampowered.com/livingroom/SteamOS/
• Steamゲーム画像、動画 ©2014 Valve Corporation. All rights reserved.
• http://www.valvesoftware.com/videopolicy.html