とりとめない話ですが、今どきのLinuxのパッケージングの種類とSteamDeckから一気に改善されたDirectX 周りの話です。社内の勉強会で共有した資料
知見共有会今どき Linux事情サーバサイドじゃないデスクトップLinux 話2022/6/30
View Slide
なんか沢山読まれているよな で・・2022/07/02● 誤ったままだと申し訳ない で指摘を受けている場所を修正(加筆)してあります(特に固有名詞部分)。記憶が薄れているところ まぁそ ままにしている
UNIXと 出会い1994年頃 FreeBSD(Windows/DOS環境で TCP/IPスタックが有料ソフト(ChameleonTCP/IP使っていた)だったころ)(※Linuxが登場した、RedHatも)大学がAIX(UNIX)だった(SP1という巨大な集中型 ハードウェアで結構衝撃だったなぁ)X Window System (XFree86) をMake Worldすると1日かかっても終わらない1996年頃 Linux ドライバが少なくてろくに動かず入れたけど消した。FreeBSD最高!Linux 確かこ 頃ペンギンになった。研究室が電子科AIX、機械科HPUX、生物科Macというカオス状態だった。グローバルIPが教室に配られていた。Firewall設置反対!謎 通信 頻繁にあった。ハッキングを受けると電話でクレームが来るという良き時代(商用インターネット 開始した かり)2000年前後 入社した で会社 PCにFreeBSD入れた(VMWAREが登場した、ESX Tarだった、こ ためにLinuxに変えた)会社 Firewallとかいうも が邪魔だった でDMZに自分 Debian設置してリモートで入っていた(きっと夢だ )家 PC BeOSとKondara Linux( りでできた国産Linuxディストロ)2002年頃に解散・・LibraOfficeがメジャーな巨大系、Make World終わらない(C++ 遅い/勝手な印象)2005年頃 家 PC ずっとLinuxだった(こ 頃 WineでDiablo2 Privateサーバ運用していた気がするが、ボロアパートへ 落雷でマザーボードごと飛んだ。サージ 必要だ)確かディストロ Debianだったなぁ。だんだん会社 規制が厳しくなった。会社 PC Macbook(久しぶりにUNIX、正式になった も少しあとかな?)に変えた2007年頃 iPhone(とうかTouch)が登場、こ あと数年 アプリ作ったり色々してモバイル っかり(BSDUNIXだな)会社 PCがWindowになるし(Mac 返された)、自由がなくなってきた。こ 頃 もうクラウドが出てきた もあるし、自分 家でサーバ起動したくないで色々フラフラしていた2020年頃 ずっとMacだった が急にPC−Unixにもどった。ずっと入れたりして遊んでいたけどメインマシンとして使っている ここ3,4年かなArchLinux ローリングでいい感じ、し らくMintを使っていたけどいま POP_OSが一番おすすめ(NvidiaGPU持っている人 特に)長い時間がかかったけどようやくWindows/Mac並にデスクトップが使えるようになってきた。
おじさんむけ豆知識UNIX じめて高水準言語Cで書かれたOS。初めて キャラクタ端末 ゲームRogue UNIXゲーム(DEC UNIX)いま もうSystemVとかBSDとか言わなくなってすっかり「Linux」派閥 話 かりなんだけどOSシェアからいえ 「macOSとiOS」がUNIXを牽引していると言えます ぇ学生時代NextStepがほしかった。
今日 話題きっと誰も興味ないが適当に話したい話題を選んだ 特にまとめとかない。● Linuxパッケージ事情● Game業界がもたらしたWine 互換性向上 影響とX周り 最新情報
基本にもどってWhat is Linux?こ あと 話 流れもある で● Linux 、POSIX準拠 オープンソースOS● Linux カーネル部分 Linuxカーネルが「Linux」でGNU ライセンスで配布● モジュラー型 モノリシックカーネル設計(対抗 マイクロカーネル。ただ昨今モジュールロードできる でマイクロカーネルチック)● SMP/NUMA対応並列コンピュータ● 仮想メモリ管理、プロセス間通信● OSレベルで 仮想化、準仮想化、HW仮想化など● デバイス カネールスペースで実行される、昨今で GPU DirectRendering Manager(DRM)で動く
What is Distribution ?Kernelだけじゃ使えない で周辺 コマンドやインストーラーを取り揃えたも が「ディストリビューション」。RedHat社提供する「RHEL」やOpensourceで提供される「ArchLinux」など。乱立しているけど派閥 ある。BSDとSystemV ように● RPM派:代表 RHEL強い● DEB派:Debianから 派生でUbuntuが有名どころhttps://distrowatch.com/?language=JP
おじさんむけ豆知識● 最近流行り キーワード 「ディストロレス」システム○ コンテナ 時代によく利用されるディストロ →AlpineLinux○ 更に小さくするために Kernel+最小限 ライブラリ+実行処理プログラムだけで動作している Linuxシステム こと。Shellとかそういったも も入れない○ AlpineとGoogleがやっている○ https://github.com/GoogleContainerTools/distroless○ https://github.com/chainguard-dev/apko○ フットプリントが小さけれ 小さいほど Kubernetesなどで 起動も早くなる(※正確に 起動以上にImageを実行NodeにNetwork Copyする時間が削減される)、余計なも がない で脆弱性にも強い
おじさんむけ豆知識● コンフィグ ~/.xxx 時代遅れ● いま 、~/.config/(APPName)/各種ファイル が基本● 個人 アプリ .local に入れる が正しい( /usr(opt)/localとか入れない● 例え デスクトップ上 アイコン 定義 、 .local/share/application/xxx.destopに保管されていて中身 記述定義も共通化されている(なんとなく)。でGTKもQtも同じも を見るようになっている でど Window ManagerでもDesktopにアイコンが表示される○ 当たり前 ようなことだけど、 OSS 集合体でこ ように企画が徐々に統一されてきて互換性が高まっている 素晴らしい事。一昔前 カオスだった。
パッケージ配布 遷移● 従来・・APT/DEBといったディストリビューションで決められたパッケージ配布が基本だった○ ディストリ 派閥が「パッケージ種類で呼 れるように」非常に大事なポイントだった(何が標準で使えるかがディストリに依存していた)● 昨今・・コンテナ化されたアプリケーション配布が登場(特にユーザが利用するアプリ こ 形式で配布される。ディストリビューションを考慮する必要が最低限で済む様になった。専用 ストア/Repoも登場している)○ 今日 題材 現在有名な3つ■ AppImage■ Snap■ Flatpak○ 個人的に 、iPhoneから 流れも強く感じる(コンテナ+ストア)
代表的な特徴Snap AppImage FlatpakInstall 必要 不要 必要共有ランタイムベーシック ない フルサンドボックスAppArmorと密結合 カスタム(FirejailやAppArmorなど)Bubblewarpと密結合リポジトリ ある ない ある中央リポジトリある ない ないアップデート 自動 手動 自動
代表的な特徴Snap AppImage Flatpakテーマがシステムとマッチしない する するサンドボックス化しないで実行可能 可能 不可能サイズ例VLC204MB 53.2MB 78M触発された概念Ubunt Touch パッケージ .dmg内 macOS.appなど kilk(以前 AppImage)起動 度 3 1 2http://baker-street.jugem.jp/?eid=25から 抜粋
今どき ?● アプリを入れるならFlakpakが便利● 以前と 違ってアプリ FlakpakやAppImageなどで入れる時代になっている● 複雑な依存関係があるようなも Snapだとまるごと入る(ただサイズがでかい で注意)● FlakpakもSnapも、ごにょごにょとローカル環境を見ることができる でなぜか動作側 IME(日本語入力)もうごくし、下手すれ テーマも一緒に変わってくれる● コンテナ化 利点でシステムを汚さずに入れることができる が最大 メリット
おじさんむけ豆知識● 似たようなも これまであんまりなかった● Mac 昔から1バイナリ形式(中身 Zipで圧縮されていてユーザから 見えない)→ iOSでもこれ 同じ● iOS アプリ これら ヒントになった感じで完全に「サンドボックス化」されたアプリを身近に感じた ず(不便な点も)、アプリ間で通信するために 何らか 許可等が必要。iOS こ あたりこ 10年でめっちゃこなれてきた。○ アプリが完全にサンドボックス化して、ユーザモードで実行されている。○ カーネルモードやシステムコールに近いところを変更できるアプリ 長い間登場してなかった(なでVPNや、日本語変換 なかなか出てこなかったです 。特に日本語変換 すべて アプリから動く でかなり「危険」度 高いアプリ)
Game on Linuxが急 に変化Valve(バルブ)社が、LinuxOS(ArchLinuxBase) SteamOSを搭載した、携帯端末SteamDeckを発表。大手PCゲーム Steamプラットフォーム 携帯ゲームとして登場。● 本来 Windows用 ゲームを実行○ Steam 対応OS 分類 、Windows/macos/Linuxに分類される○ Linuxに対応していないWindowsゲームもSteamDeckで 実行可能● アクティブユーザ1億2000万、SteamOS 1%(120万)Linuxユーザって正直あんまり普及することに興味がないと思っているけど、SteamDeckでちょっとシェアが伸びているし使う人が増えると良くなっていく で純粋に嬉しい
本来 Windows用 ゲームを実行するWINE単純に考えれ エミュレーション・・な ですが、Linux上で Winowsアプリケーション 実行に 長い歴史がある です。wine is not an emulatorWINE 、Windowsバイナリを直接Linux上で実行するため プログラム。winenotepad.exe ように使うエミュレーションで なく互換レイヤー。、notepad.exeに必要なWindows Dllやシステム ファイル群などすべて独自に用意されている。例え .wine/drive_c/windows/system32/**.dll など ようになっている。実行アプリごとに「サンドボックス」として .wineを使うことができるため安全にアプリケーションをインストールして利用することができる。互換性を上げるために、実際 dllを利用(Override)して実行することも可能。HardwareKernel ModuleX Window system(graphics system)Wine(win32api)Windows application
Steamが一気に進歩させた領域 - 3D環境Windows ゲーム 主流 、Microsoft DirectX。● DirectX12/11/10/9 をWINE 上で実装が必要○ Direct3D12 実装■ vkd3dライブラリを利用して実装されている■ vkd3d Valkan上 3DグラフィックAPI○ DirectX9/10/11■ DXVKを利用して実装(DirectXon Valkan)■ DXVK Valkan上 3DグラフィックスAPI○ ちなみみに実態 Wine用 d2d10.dllなどで提供される● Linux側で Vulkanが利用されている○ これ以外にもOpenGLなどにも対応OpenGLDirectX/Diurect3DLinux/Unix WindowsWineD3DWineD3D12Vulkanvkd3dWineDXVK
Valve Direct3D12と 互換性を向上● 互換性を向上させた、VKD3D−ProtonというWineからフォークした環境を利用● これまで動かないWindows系 ツール含めてかなり 精度で普通に動く(Easy Anti-Cheat/BattlEyeが入っていると動かない)● オーバーヘッド無い でWindowsとパフォーマンス 落ちない。場合によって 早い。● そもそもDirectXよりもVulkanが高● NVIDIA Vulkanをサポート● Vulkan自体 マルチプラットフォーム対応 APIな でそもそも普及がじまっているOpenGLDirectX/Diurect3DLinux/Unix WindowsWineD3DWineD3D12Vulkanvkd3dWineDXVKIntelvukulan-intelNVIDIAnvidiaAMDvulkan-redeonamdvlkvauklan=amgpu-proLinux 世界 WINE 世界EACとBattlEye 最近 バージョンで Linux, Macに対応するうになったそうです!
おじさんむけ豆知識ここ10年位きっと知らないと思う で整理OpenGL もともとIrisGLな。クロスプラットフォームでスタンダードな位置づけVersion5でVulkanに生まれ変わるDirectX Microsoft Windows向け API。最新 DirectX12。最も多く タイトルが作られている。主流なんだけどモバイル 中で 使ってない が欠点GNM/GNMX/GNM++ プレステ用 APINVN スイッチ用 APIMetal macOS M1/M2チップに最適化されたApple謹製APIちょっと命令が少ないようでDirectXとか でラッピング出来たりしない でここ数年macOSゲーム 壊滅したが、なにせiOSがある でMetal自体 かなり普及しているも 一つ(だと思う)※iOS それまで OpenGL ESだったVulkan クロスプラットフォーム 本命(ちなみにAndroid(Google)がVulkan開発に 関わっている)。これでモバイル Vulkan vs Metalになった。
macOSでWINEって?● 動く、動く だが、M1チップ アーキテクチャが違う● WINE あくまでもそ OS アーキテクチャ上で動かすため ライブラリに過ぎない。● つまり、M1チップでWINE 動くが、動くWindowsバイナリ ARM版である必要がある。(ARM向けWindowsであれ サクサク動くな)● チップセットをエミュレーションするに 例え Qemuなどで仲介する● 商用 CrossOver20(Wine)で Win32/64 Windowsアプリが動く● が!macbookなどに NVIDIA 乗ってない でDirectXが動かない!● Vulkan-metal MoltenVKがあるんだけど、逆があれ DirectXもうごくかも?BOX86 WINEWindowsApplicationmacOS
XとWaylandレッドハットに在籍してたXorg エンジニアが開発したX11 代替。なんだったんだけどあんまりにも安定しなかったりしてさほど普及してない(ように見えてじわじわと知らないうちにWaylandがディフォルトになっている)互換性確保 ために、XWaylandというWaylandクライアントがあり利用者として 体感的に なにも違いを感じることなく利用することができている。が!Gamingユーザに ちょっと不評(解像度が変えれないとか諸々)しかし、現在 主力OS すべてコンポジット型ウィンドウマネージャーな でいつまでもXorgを使っているわけにも行かない。近いうちに Waylandがメインになるし、Xなしアプリも出てくるだろう
XとWayland 違いhttps://wayland.freedesktop.org/architecture.html「XServer」っていう が中央集権で邪魔スタック型Window Mangaerコンポジット型WindowMangaer代表的なやつ・WindowsVista以降・MacOSX Quartx以降
みんな 大好きなWSLでXアプリを動かすと?ここまで 説明で何となく分かる ず。「Wayland+XWaylandが入ったコンテナが内部で1つ起動しています」、ユーザコンテナ そ コンテナを描画サーバとして通信を行い画面を表示している。WSLg Westonコンポジッタを動かしている CBL-MarinerというMS ディストロ。いわゆるContainer Linux(旧CoreOS)と似た構 https://github.com/microsoft/CBL-Marinerhttps://devblogs.microsoft.com/commandline/wslg-architecture/
ChromeOSでXを動かすと?ChromebookでWineを使ってWindowsプログラムを動かす(参考にゲームDiablo2を動作) - Qiita● 基本的に 、WSLもChromeOSもアプローチ同じ● Linux ディストロ 個別に導入されてX みを別 コンテナやOS側 機能から中継して描画することで実装している。● ChromeOS 場合に ソムリエがよろしくやっている(らしい)
おじさんむけ豆知識● X Window SystemとX.org○ 今 若い人 絶対知らないと思うけど、有料 X Window System もあった(記憶が曖昧だが、なんで買ったんだろう?)多分家にまだ CDがある○ だいぶ前からLinuxとか Xorgに移行している。 /etc/X11/xorg.confgだから○ X11 X Window system バージョン11 略(もう30年くらい前に開発止まっている)○ 最後 X11 Release 7 ?○ X MITで開発されていたX コンソーシアムだったけど、 The Open Groupに映った。最終的にX.org Fundationという団体になった。○ Xorg X11 オープンソース実装○ グラフィックドライバが鬼門な 今も昔も同じ。いま GPU問題が勃発している。○ ど メーカーも互換性がある OSSも出ているが基本 メーカー プロプライエタリドライバを使うが主流(な でDebianとか 辛い )。dkmsで提供されるも など色々 Nvidia つい最近技術的に競争力にならないという判断?でついに OSSとしてドライバを公開した(これでディストロ 組み込みやすくなった ず)
ここまでわかったところでもう少し現在 Xアプリ 、代表的なGTKとQt ツールキット上で作られているも が大半です。ちょっと言葉だけ説明しておくとGTK系 Qt系代表的なWindow Manager GNOME KDEツールキットGUIフレームワークGTK/GTK+C言語QtC++言語備考 そもそもPhotoShop クローンであるGIMPを作るため ツールキットがベースNokia社 ライブラリ、商用ライブラリだけ合って最初から安定して利用ができた。組み込み系 今でもQtベースが多い( ず)Nokia 10年前に Qt を手放しており、現在 The QtCompany というフィンランド会社が Qt 開発や販売していると こと
ツールキット いろいろな言語でラップされているUIツールキット 昔から沢山やま ようにある。● Tck/TK・・TKツールキット● Python GTK・・・GTKをPythonから使う最近出てきた だと● Flutter ・・これもGoogle製 ツールキット(SDK)と言えるも○ SonyとかもFlutterに移行するらしい(組み込み系で 、 AndroidやLinuxが主流な で)○ Flutter 、ネイティブアプリ化で Snapアプリとしてパッケージして配布できる(もう何言っている かわかるよ ?)
「Desktop」Linuxを色づける Window Manager話を最初からすると長くなる だが、最終的なUI Window Managerが担ってる。WindowMangaer ツールキット 、GTK+とQtが2大巨頭。近年ツールキット間 動作上 互換性強くなってきてる。WindowManager 、Window ボタンだったりツールバーやデスクトップ アイコンなどUIコントロール部分を構成しているアプリケーション。Themeを買えることでmac風になったりWindows風にしたりと色々できる。https://learning.lpi.org/en/learning-materials/102-500/106/106.1/106.1_01/
延々とテーマを変える無限地獄もうLinuxデスクトップユーザ 延々とこ 遊びをやっている● GNOMEだろうがKDEだろうがテーマがすべて● テーマ 「ツールキットベース」提供される→GNOME用で なくてGTK用。同じツールキットを使っているとそ アプリ全部そ テーマになる(基本)● 最近 VimとかTerminalとかトータルで変更できるテーマなども出てきていて楽しい遊び 一貫
おじさんむけ豆知識● そういえ 、32bit x86 a.out サポートが削除!○ ちなみに gcc hello.c すると a.out が出てくるけど、いつ 間にか ELFフォーマットやんけ!● ちなみにKernel 第2言語(?)にRustが採用される見込み!○ あちこちでプチバズっているけど Rustが入ってくるみたい(まず Kernel Module周りから 模様)
おじさんむけ豆知識● 日本語 入力 、Input method framwork 、iBUSかFctix 2択。○ Fctix ほうが利用されているが Waylandサポートされていない○ Fcitx4で 使えます !● 漢字変換 、Anthy、Canna(!)、Mozc(これがGoogle日本語IME オープンソース実装なんだけど辞書が違う→な で精度 劣る)● fcitx-mozcなど セットで利用することになる● 生コンで使いたい場合に 昔ながら fbtermとかKonとか現役。日本語入力も昔ながらに uim使えるuim-mozcとかある● ちなみにXで アンチエリアシングとかTrueTypeとか当たり前な で普通にmacos並に フォントとかきれいに描画される(昔と 違う)●
おわり特 まとめ ない で、ここで終わり最後に、個人的におすすめ ディストロ POP OS!● Ubuntuを超えているUbuntuクローン● Nvidiaをネイティブサポート● Gaming用途(マルチインストーラー Lutis,Steam,各種エミュ)最適○ 独自 OSスケジューラ、GPU利用に際して最適化、 WINE環境強い● 日本語利用問題なく利用(特に複雑な設定不要)○ 一部英語がある で適当に翻訳してたまに PullReqしておく で問題ない?● 独自ローダで起動が早い● 老舗HWメーカ System76社が作っている● Wayland 無効になっている(hiDPIとか共有とか動か ぇ・・・)ここまで書いて、なんなんですが、Linuxデスクトップ 全く流行る気もしない でメジャーに ならないと思います ;-p
おまけ - 憧れ UNIXO2 IRIX当時コンピュータグラフィックといえ SGI。教授 口利きで就職してもいいかなと思ったけどそ 後倒産した で行かなくてよかったと思った記憶がある。でも行け よかった。どこぞ 大学で 100台くらい買ったというニュースを聞いてマジかと思ったが。研修室に 1台だけ買ってもらった。インストーラーが GUIでグリグリ動く謎仕様でそこで感動した。特にこ マシンで何かをなし得たという記憶 皆無だが所有欲を満たしてくれたな。今 GPU 原型になる、IrisGL(OpenGL) ハードウェアアクセラレーション用 基盤が付いていた(多分)まぁ動いたあと 普通 UNIXな で3Dソフトで遊 ない限り 特になん変哲もなかった記憶しかない。
おまけ - 憧れ UNIXNeXTSTEP(OPENSTEP)マジで欲しかった。いとこ にーちゃんが会社で使っていて楽しそうだった。現在 macOSに連なる原型。画面がDisplay TypeScriptというも で描画されていて当時から画期的にDPIとか色も含めて正確に出ていた。すごい。カーネルがMachとかどうでも良くてデザインセンス抜群だったな。オブジェクト志向型って言われていて他社も真似したりJava クラス設計も参考にされているという。世界初 ブラウザ NeXT上 WorldWideWeb。初 商用Webサーバ WebObjectsというWebアプリケーションサーバが動いたけどクソ高くて見たこと ない。今でもmacos ライブラリ 名前 先頭にNS_っていう がある。デザインが良過ぎでOpenSTEPとかWMでカスタマイズとか色々やった記憶が(※本物 触った程度)更にそ 10年以上あとにObjectiv-CをiPhoneで触ると 思わなかった。
おまけ - 憧れ UNIX(もどき)BeOS突然出てきて消えていった。アイコンがかわいい。デザインがいけている。そして「早かった」。当初 PowerPCBeBOXっていうハードだったけど最終的に x86アーキテクチャで動くも が開発された。マルチタスクとかジャーナルファイルシステムとか画期的だった。同時にアプリを動かしても平気!コピーが並列でっていうデモが沢山やっていた。Appleに買収を持ちかけていたが結局 NeXTに持っていかれた。余裕ぶっこいて適当にやった結果だと言われている(ほんまか?)結局事業的に ボロボロで終わったんだけど OS自体OSSとしてHaikuという名前で今も続いている。好きなんだけど 、ソフトがない。結局 VIM使っているだけやん!ってなる。ちなみに未だR1/Beta3
おまけ - 記憶にあるUNIXScalable POWER Parallel(通称SP)大学に設置されていた。何ノード構成か記憶にない。基本的に YelloPageと呼れるNISとストレージで環境が構成されててど ノードに Telnetしても/home/tokida同じ内容が見える(これが当たり前だと思っていた)。例え Internetに抜ける事ができるNode、計算が早いNodeなど役割に分かれていて移動しながらプログラム動かしたり、Mosicでネット見たりしていた。端末 100台くらい IBMワークステーションで構成されていてすべて X Window System端末。情報処理教室 今みたいに画面切り替えとかが出来て集中でコントロールされていた。クラスターソフトが合って複数台で計算ができた。Perl製?とりあえずひたらすら早いこ 億くらいしそうなコンピューターでやりたいこと CD エンコーディングだった が泣ける。対戦ゲームとかランキングとか学生全員共通だった で結構盛り上がった。 AIX3? 4?会社に入ってSP2を数十台全国に導入した いい思い出(半年以上家に帰れなかった...) まさかOS導入からすることになると な。